landsandboat/scripts/globals/maps.lua
claywar 5e3211a2b0
[chore] Remove all requires for scripts/globals/msg
Fix lines from search and replace


Fix last line length
2023-07-15 10:41:03 -04:00

145 lines
6.3 KiB
Lua

-----------------------------------
-- Functions for Map Vendor NPCs
-----------------------------------
xi = xi or {}
xi.maps = xi.maps or {}
-- TODO: When WotG Map Vendors are implemented, use this table to
-- store additional data regarding map discounts in past areas.
local mapVendors =
{
['Ashu_Bolkhomo'] = 1006,
['Elesca'] = 567,
['Karine'] = 210,
['Lombaria'] = 500,
['Ludwig'] = 500,
['Mhoji_Roccoruh'] = 10000,
['Pehki_Machumaht'] = 10000,
['Promurouve'] = 10000,
['Rex'] = 115,
['Riyadahf'] = 563,
['Rusese'] = 10000,
['Violitte'] = 595,
}
local mapInfo =
{
-- ID Key Item Cost
[ 0] = { xi.ki.MAP_OF_THE_SAN_DORIA_AREA, 200 },
[ 1] = { xi.ki.MAP_OF_THE_BASTOK_AREA, 200 },
[ 2] = { xi.ki.MAP_OF_THE_WINDURST_AREA, 200 },
[ 3] = { xi.ki.MAP_OF_THE_JEUNO_AREA, 600 },
[ 4] = { xi.ki.MAP_OF_ORDELLES_CAVES, 600 },
[ 5] = { xi.ki.MAP_OF_GHELSBA, 600 },
[ 6] = { xi.ki.MAP_OF_DAVOI, 3000 },
[ 7] = { xi.ki.MAP_OF_CARPENTERS_LANDING, 3000 },
[ 8] = { xi.ki.MAP_OF_THE_ZERUHN_MINES, 200 },
[ 9] = { xi.ki.MAP_OF_THE_PALBOROUGH_MINES, 600 },
[10] = { xi.ki.MAP_OF_BEADEAUX, 600 },
[11] = { xi.ki.MAP_OF_GIDDEUS, 600 },
[12] = { xi.ki.MAP_OF_CASTLE_OZTROJA, 3000 },
[13] = { xi.ki.MAP_OF_THE_MAZE_OF_SHAKHRAMI, 600 },
[14] = { xi.ki.MAP_OF_THE_LITELOR_REGION, 3000 },
[15] = { xi.ki.MAP_OF_BIBIKI_BAY, 3000 },
[16] = { xi.ki.MAP_OF_QUFIM_ISLAND, 3000 },
[17] = { xi.ki.MAP_OF_THE_ELDIEME_NECROPOLIS, 3000 },
[18] = { xi.ki.MAP_OF_THE_GARLAIGE_CITADEL, 3000 },
[19] = { xi.ki.MAP_OF_THE_ELSHIMO_REGIONS, 3000 },
[20] = { xi.ki.MAP_OF_THE_NORTHLANDS_AREA, 3000 },
[21] = { xi.ki.MAP_OF_KING_RANPERRES_TOMB, 600 },
[22] = { xi.ki.MAP_OF_THE_DANGRUF_WADI, 600 },
[23] = { xi.ki.MAP_OF_THE_HORUTOTO_RUINS, 600 },
[24] = { xi.ki.MAP_OF_BOSTAUNIEUX_OUBLIETTE, 3000 },
[25] = { xi.ki.MAP_OF_THE_TORAIMARAI_CANAL, 3000 },
[26] = { xi.ki.MAP_OF_THE_GUSGEN_MINES, 600 },
[27] = { xi.ki.MAP_OF_THE_CRAWLERS_NEST, 3000 },
[28] = { xi.ki.MAP_OF_THE_RANGUEMONT_PASS, 3000 },
[29] = { xi.ki.MAP_OF_DELKFUTTS_TOWER, 3000 },
[30] = { xi.ki.MAP_OF_FEIYIN, 3000 },
[31] = { xi.ki.MAP_OF_CASTLE_ZVAHL, 3000 },
[32] = { xi.ki.MAP_OF_THE_KUZOTZ_REGION, 3000 },
[33] = { xi.ki.MAP_OF_THE_RUAUN_GARDENS, 3000 },
[34] = { xi.ki.MAP_OF_NORG, 3000 },
[35] = { xi.ki.MAP_OF_TEMPLE_OF_UGGALEPIH, 3000 },
[36] = { xi.ki.MAP_OF_THE_DEN_OF_RANCOR, 3000 },
[37] = { xi.ki.MAP_OF_THE_KORROLOKA_TUNNEL, 3000 },
[38] = { xi.ki.MAP_OF_THE_KUFTAL_TUNNEL, 3000 },
[39] = { xi.ki.MAP_OF_THE_BOYAHDA_TREE, 3000 },
[40] = { xi.ki.MAP_OF_VELUGANNON_PALACE, 3000 },
[41] = { xi.ki.MAP_OF_IFRITS_CAULDRON, 3000 },
[42] = { xi.ki.MAP_OF_THE_QUICKSAND_CAVES, 3000 },
[43] = { xi.ki.MAP_OF_SEA_SERPENT_GROTTO, 3000 },
[44] = { xi.ki.MAP_OF_THE_VOLLBOW_REGION, 3000 },
[45] = { xi.ki.MAP_OF_LABYRINTH_OF_ONZOZO, 3000 },
[46] = { xi.ki.MAP_OF_THE_ULEGUERAND_RANGE, 3000 },
[47] = { xi.ki.MAP_OF_THE_ATTOHWA_CHASM, 3000 },
[48] = { xi.ki.MAP_OF_PSOXJA, 3000 },
[49] = { xi.ki.MAP_OF_OLDTON_MOVALPOLOS, 3000 },
[50] = { xi.ki.MAP_OF_NEWTON_MOVALPOLOS, 3000 },
[51] = { xi.ki.MAP_OF_TAVNAZIA, 3000 },
[52] = { xi.ki.MAP_OF_THE_AQUEDUCTS, 3000 },
[53] = { xi.ki.MAP_OF_THE_SACRARIUM, 3000 },
[54] = { xi.ki.MAP_OF_CAPE_RIVERNE, 3000 },
[55] = { xi.ki.MAP_OF_ALTAIEU, 3000 },
[56] = { xi.ki.MAP_OF_HUXZOI, 3000 },
[57] = { xi.ki.MAP_OF_RUHMET, 3000 },
[58] = { xi.ki.MAP_OF_AL_ZAHBI, 600 },
[59] = { xi.ki.MAP_OF_NASHMAU, 3000 },
[60] = { xi.ki.MAP_OF_WAJAOM_WOODLANDS, 3000 },
[61] = { xi.ki.MAP_OF_CAEDARVA_MIRE, 3000 },
[62] = { xi.ki.MAP_OF_MOUNT_ZHAYOLM, 3000 },
[63] = { xi.ki.MAP_OF_AYDEEWA_SUBTERRANE, 3000 },
[64] = { xi.ki.MAP_OF_MAMOOK, 3000 },
[65] = { xi.ki.MAP_OF_HALVUNG, 3000 },
[66] = { xi.ki.MAP_OF_ARRAPAGO_REEF, 3000 },
[67] = { xi.ki.MAP_OF_ALZADAAL_RUINS, 3000 },
[68] = { xi.ki.MAP_OF_BHAFLAU_THICKETS, 3000 },
[69] = { xi.ki.MAP_OF_VUNKERL_INLET, 30000 },
[70] = { xi.ki.MAP_OF_GRAUBERG, 30000 },
[71] = { xi.ki.MAP_OF_FORT_KARUGO_NARUGO, 30000 },
}
local function getMapEventParams(player)
local paramTable = { 0, 0, 0 }
for mapId = 0, #mapInfo do
if player:hasKeyItem(mapInfo[mapId][1]) then
local paramPos = math.floor(mapId / 32) + 1
paramTable[paramPos] = bit.bor(paramTable[paramPos], bit.lshift(1, mapId))
end
end
return paramTable
end
xi.maps.onTrigger = function(player, npc)
local eventParams = getMapEventParams(player)
player:startEvent(mapVendors[npc:getName()], eventParams[1], eventParams[2], eventParams[3])
end
xi.maps.onEventUpdate = function(player, csid, option, npc)
local mapId = bit.rshift(option, 16)
if csid ~= mapVendors[npc:getName()] then
return
end
if
mapId >= 0 and
mapId <= #mapInfo and
bit.band(option, 0xF) == 1
then
local mapCost = mapInfo[mapId][2]
if mapCost <= player:getGil() then
player:delGil(mapCost)
npcUtil.giveKeyItem(player, mapInfo[mapId][1])
else
player:messageSpecial(zones[player:getZoneID()].text.NOT_HAVE_ENOUGH_GIL)
end
end
player:updateEvent(unpack(getMapEventParams(player)))
end