250 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			250 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function sq_AddFunctionName(appendage)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									appendage.sq_AddFunctionName("proc", "proc_appendage_atmage_diehard_heal")
							 | 
						||
| 
								 | 
							
									appendage.sq_AddFunctionName("prepareDraw", "prepareDraw_appendage_atmage_diehard_heal")
							 | 
						||
| 
								 | 
							
									appendage.sq_AddFunctionName("onStart", "onStart_appendage_atmage_diehard_heal")
							 | 
						||
| 
								 | 
							
									appendage.sq_AddFunctionName("onEnd", "onEnd_appendage_atmage_diehard_heal")
							 | 
						||
| 
								 | 
							
									appendage.sq_AddFunctionName("isEnd", "isEnd_appendage_atmage_diehard_heal")
							 | 
						||
| 
								 | 
							
									appendage.sq_AddFunctionName("onSetHp", "onSetHp_appendage_atmage_diehard_heal")
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function sq_AddEffect(appendage)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if(!appendage)
							 | 
						||
| 
								 | 
							
										return;
							 | 
						||
| 
								 | 
							
									appendage.sq_AddEffectFront("Character/Mage/Effect/Animation/ATDieHard/02_looping_dodge.ani");
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function proc_appendage_atmage_diehard_heal(appendage)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if(!appendage) {
							 | 
						||
| 
								 | 
							
										return;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									//print(" proc");
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local parentObj = appendage.getParent();
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local currentT = appendage.getTimer().Get();
							 | 
						||
| 
								 | 
							
									local t = appendage.sq_var.get_timer_vector(0);
							 | 
						||
| 
								 | 
							
									//
							 | 
						||
| 
								 | 
							
									local state_ = appendage.sq_var.get_vector(VECTOR_I_STATE);	
							 | 
						||
| 
								 | 
							
									local rebirthTime_ = appendage.sq_var.get_vector(VECTOR_I_REBIRTH_TIME);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if(!parentObj)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										appendage.setValid(false);
							 | 
						||
| 
								 | 
							
										return;
							 | 
						||
| 
								 | 
							
									}	
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local changeHp_ = appendage.getVar("changehp").get_vector(0);
							 | 
						||
| 
								 | 
							
									local changeTime_ = appendage.getVar("changehp").get_vector(2);
							 | 
						||
| 
								 | 
							
									local changedHp_ = appendage.getVar("changehp").get_vector(3);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									//print( " changeTime_:" + currentT);
							 | 
						||
| 
								 | 
							
									local currentChangeHp = sq_GetUniformVelocity(0, changeHp_, currentT, changeTime_);	
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local sqrObj = sq_GetCNRDObjectToSQRCharacter(parentObj);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if(sqrObj.getHp() <= 0)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										appendage.setValid(false);
							 | 
						||
| 
								 | 
							
										return;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if (currentChangeHp != changedHp_)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										//  涡 渗?卫鉴 晔桧 毡戏贼 籀葬
							 | 
						||
| 
								 | 
							
										local hp = currentChangeHp - changedHp_;
							 | 
						||
| 
								 | 
							
										changedHp_ = currentChangeHp;
							 | 
						||
| 
								 | 
							
										appendage.getVar("changehp").set_vector(3, changedHp_);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										if(sqrObj)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											//print(" sqrObj.getHp():" + sqrObj.getHp() + " hp:" + hp);
							 | 
						||
| 
								 | 
							
											if(sqrObj.isMyControlObject())
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												sqrObj.sq_SendSetHpPacket(sqrObj.getHp() + hp, true, parentObj);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if(changeTime_ <= currentT)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										if(parentObj)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(parentObj.isMyControlObject())
							 | 
						||
| 
								 | 
							
											{ // hp翕晦?
							 | 
						||
| 
								 | 
							
												//local parentHp = parentObj.getHp();
							 | 
						||
| 
								 | 
							
												//sq_BinaryStartWrite();
							 | 
						||
| 
								 | 
							
												//sq_BinaryWriteDword(parentHp); // 
							 | 
						||
| 
								 | 
							
												//sq_SendChangeSkillEffectPacket(parentObj, SKILL_DIEHARD);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										appendage.setValid(false);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if(parentObj.getHp() >= parentObj.getHpMax())
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										if(parentObj)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											if(parentObj.isMyControlObject())
							 | 
						||
| 
								 | 
							
											{ // hp翕晦?
							 | 
						||
| 
								 | 
							
												//local parentHp = parentObj.getHp();
							 | 
						||
| 
								 | 
							
												//sq_BinaryStartWrite();
							 | 
						||
| 
								 | 
							
												//sq_BinaryWriteDword(parentHp); // 
							 | 
						||
| 
								 | 
							
												//sq_SendChangeSkillEffectPacket(parentObj, SKILL_DIEHARD);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										appendage.setValid(false);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									//print(" changeTime_:" + changeTime_ + " currentT:" + currentT);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function onStart_appendage_atmage_diehard_heal(appendage)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if(!appendage) {
							 | 
						||
| 
								 | 
							
										return;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local obj = appendage.getParent();		
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									appendage.sq_var.clear_timer_vector();
							 | 
						||
| 
								 | 
							
									appendage.sq_var.push_timer_vector();
							 | 
						||
| 
								 | 
							
									appendage.sq_var.push_timer_vector();
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									appendage.sq_var.clear_vector();
							 | 
						||
| 
								 | 
							
									appendage.sq_var.push_vector(0);
							 | 
						||
| 
								 | 
							
									appendage.sq_var.push_vector(0);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local t = appendage.sq_var.get_timer_vector(0);
							 | 
						||
| 
								 | 
							
									t.setParameter(400, -1);
							 | 
						||
| 
								 | 
							
									t.resetInstant(0);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									local sqrObj = sq_GetCNRDObjectToSQRCharacter(obj);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if(sqrObj)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function prepareDraw_appendage_atmage_diehard_heal(appendage)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if(!appendage) {
							 | 
						||
| 
								 | 
							
										return;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local obj = appendage.getParent();	
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function onEnd_appendage_atmage_diehard_heal(appendage)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if(!appendage) {
							 | 
						||
| 
								 | 
							
										return;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local obj = appendage.getParent();		
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									local sqrObj = sq_GetCNRDObjectToSQRCharacter(obj);
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									if(sqrObj)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function onSetHp_appendage_atmage_diehard_heal(appendage, hp, attacker)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if(!appendage)
							 | 
						||
| 
								 | 
							
										return hp;
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
									local obj = appendage.getParent();
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									//local dst_hp = hp;
							 | 
						||
| 
								 | 
							
									local org_hp = -1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									local state_ = appendage.sq_var.get_vector(VECTOR_I_STATE);	
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if(obj.getHp() > hp)
							 | 
						||
| 
								 | 
							
									{	 // 等嘐虽塭贼..
							 | 
						||
| 
								 | 
							
										//local damage = obj.getHp() - hp; // 殓擎 等嘐虽虏踯 隶陛?罹捡? ?犒譆渠热纂蒂 梗嬴鄹栖棻.
							 | 
						||
| 
								 | 
							
										//local maxHp = appendage.getVar("changehp").get_vector(0);
							 | 
						||
| 
								 | 
							
										//print(" damage:" + damage + " obj.getHp():" + obj.getHp());
							 | 
						||
| 
								 | 
							
										//appendage.getVar("changehp").set_vector(0, maxHp - damage);
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										//0. ?问卫 嫡朝 等嘐虽 隶陛徽(%)
							 | 
						||
| 
								 | 
							
										local sqrObj = sq_GetCNRDObjectToSQRCharacter(obj);
							 | 
						||
| 
								 | 
							
										if(sqrObj)
							 | 
						||
| 
								 | 
							
										{
							 | 
						||
| 
								 | 
							
											local isConvert = true;
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											local dieHardAppendage = CNSquirrelAppendage.sq_GetAppendage(sqrObj, "Character/ATMage/DieHard/ap_ATMage_DieHard.nut");
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											if(dieHardAppendage)
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												local dieHardState = dieHardAppendage.sq_var.get_vector(VECTOR_I_STATE);
							 | 
						||
| 
								 | 
							
												
							 | 
						||
| 
								 | 
							
												if(dieHardState != STATE_SLOW_HEAL)
							 | 
						||
| 
								 | 
							
												{
							 | 
						||
| 
								 | 
							
													isConvert = false;
							 | 
						||
| 
								 | 
							
													if(hp < 0)
							 | 
						||
| 
								 | 
							
													{
							 | 
						||
| 
								 | 
							
														hp = 1;
							 | 
						||
| 
								 | 
							
														print( " heal hp:" + hp);
							 | 
						||
| 
								 | 
							
														
							 | 
						||
| 
								 | 
							
														if(sqrObj.isMyControlObject())
							 | 
						||
| 
								 | 
							
														{
							 | 
						||
| 
								 | 
							
															sq_ReleaseActiveStatus(sqrObj, ACTIVESTATUS_POISON);
							 | 
						||
| 
								 | 
							
															sq_ReleaseActiveStatus(sqrObj, ACTIVESTATUS_BLEEDING);
							 | 
						||
| 
								 | 
							
														}
							 | 
						||
| 
								 | 
							
														
							 | 
						||
| 
								 | 
							
													}
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											
							 | 
						||
| 
								 | 
							
											if(isConvert)
							 | 
						||
| 
								 | 
							
											{
							 | 
						||
| 
								 | 
							
												if(sqrObj.isMyControlObject())
							 | 
						||
| 
								 | 
							
												{
							 | 
						||
| 
								 | 
							
													//local increaseDamageRate = sq_GetIntData(sqrObj, SKILL_DIEHARD, SKL_STATIC_INT_IDX_0); 
							 | 
						||
| 
								 | 
							
													//local damage = sqrObj.getHp() - hp; // 殓擎 等嘐虽虏踯 隶陛?罹捡? ?犒譆渠热纂蒂 梗嬴鄹栖棻.
							 | 
						||
| 
								 | 
							
													//increaseDamageRate.tofloat() / 100.0;
							 | 
						||
| 
								 | 
							
													//local addDamage = damage.tofloat() * increaseDamageRate.tofloat() / 100.0;
							 | 
						||
| 
								 | 
							
													//hp = hp - addDamage;
							 | 
						||
| 
								 | 
							
													
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return hp;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									return -1;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 横渐螳 陕撩 渗褐暧 部睡碟
							 | 
						||
| 
								 | 
							
								function isEnd_appendage_atmage_diehard_heal(appendage)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									if(!appendage)
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
									local T = appendage.getTimer().Get();	
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									return false;
							 | 
						||
| 
								 | 
							
								}
							 |