Sqr/character/atmage/magiccannon/magiccannon.nut

197 lines
6.0 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.

ENUM_MAGIC_CANNON_SUBSTATE_CHARGE <- 0; // 遽绿
ENUM_MAGIC_CANNON_SUBSTATE_HORIZON <- 1; // 热?(薄?)
ENUM_MAGIC_CANNON_SUBSTATE_VERTICAL <- 2; // 热霜(薄?)
ENUM_MAGIC_CANNON_SUBSTATE_DIAGONAL <- 3; // 渠陕摹(薄?)
ENUM_MAGIC_CANNON_SUBSTATE_LAND <- 4; // 釭酝缣 跷陛胀 虽鼻颤.
function checkExecutableSkill_MagicCannon(obj)
{
if(!obj) return false;
local b_useskill = obj.sq_IsUseSkill(SKILL_MAGIC_CANNON);
if(b_useskill) {
// 薄?鼻鹧艘棻贼 奢酝 颤
obj.sq_IntVectClear();
if(obj.getState() == STATE_JUMP)
obj.sq_IntVectPush(ENUM_MAGIC_CANNON_SUBSTATE_CHARGE);
else //薄?陛 嬴栖贼 ?颤
obj.sq_IntVectPush(ENUM_MAGIC_CANNON_SUBSTATE_LAND);
obj.sq_IntVectPush(obj.getXPos());
obj.sq_IntVectPush(obj.getYPos());
obj.sq_IntVectPush(obj.getZPos());
obj.sq_AddSetStatePacket(STATE_MAGIC_CANNON , STATE_PRIORITY_USER, true);
return true;
}
return false;
}
function checkCommandEnable_MagicCannon(obj)
{
if(!obj)
return false;
local state = obj.sq_GetState();
if(state == STATE_ATTACK) {
// 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20]
return obj.sq_IsCommandEnable(SKILL_MAGIC_CANNON);
}
return true;
}
function onProc_MagicCannon(obj)
{
if(!obj)
return;
local myCannon = obj.getMyPassiveObject(24227,0);
if(myCannon) {
if(sq_GetCurrentFrameIndex(myCannon) == 7) {
}
}
}
function onSetState_MagicCannon(obj, state, datas, isResetTimer)
{
if(!obj) return;
local subState = sq_GetVectorData(datas, 0);
obj.setSkillSubState(subState);
if(subState == ENUM_MAGIC_CANNON_SUBSTATE_CHARGE) {
obj.sq_SetCurrentAnimation(CUSTOM_ANI_AT_MAGIC_CANNON_READY);
obj.sq_PlaySound("MW_MCANNON");
}
else if(subState == ENUM_MAGIC_CANNON_SUBSTATE_HORIZON) {
obj.sq_SetCurrentAnimation(CUSTOM_ANI_AT_MAGIC_CANNON_1);
}
else if(subState == ENUM_MAGIC_CANNON_SUBSTATE_VERTICAL) {
obj.sq_SetCurrentAnimation(CUSTOM_ANI_AT_MAGIC_CANNON_3);
}
else if(subState == ENUM_MAGIC_CANNON_SUBSTATE_DIAGONAL) {
obj.sq_SetCurrentAnimation(CUSTOM_ANI_AT_MAGIC_CANNON_2);
}
else if(subState == ENUM_MAGIC_CANNON_SUBSTATE_LAND) {
obj.sq_SetCurrentAnimation(CUSTOM_ANI_AT_MAGIC_CANNON_4);
obj.sq_StopMove();
obj.sq_PlaySound("MW_MCANNON");
}
//obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED,
// SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);
local x = sq_GetVectorData(datas, 1);
local y = sq_GetVectorData(datas, 2);
local z = sq_GetVectorData(datas, 3);
sq_SetCurrentPos(obj,x,y,z);
local element = obj.getThrowElement();
addElementalChain_ATMage(obj, element);
}
function onEndCurrentAni_MagicCannon(obj)
{
if(!obj) return;
local subState = obj.getSkillSubState();
if(subState == ENUM_MAGIC_CANNON_SUBSTATE_LAND) {
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
//sq_GetOppositeDirection
//setStaticMoveInfo(0, skill->getIntData(3, this), skill->getIntData(3, this), false, skill->getIntData(4, this), true);
//setMoveDirection(getDirection(), ENUM_DIRECTION_NEUTRAL);
}
else if(subState == ENUM_MAGIC_CANNON_SUBSTATE_CHARGE) { // 薄? 酝 卫瞪 - 遽绿 翕蒙 部
local isHorizon = sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL) || sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL);
local isVertical = sq_IsKeyDown(OPTION_HOTKEY_MOVE_DOWN, ENUM_SUBKEY_TYPE_ALL);
local subState = ENUM_MAGIC_CANNON_SUBSTATE_DIAGONAL; // 渠陕摹桧 晦狱
if(isHorizon && !isVertical)
subState = ENUM_MAGIC_CANNON_SUBSTATE_HORIZON;
else if(!isHorizon && isVertical)
subState = ENUM_MAGIC_CANNON_SUBSTATE_VERTICAL;
obj.sq_IntVectClear();
obj.sq_IntVectPush(subState);
obj.sq_IntVectPush(obj.getXPos());
obj.sq_IntVectPush(obj.getYPos());
obj.sq_IntVectPush(obj.getZPos());
obj.sq_AddSetStatePacket(STATE_MAGIC_CANNON , STATE_PRIORITY_USER, true);
}
else { // 衙霜议凯 嫦饵陛 部陬戏贼 濠嵘 钒?.
obj.sq_IntVectClear();
obj.sq_IntVectPush(1);
obj.sq_IntVectPush(0);
obj.sq_IntVectPush(0);
obj.sq_AddSetStatePacket(STATE_JUMP, STATE_PRIORITY_USER, true);
}
}
function onKeyFrameFlag_MagicCannon(obj, flagIndex)
{
if(!obj) return true;
local subState = obj.getSkillSubState();
if(flagIndex == 1) {
local x = 0;
local z = 0;
obj.sq_SetStaticMoveInfo(0, 0, 0, false);
obj.sq_SetStaticMoveInfo(1, 0, 0, false);
sq_SetZVelocity(obj,1,0);
if(subState == ENUM_MAGIC_CANNON_SUBSTATE_LAND) {
x = 43;
z = 70;
}
else if(subState == ENUM_MAGIC_CANNON_SUBSTATE_HORIZON) {
x = 54;
z = 82;
}
else if(subState == ENUM_MAGIC_CANNON_SUBSTATE_DIAGONAL) {
x = 40;
z = 40;
}
obj.sq_SetMoveDirection(obj.getDirection(), ENUM_DIRECTION_NEUTRAL);
local currentElementalType = obj.getThrowElement();
if(obj.isMyControlObject())
{
sq_BinaryStartWrite();
sq_BinaryWriteWord(subState);
sq_BinaryWriteWord(currentElementalType);
obj.sq_SendCreatePassiveObjectPacket(24227, 0, x, 1, z);
printc("MW_MCANNON");
}
}
else if(flagIndex == 2) {
if(subState == ENUM_MAGIC_CANNON_SUBSTATE_HORIZON) {
obj.sq_SetStaticMoveInfo(0, -400, -400, false);
obj.sq_SetStaticMoveInfo(1, 0, 0, false);
sq_SetZVelocity(obj,1,0);
}
else if(subState == ENUM_MAGIC_CANNON_SUBSTATE_VERTICAL) {
sq_SetZVelocity(obj,400,-400);
}
else if(subState == ENUM_MAGIC_CANNON_SUBSTATE_DIAGONAL) {
obj.sq_SetStaticMoveInfo(0, -200, -200, false);
sq_SetZVelocity(obj,200,-200);
}
}
else if(flagIndex == 3) {
obj.sq_SetStaticMoveInfo(0, -800, -800, false, 3500, true);
obj.sq_SetMoveDirection(obj.getDirection(), ENUM_DIRECTION_NEUTRAL);
local x = sq_GetDistancePos(0, obj.getDirection(), -20);
sq_CreateParticleByGlobal(obj.getDustParticleType(LANDPARTICLE_MOVE), obj, x, 0, 0, true, 80, 120, 5);
}
return true;
}