Sqr/character/atmage/chainlightning/chainlightning.nut

385 lines
12 KiB
Plaintext
Raw Permalink 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_ATCHAINLIGHTNING_0 <- 0
SUB_STATE_ATCHAINLIGHTNING_1 <- 1
SUB_STATE_ATCHAINLIGHTNING_2 <- 2
SUB_STATE_ATCHAINLIGHTNING_3 <- 3
SUB_STATE_ATCHAINLIGHTNING_4 <- 4
SKL_CL_SD_0 <- 0 //200 // 10.籀挤 颤啃?卫 Y蹴 彰嫔 (鼻? ??)
SKL_CL_SD_1 <- 1 //0 // 11.籀挤 颤啃?卫 X蹴 卫蒙 剪葬
SKL_CL_SD_2 <- 2 //400 // 12.籀挤 颤啃?卫 X蹴 部 剪葬
SKL_CL_SD_3 <- 3 //320 // 13.羹樯卫 棻挤 颤啃梱虽暧 譆渠 剪葬
SKL_CL_SD_4 <- 4 //300 // 14.颤问? 瞳暧 譆渠 堪桧
// 0.葭觼 譆渠 偎热 1.虽楼卫除 2.奢问溘(%) 3.棻钦?? ?热 4.棻钦?? 除问
SKL_CL_LI_0 <- 0 // 0.葭觼 譆渠 偎热
SKL_CL_LI_1 <- 1 // 1.虽楼卫除
SKL_CL_LI_2 <- 2 // 2.奢问溘(%)
SKL_CL_LI_3 <- 3 // 3.棻钦?? ?热
SKL_CL_LI_4 <- 4 // 4.棻钦?? 除问
function checkExecutableSkill_ChainLightning(obj)
{
if(!obj) return false;
local b_useskill = obj.sq_IsUseSkill(SKILL_ATCHAINLIGHTNING);
print("b_useskill : %d" + b_useskill);
if(b_useskill) {
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_ATCHAINLIGHTNING_0); // substate撮?
obj.sq_AddSetStatePacket(STATE_CHAINLIGHTNING, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_ChainLightning(obj)
{
if(!obj) return false;
local state = obj.sq_GetState();
if(state == STATE_ATTACK)
{
return obj.sq_IsCommandEnable(SKILL_ATCHAINLIGHTNING); // 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20] obj.sq_IsCommandEnable(SKILL_BROKENARROW);
}
return true;
}
function onSetState_ChainLightning(obj, state, datas, isResetTimer)
{
if(!obj) return;
local substate = obj.sq_GetVectorData(datas, 0);
obj.setSkillSubState(substate);
obj.sq_StopMove();
local posX = obj.getXPos();
local posY = obj.getYPos();
local posZ = obj.getZPos();
obj.getVar().clear_vector();
obj.getVar().push_vector(0);
if(substate == SUB_STATE_ATCHAINLIGHTNING_0) {
obj.sq_SetCurrentAnimation(CUSTOM_ANI_CHAINLIGHTNING_CAST);
local pAni = obj.sq_GetCurrentAni();
// 议蝶? 楼紫蒂 评塭陛紫烟 扑姜
// 议蝶? 楼紫陛 渗唳肾贼, 缣栖诡桧暮 楼紫紫 渗唳 腌栖棻.
// 议蝶? 啪桧虽紫 ?卫蒂 ?鄹栖棻.
local skillLevel = sq_GetSkillLevel(obj, SKILL_ATCHAINLIGHTNING);
local castTime = sq_GetCastTime(obj, SKILL_ATCHAINLIGHTNING, skillLevel);
local animation = sq_GetCurrentAnimation(obj);
local startTime = sq_GetFrameStartTime(animation, 16);
local speedRate = startTime.tofloat() / castTime.tofloat();
obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED,
SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, speedRate, speedRate);
sq_StartDrawCastGauge(obj, startTime, true);
addElementalChain_ATMage(obj, ENUM_ELEMENT_LIGHT);
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_1) {
obj.sq_SetCurrentAnimation(CUSTOM_ANI_CHAINLIGHTNING);
obj.sq_PlaySound("MW_CHAINLIGHT");
if(obj.isMyControlObject()) {
/////////////////////////////////////////////
local firstTargetYRange = obj.sq_GetIntData(SKILL_ATCHAINLIGHTNING, SKL_CL_SD_0); // 0.籀挤 颤啃?卫 Y蹴 彰嫔 (鼻? ??)
local firstTargetXStartRange = obj.sq_GetIntData(SKILL_ATCHAINLIGHTNING, SKL_CL_LI_1); // 1.籀挤 颤啃?卫 X蹴 卫蒙 剪葬
local firstTargetXEndRange = obj.sq_GetIntData(SKILL_ATCHAINLIGHTNING, SKL_CL_SD_2); // 2.籀挤 颤啃?卫 X蹴 部 剪葬
local nextTargetRange = obj.sq_GetIntData(SKILL_ATCHAINLIGHTNING, SKL_CL_SD_3); // 3.羹樯卫 棻挤 颤啃梱虽暧 譆渠 剪葬
local targetMaxHeight = obj.sq_GetIntData(SKILL_ATCHAINLIGHTNING, SKL_CL_SD_4); // 4.颤问? 瞳暧 譆渠 堪桧
local skill_level = obj.sq_GetSkillLevel(SKILL_ATCHAINLIGHTNING);
local link_num = obj.sq_GetLevelData(SKILL_ATCHAINLIGHTNING, SKL_CL_LI_0, skill_level); // 0.葭觼 譆渠 偎热
local attack_time = obj.sq_GetLevelData(SKILL_ATCHAINLIGHTNING, SKL_CL_LI_1, skill_level); // 1.虽楼卫除
local firstAttackRate = obj.sq_GetBonusRateWithPassive(SKILL_ATCHAINLIGHTNING, STATE_CHAINLIGHTNING, SKL_CL_LI_2, 1.0); //2.奢问溘(%)
local multi_hit_num = obj.sq_GetLevelData(SKILL_ATCHAINLIGHTNING, SKL_CL_LI_3, skill_level); // 3.棻钦?? ?热
//local multi_hit_term = obj.sq_GetLevelData(SKILL_ATCHAINLIGHTNING, SKL_CL_LI_4, skill_level); // 4.棻钦?? 除问
////////////////////////////////////////////////
sq_BinaryStartWrite();
sq_BinaryWriteWord(firstTargetYRange);
sq_BinaryWriteWord(firstTargetXStartRange);
sq_BinaryWriteWord(firstTargetXEndRange);
sq_BinaryWriteWord(nextTargetRange);
sq_BinaryWriteWord(targetMaxHeight);
sq_BinaryWriteWord(link_num);
sq_BinaryWriteWord(attack_time);
sq_BinaryWriteDword(firstAttackRate);
sq_BinaryWriteWord(multi_hit_num);
//sq_BinaryWriteWord(multi_hit_term);
//local ropeX = sq_GetDistancePos(posX, obj.getDirection(), offsetLen);
local distanceL = 50;
local h = 88;
obj.sq_SendCreatePassiveObjectPacket(24241, 0, distanceL, 0, h);
obj.sq_PlaySound("CHAINLIGHT_ELEC_LOOP", 7576);
}
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_2) {
obj.sq_SetCurrentAnimation(CUSTOM_ANI_CHAINLIGHTNING_END);
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_3) {
// SUB_STATE_ATCHAINLIGHTNING_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_4) {
// SUB_STATE_ATCHAINLIGHTNING_4 怃粽蝶才桧? 蒙机
}
}
function prepareDraw_ChainLightning(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_ATCHAINLIGHTNING_0) {
// SUB_STATE_ATCHAINLIGHTNING_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_1) {
// SUB_STATE_ATCHAINLIGHTNING_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_2) {
// SUB_STATE_ATCHAINLIGHTNING_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_3) {
// SUB_STATE_ATCHAINLIGHTNING_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_4) {
// SUB_STATE_ATCHAINLIGHTNING_4 怃粽蝶才桧? 蒙机
}
}
function onProc_ChainLightning(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_ATCHAINLIGHTNING_0) {
// SUB_STATE_ATCHAINLIGHTNING_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_1) {
// SUB_STATE_ATCHAINLIGHTNING_1 怃粽蝶才桧? 蒙机
if(obj.isMyControlObject()) {
//if(!obj.sq_GetPassiveObject(24241)) {
local skill_level = obj.sq_GetSkillLevel(SKILL_ATCHAINLIGHTNING);
local attack_time = obj.sq_GetLevelData(SKILL_ATCHAINLIGHTNING, SKL_CL_LI_1, skill_level); // 1.虽楼卫除
local passiveobj_cl = obj.sq_GetPassiveObject(24241);
if(passiveobj_cl) {
local flag = passiveobj_cl.getVar("nograb").get_vector(0);
if(flag)
{
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_ATCHAINLIGHTNING_2);
obj.sq_AddSetStatePacket(STATE_CHAINLIGHTNING, STATE_PRIORITY_USER, true);
return;
}
else
{
if(obj.getVar().get_vector(0) == 0) {
obj.sq_SetShake(obj,1,attack_time);
obj.getVar().set_vector(0, 1);
}
}
}
if(currentT > attack_time) {
//obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_ATCHAINLIGHTNING_2);
obj.sq_AddSetStatePacket(STATE_CHAINLIGHTNING, STATE_PRIORITY_USER, true);
}
}
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_2) {
// SUB_STATE_ATCHAINLIGHTNING_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_3) {
// SUB_STATE_ATCHAINLIGHTNING_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_4) {
// SUB_STATE_ATCHAINLIGHTNING_4 怃粽蝶才桧? 蒙机
}
}
function onProcCon_ChainLightning(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_ATCHAINLIGHTNING_0) {
// SUB_STATE_ATCHAINLIGHTNING_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_1) {
// SUB_STATE_ATCHAINLIGHTNING_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_2) {
// SUB_STATE_ATCHAINLIGHTNING_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_3) {
// SUB_STATE_ATCHAINLIGHTNING_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_4) {
// SUB_STATE_ATCHAINLIGHTNING_4 怃粽蝶才桧? 蒙机
}
}
function onEndCurrentAni_ChainLightning(obj)
{
if(!obj) return;
//local pSickleObj = obj.sq_GetPassiveObject(24101); // sickle
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_ATCHAINLIGHTNING_0) {
if(obj.isMyControlObject()) {
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_ATCHAINLIGHTNING_1);
obj.sq_AddSetStatePacket(STATE_CHAINLIGHTNING, STATE_PRIORITY_USER, true);
}
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_1) {
// SUB_STATE_ATCHAINLIGHTNING_1 怃粽蝶才桧? 蒙机
//if(obj.isMyControlObject()) {
//obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
//}
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_2) {
if(obj.isMyControlObject()) {
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
}
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_3) {
// SUB_STATE_ATCHAINLIGHTNING_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_4) {
// SUB_STATE_ATCHAINLIGHTNING_4 怃粽蝶才桧? 蒙机
}
}
function onKeyFrameFlag_ChainLightning(obj, flagIndex)
{
if(!obj) return false;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_ATCHAINLIGHTNING_0) {
// SUB_STATE_ATCHAINLIGHTNING_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_1) {
// SUB_STATE_ATCHAINLIGHTNING_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_2) {
// SUB_STATE_ATCHAINLIGHTNING_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_3) {
// SUB_STATE_ATCHAINLIGHTNING_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_4) {
// SUB_STATE_ATCHAINLIGHTNING_4 怃粽蝶才桧? 蒙机
}
return false;
}
function onEndState_ChainLightning(obj, new_state)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_ATCHAINLIGHTNING_0) {
// SUB_STATE_ATCHAINLIGHTNING_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_1) {
// SUB_STATE_ATCHAINLIGHTNING_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_2) {
// SUB_STATE_ATCHAINLIGHTNING_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_3) {
// SUB_STATE_ATCHAINLIGHTNING_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_4) {
// SUB_STATE_ATCHAINLIGHTNING_4 怃粽蝶才桧? 蒙机
}
// 蝶才桧? 谦猿 ?擎 镞模 肾历棻贼 议蝶? 啪桧虽 桡据
sq_EndDrawCastGauge(obj);
obj.stopSound(7576);
}
function onAfterSetState_ChainLightning(obj, state, datas, isResetTimer)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_ATCHAINLIGHTNING_0) {
// SUB_STATE_ATCHAINLIGHTNING_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_1) {
// SUB_STATE_ATCHAINLIGHTNING_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_2) {
// SUB_STATE_ATCHAINLIGHTNING_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_3) {
// SUB_STATE_ATCHAINLIGHTNING_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_ATCHAINLIGHTNING_4) {
// SUB_STATE_ATCHAINLIGHTNING_4 怃粽蝶才桧? 蒙机
}
}