Sqr/character/atmage/teleport/teleport.nut

393 lines
9.4 KiB
Plaintext
Raw Normal View History

2024-03-18 21:37:40 +08:00
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;
}