This commit is contained in:
2024-03-18 21:37:40 +08:00
commit c4aef8f3a3
313 changed files with 74071 additions and 0 deletions

View File

@@ -0,0 +1,472 @@
STATE_SLOW_HEAL <- 0 /// 茧茧? ?犒酝
STATE_REBIRTH_READY_DOWN <- 1 /// HP 0桧 脾. 斜楝釭 嬴霜 DOWN 擎 寰腑挤
STATE_REBIRTH_DOWN <- 2 /// HP 0桧 肾坚 棻遴腑挤.
STATE_REBIRTH_DELAY <- 3 /// 睡? 裁溯桧
STATE_DIEHARD_DIE <- 4 // 棻桧
REBIRTH_STATE_NONE <- 0
REBIRTH_STATE_ANGEL_DOWN <- 1
REBIRTH_STATE_EFFECT <- 2
REBIRTH_STATE_END <- 3
VECTOR_I_STATE <- 0
VECTOR_I_FLAG <- 1
VECTOR_I_REBIRTH_STATE <- 2
VECTOR_I_REBIRTH_TIME <- 3
GHOST_TIME <- 2000
ANGEL_DOWN_TIME <- 1000
DOWN_PAUSE_TIME <- 100
function sq_AddFunctionName(appendage)
{
appendage.sq_AddFunctionName("proc", "proc_appendage_atmage_diehard")
appendage.sq_AddFunctionName("prepareDraw", "prepareDraw_appendage_atmage_diehard")
appendage.sq_AddFunctionName("onStart", "onStart_appendage_atmage_diehard")
appendage.sq_AddFunctionName("onEnd", "onEnd_appendage_atmage_diehard")
appendage.sq_AddFunctionName("isEnd", "isEnd_appendage_atmage_diehard")
appendage.sq_AddFunctionName("onSetHp", "onSetHp_appendage_atmage_diehard")
}
function sq_AddEffect(appendage)
{
}
function pushSlowHeal(appendage)
{
if(!appendage)
{
return;
}
local parentObj = appendage.getParent();
local sqrChr = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(sqrChr)
{
local moduleType = sq_GetCurrentModuleType();
local recoverTime = sq_GetIntData(sqrChr, SKILL_DIEHARD, SKL_STATIC_INT_IDX_2); // 橾奁湍瞪
//print(" moduleType:" + moduleType);
local stage = sq_GetGlobaludpModuleStage();
local dungeon = sq_GetDungeonByStage(stage);
local isDimensionDungeon = sq_IsDimensionDungeon(dungeon); // 桧啗湍瞪樯虽
local isDespairTower = sq_IsDespairTower(dungeon); // 瞰蜂暧 鳖樯虽
local isAncientDungeon = sq_IsAncientDungeon(dungeon); // 坚渠湍瞪樯虽
if(isDimensionDungeon)
{ // 桧啗湍瞪桧塭贼..
//print( " DimensionDungeon");
recoverTime = sq_GetIntData(sqrChr, SKILL_DIEHARD, SKL_STATIC_INT_IDX_3);
}
else if(isDespairTower)
{ // 瞰蜂暧 鳖桧塭贼..
//print( " DespairTower");
recoverTime = sq_GetIntData(sqrChr, SKILL_DIEHARD, SKL_STATIC_INT_IDX_4);
}
else if(isAncientDungeon)
{// 坚渠湍蟒
recoverTime = sq_GetIntData(sqrChr, SKILL_DIEHARD, SKL_LVL_COLUMN_IDX_6);
}
else
{
if(moduleType == MODULE_TYPE_WARROOM)
{ // 瞪爵虽羲
//print( " WARROOM");
recoverTime = sq_GetIntData(sqrChr, SKILL_DIEHARD, SKL_STATIC_INT_IDX_5);
}
else if(moduleType == MODULE_TYPE_DEAD_TOWER)
{ // 饵鳖
//print( " DEAD_TOWER");
recoverTime = sq_GetIntData(sqrChr, SKILL_DIEHARD, SKL_STATIC_INT_IDX_4);
}
}
// 鼻鹧桧鼻桧 勘溜棻贼 鼻鹧桧鼻击 ?横鄹栖棻. 酝絮, 轿?
if(parentObj.isMyControlObject())
{
sq_ReleaseActiveStatus(parentObj, ACTIVESTATUS_POISON);
sq_ReleaseActiveStatus(parentObj, ACTIVESTATUS_BLEEDING);
}
//print(" recoverTime:" + recoverTime);
sq_SendMessage(parentObj, OBJECT_MESSAGE_GHOST, 1, 0);
sq_PostDelayedMessage(parentObj, OBJECT_MESSAGE_GHOST, 0, 0, 8000);
appendage.getVar("diehard").set_vector(0, 1); // 碳饵蒂 ?廓 橾横陬历朝虽 羹觼?朝 ?楚斜殓栖棻.
local t = appendage.sq_var.get_ct_vector(0);
if(t)
{
t.Reset();
t.Start(10000,0);
}
local healAppendage = CNSquirrelAppendage.sq_AppendAppendage(sqrChr, sqrChr, SKILL_DIEHARD,
true, "Character/ATMage/DieHard/ap_ATMage_DieHardSlowHeal.nut", false);
if(healAppendage)
{
local skillLevel = sqrChr.sq_GetSkillLevel(SKILL_DIEHARD);
healAppendage.setAppendCauseSkill(BUFF_CAUSE_SKILL, sq_getJob(sqrChr), SKILL_DIEHARD, skillLevel);
print( " recoverTime:" + recoverTime);
healAppendage.sq_SetValidTime(recoverTime);
// 罹晦怃 append 蒙机
CNSquirrelAppendage.sq_Append(healAppendage, sqrChr, sqrChr);
//
healAppendage.getVar("changehp").clear_vector();
healAppendage.getVar("changehp").push_vector(sqrChr.getHpMax());
healAppendage.getVar("changehp").push_vector(sqrChr.getMpMax());
//print(" recoverTime:" + recoverTime);
healAppendage.getVar("changehp").push_vector(recoverTime);
healAppendage.getVar("changehp").push_vector(0);
healAppendage.getVar("changehp").push_vector(0);
//local change_appendage = healAppendage.sq_GetCNChangeHp("changehp");
//if(!change_appendage)
{
//2. 橾钦湍瞪 ?犒卫除 (1/1000蟾)
//3. 桧啗湍瞪 ?犒卫除 (1/1000蟾)
//4. 鳖 ?犒卫除 (1/1000蟾)
//5. 瞪爵虽羲 ?犒卫除 (1/1000蟾)
// MODULE_TYPE_WARROOM // 瞪爵虽羲
// MODULE_TYPE_MAIN_GAME // 橾奁湍瞪(桧啗 ??)
// MODULE_TYPE_PVP // 念潍
// MODULE_TYPE_FAIR_PVP // 奢念
//local recoverHp_ = sqrChr.getHpMax();
//4000 //2. 橾钦湍瞪 ?犒卫除 (1/1000蟾)
//4000 //3. 桧啗湍瞪 ?犒卫除 (1/1000蟾)
//4000 //4. 鳖 ?犒卫除 (1/1000蟾)
//4000 //5. 瞪爵虽羲 ?犒卫除 (1/1000蟾)
//change_appendage = healAppendage.sq_AddCNChangeHp("changehp",parentObj, parentObj, 0,
//recoverHp_.tofloat(), recoverTime);
}
}
}
}
function proc_appendage_atmage_diehard(appendage)
{
if(!appendage) {
return;
}
local parentObj = appendage.getParent();
if(!parentObj)
{
appendage.setValid(false);
return;
}
local state_ = appendage.sq_var.get_vector(VECTOR_I_STATE);
if(state_ == STATE_SLOW_HEAL)
{
if(parentObj.isGhostMode())
{ // 鼠瞳虽楼 鼻鹧塭贼..
if (parentObj.getState() != STATE_DIEHARD)
{
if(appendage.getVar("diehard").get_vector(0) == 1)
{
local t = appendage.sq_var.get_ct_vector(0);
local ghostCurrentTime = t.Get();
if(ghostCurrentTime > 8000)
{
sq_SendMessage(parentObj, OBJECT_MESSAGE_GHOST, 0, 0);
appendage.getVar("diehard").set_vector(0, 0);
}
}
}
}
return;
}
local currentT = appendage.getTimer().Get();
local rebirthTime_ = appendage.sq_var.get_vector(VECTOR_I_REBIRTH_TIME);
//print(" proc_appendage_atmage_diehard Ln:" + 163);
//////////////////////////////////////////////////////////////////////////////
if (state_ == STATE_REBIRTH_READY_DOWN)
{
// 棻遴 渠晦酝
////print(" state_ == STATE_REBIRTH_READY_DOWN");
if (parentObj.getState() == STATE_DIEHARD)
{
appendage.sq_var.set_vector(VECTOR_I_STATE, STATE_REBIRTH_DOWN);
// 陈嬴陛朝 翕寰 棻艇 蹂模缣 暧?怃 寞?嫡虽强紫烟 鼠瞳卫除 籀葬
}
else if (parentObj.getSendState() != STATE_DIEHARD &&
parentObj.getSendState() != STATE_HOLD && parentObj.getState() != STATE_HOLD &&
parentObj.getSendState() != STATE_DOWN && parentObj.getState() != STATE_DOWN &&
parentObj.getSendState() != STATE_DAMAGE && parentObj.getState() != STATE_DAMAGE
)
{
if (parentObj.isMyControlObject())
{
local pIntVec = sq_GetGlobalIntVector();
sq_IntVectorClear(pIntVec);
sq_IntVectorPush(pIntVec, SUB_STATE_DIEHARD_0);
parentObj.addSetStatePacket(STATE_DIEHARD, pIntVec, STATE_PRIORITY_FORCE, false, "");
parentObj.flushSetStatePacket();
}
}
else
{
////print(" it is hold died");
////print(" state_hold");
}
}
else if (state_ == STATE_REBIRTH_DOWN)
{
//print(" proc_appendage_atmage_diehard Ln:" + 201);
////print(" state_ == STATE_REBIRTH_DOWN");
// 棻遴 鼻鹧
if (parentObj.getState() == STATE_DIEHARD)
{
local sqrChr = sq_GetCNRDObjectToSQRCharacter(parentObj);
if(sqrChr)
{
if(sqrChr.getSkillSubState() == SUB_STATE_DIEHARD_1)
{
// 棻遴缣怃 ?犒腑棻贼 : 唳霜 籀葬
// 鼠瞳卫除 籀葬
// 橾姜卫除 唳霜
//sq_SetPause(parentObj, PAUSETYPE_OBJECT, DOWN_PAUSE_TIME);
// 睡? 卫除 荡潍
local rebirthTime = appendage.getTimer().Get() + GHOST_TIME;
appendage.sq_var.set_vector(VECTOR_I_REBIRTH_TIME, rebirthTime);
appendage.sq_var.set_vector(VECTOR_I_STATE, STATE_REBIRTH_DELAY);
appendage.sq_var.set_vector(VECTOR_I_REBIRTH_STATE, REBIRTH_STATE_END);
}
}
}
}
else if (state_ == STATE_REBIRTH_DELAY)
{
// 睡? 裁溯桧
if (currentT >= rebirthTime_)
{
// HP ?犒
// ?廓 ?犒腑棻贼 夥煎 谦猿
print(" go rebirth");
appendage.sq_var.set_vector(VECTOR_I_STATE, STATE_SLOW_HEAL);
appendage.sq_var.set_vector(VECTOR_I_REBIRTH_STATE, STATE_SLOW_HEAL); // state
}
}
//////////////////////////////////////////////////////////////////////////////
}
function onStart_appendage_atmage_diehard(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();
//VECTOR_I_STATE <- 0
//VECTOR_I_REBIRTH_STATE <- 1
//VECTOR_I_REBIRTH_TIME <- 2
appendage.sq_var.clear_vector();
appendage.sq_var.push_vector(STATE_SLOW_HEAL); // state
appendage.sq_var.push_vector(STATE_SLOW_HEAL); // state
appendage.sq_var.push_vector(0); // state
appendage.sq_var.push_vector(0); // state
local t = appendage.sq_var.get_timer_vector(0);
t.setParameter(400, -1);
t.resetInstant(0);
local t2 = appendage.sq_var.get_timer_vector(1);
t2.setParameter(500, -1);
t2.resetInstant(0);
appendage.sq_var.clear_ct_vector();
appendage.sq_var.push_ct_vector();
local time = appendage.sq_var.get_ct_vector(0);
time.Reset();
time.Start(10000,0);
appendage.getVar("diehard").clear_vector();
appendage.getVar("diehard").push_vector(0); // 碳饵蒂 ?廓 橾横陬历朝虽 羹觼?朝 ?楚斜殓栖棻.
local sqrObj = sq_GetCNRDObjectToSQRCharacter(obj);
if(sqrObj)
{
}
}
function prepareDraw_appendage_atmage_diehard(appendage)
{
if(!appendage) {
return;
}
local obj = appendage.getParent();
}
function onSetHp_appendage_atmage_diehard(appendage, hp, attacker)
{
if(!appendage)
return hp;
local obj = appendage.getParent();
if(!obj)
return hp;
local org_hp = -1;
if (hp <= 0)
{
// 湍瞪? 蹂羶饵? 12.03.16
// 碳饵蒂 鼠卫?坚 钦寞缣 避横帼溥捡 ?朝 牖除桧 毡棻. 桧匙缣 渠? 籀葬蒂 嫔?
// attacker (奢问濠)暧 getCurrentAttackInfo 掘亵羹缣
// bool isIgnoreDieHard_; /// 碳饵 ?卫粽 蝶鉴 鼠卫 罹睡 (?问卫 夥煎 阔饵)
// 渗热蒂 跷陛?艘棻.
// 桧匙桧 true塭贼.. 夥煎 避横捡?匙
if(attacker)
{
local attackInfo = sq_GetCurrentAttackInfo(attacker);
if(attackInfo)
{
if(attackInfo.isIgnoreDieHard_)
return 0;
}
}
local isRelayTimeOut = sq_isSendTimeOutPacket(); // 念潍 莴溯桧 颤歜嬴醒桧塭贼 夥煎 避横捡 ?栖棻.
// 念潍 莴溯桧 颤歜嬴醒桧塭贼 夥煎 避横捡 ?栖棻.
if (isRelayTimeOut)
return 0;
// HP蒂 1煎 坚姜?坚 STATE 渗?
local sqrChr = sq_GetCNRDObjectToSQRCharacter(obj);
if(!sqrChr)
return hp;
if(!sq_IsInBattle())
{ // 瞪瘫酝桧 嬴栖塭贼
return hp;
}
local state_ = appendage.sq_var.get_vector(VECTOR_I_STATE);
if(!CNSquirrelAppendage.sq_IsAppendAppendage(obj, "Character/ATMage/DieHard/ap_ATMage_DieHardSlowHeal.nut")) //
{
//1. 饵蜂卫 蟾晦 ?犒肾朝 HP绿徽(%)
local recoverHpRate = sq_GetIntData(sqrChr, SKILL_DIEHARD, SKL_STATIC_INT_IDX_1);
local maxHp = obj.getHpMax();
local currentHp = maxHp.tofloat() * (recoverHpRate.tofloat() / 100);
//print(" hp:" + currentHp);
org_hp = currentHp.tointeger();
pushSlowHeal(appendage);
appendage.sq_var.set_vector(VECTOR_I_STATE, STATE_REBIRTH_READY_DOWN);
print(" convert hp:" + org_hp);
}
else
{
if(state_ == STATE_REBIRTH_READY_DOWN || sqrChr.getState() == STATE_DIEHARD)
{
//print( " state_:" + state_ + " sqrChr.getState():" + sqrChr.getState() + " org_hp:" + org_hp);
org_hp = 1;
}
}
}
//print(" hp:" + org_hp);
return org_hp;
}
function onEnd_appendage_atmage_diehard(appendage)
{
if(!appendage) {
return;
}
local obj = appendage.getParent();
local sqrObj = sq_GetCNRDObjectToSQRCharacter(obj);
if(sqrObj)
{
}
}
// 横渐螳 陕撩 渗褐暧 部睡碟
function isEnd_appendage_atmage_diehard(appendage)
{
if(!appendage)
return false;
local T = appendage.getTimer().Get();
return false;
}

View File

@@ -0,0 +1,250 @@
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;
}

View File

@@ -0,0 +1,203 @@
SUB_STATE_DIEHARD_0 <- 0
SUB_STATE_DIEHARD_1 <- 1
SUB_STATE_DIEHARD_2 <- 2
function onSetState_DieHard(obj, state, datas, isResetTimer)
{
if(!obj) return;
local substate = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(substate);
obj.sq_StopMove();
obj.getVar().clear_vector();
obj.getVar().push_vector(0);
obj.getVar().push_vector(0);
obj.getVar().push_vector(0);
obj.getVar().push_vector(0);
if(substate == SUB_STATE_DIEHARD_0)
{
obj.sq_SetCurrentAnimation(CUSTOM_ANI_DIEHARD1);
}
else if(substate == SUB_STATE_DIEHARD_1)
{
obj.sq_SetCurrentAnimation(CUSTOM_ANI_DIEHARD2);
CNSquirrelAppendage.sq_AppendAppendage(obj, obj, SKILL_DIEHARD, true, "Appendage/Character/ap_atmage_bodyeffect.nut", true);
obj.sq_PlaySound("IMMORTAL");
}
else if(substate == SUB_STATE_DIEHARD_2)
{
obj.sq_SetCurrentAnimation(CUSTOM_ANI_DIEHARD3);
}
}
function prepareDraw_DieHard(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_DIEHARD_0) {
// SUB_STATE_DIEHARD_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_DIEHARD_1) {
// SUB_STATE_DIEHARD_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_DIEHARD_2) {
// SUB_STATE_DIEHARD_2 怃粽蝶才桧? 蒙机
}
}
function onProc_DieHard(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
local pAni = obj.sq_GetCurrentAni();
local frmIndex = obj.sq_GetCurrentFrameIndex(pAni);
local currentT = sq_GetCurrentTime(pAni);
if(substate == SUB_STATE_DIEHARD_0)
{
}
else if(substate == SUB_STATE_DIEHARD_1)
{
}
else if(substate == SUB_STATE_DIEHARD_2)
{
}
}
function onProcCon_DieHard(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_DIEHARD_0) {
// SUB_STATE_DIEHARD_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_DIEHARD_1) {
// SUB_STATE_DIEHARD_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_DIEHARD_2) {
// SUB_STATE_DIEHARD_2 怃粽蝶才桧? 蒙机
}
}
function onEndCurrentAni_DieHard(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(!obj.isMyControlObject())
return;
if(substate == SUB_STATE_DIEHARD_0) {
print(" end");
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_DIEHARD_1); // substate撮?
obj.sq_AddSetStatePacket(STATE_DIEHARD, STATE_PRIORITY_IGNORE_FORCE, true);
}
else if(substate == SUB_STATE_DIEHARD_1) {
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_DIEHARD_2); // substate撮?
obj.sq_AddSetStatePacket(STATE_DIEHARD, STATE_PRIORITY_IGNORE_FORCE, true);
}
else if(substate == SUB_STATE_DIEHARD_2) {
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
}
}
function onKeyFrameFlag_DieHard(obj, flagIndex)
{
if(!obj) return false;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_DIEHARD_0) {
// SUB_STATE_DIEHARD_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_DIEHARD_1) {
// SUB_STATE_DIEHARD_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_DIEHARD_2) {
// SUB_STATE_DIEHARD_2 怃粽蝶才桧? 蒙机
}
return false;
}
function onEndState_DieHard(obj, new_state)
{
if(!obj) return;
if(new_state != STATE_DIEHARD)
{
print(" ghost go");
//sq_SendMessage(obj, OBJECT_MESSAGE_INVINCIBLE, 1, 0);
sq_SetCustomDamageType(obj, false, 1);
sq_SendMessage(obj, OBJECT_MESSAGE_GHOST, 0, 0);
sq_SendMessage(obj, OBJECT_MESSAGE_GHOST, 1, 0);
sq_PostDelayedMessage(obj, OBJECT_MESSAGE_GHOST, 0, 0, 1500);
}
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_DIEHARD_0) {
// SUB_STATE_DIEHARD_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_DIEHARD_1) {
// SUB_STATE_DIEHARD_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_DIEHARD_2) {
// SUB_STATE_DIEHARD_2 怃粽蝶才桧? 蒙机
}
}
function onAfterSetState_DieHard(obj, state, datas, isResetTimer)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_DIEHARD_0) {
// SUB_STATE_DIEHARD_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_DIEHARD_1) {
// SUB_STATE_DIEHARD_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_DIEHARD_2) {
// SUB_STATE_DIEHARD_2 怃粽蝶才桧? 蒙机
}
}