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