Sqr/character/atmage/teleport/teleport.nut

393 lines
9.4 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_TELEPORT_0 <- 0
SUB_STATE_TELEPORT_1 <- 1
SUB_STATE_TELEPORT_2 <- 2
SUB_STATE_TELEPORT_3 <- 3
SUB_STATE_TELEPORT_4 <- 4
function checkExecutableSkill_Teleport(obj)
{
if(!obj) return false;
local b_useskill = obj.sq_IsUseSkill(SKILL_TELEPORT);
if(b_useskill)
{
obj.getVar("pos").clear_vector();
obj.getVar("pos").push_vector(0);
obj.getVar("pos").push_vector(0);
obj.getVar("pos").push_vector(0);
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_TELEPORT_0); // substate撮?
obj.sq_AddSetStatePacket(STATE_TELEPORT, STATE_PRIORITY_IGNORE_FORCE, true);
return true;
}
return false;
}
function checkCommandEnable_Teleport(obj)
{
if(!obj) return false;
local state = obj.sq_GetState();
if(state == STATE_ATTACK) {
// 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20]
return obj.sq_IsCommandEnable(SKILL_TELEPORT);
}
return true;
}
function onSetState_Teleport(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();
local sq_var = obj.getVar();
if(substate == SUB_STATE_TELEPORT_0) {
obj.sq_PlaySound("MW_TELEPORT");
obj.getVar("pos").set_vector(0, posX);
obj.getVar("pos").set_vector(1, posY);
obj.getVar("pos").set_vector(2, posZ);
sq_var.clear_vector();
sq_var.push_vector(ENUM_DIRECTION_NEUTRAL);
sq_var.push_vector(ENUM_DIRECTION_NEUTRAL);
obj.sq_SetCurrentAnimation(CUSTOM_ANI_TELEPORT1);
local appendage = CNSquirrelAppendage.sq_AppendAppendage(obj, obj, SKILL_TELEPORT,
true, "Appendage/Character/ap_atmage_bodyeffect.nut", true);
}
else if(substate == SUB_STATE_TELEPORT_1) {
obj.sq_SetCurrentAnimation(CUSTOM_ANI_TELEPORT2);
}
else if(substate == SUB_STATE_TELEPORT_2) {
//obj.sq_SetCurrentAnimation(CUSTOM_ANI_TELEPORT3);
}
else if(substate == SUB_STATE_TELEPORT_3) {
// SUB_STATE_TELEPORT_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_4) {
// SUB_STATE_TELEPORT_4 怃粽蝶才桧? 蒙机
}
}
function prepareDraw_Teleport(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_TELEPORT_0) {
// SUB_STATE_TELEPORT_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_1) {
// SUB_STATE_TELEPORT_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_2) {
// SUB_STATE_TELEPORT_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_3) {
// SUB_STATE_TELEPORT_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_4) {
// SUB_STATE_TELEPORT_4 怃粽蝶才桧? 蒙机
}
}
function onProc_Teleport(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_TELEPORT_0) {
}
else if(substate == SUB_STATE_TELEPORT_1) {
// SUB_STATE_TELEPORT_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_2) {
// SUB_STATE_TELEPORT_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_3) {
// SUB_STATE_TELEPORT_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_4) {
// SUB_STATE_TELEPORT_4 怃粽蝶才桧? 蒙机
}
}
function onProcCon_Teleport(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_TELEPORT_0)
{
local horizonDirection = obj.sq_GetInputDirection(0);
obj.getVar().set_vector(0, horizonDirection);
local verticalDirection = obj.sq_GetInputDirection(1);
obj.getVar().set_vector(1, verticalDirection);
}
else if(substate == SUB_STATE_TELEPORT_1) {
// SUB_STATE_TELEPORT_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_2) {
// SUB_STATE_TELEPORT_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_3) {
// SUB_STATE_TELEPORT_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_4) {
// SUB_STATE_TELEPORT_4 怃粽蝶才桧? 蒙机
}
}
function onEndCurrentAni_Teleport(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
//if(!obj.isMyControlObject()) {
// return;
//}
if(substate == SUB_STATE_TELEPORT_0) {
local horizonDistance = obj.sq_GetIntData(SKILL_TELEPORT, 0); // 热? 表?剪葬
local verticalDistance = obj.sq_GetIntData(SKILL_TELEPORT, 1); // 热霜 表?剪葬
local sq_var = obj.getVar();
local horizonDirection = sq_var.get_vector(0);
local verticalDirection = sq_var.get_vector(1);
local posX = obj.getXPos();
local posY = obj.getYPos();
local posZ = obj.getZPos();
local fx = posX;
local fy = posY;
local fz = posZ;
obj.sq_IntVectClear();
obj.sq_IntVectPush(SUB_STATE_TELEPORT_1); // substate撮?
if((horizonDirection == ENUM_DIRECTION_LEFT || horizonDirection == ENUM_DIRECTION_RIGHT))
{
fx = sq_GetDistancePos(posX, horizonDirection, horizonDistance);
}
if(verticalDirection == ENUM_DIRECTION_UP)
{
fy = posY - verticalDistance;
}
if(verticalDirection == ENUM_DIRECTION_DOWN)
{
fy = posY + verticalDistance;
}
if(horizonDirection == ENUM_DIRECTION_NEUTRAL && verticalDirection == ENUM_DIRECTION_NEUTRAL)
{
fx = sq_GetDistancePos(posX, obj.getDirection(), horizonDistance);
}
if(!sq_IsValidActiveStatus(obj, ACTIVESTATUS_HOLD))
obj.sq_SetfindNearLinearMovablePos(fx, fy, obj.getXPos(), obj.getYPos(), 10);
if(obj.isMyControlObject())
{
obj.sq_AddSetStatePacket(STATE_TELEPORT, STATE_PRIORITY_IGNORE_FORCE, true);
}
}
else if(substate == SUB_STATE_TELEPORT_1) {
if(obj.isMyControlObject())
{
obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
}
}
else if(substate == SUB_STATE_TELEPORT_2) {
if(obj.isMyControlObject())
{
obj.sq_IntVectClear();
obj.sq_IntVectPush(1); // substate撮?
obj.sq_IntVectPush(0); // substate撮?
obj.sq_IntVectPush(1); // substate撮?
obj.sq_AddSetStatePacket(STATE_JUMP, STATE_PRIORITY_USER, true);
}
}
else if(substate == SUB_STATE_TELEPORT_3) {
// SUB_STATE_TELEPORT_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_4) {
// SUB_STATE_TELEPORT_4 怃粽蝶才桧? 蒙机
}
}
function onKeyFrameFlag_Teleport(obj, flagIndex)
{
if(!obj) return false;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_TELEPORT_0) {
// SUB_STATE_TELEPORT_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_1) {
// SUB_STATE_TELEPORT_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_2) {
// SUB_STATE_TELEPORT_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_3) {
// SUB_STATE_TELEPORT_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_4) {
// SUB_STATE_TELEPORT_4 怃粽蝶才桧? 蒙机
}
return false;
}
function onEndState_Teleport(obj, new_state)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_TELEPORT_0) {
// SUB_STATE_TELEPORT_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_1) {
// SUB_STATE_TELEPORT_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_2) {
// SUB_STATE_TELEPORT_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_3) {
// SUB_STATE_TELEPORT_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_4) {
// SUB_STATE_TELEPORT_4 怃粽蝶才桧? 蒙机
}
}
function onAfterSetState_Teleport(obj, state, datas, isResetTimer)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_TELEPORT_0) {
// SUB_STATE_TELEPORT_0 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_1) {
// SUB_STATE_TELEPORT_1 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_2) {
// SUB_STATE_TELEPORT_2 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_3) {
// SUB_STATE_TELEPORT_3 怃粽蝶才桧? 蒙机
}
else if(substate == SUB_STATE_TELEPORT_4) {
// SUB_STATE_TELEPORT_4 怃粽蝶才桧? 蒙机
}
}
function getScrollBasisPos_Teleport(obj)
{
if(!obj) return;
local substate = obj.getSkillSubState();
if(substate == SUB_STATE_TELEPORT_1 || substate == SUB_STATE_TELEPORT_0)
{
if(obj.isMyControlObject())
{
local pX = obj.getVar("pos").get_vector(0);
local pY = obj.getVar("pos").get_vector(1);
if(substate == SUB_STATE_TELEPORT_1)
{
local pAni = obj.sq_GetCurrentAni();
local currentT = sq_GetCurrentTime(pAni);
local totalT = 200;
local posX = obj.getXPos();
local posY = obj.getYPos();
local posZ = obj.getZPos();
local orgX = obj.getVar("pos").get_vector(0);
local orgY = obj.getVar("pos").get_vector(1);
local orgZ = obj.getVar("pos").get_vector(2);
//pX = sq_GetAccel(orgX, posX, currentT, totalT, true);
pX = sq_GetUniformVelocity(orgX, posX, currentT, totalT);
//pX = posX;
//print( " orgX:" + orgX + " pX:" + pX);
pY = posY;
}
obj.sq_SetCameraScrollPosition(pX, pY, 0);
return true;
}
}
return false;
}