440 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			440 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								function setCustomData_po_ATMagicBallLightMultiShot(obj, receiveData)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									setCustomData_po_ATMagicBallLight(obj, receiveData);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function setCustomData_po_ATMagicBallDarkMultiShot(obj, receiveData)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									setCustomData_po_ATMagicBallDark(obj, receiveData);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function setCustomData_po_ATMagicBallWaterMultiShot(obj, receiveData)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									setCustomData_po_ATMagicBallWater(obj, receiveData);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function setCustomData_po_ATMagicBallFireMultiShot(obj, receiveData)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									setCustomData_po_ATMagicBallFire(obj, receiveData);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function setCustomData_po_ATMagicBallNoneMultiShot(obj, receiveData)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									setCustomData_po_ATMagicBallNone(obj, receiveData);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 葆彻掘羹 - 赀楼撩
							 | 
						|||
| 
								 | 
							
								function setCustomData_po_ATMagicBallLight(obj, receiveData)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj)
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									local horizonAngle = receiveData.readFloat();
							 | 
						|||
| 
								 | 
							
									local verticalAngle = receiveData.readFloat();	
							 | 
						|||
| 
								 | 
							
									if (sq_BinaryGetReadSize() < receiveData.getSize())
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										// 奢问溘 掸?
							 | 
						|||
| 
								 | 
							
										local attackBonusRate = receiveData.readDword();
							 | 
						|||
| 
								 | 
							
										local attackInfo = sq_GetCurrentAttackInfo(obj);		
							 | 
						|||
| 
								 | 
							
										sq_SetCurrentAttackBonusRate(attackInfo, attackBonusRate);
							 | 
						|||
| 
								 | 
							
										sq_SetCurrentAttackInfo(obj,sq_GetCurrentAttackInfo(obj));
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									// ??赝暧 桧翕 陕紫蒂 亵瞰?
							 | 
						|||
| 
								 | 
							
									obj.sq_SetMoveParticle("Particle/ATMagicBallLightMove.ptl", horizonAngle, verticalAngle);
							 | 
						|||
| 
								 | 
							
									local particleCreater = obj.sq_var.GetparticleCreaterMap("ATMagicBallLight", "PassiveObject/Character/Mage/Particle/ATMagicBallLightTail1.ptl", obj);
							 | 
						|||
| 
								 | 
							
									particleCreater.Restart(0);
							 | 
						|||
| 
								 | 
							
									obj.sq_AddObjectParticleCreater("Particle/ATMagicBallLightTail1.ptl");
							 | 
						|||
| 
								 | 
							
									obj.sq_AddObjectParticleCreater("Particle/ATMagicBallLightTail2.ptl");
							 | 
						|||
| 
								 | 
							
									obj.sq_SetObjectParticlePos(0, -1, 0);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 葆彻掘羹 - 檩楼撩
							 | 
						|||
| 
								 | 
							
								function setCustomData_po_ATMagicBallDark(obj, receiveData)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj)
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local horizonAngle = receiveData.readFloat();
							 | 
						|||
| 
								 | 
							
									local verticalAngle = receiveData.readFloat();	
							 | 
						|||
| 
								 | 
							
									local attackBonusRate = 0;
							 | 
						|||
| 
								 | 
							
									if (sq_BinaryGetReadSize() < receiveData.getSize())
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										// 奢问溘 掸?
							 | 
						|||
| 
								 | 
							
										attackBonusRate = receiveData.readDword();
							 | 
						|||
| 
								 | 
							
										local attackInfo = sq_GetCurrentAttackInfo(obj);
							 | 
						|||
| 
								 | 
							
										sq_SetCurrentAttackBonusRate(attackInfo, attackBonusRate);
							 | 
						|||
| 
								 | 
							
										sq_SetCurrentAttackInfo(obj,sq_GetCurrentAttackInfo(obj));
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local mage = obj.getTopCharacter();
							 | 
						|||
| 
								 | 
							
									if (!mage)
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local skill = sq_GetSkill(mage, SKILL_ELEMENTAL_CHANGE);
							 | 
						|||
| 
								 | 
							
									local skillLevel = sq_GetSkillLevel(mage, SKILL_ELEMENTAL_CHANGE);
							 | 
						|||
| 
								 | 
							
									//attackBonusRate = sq_GetAttackBonusRate(skill, 6, 1.0) + attackBonusRate;
							 | 
						|||
| 
								 | 
							
									attackBonusRate = sq_GetBonusRateWithPassive(mage, SKILL_ELEMENTAL_CHANGE, STATE_ELEMENTAL_CHANGE, 6, 1.0) + attackBonusRate;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									sq_SetCurrentAttackBonusRate(sq_GetCurrentAttackInfo(obj), attackBonusRate);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									// 檩楼撩暧 唳办缚 ?嫦桧 嫦当?虽 强晦阳侥缣 鼻鹧桧鼻击 掘羹缣 夥煎 勘横遽棻.
							 | 
						|||
| 
								 | 
							
									local changeStatusLevel		= sq_GetLevelData(mage, SKILL_ELEMENTAL_CHANGE, 7, skillLevel);// 7.荡舆 溯涟
							 | 
						|||
| 
								 | 
							
									local changeStatusProb		= sq_GetLevelData(mage, SKILL_ELEMENTAL_CHANGE, 8, skillLevel);// 8.荡舆 ?睦(0.1%)
							 | 
						|||
| 
								 | 
							
									changeStatusProb /= 10;
							 | 
						|||
| 
								 | 
							
									local changeStatusDuration	= sq_GetLevelData(mage, SKILL_ELEMENTAL_CHANGE, 9, skillLevel);// 9.荡舆 虽楼卫除
							 | 
						|||
| 
								 | 
							
									local attackInfo			= sq_GetCurrentAttackInfo(obj);
							 | 
						|||
| 
								 | 
							
									sq_SetChangeStatusIntoAttackInfo(attackInfo, 0, ACTIVESTATUS_CURSE, changeStatusProb, changeStatusLevel, changeStatusDuration);	
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									// ??赝暧 桧翕 陕紫蒂 亵瞰?
							 | 
						|||
| 
								 | 
							
									obj.sq_SetMoveParticle("Particle/ATMagicBallDarkMove.ptl", horizonAngle, verticalAngle);
							 | 
						|||
| 
								 | 
							
									local particleCreater = obj.sq_var.GetparticleCreaterMap("ATMagicBallDark", "PassiveObject/Character/Mage/Particle/ATMagicBallDarkTail1.ptl", obj);
							 | 
						|||
| 
								 | 
							
									particleCreater.Restart(0);
							 | 
						|||
| 
								 | 
							
									obj.sq_AddObjectParticleCreater("Particle/ATMagicBallDarkTail1.ptl");
							 | 
						|||
| 
								 | 
							
									obj.sq_AddObjectParticleCreater("Particle/ATMagicBallDarkTail2.ptl");
							 | 
						|||
| 
								 | 
							
									obj.sq_SetObjectParticlePos(0, -1, 0);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 葆彻掘羹 - 热楼撩
							 | 
						|||
| 
								 | 
							
								function setCustomData_po_ATMagicBallWater(obj, receiveData)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj)
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local horizonAngle = receiveData.readFloat();
							 | 
						|||
| 
								 | 
							
									local verticalAngle = receiveData.readFloat();	
							 | 
						|||
| 
								 | 
							
									if (sq_BinaryGetReadSize() < receiveData.getSize())
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										// 奢问溘 掸?
							 | 
						|||
| 
								 | 
							
										local attackBonusRate = receiveData.readDword();
							 | 
						|||
| 
								 | 
							
										local attackInfo = sq_GetCurrentAttackInfo(obj);
							 | 
						|||
| 
								 | 
							
										sq_SetCurrentAttackBonusRate(attackInfo, attackBonusRate);
							 | 
						|||
| 
								 | 
							
										sq_SetCurrentAttackInfo(obj,sq_GetCurrentAttackInfo(obj));
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									// ??赝暧 桧翕 陕紫蒂 亵瞰?
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									obj.sq_SetMoveParticle("Particle/ATMagicBallWaterMove.ptl", horizonAngle, verticalAngle);
							 | 
						|||
| 
								 | 
							
									local particleCreater = obj.sq_var.GetparticleCreaterMap("ATMagicBallWaterTail", "PassiveObject/Character/Mage/Particle/ATMagicBallWaterTail1.ptl", obj);
							 | 
						|||
| 
								 | 
							
									particleCreater.Restart(0);
							 | 
						|||
| 
								 | 
							
									obj.sq_AddObjectParticleCreater("Particle/ATMagicBallWaterTail1.ptl");
							 | 
						|||
| 
								 | 
							
									obj.sq_AddObjectParticleCreater("Particle/ATMagicBallWaterTail2.ptl");
							 | 
						|||
| 
								 | 
							
									obj.sq_SetObjectParticlePos(0, -1, 0);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 葆彻掘羹 - ?楼撩
							 | 
						|||
| 
								 | 
							
								function setCustomData_po_ATMagicBallFire(obj, receiveData)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj)
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local horizonAngle = receiveData.readFloat();
							 | 
						|||
| 
								 | 
							
									local verticalAngle = receiveData.readFloat();
							 | 
						|||
| 
								 | 
							
									if (sq_BinaryGetReadSize() < receiveData.getSize())
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										// 奢问溘 掸?
							 | 
						|||
| 
								 | 
							
										local attackBonusRate = receiveData.readDword();
							 | 
						|||
| 
								 | 
							
										local attackInfo = sq_GetCurrentAttackInfo(obj);
							 | 
						|||
| 
								 | 
							
										sq_SetCurrentAttackBonusRate(attackInfo, attackBonusRate);
							 | 
						|||
| 
								 | 
							
										sq_SetCurrentAttackInfo(obj,sq_GetCurrentAttackInfo(obj));
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									// ??赝暧 桧翕 陕紫蒂 亵瞰?
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									obj.sq_SetMoveParticle("Particle/ATMagicBallFireMove.ptl", horizonAngle, verticalAngle);
							 | 
						|||
| 
								 | 
							
									local particleCreater = obj.sq_var.GetparticleCreaterMap("ATMagicBallFireTail", "PassiveObject/Character/Mage/Particle/ATMagicBallFireTail1.ptl", obj);
							 | 
						|||
| 
								 | 
							
									particleCreater.Restart(0);
							 | 
						|||
| 
								 | 
							
									obj.sq_AddObjectParticleCreater("Particle/ATMagicBallFireTail1.ptl");
							 | 
						|||
| 
								 | 
							
									obj.sq_AddObjectParticleCreater("Particle/ATMagicBallFireTail2.ptl");
							 | 
						|||
| 
								 | 
							
									obj.sq_SetObjectParticlePos(0, -1, 0);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 葆彻掘羹 - 鼠楼撩
							 | 
						|||
| 
								 | 
							
								function setCustomData_po_ATMagicBallNone(obj, receiveData)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj)
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local horizonAngle = receiveData.readFloat();
							 | 
						|||
| 
								 | 
							
									local verticalAngle = receiveData.readFloat();
							 | 
						|||
| 
								 | 
							
									if (sq_BinaryGetReadSize() < receiveData.getSize())
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										// 奢问溘 掸?
							 | 
						|||
| 
								 | 
							
										local attackBonusRate = receiveData.readDword();
							 | 
						|||
| 
								 | 
							
										local attackInfo = sq_GetCurrentAttackInfo(obj);
							 | 
						|||
| 
								 | 
							
										sq_SetCurrentAttackBonusRate(attackInfo, attackBonusRate);
							 | 
						|||
| 
								 | 
							
										sq_SetCurrentAttackInfo(obj,sq_GetCurrentAttackInfo(obj));
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									// ??赝暧 桧翕 陕紫蒂 亵瞰?
							 | 
						|||
| 
								 | 
							
									obj.sq_SetMoveParticle("Particle/ATMagicBallNoneMove.ptl", horizonAngle, verticalAngle);
							 | 
						|||
| 
								 | 
							
									local particleCreater = obj.sq_var.GetparticleCreaterMap("ATMagicBallNoneTail", "PassiveObject/Character/Mage/Particle/ATMagicBallNoneTail.ptl", obj);
							 | 
						|||
| 
								 | 
							
									particleCreater.Restart(0);
							 | 
						|||
| 
								 | 
							
									obj.sq_AddObjectParticleCreater("Particle/ATMagicBallNoneTail.ptl");
							 | 
						|||
| 
								 | 
							
									obj.sq_SetObjectParticlePos(0, -1, 0);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local mage = obj.getTopCharacter();
							 | 
						|||
| 
								 | 
							
									if (!mage)
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									// 晦狱晦 熨湿 瞳辨
							 | 
						|||
| 
								 | 
							
									mage.applyBasicAttackUp(sq_GetCurrentAttackInfo(obj),mage.getState());	
							 | 
						|||
| 
								 | 
							
									sq_SetCurrentAttackInfo(obj,sq_GetCurrentAttackInfo(obj));
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onAttack_po_ATMagicBallNone(obj, damager, boundingBox, isStuck)
							 | 
						|||
| 
								 | 
							
								{	// ?颤 鼠楼撩
							 | 
						|||
| 
								 | 
							
									if (!obj)
							 | 
						|||
| 
								 | 
							
										return 0;
							 | 
						|||
| 
								 | 
							
									return 0;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// ?楼撩 ?嫦 螃粽薛? 当撩
							 | 
						|||
| 
								 | 
							
								function createFireExplosion(obj, damager, boundingBox, isStuck, passiveObjectIndex)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if (!obj)
							 | 
						|||
| 
								 | 
							
										return 0;
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									if(!damager)
							 | 
						|||
| 
								 | 
							
										return 0;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local mage = obj.getTopCharacter();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if (!mage)
							 | 
						|||
| 
								 | 
							
										return 0;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if (obj.isMyControlObject())
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										// 嬴桧蛊 翱翕 偃嫦
							 | 
						|||
| 
								 | 
							
										// 县溯诠骁 溯樯暧 static data(3)暧 奢问溘 隶陛 parameter谛 翱翕脾
							 | 
						|||
| 
								 | 
							
										local var = obj.getVar();
							 | 
						|||
| 
								 | 
							
										local bonusRate = 1.0;
							 | 
						|||
| 
								 | 
							
										if (var.getInt(VAR_IS_ELEMENTAL_RAIN_PASSIVE_OBJECT) > 0)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											local rate = sq_GetIntData(mage, SKILL_ELEMENTAL_RAIN, 3);
							 | 
						|||
| 
								 | 
							
											bonusRate = rate.tofloat() / 100.0;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local skill = sq_GetSkill(mage, SKILL_ELEMENTAL_CHANGE);
							 | 
						|||
| 
								 | 
							
										local skillLevel = sq_GetSkillLevel(mage, SKILL_ELEMENTAL_CHANGE);
							 | 
						|||
| 
								 | 
							
										local attackBonusRate = sq_GetBonusRateWithPassive(mage, SKILL_ELEMENTAL_CHANGE, STATE_ELEMENTAL_CHANGE, 1, bonusRate);
							 | 
						|||
| 
								 | 
							
										local sizeRate = sq_GetIntData(mage, SKILL_ELEMENTAL_CHANGE, 0);
							 | 
						|||
| 
								 | 
							
										local totalDamage = sq_GetCurrentAttackBonusRate(obj) + attackBonusRate;
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local x = sq_GetCenterXPos(boundingBox);
							 | 
						|||
| 
								 | 
							
										local y = damager.getYPos() + 1;
							 | 
						|||
| 
								 | 
							
										local z = sq_GetCenterZPos(boundingBox);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										sq_BinaryStartWrite()
							 | 
						|||
| 
								 | 
							
										sq_BinaryWriteWord(sizeRate);		// ?嫦暧 觼晦
							 | 
						|||
| 
								 | 
							
										sq_BinaryWriteWord(totalDamage);	// 等嘐虽		
							 | 
						|||
| 
								 | 
							
										//sq_SendCreatePassiveObjectPacket(obj, passiveObjectIndex, 0, 0, 1, 0, ENUM_DIRECTION_NEUTRAL);
							 | 
						|||
| 
								 | 
							
										print(" x:" + x + " y:" + y + " z:" + z);
							 | 
						|||
| 
								 | 
							
										sq_SendCreatePassiveObjectPacketPos(mage, passiveObjectIndex, 0, x, y, z);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										//sq_SendDestroyPacketPassiveObject(obj);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 瞳桧 翱楼 葆彻掘(?楼撩)缣 蜃挤.
							 | 
						|||
| 
								 | 
							
								// ?嫦 当撩
							 | 
						|||
| 
								 | 
							
								function onAttack_po_ATMagicBallFireMultiShot(obj, damager, boundingBox, isStuck)
							 | 
						|||
| 
								 | 
							
								{	// 翱楼 葆彻掘 ?楼撩
							 | 
						|||
| 
								 | 
							
									createFireExplosion(obj, damager, boundingBox, isStuck, 24281);
							 | 
						|||
| 
								 | 
							
									return 0;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 瞳桧 ?颤 葆彻掘(?楼撩)缣 蜃挤.
							 | 
						|||
| 
								 | 
							
								// ?嫦 当撩
							 | 
						|||
| 
								 | 
							
								function onAttack_po_ATMagicBallFire(obj, damager, boundingBox, isStuck)
							 | 
						|||
| 
								 | 
							
								{	// ?颤 ?楼撩
							 | 
						|||
| 
								 | 
							
									createFireExplosion(obj, damager, boundingBox, isStuck, 24214);
							 | 
						|||
| 
								 | 
							
									return 0;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 热楼撩 ?嫦 螃粽薛? 当撩
							 | 
						|||
| 
								 | 
							
								function createWaterExplosion(obj, damager, boundingBox, isStuck, passiveObjectIndex)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if (!obj)
							 | 
						|||
| 
								 | 
							
										return 0;
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									if(!damager)
							 | 
						|||
| 
								 | 
							
										return 0;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local mage = obj.getTopCharacter();
							 | 
						|||
| 
								 | 
							
									if (!mage)
							 | 
						|||
| 
								 | 
							
										return 0;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if (obj.isMyControlObject())
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										// 嬴桧蛊 翱翕 偃嫦
							 | 
						|||
| 
								 | 
							
										// 县溯诠骁 溯樯暧 static data(3)暧 奢问溘 隶陛 parameter谛 翱翕脾
							 | 
						|||
| 
								 | 
							
										local var = obj.getVar();
							 | 
						|||
| 
								 | 
							
										local bonusRate = 1.0;
							 | 
						|||
| 
								 | 
							
										if (var.getInt(VAR_IS_ELEMENTAL_RAIN_PASSIVE_OBJECT) > 0)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											local rate = sq_GetIntData(mage, SKILL_ELEMENTAL_RAIN, 3);
							 | 
						|||
| 
								 | 
							
											bonusRate = rate.tofloat() / 100.0;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local skill = sq_GetSkill(mage, SKILL_ELEMENTAL_CHANGE);
							 | 
						|||
| 
								 | 
							
										local skillLevel = sq_GetSkillLevel(mage, SKILL_ELEMENTAL_CHANGE);
							 | 
						|||
| 
								 | 
							
										//local attackBonusRate = sq_GetAttackBonusRate(skill, 2, 1.0);
							 | 
						|||
| 
								 | 
							
										local attackBonusRate = sq_GetBonusRateWithPassive(mage, SKILL_ELEMENTAL_CHANGE, STATE_ELEMENTAL_CHANGE, 2, bonusRate);
							 | 
						|||
| 
								 | 
							
										local sizeRate = sq_GetIntData(mage, SKILL_ELEMENTAL_CHANGE, 1);
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
										local totalDamage = sq_GetCurrentAttackBonusRate(obj) + attackBonusRate;
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local power = sq_GetLevelData(mage, SKILL_ELEMENTAL_CHANGE, 3, skillLevel);
							 | 
						|||
| 
								 | 
							
										local prob = sq_GetLevelData(mage, SKILL_ELEMENTAL_CHANGE, 4, skillLevel);
							 | 
						|||
| 
								 | 
							
										local validTime = sq_GetLevelData(mage, SKILL_ELEMENTAL_CHANGE, 5, skillLevel);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local x = sq_GetCenterXPos(boundingBox);
							 | 
						|||
| 
								 | 
							
										local y = damager.getYPos() + 1;
							 | 
						|||
| 
								 | 
							
										local z = sq_GetCenterZPos(boundingBox);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										sq_BinaryStartWrite()
							 | 
						|||
| 
								 | 
							
										sq_BinaryWriteWord(sizeRate);			// ?嫦暧 觼晦
							 | 
						|||
| 
								 | 
							
										sq_BinaryWriteWord(totalDamage);		// 等嘐虽
							 | 
						|||
| 
								 | 
							
										sq_BinaryWriteByte(ACTIVESTATUS_FREEZE);// 彩念 鼻鹧桧鼻
							 | 
						|||
| 
								 | 
							
										prob = prob / 10.0;
							 | 
						|||
| 
								 | 
							
										sq_BinaryWriteFloat(prob.tofloat());	// ?睦 (0.1%)
							 | 
						|||
| 
								 | 
							
										sq_BinaryWriteFloat(power.tofloat());	// 溯涟
							 | 
						|||
| 
								 | 
							
										sq_BinaryWriteDword(validTime);			// 虽楼卫除
							 | 
						|||
| 
								 | 
							
										//sq_SendCreatePassiveObjectPacket(obj, passiveObjectIndex, 0, 0, 1, 0, ENUM_DIRECTION_NEUTRAL);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										sq_SendCreatePassiveObjectPacketPos(mage, passiveObjectIndex, 0, x, y, z);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 瞳桧 翱楼 葆彻掘(热楼撩)缣 蜃挤.
							 | 
						|||
| 
								 | 
							
								// ?嫦 当撩
							 | 
						|||
| 
								 | 
							
								function onAttack_po_ATMagicBallWaterMultiShot(obj, damager, boundingBox, isStuck)
							 | 
						|||
| 
								 | 
							
								{	// 翱楼 葆彻掘 ?楼撩
							 | 
						|||
| 
								 | 
							
									createWaterExplosion(obj, damager, boundingBox, isStuck, 24282);
							 | 
						|||
| 
								 | 
							
									return 0;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 瞳桧 ?颤 葆彻掘(热楼撩)缣 蜃挤.
							 | 
						|||
| 
								 | 
							
								// ?嫦 当撩
							 | 
						|||
| 
								 | 
							
								function onAttack_po_ATMagicBallWater(obj, damager, boundingBox, isStuck)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									// ?颤 热楼撩
							 | 
						|||
| 
								 | 
							
									createWaterExplosion(obj, damager, boundingBox, isStuck, 24215);
							 | 
						|||
| 
								 | 
							
									return 0;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onAttack_po_ATMagicBallDark(obj, damager, boundingBox, isStuck)
							 | 
						|||
| 
								 | 
							
								{	// ?颤 檩楼撩
							 | 
						|||
| 
								 | 
							
									if (!obj)
							 | 
						|||
| 
								 | 
							
										return 0;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									return 0;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 赀楼撩 ?嫦 螃粽薛? 当撩
							 | 
						|||
| 
								 | 
							
								function createLightExplosion(obj, damager, boundingBox, isStuck, passiveObjectIndex)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!damager)
							 | 
						|||
| 
								 | 
							
										return 0;
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									if (!obj)
							 | 
						|||
| 
								 | 
							
										return 0;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local mage = obj.getTopCharacter();
							 | 
						|||
| 
								 | 
							
									if (!mage)
							 | 
						|||
| 
								 | 
							
										return 0;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if (obj.isMyControlObject())
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										// 嬴桧蛊 翱翕 偃嫦
							 | 
						|||
| 
								 | 
							
										// 县溯诠骁 溯樯暧 static data(3)暧 奢问溘 隶陛 parameter谛 翱翕脾
							 | 
						|||
| 
								 | 
							
										local var = obj.getVar();
							 | 
						|||
| 
								 | 
							
										local bonusRate = 1.0;
							 | 
						|||
| 
								 | 
							
										if (var.getInt(VAR_IS_ELEMENTAL_RAIN_PASSIVE_OBJECT) > 0)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											local rate = sq_GetIntData(mage, SKILL_ELEMENTAL_RAIN, 3);
							 | 
						|||
| 
								 | 
							
											bonusRate = rate.tofloat() / 100.0;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local skill = sq_GetSkill(mage, SKILL_ELEMENTAL_CHANGE);
							 | 
						|||
| 
								 | 
							
										local skillLevel = sq_GetSkillLevel(mage, SKILL_ELEMENTAL_CHANGE);
							 | 
						|||
| 
								 | 
							
										//local attackBonusRate = sq_GetAttackBonusRate(skill, 10, 1.0);
							 | 
						|||
| 
								 | 
							
										local attackBonusRate = sq_GetBonusRateWithPassive(mage, SKILL_ELEMENTAL_CHANGE, STATE_ELEMENTAL_CHANGE, 10, bonusRate);
							 | 
						|||
| 
								 | 
							
										local sizeRate = sq_GetIntData(mage, SKILL_ELEMENTAL_CHANGE, 2);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										// 鼻鹧桧鼻 溯涟, ?睦, 虽楼卫除
							 | 
						|||
| 
								 | 
							
										local power = sq_GetLevelData(mage, SKILL_ELEMENTAL_CHANGE, 11, skillLevel);
							 | 
						|||
| 
								 | 
							
										local prob = sq_GetLevelData(mage, SKILL_ELEMENTAL_CHANGE, 12, skillLevel);
							 | 
						|||
| 
								 | 
							
										local validTime = sq_GetLevelData(mage, SKILL_ELEMENTAL_CHANGE, 13, skillLevel);
							 | 
						|||
| 
								 | 
							
										local damage = sq_GetLevelData(mage, SKILL_ELEMENTAL_CHANGE, 14, skillLevel);
							 | 
						|||
| 
								 | 
							
										local totalDamage = sq_GetCurrentAttackBonusRate(obj) + attackBonusRate;
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local x = sq_GetCenterXPos(boundingBox);
							 | 
						|||
| 
								 | 
							
										local y = damager.getYPos() + 1;
							 | 
						|||
| 
								 | 
							
										local z = sq_GetCenterZPos(boundingBox);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										sq_BinaryStartWrite()
							 | 
						|||
| 
								 | 
							
										sq_BinaryWriteWord(sizeRate);			// ?嫦暧 觼晦
							 | 
						|||
| 
								 | 
							
										sq_BinaryWriteWord(totalDamage);	// 等嘐虽
							 | 
						|||
| 
								 | 
							
										sq_BinaryWriteByte(ACTIVESTATUS_LIGHTNING);	// 马瞪 鼻鹧桧鼻
							 | 
						|||
| 
								 | 
							
										prob = prob / 10.0;
							 | 
						|||
| 
								 | 
							
										sq_BinaryWriteFloat(prob.tofloat());	// ?睦 (0.1%)
							 | 
						|||
| 
								 | 
							
										sq_BinaryWriteFloat(power.tofloat());	// 溯涟
							 | 
						|||
| 
								 | 
							
										sq_BinaryWriteDword(validTime);			// 虽楼卫除
							 | 
						|||
| 
								 | 
							
										sq_BinaryWriteDword(damage);			// 马瞪 等嘐虽
							 | 
						|||
| 
								 | 
							
										//sq_SendCreatePassiveObjectPacket(obj, passiveObjectIndex, 0, 0, 1, 0, ENUM_DIRECTION_NEUTRAL);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										print(" x:" + x + " y:" + y + " z:" + z);
							 | 
						|||
| 
								 | 
							
										sq_SendCreatePassiveObjectPacketPos(mage, passiveObjectIndex, 0, x, y, z);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 瞳桧 ?颤 葆彻掘(赀楼撩)缣 蜃挤.
							 | 
						|||
| 
								 | 
							
								// ?嫦 当撩
							 | 
						|||
| 
								 | 
							
								function onAttack_po_ATMagicBallLight(obj, damager, boundingBox, isStuck)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									createLightExplosion(obj, damager, boundingBox, isStuck, 24216);
							 | 
						|||
| 
								 | 
							
									return 0;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 瞳桧 翱楼 葆彻掘(赀楼撩)缣 蜃挤.
							 | 
						|||
| 
								 | 
							
								// ?嫦 当撩
							 | 
						|||
| 
								 | 
							
								function onAttack_po_ATMagicBallLightMultiShot(obj, damager, boundingBox, isStuck)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									createLightExplosion(obj, damager, boundingBox, isStuck, 24283);
							 | 
						|||
| 
								 | 
							
									return 0;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function procAppend_po_ATMagicBallNone(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								 |