project-meteor-server/Data/scripts/base/chara/npc/populace/PopulaceCompanyWarp.lua
CuriousJorge 4fc5762d41 Teleport command touch-ups.
PopulaceCompanyWarp made to look more retail authentic.  Can't figure out how to make it not play the 'npc untargeted' sound though like retail.
Music command has second argument for transition type.  Added an overloaded function in Player.cs to support this.
Setappearance adjusted to work again on player targets.
DftWil updated to cover near everything.
Re-added shop-related luas that were removed for some reason.
2022-02-05 13:56:58 -05:00

131 lines
6.0 KiB
Lua

--[[
PopulaceCompanyWarp Script
Functions:
eventTalkWelcome(player) - Start Text
eventAskMainMenu(player, index) - Shows teleport menu, hides the teleport location at index value to prevent warping to the spot you're at
eventAfterWarpOtherZone(player) - Fades out for warp
eventTalkStepBreak() - Holds the client up for whatever reason?
--]]
require ("global")
warpNpc =
{ --[actorId] = {warpIndex, cityId} -- ()s around name indicate missing NPC + Aethernet
[1500321] = {1, 1}, -- (Storm Private Gardner)
[1500331] = {2, 1}, -- (Storm Private Rich)
[1500323] = {3, 1}, -- (Storm Private Potter)
[1500330] = {4, 1}, -- (Storm Private Hunt)
[1500322] = {5, 1}, -- (Storm Private Abel)
[1500332] = {6, 1}, -- (Storm Private Stone)
[1500339] = {7, 1}, -- (Storm Private Holt)
[1500324] = {1, 2}, -- serpent_private_white
[1500334] = {2, 2}, -- serpent_private_hill
[1500326] = {3, 2}, -- serpent_private_carver
[1500333] = {4, 2}, -- serpent_private_stone
[1500325] = {5, 2}, -- serpent_private_holmes
[1500335] = {6, 2}, -- serpent_private_kirk
[1500327] = {1, 3}, -- flame_private_newton
[1500337] = {2, 3}, -- (Flame Private Tanner)
[1500329] = {3, 3}, -- (Flame Private Morning)
[1500336] = {4, 3}, -- (Flame Private Covey)
[1500328] = {5, 3}, -- flame_private_allen
[1500338] = {6, 3}, -- (Flame Private Yar)
}
aethernet =
{
{ -- 1: Limsa
{zone = 230, x = -424.140, y = 42.000, z = 371.988, r = -2.472}, -- 1 - Aetheryte Plaza
{zone = 133, x = -439.744, y = 40.000, z = 234.376, r = 0.287}, -- 2 - Drowning Wench
{zone = 230, x = -498.131, y = 43.622, z = 60.818, r = 0.254}, -- 3 - The Bismarck
{zone = 230, x = -759.331, y = 12.000, z = 239.413, r = -0.869}, -- 4 - Ferry Docks
{zone = 230, x = -623.582, y = 4.000, z = 369.318, r = 1.736}, -- 5 - Fisherman's Bottom
{zone = 230, x = -525.536, y = 18.000, z = 173.735, r = 3.082}, -- 6 - The Octant
{zone = 133, x = -231.711, y = 12.000, z = 193.573, r = -0.786}, -- 7 - Procession of Terns
{zone = 128, x = -20.783, y = 42.214, z = 146.946, r = 2.046}, -- 8 - Zephyr Gate
},
{ -- 2: Gridania
{zone = 206, x = -107.878, y = 17.524, z = -1343.871, r = 0.657}, -- 1 - Aetheryte Plaza
{zone = 155, x = 96.868, y = 3.480, z = -1211.040, r = 2.582}, -- 2 - Carline Canopy
{zone = 206, x = 86.942, y = 19.789, z = -1420.891, r = 2.965}, -- 3 - Atelier Fen-Yil
{zone = 206, x = -84.621, y = 19.061, z = -1502.665, r = 0.756}, -- 4 - Whistling Miller
{zone = 206, x = 205.101, y = 9.526, z = -1245.405, r = -1.749}, -- 5 - Quiver's Hold
{zone = 206, x = 160.578, y = 25.061, z = -1556.662, r = 1.896}, -- 6 - Wailing Barracks
{zone = 150, x = 318.838, y = 4.036, z = -992.071, r = -0.307}, -- 7 - Mistalle Bridges
{zone = 206, x = -192.167, y = 4.466, z = -1061.777, r = -0.026}, -- 8 - Berlends Bridges
},
{ -- 3: Ul'dah
{zone = 175, x = -190.574, y = 190.000, z = 18.086, r = 2.190}, -- 1 - Aetheryte Plaza
{zone = 175, x = -36.513, y = 192.000, z = 37.130, r = -0.490}, -- 2 - Quicksand
{zone = 209, x = -192.971, y = 230.000, z = 209.348, r = 2.860}, -- 3 - Frondale's Phrontistery
{zone = 209, x = -60.243, y = 200.000, z = 257.718, r = -1.276}, -- 4 - Onyx Lane
{zone = 209, x = -147.633, y = 198.000, z = 160.064, r = -1.600}, -- 5 - Gold Court
{zone = 209, x = -263.776, y = 202.000, z = 206.699, r = -3.135}, -- 6 - Arrzaneth Ossuary
{zone = 170, x = -29.721, y = 182.635, z = -76.313, r = 2.625}, -- 7 - Gate of Nald
{zone = 170, x = 129.957, y = 183.862, z = 220.719, r = 1.515}, -- 8 - Gate of Thal
}
}
function init(npc)
return false, false, 0, 0;
end
function onEventStarted(player, npc, triggerName)
local passLimsa = 2001014;
local passGrid = 2001015;
local passUldah = 2001016;
passCheck = 1; -- 0 = Check player for Aetherpass keyitem. 1 = Ignore it.
npcId = npc:GetActorClassId();
city = warpNpc[npcId][2];
if (city == 1) then
if player:GetItemPackage(INVENTORY_KEYITEMS):HasItem(passLimsa) then
passCheck = 1;
else
if (passCheck == 0) then callClientFunction(player, "eventTalkWelcome", player); end
end;
elseif (city == 2) then
-- if player:GetItemPackage(INVENTORY_KEYITEMS):HasItem(passGrid) then
passCheck = 1;
-- else
-- if passCheck == 0 then callClientFunction(player, "eventTalkWelcome", player); end
--end;
elseif (city == 3) then
if (player:GetItemPackage(INVENTORY_KEYITEMS):HasItem(passUldah)) then
passCheck = 1;
else
if (passCheck == 0) then callClientFunction(player, "eventTalkWelcome", player); end
end
end
if (passCheck == 1) then
choice = callClientFunction(player, "eventAskMainMenu", player, warpNpc[npcId][1]);
if (choice ~= 0) then
player:EndEvent();
callClientFunction(player, "eventAfterWarpOtherZone", player);
local player_zone = player:GetPos()[5];
spawnType = 0x0A;
if (player_zone == aethernet[city][choice].zone) then
GetWorldManager():DoPlayerMoveInZone(player, aethernet[city][choice].x, aethernet[city][choice].y, aethernet[city][choice].z, aethernet[city][choice].r, spawnType);
else
GetWorldManager():DoZoneChange(player, aethernet[city][choice].zone, nil, 0, spawnType, aethernet[city][choice].x, aethernet[city][choice].y, aethernet[city][choice].z, aethernet[city][choice].r);
end;
else
player:EndEvent();
end
end
end