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;
 | 
						|
} |