237 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			237 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								HOLONG_LIGHT_VAR_IS_LEFT		<- 0;
							 | 
						|||
| 
								 | 
							
								HOLONG_LIGHT_VAR_APPENDAGE		<- 1;
							 | 
						|||
| 
								 | 
							
								HOLONG_LIGHT_VAR_HORIZON_ANGLE  <- 2;
							 | 
						|||
| 
								 | 
							
								HOLONG_LIGHT_VAR_VERTICAL_ANGLE <- 3;
							 | 
						|||
| 
								 | 
							
								HOLONG_LIGHT_VAR_LIFE_TIME		<- 4;
							 | 
						|||
| 
								 | 
							
								HOLONG_LIGHT_VAR_DEFENCE_UP		<- 5;
							 | 
						|||
| 
								 | 
							
								HOLONG_LIGHT_VAR_ATTACK_POWER	<- 6;
							 | 
						|||
| 
								 | 
							
								HOLONG_LIGHT_VAR_SHOOT_TIME		<- 7;
							 | 
						|||
| 
								 | 
							
								HOLONG_LIGHT_VAR_COOL_TIME		<- 8;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								HOLONG_LIGHT_STATE_BUFF     <- 2; // 渠晦 鼻鹧 : 议葛搅缣 帼?蒂 勘横遽棻. : ?卫粽 蝶才桧?朝 2睡搅 卫蒙?棻.
							 | 
						|||
| 
								 | 
							
								HOLONG_LIGHT_STATE_ATTACK   <- 3; // 奢问 : 饵轿肾横 颤啃击 奢问?虽虏 帼?朝 饵塭霞棻.
							 | 
						|||
| 
								 | 
							
								HOLONG_LIGHT_STATE_DESTROY  <- 4; // 薯濠葬怃 饵塭霞棻.
							 | 
						|||
| 
								 | 
							
								HOLONG_LIGHT_STATE_EXPLOSION <- 5; // ?嫦
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								HOLONG_LIGHT_CUSTOM_ANI_MOVE	<- 0; // 桧翕卫 拥栖
							 | 
						|||
| 
								 | 
							
								HOLONG_LIGHT_CUSTOM_ANI_DESTROY <- 1; // ?惚卫 拥栖
							 | 
						|||
| 
								 | 
							
								HOLONG_LIGHT_CUSTOM_ANI_SHOOT	<- 2; // 嫦饵卫 陈嬴陛朝 拥栖
							 | 
						|||
| 
								 | 
							
								HOLONG_LIGHT_CUSTOM_ANI_EXPLOSION <- 3; //?嫦 拥栖
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function setCustomData_po_ATHolongLight(obj, receiveData)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local isLeft		= receiveData.readBool();
							 | 
						|||
| 
								 | 
							
									local horizonAngle  = receiveData.readFloat();
							 | 
						|||
| 
								 | 
							
									local verticalAngle = receiveData.readFloat();
							 | 
						|||
| 
								 | 
							
									local lifeTime		= receiveData.readDword();
							 | 
						|||
| 
								 | 
							
									local defenceUp		= receiveData.readDword();
							 | 
						|||
| 
								 | 
							
									local attackPower	= receiveData.readDword();
							 | 
						|||
| 
								 | 
							
									local shootTime		= receiveData.readDword();
							 | 
						|||
| 
								 | 
							
									local coolTime		= receiveData.readDword();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local var = obj.getVar();	
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									var.setBool(HOLONG_LIGHT_VAR_IS_LEFT,isLeft);		
							 | 
						|||
| 
								 | 
							
									obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_BUFF);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									var.setFloat(HOLONG_LIGHT_VAR_HORIZON_ANGLE, horizonAngle);
							 | 
						|||
| 
								 | 
							
									var.setFloat(HOLONG_LIGHT_VAR_VERTICAL_ANGLE, verticalAngle);	
							 | 
						|||
| 
								 | 
							
									var.setInt(HOLONG_LIGHT_VAR_LIFE_TIME, lifeTime);	
							 | 
						|||
| 
								 | 
							
									var.setInt(HOLONG_LIGHT_VAR_DEFENCE_UP, defenceUp);
							 | 
						|||
| 
								 | 
							
									var.setInt(HOLONG_LIGHT_VAR_SHOOT_TIME, shootTime);
							 | 
						|||
| 
								 | 
							
									var.setInt(HOLONG_LIGHT_VAR_COOL_TIME, coolTime);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), attackPower);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onTimeEvent_po_ATHolongLight(obj, timeEventIndex, timeEventCount)
							 | 
						|||
| 
								 | 
							
								{	
							 | 
						|||
| 
								 | 
							
									if(!obj)
							 | 
						|||
| 
								 | 
							
										return false;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(obj.isMyControlObject() && timeEventIndex == 0)
							 | 
						|||
| 
								 | 
							
									{	
							 | 
						|||
| 
								 | 
							
										if(obj.getState() == HOLONG_LIGHT_STATE_BUFF) {
							 | 
						|||
| 
								 | 
							
											obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_DESTROY);
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
											local mage = sq_ObjectToSQRCharacter(obj.getTopCharacter());	
							 | 
						|||
| 
								 | 
							
											if (mage)
							 | 
						|||
| 
								 | 
							
												mage.sq_RemoveSkillLoad(SKILL_HOLONG_LIGHT);	
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										return true; // true贼 属寥 酝钦
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if( timeEventIndex == 1 )
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_EXPLOSION);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									return false;	
							 | 
						|||
| 
								 | 
							
								} 
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onDestroyObject_po_ATHolongLight(obj, destroyObj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local parentObj = obj.getParent();
							 | 
						|||
| 
								 | 
							
									parentObj = sq_ObjectToSQRCharacter(parentObj);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(!parentObj || isSameObject(parentObj,destroyObj)) { //睡赅 偌羹陛 ?惚肾贼 饵塭飓 	
							 | 
						|||
| 
								 | 
							
										obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_DESTROY);
							 | 
						|||
| 
								 | 
							
									}	
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onAttack_po_ATHolongLight(obj, damager, boundingBox, isStuck)
							 | 
						|||
| 
								 | 
							
								{	
							 | 
						|||
| 
								 | 
							
									if(!obj)
							 | 
						|||
| 
								 | 
							
										return 0;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_EXPLOSION);	
							 | 
						|||
| 
								 | 
							
									return 0;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function setState_po_ATHolongLight(obj, state, datas)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj) return;	
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local var = obj.getVar();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									// 帼? 赅萄
							 | 
						|||
| 
								 | 
							
									if (state ==  HOLONG_LIGHT_STATE_BUFF) {	
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
										local lifeTime    = var.getInt(HOLONG_LIGHT_VAR_LIFE_TIME);
							 | 
						|||
| 
								 | 
							
										local defenceUp   = var.getInt(HOLONG_LIGHT_VAR_DEFENCE_UP);
							 | 
						|||
| 
								 | 
							
														
							 | 
						|||
| 
								 | 
							
										var.push_ct_vector(); // 颤桧该 跷陛
							 | 
						|||
| 
								 | 
							
										local timer = var.get_ct_vector(0);
							 | 
						|||
| 
								 | 
							
										timer.Reset();
							 | 
						|||
| 
								 | 
							
										timer.Start(500,0);
							 | 
						|||
| 
								 | 
							
										obj.setTimeEvent(0,lifeTime,1,false); // 0廓 樯策蝶暧 颤桧该, 5蟾钦嫔 桧渐? 嫦当, 1廓虏, 籀挤缚 褒?寰?.
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local parentObj = obj.getParent();	
							 | 
						|||
| 
								 | 
							
										printc("lifeTime " +lifeTime);
							 | 
						|||
| 
								 | 
							
										printc("defenceUp " +defenceUp);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local appendage = sq_CreateChangeStatus(CHANGE_STATUS_TYPE_EQUIPMENT_MAGICAL_DEFENSE, false, defenceUp.tofloat() , lifeTime);
							 | 
						|||
| 
								 | 
							
										if(appendage && parentObj) {
							 | 
						|||
| 
								 | 
							
											appendage.sq_AddChangeStatus(CHANGE_STATUS_TYPE_EQUIPMENT_PHYSICAL_DEFENSE, false, defenceUp.tofloat());
							 | 
						|||
| 
								 | 
							
											appendage.sq_Append(parentObj,parentObj);
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
											local var2 = obj.getVar("holong");
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
											printc("var2 " +var2);
							 | 
						|||
| 
								 | 
							
											var2.setAppendage(HOLONG_LIGHT_VAR_APPENDAGE, appendage);
							 | 
						|||
| 
								 | 
							
										}	
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if (state ==  HOLONG_LIGHT_STATE_ATTACK) {
							 | 
						|||
| 
								 | 
							
										local var2 = obj.getVar("holong");
							 | 
						|||
| 
								 | 
							
										local append = var2.getAppendage(HOLONG_LIGHT_VAR_APPENDAGE);
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
										if(append)
							 | 
						|||
| 
								 | 
							
											append.setValid(false);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local horizonAngle = var.getFloat(HOLONG_LIGHT_VAR_HORIZON_ANGLE);
							 | 
						|||
| 
								 | 
							
										local verticalAngle = var.getFloat(HOLONG_LIGHT_VAR_VERTICAL_ANGLE);
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
										local shootAni = obj.getCustomAnimation(HOLONG_LIGHT_CUSTOM_ANI_SHOOT);		
							 | 
						|||
| 
								 | 
							
										obj.setCurrentAnimation(shootAni);		
							 | 
						|||
| 
								 | 
							
										sq_SetfRotateAngle(shootAni, sq_ToRadian(-horizonAngle));
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
										local shootTime = var.getInt(HOLONG_LIGHT_VAR_SHOOT_TIME);
							 | 
						|||
| 
								 | 
							
										obj.setTimeEvent(1,shootTime,1,false);		
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										obj.sq_SetMoveParticle("Particle/ATHolongLight.ptl", horizonAngle, verticalAngle);
							 | 
						|||
| 
								 | 
							
															
							 | 
						|||
| 
								 | 
							
										sq_AddDrawOnlyAniFromParent(obj,"PassiveObject/Character/Mage/Animation/ATHolongLight/shot_effect_dodge.ani", 0, 0, 0);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										obj.sq_PlaySound("LAMPLIGHT_ATK");
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if (state ==  HOLONG_LIGHT_STATE_DESTROY) {
							 | 
						|||
| 
								 | 
							
										local destroyAni = obj.getCustomAnimation(HOLONG_LIGHT_CUSTOM_ANI_DESTROY);		
							 | 
						|||
| 
								 | 
							
										obj.setCurrentAnimation(destroyAni);		
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if (state == HOLONG_LIGHT_STATE_EXPLOSION) {
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local shootAni = obj.getCustomAnimation(HOLONG_LIGHT_CUSTOM_ANI_EXPLOSION);				
							 | 
						|||
| 
								 | 
							
										obj.setCurrentAnimation(shootAni);		
							 | 
						|||
| 
								 | 
							
										obj.sq_RemoveMoveParticle();
							 | 
						|||
| 
								 | 
							
									} 
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function procAppend_po_ATHolongLight(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj)
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local var = obj.getVar();	
							 | 
						|||
| 
								 | 
							
									local xDistance = -26;
							 | 
						|||
| 
								 | 
							
									local timer = var.get_ct_vector(0);				
							 | 
						|||
| 
								 | 
							
									if(!timer)
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									local currentTime = timer.Get();			
							 | 
						|||
| 
								 | 
							
									local zDistance = sq_GetAccel(0, 35, currentTime, 300, true);;	
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local isLeft = var.getBool(HOLONG_LIGHT_VAR_IS_LEFT);	
							 | 
						|||
| 
								 | 
							
									if(isLeft)		
							 | 
						|||
| 
								 | 
							
										xDistance = -26 + sq_GetAccel(0, 52, currentTime, 300, true);	
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									local parentObj = obj.getParent();		
							 | 
						|||
| 
								 | 
							
									if(obj.sq_GetParentState() == STATE_DIE) // 避戏贼 饵塭飓	
							 | 
						|||
| 
								 | 
							
										obj.sendStateOnlyPacket(HOLONG_LIGHT_STATE_DESTROY);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									if(obj.getState() == HOLONG_LIGHT_STATE_BUFF) { // 桧翕?阳 拥栖 渗唳
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										local isDash = false;
							 | 
						|||
| 
								 | 
							
										if(obj.sq_GetParentState() == STATE_DASH){
							 | 
						|||
| 
								 | 
							
											if(!obj.isCurrentAnimationIndex(HOLONG_LIGHT_CUSTOM_ANI_MOVE))
							 | 
						|||
| 
								 | 
							
												obj.setCurrentAnimation(obj.getCustomAnimation(HOLONG_LIGHT_CUSTOM_ANI_MOVE));					
							 | 
						|||
| 
								 | 
							
											isDash = true;	
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										else {
							 | 
						|||
| 
								 | 
							
											local defaultAni = obj.getDefaultAnimation();
							 | 
						|||
| 
								 | 
							
											local currentAni = obj.getCurrentAnimation();
							 | 
						|||
| 
								 | 
							
											if(!sq_IsSameAni(defaultAni,currentAni))
							 | 
						|||
| 
								 | 
							
												obj.setCurrentAnimation(defaultAni);		
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										if(parentObj) {
							 | 
						|||
| 
								 | 
							
											local x = sq_GetDistancePos(parentObj.getXPos(),parentObj.getDirection(),xDistance);
							 | 
						|||
| 
								 | 
							
											local y = parentObj.getYPos() - 1;
							 | 
						|||
| 
								 | 
							
											local z = parentObj.getZPos() + sq_GetShuttleValue(90, 113,sq_GetObjectTime(obj),500) - zDistance;
							 | 
						|||
| 
								 | 
							
											obj.setDirection(parentObj.getDirection());
							 | 
						|||
| 
								 | 
							
											sq_SetCurrentPos(obj, x, y, z);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}	
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onEndCurrentAni_po_ATHolongLight(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj) return;	
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(obj.getState() == HOLONG_LIGHT_STATE_DESTROY) {
							 | 
						|||
| 
								 | 
							
										if(obj.isMyControlObject())
							 | 
						|||
| 
								 | 
							
											sq_SendDestroyPacketPassiveObject(obj);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(obj.getState() == HOLONG_LIGHT_STATE_EXPLOSION) {
							 | 
						|||
| 
								 | 
							
										if(obj.isMyControlObject())
							 | 
						|||
| 
								 | 
							
											sq_SendDestroyPacketPassiveObject(obj);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								 |