347 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			347 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								ATMAGE_MAGIC_ANI_TYPE_BACK	 <- 0;
							 | 
						|||
| 
								 | 
							
								ATMAGE_MAGIC_ANI_TYPE_FRONT  <- 1;
							 | 
						|||
| 
								 | 
							
								ATMAGE_MAGIC_ANI_TYPE_CIRCLE <- 2;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								VAR_MAGIC_SHIELD_BACK_ANI	 <- 0;
							 | 
						|||
| 
								 | 
							
								VAR_MAGIC_SHIELD_FRONT_ANI	 <- 1;
							 | 
						|||
| 
								 | 
							
								VAR_MAGIC_SHIELD_ICE_HIT_COUNT <- 2; // 热楼撩 尔?虞桧 虞击热 毡朝 苹遴? ?热.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function sq_AddFunctionName(appendage)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									appendage.sq_AddFunctionName("proc", "proc_appendage_MagicShield")
							 | 
						|||
| 
								 | 
							
									appendage.sq_AddFunctionName("onStart", "onStart_appendage_MagicShield")
							 | 
						|||
| 
								 | 
							
									appendage.sq_AddFunctionName("onEnd", "onEnd_appendage_MagicShield")
							 | 
						|||
| 
								 | 
							
									appendage.sq_AddFunctionName("onDamageParent", "onDamageParent_appendage_MagicShield")	
							 | 
						|||
| 
								 | 
							
									appendage.sq_AddFunctionName("drawAppend", "drawAppend_appendage_MagicShield")	
							 | 
						|||
| 
								 | 
							
									appendage.sq_AddFunctionName("getImmuneTypeDamageRate", "getImmuneTypeDamageRate_appendage_MagicShield")
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function sq_AddEffect(appendage)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function drawAppend_appendage_MagicShield(appendage, isOver, x, y, isFlip)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if (!appendage) {
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local obj = appendage.getParent();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if (!obj) {
							 | 
						|||
| 
								 | 
							
										appendage.setValid(false);
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									local var = appendage.getVar();
							 | 
						|||
| 
								 | 
							
									local backAni = var.getAnimation(VAR_MAGIC_SHIELD_BACK_ANI);
							 | 
						|||
| 
								 | 
							
									local frontAni = var.getAnimation(VAR_MAGIC_SHIELD_FRONT_ANI);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if (frontAni && isOver) {		
							 | 
						|||
| 
								 | 
							
										sq_AnimationProc(frontAni);
							 | 
						|||
| 
								 | 
							
										sq_drawCurrentFrame(frontAni, x, y, isFlip);		
							 | 
						|||
| 
								 | 
							
									}	
							 | 
						|||
| 
								 | 
							
									else if (backAni && !isOver) {
							 | 
						|||
| 
								 | 
							
										sq_AnimationProc(backAni);
							 | 
						|||
| 
								 | 
							
										sq_drawCurrentFrame(backAni, x, y, isFlip);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function getImmuneTypeDamageRate_appendage_MagicShield(appendage, damageRate, attacker)
							 | 
						|||
| 
								 | 
							
								{		
							 | 
						|||
| 
								 | 
							
									if (!appendage)
							 | 
						|||
| 
								 | 
							
										return damageRate;
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									local parentObj = appendage.getParent();	
							 | 
						|||
| 
								 | 
							
									parentObj = sq_GetCNRDObjectToSQRCharacter(parentObj);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if (!parentObj) {
							 | 
						|||
| 
								 | 
							
										appendage.setValid(false);
							 | 
						|||
| 
								 | 
							
										return damageRate;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local var = appendage.getVar();
							 | 
						|||
| 
								 | 
							
									if (!var)
							 | 
						|||
| 
								 | 
							
										return damageRate;	
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local type = parentObj.getThrowElement();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									// 热楼撩 : 等嘐虽 橾姜 ?热 谏瞪 寞横
							 | 
						|||
| 
								 | 
							
									if (type == ENUM_ELEMENT_WATER)
							 | 
						|||
| 
								 | 
							
										return 0;			
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									local type = parentObj.getThrowElement();		
							 | 
						|||
| 
								 | 
							
									// 溯涟樯?煎 等嘐虽徽桧 亵姜脾.
							 | 
						|||
| 
								 | 
							
									local skill_level = parentObj.sq_GetSkillLevel(SKILL_MAGIC_SHIELD);
							 | 
						|||
| 
								 | 
							
									local decreaseRate = parentObj.sq_GetLevelData(SKILL_MAGIC_SHIELD, 1, skill_level); // 1. 等嘐虽 马模徽(%)			
							 | 
						|||
| 
								 | 
							
									damageRate = damageRate - decreaseRate;
							 | 
						|||
| 
								 | 
							
									return damageRate;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function removeMagicShield(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									CNSquirrelAppendage.sq_RemoveAppendage(obj, "Character/ATMage/MagicShield/ap_MagicShield.nut");
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 等嘐虽卫 籀葬.
							 | 
						|||
| 
								 | 
							
								// 鼠楼撩 : 嫡朝 等嘐虽 橾姜 % 马模
							 | 
						|||
| 
								 | 
							
								// ?楼撩 : ?问卫 瞳缣啪 ?楼撩 等嘐虽
							 | 
						|||
| 
								 | 
							
								// 热楼撩 : 等嘐虽 橾姜 ?热 谏瞪 寞横
							 | 
						|||
| 
								 | 
							
								// 赀楼撩 : ?问卫 橾姜卫除 瞳 唳霜 
							 | 
						|||
| 
								 | 
							
								// 檩楼撩 : ?问卫 奢问濠 菩?
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onDamageParent_appendage_MagicShield(appendage ,attacker, boundingBox, isStuck) 
							 | 
						|||
| 
								 | 
							
								{		
							 | 
						|||
| 
								 | 
							
									if (!appendage) {
							 | 
						|||
| 
								 | 
							
										return;		
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local parentObj = appendage.getParent();	
							 | 
						|||
| 
								 | 
							
									parentObj = sq_GetCNRDObjectToSQRCharacter(parentObj);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if (!parentObj) {
							 | 
						|||
| 
								 | 
							
										appendage.setValid(false);
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local var = appendage.getVar();
							 | 
						|||
| 
								 | 
							
									if (!var)
							 | 
						|||
| 
								 | 
							
										return;	
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local type = parentObj.getThrowElement();
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									local circleObj = sq_AddDrawOnlyAniFromParent(parentObj, getMagicShieldAniPath(ATMAGE_MAGIC_ANI_TYPE_CIRCLE, type)  ,0,-1,0);
							 | 
						|||
| 
								 | 
							
									if (circleObj) {
							 | 
						|||
| 
								 | 
							
										circleObj.setCurrentDirection(sq_GetOppositeDirection(attacker.getDirection()));
							 | 
						|||
| 
								 | 
							
										var.push_obj_vector(circleObj);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if (isStuck)
							 | 
						|||
| 
								 | 
							
										return;		
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
									local skill_level = sq_GetSkillLevel(parentObj, SKILL_MAGIC_SHIELD);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									// ?楼撩 : ?问卫 瞳缣啪 ?楼撩 等嘐虽
							 | 
						|||
| 
								 | 
							
									if (type == ENUM_ELEMENT_FIRE) 
							 | 
						|||
| 
								 | 
							
									{			
							 | 
						|||
| 
								 | 
							
										local sqrChr = sq_GetCNRDObjectToSQRCharacter(parentObj);
							 | 
						|||
| 
								 | 
							
										if (sqrChr) 
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											if (!(parentObj.sq_GetTeam() == attacker.getTeam())) 
							 | 
						|||
| 
								 | 
							
											{	
							 | 
						|||
| 
								 | 
							
												local fireDamage = sqrChr.sq_GetPowerWithPassive(SKILL_MAGIC_SHIELD, STATE_MAGIC_SHIELD, 2,-1,1.0);
							 | 
						|||
| 
								 | 
							
												local ap = sq_getNewAttackInfoPacket();
							 | 
						|||
| 
								 | 
							
												ap.power = fireDamage;
							 | 
						|||
| 
								 | 
							
												ap.element = ENUM_ELEMENT_FIRE;
							 | 
						|||
| 
								 | 
							
												ap.useWeapon = false;
							 | 
						|||
| 
								 | 
							
												ap.eType = ATTACKTYPE_MAGICAL;
							 | 
						|||
| 
								 | 
							
												if (parentObj.isMyControlObject())
							 | 
						|||
| 
								 | 
							
													sq_SendHitObjectPacketByAttackInfo(parentObj, attacker, ap);
							 | 
						|||
| 
								 | 
							
											}		
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}	
							 | 
						|||
| 
								 | 
							
									// 热楼撩 : 等嘐虽 橾姜 ?热 谏瞪 寞横
							 | 
						|||
| 
								 | 
							
									if (type == ENUM_ELEMENT_WATER) 
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										if (!attacker.isObjectType(0x0821))
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											if (!(parentObj.sq_GetTeam() == attacker.getTeam())) 
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												local currentIceGuardCount = var.getInt(VAR_MAGIC_SHIELD_ICE_HIT_COUNT); // 热楼撩 尔? ?热
							 | 
						|||
| 
								 | 
							
												currentIceGuardCount--;
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
											if (currentIceGuardCount <= 0)
							 | 
						|||
| 
								 | 
							
												appendage.setValid(false);
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
											var.setInt(VAR_MAGIC_SHIELD_ICE_HIT_COUNT,currentIceGuardCount);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										}	
							 | 
						|||
| 
								 | 
							
									}	
							 | 
						|||
| 
								 | 
							
									// 赀楼撩 : ?问卫 橾姜卫除 瞳 唳霜 
							 | 
						|||
| 
								 | 
							
									else if (type == ENUM_ELEMENT_LIGHT) 
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										if (!(parentObj.sq_GetTeam() == attacker.getTeam())) 
							 | 
						|||
| 
								 | 
							
										{		
							 | 
						|||
| 
								 | 
							
											local stunTime	= sq_GetLevelData(parentObj, SKILL_MAGIC_SHIELD, 4, skill_level); // 4. 瞳 唳霜 卫除
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
											local ap = sq_getNewAttackInfoPacket();
							 | 
						|||
| 
								 | 
							
											ap.hitStunTimeAttackerDamager = stunTime;
							 | 
						|||
| 
								 | 
							
											sq_SendHitObjectPacketByAttackInfo(parentObj, attacker, ap);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									// 檩楼撩 : ?问卫 奢问濠 菩?	
							 | 
						|||
| 
								 | 
							
									else if (type == ENUM_ELEMENT_DARK) 
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										if (!(parentObj.sq_GetTeam() == attacker.getTeam())) 
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											local prob	= sq_GetLevelData(parentObj, SKILL_MAGIC_SHIELD, 5, skill_level)/10.0; // 5. 菩? ?睦 (0.1%)
							 | 
						|||
| 
								 | 
							
											local level	= sq_GetLevelData(parentObj, SKILL_MAGIC_SHIELD, 6, skill_level); // 6. 菩? 溯涟
							 | 
						|||
| 
								 | 
							
											local time	= sq_GetLevelData(parentObj, SKILL_MAGIC_SHIELD, 7, skill_level); // 7. 虽楼卫除
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
											sq_sendSetActiveStatusPacket(attacker, parentObj, ACTIVESTATUS_SLOW, prob.tofloat(), level, false, time); // ?睦, 溯涟, 鬼薯, 卫除
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function getMagicShieldAniPath(aniType, elementType)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									local commonPath = "Character/Mage/Effect/Animation/ATMagicShield/";	
							 | 
						|||
| 
								 | 
							
									local aniName =  "00_shield_"; //ATMAGE_MAGIC_ANI_TYPE_BACK
							 | 
						|||
| 
								 | 
							
									local typeName = "none"; // ENUM_ELEMENT_NONE
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if (aniType == ATMAGE_MAGIC_ANI_TYPE_FRONT) 
							 | 
						|||
| 
								 | 
							
										aniName =  "01_shield_";
							 | 
						|||
| 
								 | 
							
									else if (aniType == ATMAGE_MAGIC_ANI_TYPE_CIRCLE) 
							 | 
						|||
| 
								 | 
							
										aniName =  "02_shield_";
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if (elementType == ENUM_ELEMENT_WATER)
							 | 
						|||
| 
								 | 
							
										typeName = "ice";
							 | 
						|||
| 
								 | 
							
									else if (elementType == ENUM_ELEMENT_FIRE)
							 | 
						|||
| 
								 | 
							
										typeName = "fire";
							 | 
						|||
| 
								 | 
							
									else if (elementType == ENUM_ELEMENT_DARK)
							 | 
						|||
| 
								 | 
							
										typeName = "dark";
							 | 
						|||
| 
								 | 
							
									else if (elementType == ENUM_ELEMENT_LIGHT)
							 | 
						|||
| 
								 | 
							
										typeName = "light";
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									return commonPath + aniName + typeName + "_dodge.ani";
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function setMagicShieldType(appendage, obj, type)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									local parentObj = sq_GetCNRDObjectToSQRCharacter(obj);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if (!parentObj) {
							 | 
						|||
| 
								 | 
							
										appendage.setValid(false);
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									local var = appendage.getVar();	
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local currentAniFrameIndex = 0; // 晦襄 楼撩 桧?? 拥栖谛 褐叙 桧?? 拥栖谛 翕晦?蒂 嫔?.
							 | 
						|||
| 
								 | 
							
									local backAni = var.getAnimation(VAR_MAGIC_SHIELD_BACK_ANI);
							 | 
						|||
| 
								 | 
							
									local frontAni = var.getAnimation(VAR_MAGIC_SHIELD_FRONT_ANI);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if (backAni && frontAni) {
							 | 
						|||
| 
								 | 
							
										currentAniFrameIndex = sq_GetAnimationFrameIndex(backAni);
							 | 
						|||
| 
								 | 
							
										sq_DeleteAni(backAni);
							 | 
						|||
| 
								 | 
							
										sq_DeleteAni(frontAni);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									backAni  = sq_CreateAnimation("", getMagicShieldAniPath(ATMAGE_MAGIC_ANI_TYPE_BACK, type));
							 | 
						|||
| 
								 | 
							
									frontAni = sq_CreateAnimation("", getMagicShieldAniPath(ATMAGE_MAGIC_ANI_TYPE_FRONT, type));
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									sq_SetAnimationFrameIndex( backAni, currentAniFrameIndex); // ?溯歜 翕晦?
							 | 
						|||
| 
								 | 
							
									sq_SetAnimationFrameIndex( frontAni, currentAniFrameIndex);		
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									var.setAnimation(VAR_MAGIC_SHIELD_BACK_ANI,backAni); // 渗热 荡潍 : 嫔纂 翕晦?辨
							 | 
						|||
| 
								 | 
							
									var.setAnimation(VAR_MAGIC_SHIELD_FRONT_ANI,frontAni);			
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function setMagicShieldTime(obj,time)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									local appendage = CNSquirrelAppendage.sq_GetAppendage(obj, "Character/ATMage/MagicShield/ap_MagicShield.nut");
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if (!appendage)
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									appendage.sq_SetValidTime(time);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function proc_appendage_MagicShield(appendage)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if (!appendage) {
							 | 
						|||
| 
								 | 
							
										return;		
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local parentObj = appendage.getParent();
							 | 
						|||
| 
								 | 
							
									parentObj = sq_GetCNRDObjectToSQRCharacter(parentObj);
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
									if (!parentObj) {
							 | 
						|||
| 
								 | 
							
										appendage.setValid(false);
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									}				
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local var = appendage.getVar();				
							 | 
						|||
| 
								 | 
							
									local objectsSize = var.get_obj_vector_size();	
							 | 
						|||
| 
								 | 
							
									for (local i=0;i<objectsSize;++i)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										local circle = var.get_obj_vector(i);
							 | 
						|||
| 
								 | 
							
										if (circle)
							 | 
						|||
| 
								 | 
							
											sq_SetCurrentPos(circle, parentObj.getXPos(), parentObj.getYPos()+1, parentObj.getZPos());		
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onStart_appendage_MagicShield(appendage)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if (!appendage) {
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local parentObj = appendage.getParent();
							 | 
						|||
| 
								 | 
							
									parentObj = sq_GetCNRDObjectToSQRCharacter(parentObj);
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
									if (!parentObj) {
							 | 
						|||
| 
								 | 
							
										appendage.setValid(false);
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									//渗热 蟾晦?
							 | 
						|||
| 
								 | 
							
									local var = appendage.getVar();	
							 | 
						|||
| 
								 | 
							
									local skill_level = sq_GetSkillLevel(parentObj, SKILL_MAGIC_SHIELD);
							 | 
						|||
| 
								 | 
							
									local maxIceGuardHit = sq_GetLevelData(parentObj, SKILL_MAGIC_SHIELD, 3, skill_level); // 3. 热楼撩 等嘐虽 ?热 ?热		
							 | 
						|||
| 
								 | 
							
									var.setInt(VAR_MAGIC_SHIELD_ICE_HIT_COUNT, maxIceGuardHit);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									// 罹晦缣怃 议葛搅 楼撩击 嫡嬴谛怃 楼撩 高击 虽姜?邀.
							 | 
						|||
| 
								 | 
							
									local elementalType = parentObj.getThrowElement();	
							 | 
						|||
| 
								 | 
							
									setMagicShieldType(appendage, parentObj, elementalType);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									// 卫除击 虽姜
							 | 
						|||
| 
								 | 
							
									local skill_level = sq_GetSkillLevel(parentObj,SKILL_MAGIC_SHIELD);
							 | 
						|||
| 
								 | 
							
									local time = sq_GetLevelData(parentObj, SKILL_MAGIC_SHIELD, 0, skill_level); // 0. 虽楼卫除
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									setMagicShieldTime(parentObj,time);
							 | 
						|||
| 
								 | 
							
									parentObj.sq_PlaySound("ESHIELD_LOOP",SKILL_MAGIC_SHIELD);	
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onEnd_appendage_MagicShield(appendage)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if (!appendage) {
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									}	
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									local parentObj = appendage.getParent();	
							 | 
						|||
| 
								 | 
							
									parentObj = sq_GetCNRDObjectToSQRCharacter(parentObj);		
							 | 
						|||
| 
								 | 
							
									if (!parentObj) {
							 | 
						|||
| 
								 | 
							
										appendage.setValid(false);
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									}	
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local var = appendage.getVar();	
							 | 
						|||
| 
								 | 
							
									local backAni = var.getAnimation(VAR_MAGIC_SHIELD_BACK_ANI);
							 | 
						|||
| 
								 | 
							
									local frontAni = var.getAnimation(VAR_MAGIC_SHIELD_FRONT_ANI);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if (backAni && frontAni) {	
							 | 
						|||
| 
								 | 
							
										sq_DeleteAni(backAni);
							 | 
						|||
| 
								 | 
							
										sq_DeleteAni(frontAni);
							 | 
						|||
| 
								 | 
							
									}			
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									var.clear_obj_vector();	
							 | 
						|||
| 
								 | 
							
									parentObj.stopSound(SKILL_MAGIC_SHIELD);		
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								 |