297 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			297 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								MODE_NORMAL <- 0
							 | 
						|||
| 
								 | 
							
								MODE_FREEZE <- 1
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function sq_AddFunctionName(appendage)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									appendage.sq_AddFunctionName("proc", "proc_appendage_atmage_tundra_cs")
							 | 
						|||
| 
								 | 
							
									appendage.sq_AddFunctionName("prepareDraw", "prepareDraw_appendage_atmage_tundra_cs")
							 | 
						|||
| 
								 | 
							
									appendage.sq_AddFunctionName("onStart", "onStart_appendage_atmage_tundra_cs")
							 | 
						|||
| 
								 | 
							
									appendage.sq_AddFunctionName("onEnd", "onEnd_appendage_atmage_tundra_cs")
							 | 
						|||
| 
								 | 
							
									appendage.sq_AddFunctionName("drawAppend", "drawAppend_appendage_atmage_tundra_cs")
							 | 
						|||
| 
								 | 
							
									appendage.sq_AddFunctionName("isEnd", "isEnd_appendage_atmage_tundra_cs")
							 | 
						|||
| 
								 | 
							
									appendage.sq_AddFunctionName("isDrawAppend", "isDrawAppend_appendage_atmage_tundra_cs")
							 | 
						|||
| 
								 | 
							
									appendage.sq_AddFunctionName("onApplyHpDamage", "onApplyHpDamage_appendage_atmage_tundra_cs")
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function sq_AddEffect(appendage)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function drawAppend_appendage_atmage_tundra_cs(appendage, isOver, x, y, isFlip)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!appendage) {
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local obj = appendage.getParent();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(!obj) {
							 | 
						|||
| 
								 | 
							
										appendage.setValid(false);
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local mode = appendage.getVar("mode").get_vector(0);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(sq_IsValidActiveStatus(obj, ACTIVESTATUS_FREEZE) || mode == MODE_FREEZE)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local pAni = sq_GetCurrentAnimation(obj);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(!pAni) {
							 | 
						|||
| 
								 | 
							
										appendage.setValid(false);
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local t = appendage.sq_var.get_ct_vector(0);
							 | 
						|||
| 
								 | 
							
									local currentT = 0;	
							 | 
						|||
| 
								 | 
							
									currentT = t.Get();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									//print(" currentT:" + currentT);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local startT = 259;
							 | 
						|||
| 
								 | 
							
									local endT = 210;
							 | 
						|||
| 
								 | 
							
									local effectT = 800;
							 | 
						|||
| 
								 | 
							
									local effectType = GRAPHICEFFECT_DODGE;
							 | 
						|||
| 
								 | 
							
									local rgb = sq_RGB(0, 0, 255);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local targetV = endT;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local al = sq_GetUniformVelocity(startT, targetV, currentT, effectT);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local alpha = sq_ALPHA(al);
							 | 
						|||
| 
								 | 
							
									pAni.setEffectLayer(true, effectType, true, rgb, alpha, true, false);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local size = sq_AniLayerListSize(pAni);	
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(currentT > effectT)
							 | 
						|||
| 
								 | 
							
									{	
							 | 
						|||
| 
								 | 
							
										local t = appendage.sq_var.get_ct_vector(0);
							 | 
						|||
| 
								 | 
							
										t.Reset();
							 | 
						|||
| 
								 | 
							
										t.Start(1000000,0);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function proc_appendage_atmage_tundra_cs(appendage)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!appendage)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									//print( " tundra_cs");
							 | 
						|||
| 
								 | 
							
									local obj = appendage.getParent();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(!obj)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										appendage.setValid(false);
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local mode = appendage.getVar("mode").get_vector(0);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(sq_IsValidActiveStatus(obj, ACTIVESTATUS_FREEZE))
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										if(mode == MODE_NORMAL)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											appendage.getVar("mode").set_vector(0, MODE_FREEZE);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										if(mode == MODE_FREEZE)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											appendage.setValid(false);
							 | 
						|||
| 
								 | 
							
											return;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local t = appendage.sq_var.get_ct_vector(1); // 橡晦梱虽 勘葬朝 卫除桧 虽釭贼 彩念奢问桧 菟横骨栖棻.
							 | 
						|||
| 
								 | 
							
									local currentT = 0;	
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(t)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										currentT = t.Get();
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local frozenWaitTime = appendage.getVar("skl").get_vector(0);	// 0.橡晦梱虽 勘葬朝 卫除
							 | 
						|||
| 
								 | 
							
									local frozenLevel = appendage.getVar("skl").get_vector(1);	// 1.彩念溯涟
							 | 
						|||
| 
								 | 
							
									local frozenRate = appendage.getVar("skl").get_vector(2);		// 2.彩念?徽
							 | 
						|||
| 
								 | 
							
									local frozenTime = appendage.getVar("skl").get_vector(3);		// 3.彩念卫除
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(currentT > frozenWaitTime)
							 | 
						|||
| 
								 | 
							
									{	
							 | 
						|||
| 
								 | 
							
										if(t)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											t.Reset();
							 | 
						|||
| 
								 | 
							
											t.Start(1000000,0);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local obj = appendage.getParent();	
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										if(!sq_IsValidActiveStatus(obj, ACTIVESTATUS_FREEZE))
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											if(appendage.getSource())
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												local attackerObj = appendage.getSource();
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
												if(attackerObj.isMyControlObject())
							 | 
						|||
| 
								 | 
							
												{
							 | 
						|||
| 
								 | 
							
													local id = sq_GetObjectId(obj);
							 | 
						|||
| 
								 | 
							
													
							 | 
						|||
| 
								 | 
							
													local x = sq_GetXPos(obj);
							 | 
						|||
| 
								 | 
							
													local y = sq_GetYPos(obj);
							 | 
						|||
| 
								 | 
							
													local z = sq_GetZPos(obj);
							 | 
						|||
| 
								 | 
							
													
							 | 
						|||
| 
								 | 
							
													sq_BinaryStartWrite();
							 | 
						|||
| 
								 | 
							
													sq_BinaryWriteDword(id); //
							 | 
						|||
| 
								 | 
							
													sq_BinaryWriteDword(frozenLevel); //
							 | 
						|||
| 
								 | 
							
													sq_BinaryWriteDword(frozenRate); //
							 | 
						|||
| 
								 | 
							
													sq_BinaryWriteDword(frozenTime); //
							 | 
						|||
| 
								 | 
							
													
							 | 
						|||
| 
								 | 
							
													//24259	`Character/Mage/ATTundraSoulFrozen.obj`	// 陴彻饵 矗萄塭暧 陛? ?卫粽螃粽薛?
							 | 
						|||
| 
								 | 
							
													sq_SendCreatePassiveObjectPacketPos(attackerObj, 24259, 0, x, y, z);
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(appendage.sq_var.get_vector(1) == 0)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										local T = appendage.getTimer().Get();	
							 | 
						|||
| 
								 | 
							
										local maxT = appendage.sq_var.get_vector(0);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										if(T >= maxT)
							 | 
						|||
| 
								 | 
							
										{ // 卫除桧 棻 腑剪釭
							 | 
						|||
| 
								 | 
							
											//appendage.sq_DeleteEffectFront();
							 | 
						|||
| 
								 | 
							
											//appendage.setValid(false);
							 | 
						|||
| 
								 | 
							
											return;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onStart_appendage_atmage_tundra_cs(appendage)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!appendage) {
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									print(" tundra cs start");
							 | 
						|||
| 
								 | 
							
									appendage.sq_DeleteEffectFront();
							 | 
						|||
| 
								 | 
							
									appendage.sq_AddEffectFront("Character/Mage/Effect/Animation/ATTundraSoul/passive_dodge.ani")
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									appendage.sq_var.clear_vector();		
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									appendage.sq_var.push_vector(0); // 晦狱赅萄
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									appendage.sq_var.clear_ct_vector();
							 | 
						|||
| 
								 | 
							
									appendage.sq_var.push_ct_vector();	
							 | 
						|||
| 
								 | 
							
									appendage.sq_var.push_ct_vector();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									appendage.getVar("mode").clear_vector();
							 | 
						|||
| 
								 | 
							
									appendage.getVar("mode").push_vector(0);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local t = appendage.sq_var.get_ct_vector(0);
							 | 
						|||
| 
								 | 
							
									t.Reset();
							 | 
						|||
| 
								 | 
							
									t.Start(1000000,0);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local frozenT = appendage.sq_var.get_ct_vector(1);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(frozenT)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										frozenT.Reset();
							 | 
						|||
| 
								 | 
							
										frozenT.Start(1000000,0);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local obj = appendage.getParent();	
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function isDrawAppend_appendage_atmage_tundra_cs(appendage)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									local obj = appendage.getParent();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(!obj) {
							 | 
						|||
| 
								 | 
							
										appendage.setValid(false);
							 | 
						|||
| 
								 | 
							
										return false;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local mode = appendage.getVar("mode").get_vector(0);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(sq_IsValidActiveStatus(obj, ACTIVESTATUS_FREEZE) || mode == MODE_FREEZE)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										return false;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									return true;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onApplyHpDamage_appendage_atmage_tundra_cs(appendage, newHpDamage, attacker)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									local obj = appendage.getParent();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(!obj)
							 | 
						|||
| 
								 | 
							
										return newHpDamage;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local damage = newHpDamage;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(sq_IsValidActiveStatus(obj, ACTIVESTATUS_FREEZE))
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										local frozenAddDamageRate = appendage.getVar("skl").get_vector(4);		// 4.橡横毡朝 瞳 跷陛 等嘐虽
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local addDamage = newHpDamage.tofloat() * frozenAddDamageRate.tofloat() / 100.0;
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										print(" addDamage:" + addDamage);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										damage = damage + addDamage.tointeger();
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									return damage;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function prepareDraw_appendage_atmage_tundra_cs(appendage)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!appendage) {
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local obj = appendage.getParent();	
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onEnd_appendage_atmage_tundra_cs(appendage)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!appendage)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									print(" tundra cs end");
							 | 
						|||
| 
								 | 
							
									appendage.sq_DeleteEffectFront();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 横渐螳 陕撩 渗褐暧 部睡碟
							 | 
						|||
| 
								 | 
							
								function isEnd_appendage_atmage_tundra_cs(appendage)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									return false;
							 | 
						|||
| 
								 | 
							
								} |