Sqr/character/atmage/firepillar/firepillar.nut

388 lines
11 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

SUB_STATE_FIREPILLAR_0 <- 0
SUB_STATE_FIREPILLAR_1 <- 1
SUB_STATE_FIREPILLAR_2 <- 2
SUB_STATE_FIREPILLAR_3 <- 3
SUB_STATE_FIREPILLAR_4 <- 4
function checkExecutableSkill_FirePillar(obj)
{
if(!obj) return false;
local b_useskill = obj.sq_IsUseSkill(SKILL_FIREPILLAR);
if(b_useskill)
{
obj.sq_IsEnterSkillLastKeyUnits(SKILL_FIREPILLAR);
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_FIREPILLAR_0); // substate撮?
obj.sq_AddSetStatePacket(STATE_FIREPILLAR, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_FirePillar(obj)
{
if(!obj) return false;
local state = obj.sq_GetState();
if(state == STATE_ATTACK)
{
return obj.sq_IsCommandEnable(SKILL_FIREPILLAR); // 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20] obj.sq_IsCommandEnable(SKILL_BROKENARROW);
}
return true;
}
function onSetState_FirePillar(obj, state, datas, isResetTimer)
{
if(!obj) return;
local substate = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(substate);
obj.getVar("firepillar").clear_vector();
obj.getVar("firepillar").push_vector(0);
obj.getVar("firepillar").push_vector(0);
obj.getVar("firepillar").push_vector(0);
obj.sq_StopMove();
local posX = obj.getXPos();
local posY = obj.getYPos();
local posZ = obj.getZPos();
obj.getVar().clear_vector();
obj.getVar().push_vector(0);
obj.getVar().push_vector(0);
obj.getVar().push_vector(0);
if(substate == SUB_STATE_FIREPILLAR_0)
{
obj.sq_PlaySound("MW_FPILLAR_READY");
obj.sq_SetCurrentAnimation(CUSTOM_ANI_FIREPILLAR1);
addElementalChain_ATMage(obj, ENUM_ELEMENT_FIRE);
}
else if(substate == SUB_STATE_FIREPILLAR_1)
{
obj.sq_SetCurrentAnimation(CUSTOM_ANI_FIREPILLAR2);
}
else if(substate == SUB_STATE_FIREPILLAR_2)
{
obj.sq_PlaySound("MW_FPILLAR");
if(obj.isMyControlObject())
{
local skillLevel = obj.sq_GetSkillLevel(SKILL_FIREPILLAR);
local arriveTime = obj.sq_GetIntData(SKILL_FIREPILLAR, 0); // 0. 模辨给桧 釭陛朝 楼紫 (剪葬梱虽 紫殖?朝 卫除) (1/1000蟾)
local attackRate = obj.sq_GetBonusRateWithPassive(SKILL_FIREPILLAR, STATE_FIREPILLAR, 2, 1.0); // 2. 颤问 奢问溘(%)
local distance = obj.sq_GetLevelData(SKILL_FIREPILLAR, 1, skillLevel); // 1.釭陛朝 剪葬
local term = obj.sq_GetIntData(SKILL_FIREPILLAR, 2); // 2. 棻钦?? 除问
sq_BinaryStartWrite();
sq_BinaryWriteDword(attackRate); // 横鸥奢问溘
sq_BinaryWriteDword(distance); // 釭陛朝 剪葬
sq_BinaryWriteDword(arriveTime); // 模辨给桧 釭陛朝 楼紫 (剪葬梱虽 紫殖?朝 卫除) (1/1000蟾)
sq_BinaryWriteDword(term); // 棻钦?? 除问
obj.sq_SendCreatePassiveObjectPacket(24254, 0, 0, 1, 0); //
}
obj.sq_SetCurrentAnimation(CUSTOM_ANI_FIREPILLAR3);
}
else if(substate == SUB_STATE_FIREPILLAR_3)
{
}
else if(substate == SUB_STATE_FIREPILLAR_4)
{
}
//obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED,
// SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
}
function prepareDraw_FirePillar(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_FIREPILLAR_0) {
// SUB_STATE_FIREPILLAR_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_1) {
// SUB_STATE_FIREPILLAR_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_2) {
// SUB_STATE_FIREPILLAR_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_3) {
// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_4) {
// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机
}
}
function onProc_FirePillar(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
local pAni = obj.sq_GetCurrentAni();
local frmIndex = obj.sq_GetCurrentFrameIndex(pAni);
local currentT = sq_GetCurrentTime(pAni);
//print(" substate:" + substate);
if(substate == SUB_STATE_FIREPILLAR_0) {
// SUB_STATE_FIREPILLAR_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_1) {
}
else if(substate == SUB_STATE_FIREPILLAR_2) {
// SUB_STATE_FIREPILLAR_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_3) {
// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_4) {
// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机
}
}
function onProcCon_FirePillar(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_FIREPILLAR_0) {
// SUB_STATE_FIREPILLAR_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_1)
{
local bDownKey = obj.isDownSkillLastKey();
local stateTimer = obj.sq_GetStateTimer();
local grabMaxTime = obj.sq_GetIntData(SKILL_FIREPILLAR, 1); // 1. 模辨给桧 濩坚 毡朝 譆渠卫除
// 蹂羶饵?
// 谏醱 ?缣 谏醱卫除虏踯 ?脑贼 濠翕戏煎 剩横骨栖棻..
if(!bDownKey || stateTimer >= grabMaxTime)// 桨击 嗥历棻朝匙擎..
//if(!bDownKey)// 桨击 嗥历棻朝匙擎..
{ // 桨击 嗥历棻朝匙擎..
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_FIREPILLAR_2); // substate撮?
obj.sq_AddSetStatePacket(STATE_FIREPILLAR, STATE_PRIORITY_USER, true);
return;
}
}
else if(substate == SUB_STATE_FIREPILLAR_2) {
// SUB_STATE_FIREPILLAR_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_3) {
// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_4) {
// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机
}
}
function onEndCurrentAni_FirePillar(obj)
{
if(!obj) return;
if(!obj.isMyControlObject()) {
return;
}
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_FIREPILLAR_0) {
print( " onend:" + substate);
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_FIREPILLAR_1); // substate撮?
obj.sq_AddSetStatePacket(STATE_FIREPILLAR, STATE_PRIORITY_IGNORE_FORCE, true);
}
else if(substate == SUB_STATE_FIREPILLAR_1) {
}
else if(substate == SUB_STATE_FIREPILLAR_2) {
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
}
else if(substate == SUB_STATE_FIREPILLAR_3) {
// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_4) {
// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机
}
}
function onKeyFrameFlag_FirePillar(obj, flagIndex)
{
if(!obj) return false;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_FIREPILLAR_0) {
// SUB_STATE_FIREPILLAR_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_1) {
// SUB_STATE_FIREPILLAR_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_2) {
// SUB_STATE_FIREPILLAR_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_3) {
// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_4) {
// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机
}
return false;
}
function onEndState_FirePillar(obj, new_state)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_FIREPILLAR_0) {
// SUB_STATE_FIREPILLAR_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_1) {
// SUB_STATE_FIREPILLAR_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_2) {
// SUB_STATE_FIREPILLAR_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_3) {
// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_4) {
// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机
}
}
function onAfterSetState_FirePillar(obj, state, datas, isResetTimer)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_FIREPILLAR_0) {
}
else if(substate == SUB_STATE_FIREPILLAR_1) {
// SUB_STATE_FIREPILLAR_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_2) {
// SUB_STATE_FIREPILLAR_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_3) {
// SUB_STATE_FIREPILLAR_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_FIREPILLAR_4) {
// SUB_STATE_FIREPILLAR_4 怃粽蝶才桧? 蒙机
}
}
function onBeforeDamage_FirePillar(obj, attacker, boundingBox, isStuck)
//function onBeforeDamage_FirePillar(obj, attacker, boundingBox)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_FIREPILLAR_1)
{
// // 碳晦菅 锰剪葬 奢问暧 等嘐虽蒂 N%虏踯 马模卫郦坚, 唳霜击 嫡虽 强蝗栖棻.
local isMeleeAttack = attacker.isMeleeAttack();
local isMissileObj = attacker.isMissileObject();
if((isMeleeAttack == false) || (isMissileObj == true))
{
local direction = sq_GetOppositeDirection(obj. sq_GetDirection(obj));
if(direction == sq_GetDirection(attacker))
{
local attackerInfo = sq_GetCurrentAttackInfo(attacker);
print( " isMeleeAttack:" + isMeleeAttack);
print( " isMissileObj:" + isMissileObj);
if(attackerInfo)
{
local rateDamager = sq_GetAttackInfoHitDelayRateDamager(attackerInfo);
local backupRate = rateDamager * 100.0;
obj.getVar("firepillar").set_vector(VECTOR_FLAG_0, backupRate.tointeger());
sq_SetAttackInfoHitDelayRateDamager(attackerInfo, 0.0); // 横鸥 蝶欐?徽击 0.0戏煎 虏菟横帼萼棻..
obj.getVar("firepillar").set_vector(VECTOR_FLAG_1, sq_GetCurrentAttackeDamageAct(attackerInfo));
print( " DAMAGEACT_NONE");
sq_SetCurrentAttackeDamageAct(attackerInfo, DAMAGEACT_NONE);
obj.getVar("firepillar").set_vector(VECTOR_FLAG_2, 1);
}
}
}
}
}
function onAfterDamage_FirePillar(obj, attacker, boundingBox)
{
if(!obj) return;
local substate = obj.getSkillSubState();
// // 碳晦菅 锰剪葬 奢问暧 等嘐虽蒂 N%虏踯 马模卫郦坚, 唳霜击 嫡虽 强蝗栖棻.
if(substate == SUB_STATE_FIREPILLAR_1)
{
if(obj.getVar("firepillar").get_vector(VECTOR_FLAG_2))
{
local attackerInfo = sq_GetCurrentAttackInfo(attacker);
if(attackerInfo)
{
local backupRate = obj.getVar("firepillar").get_vector(VECTOR_FLAG_0);
local damageAct = obj.getVar("firepillar").get_vector(VECTOR_FLAG_1);
local rateDamager = backupRate.tofloat() / 100.0;
sq_SetAttackInfoHitDelayRateDamager(attackerInfo, rateDamager); // 横鸥 蝶欐?徽击 0.0戏煎 虏菟横帼萼棻..
sq_SetCurrentAttackeDamageAct(attackerInfo, damageAct);
}
obj.getVar("firepillar").set_vector(VECTOR_FLAG_2, 0);
}
}
}