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