mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-20 11:47:48 +00:00

Added stoneskin effect to database. Fixed Rampage not working Fixed bug where abilities didn't equip correctly when leveling up Added a temporary fix for returning while dead Added handling for abilities that don't have an actiontype set, like elusive jump
124 lines
No EOL
3.7 KiB
Lua
124 lines
No EOL
3.7 KiB
Lua
--[[
|
|
|
|
TeleportCommand Script
|
|
|
|
Functions:
|
|
|
|
eventRegion(numAnima)
|
|
eventAetheryte(region, animaCost1, animaCost2, animaCost3, animaCost4, animaCost5, animaCost6)
|
|
eventConfirm(isReturn, isInBattle, cityReturnNum, 138821, forceAskReturnOnly)
|
|
|
|
--]]
|
|
|
|
require ("global")
|
|
require ("aetheryte")
|
|
require ("utils")
|
|
|
|
teleportMenuToAetheryte = {
|
|
[1] = {
|
|
[1] = 1280001,
|
|
[2] = 1280002,
|
|
[3] = 1280003,
|
|
[4] = 1280004,
|
|
[5] = 1280005,
|
|
[6] = 1280006
|
|
},
|
|
[2] = {
|
|
[1] = 1280092,
|
|
[2] = 1280093,
|
|
[3] = 1280094,
|
|
[4] = 1280095,
|
|
[5] = 1280096
|
|
},
|
|
[3] = {
|
|
[1] = 1280061,
|
|
[2] = 1280062,
|
|
[3] = 1280063,
|
|
[4] = 1280064,
|
|
[5] = 1280065,
|
|
[6] = 1280066
|
|
},
|
|
[4] = {
|
|
[1] = 1280031,
|
|
[2] = 1280032,
|
|
[3] = 1280033,
|
|
[4] = 1280034,
|
|
[5] = 1280035,
|
|
[6] = 1280036
|
|
},
|
|
[5] = {
|
|
[1] = 1280121,
|
|
[2] = 1280122
|
|
}
|
|
}
|
|
|
|
function onEventStarted(player, actor, triggerName, isTeleport)
|
|
|
|
local worldMaster = GetWorldMaster();
|
|
|
|
if (isTeleport == 0) then
|
|
while (true) do
|
|
regionChoice = callClientFunction(player, "delegateCommand", actor, "eventRegion", 100);
|
|
|
|
if (regionChoice == nil) then break end
|
|
|
|
while (true) do
|
|
aetheryteChoice = callClientFunction(player, "delegateCommand", actor, "eventAetheryte", regionChoice, 2, 2, 2, 4, 4, 4);
|
|
|
|
if (aetheryteChoice == nil) then break end
|
|
|
|
player:PlayAnimation(0x4000FFA);
|
|
player:SendGameMessage(worldMaster, 34101, 0x20, 2, teleportMenuToAetheryte[regionChoice][aetheryteChoice], 100, 100);
|
|
confirmChoice = callClientFunction(player, "delegateCommand", actor, "eventConfirm", false, false, 1, 138824, false);
|
|
if (confirmChoice == 1) then
|
|
player:PlayAnimation(0x4000FFB);
|
|
player:SendGameMessage(worldMaster, 34105, 0x20);
|
|
--Do teleport
|
|
destination = aetheryteTeleportPositions[teleportMenuToAetheryte[regionChoice][aetheryteChoice]];
|
|
if (destination ~= nil) then
|
|
randoPos = getRandomPointInBand(destination[2], destination[4], 3, 5);
|
|
rotation = getAngleFacing(randoPos.x, randoPos.y, destination[2], destination[4]);
|
|
GetWorldManager():DoZoneChange(player, destination[1], nil, 0, 2, randoPos.x, destination[3], randoPos.y, rotation);
|
|
end
|
|
end
|
|
player:endEvent();
|
|
return;
|
|
end
|
|
|
|
end
|
|
else
|
|
player:PlayAnimation(0x4000FFA);
|
|
local choice, isInn = callClientFunction(player, "delegateCommand", actor, "eventConfirm", true, false, player:GetHomePointInn(), player:GetHomePoint(), false);
|
|
if (choice == 1) then
|
|
player:PlayAnimation(0x4000FFB);
|
|
player:SendGameMessage(worldMaster, 34104, 0x20);
|
|
if (isInn) then
|
|
--Return to Inn
|
|
if (player:GetHomePointInn() == 1) then
|
|
GetWorldManager():DoZoneChange(player, 244, nil, 0, 15, -160.048, 0, -165.737, 0);
|
|
elseif (player:GetHomePointInn() == 2) then
|
|
GetWorldManager():DoZoneChange(player, 244, nil, 0, 15, 160.048, 0, 154.263, 0);
|
|
elseif (player:GetHomePointInn() == 3) then
|
|
GetWorldManager():DoZoneChange(player, 244, nil, 0, 15, 0.048, 0, -5.737, 0);
|
|
end
|
|
elseif (choice == 1 and isInn == nil) then
|
|
--Return to Homepoint
|
|
destination = aetheryteTeleportPositions[player:GetHomePoint()];
|
|
if (destination ~= nil) then
|
|
randoPos = getRandomPointInBand(destination[2], destination[4], 3, 5);
|
|
rotation = getAngleFacing(randoPos.x, randoPos.y, destination[2], destination[4]);
|
|
GetWorldManager():DoZoneChange(player, destination[1], nil, 0, 2, randoPos.x, destination[3], randoPos.y, rotation);
|
|
|
|
--bandaid fix for returning while dead, missing things like weakness and the heal number
|
|
if (player:GetHP() == 0) then
|
|
player:SetHP(player.GetMaxHP());
|
|
player:ChangeState(0);
|
|
player:PlayAnimation(0x01000066);
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
player:endEvent();
|
|
end |