From 133baeb6afd783769eb5ef3fb4642c376ebdb356 Mon Sep 17 00:00:00 2001 From: Nobutadas Date: Sun, 5 Jul 2026 17:32:30 -0500 Subject: [PATCH] [lua] Expeditionary Force Battle Logic --- scripts/globals/expeditionary_force.lua | 995 +++++++++++++++++++ scripts/zones/Beaucedine_Glacier/IDs.lua | 29 +- scripts/zones/Buburimu_Peninsula/IDs.lua | 26 +- scripts/zones/Cape_Teriggan/IDs.lua | 19 +- scripts/zones/Eastern_Altepa_Desert/IDs.lua | 33 +- scripts/zones/Jugner_Forest/IDs.lua | 44 +- scripts/zones/Meriphataud_Mountains/IDs.lua | 26 +- scripts/zones/Pashhow_Marshlands/IDs.lua | 32 +- scripts/zones/Qufim_Island/IDs.lua | 29 +- scripts/zones/The_Sanctuary_of_ZiTah/IDs.lua | 27 +- scripts/zones/Valkurm_Dunes/IDs.lua | 43 +- scripts/zones/Xarcabard/IDs.lua | 43 +- scripts/zones/Yhoator_Jungle/IDs.lua | 31 +- scripts/zones/Yuhtunga_Jungle/IDs.lua | 39 +- 14 files changed, 1323 insertions(+), 93 deletions(-) diff --git a/scripts/globals/expeditionary_force.lua b/scripts/globals/expeditionary_force.lua index 0fc6b20cb20..05ca50f4336 100644 --- a/scripts/globals/expeditionary_force.lua +++ b/scripts/globals/expeditionary_force.lua @@ -4,10 +4,685 @@ xi = xi or {} xi.expeditionaryForce = xi.expeditionaryForce or {} +----------------------------------- +-- Enums +----------------------------------- +local bannerState = +{ + IDLE = 0, + ACTIVE = 1, + CLEARED = 2, + HIDDEN = 3, +} + ----------------------------------- -- Tables ----------------------------------- +local zoneInfoTable = +{ + [xi.zone.BEAUCEDINE_GLACIER ] = { levelCap = 40 }, + [xi.zone.BUBURIMU_PENINSULA ] = { levelCap = 30 }, + [xi.zone.CAPE_TERIGGAN ] = { levelCap = xi.settings.main.MAX_LEVEL }, -- Uncapped + [xi.zone.EASTERN_ALTEPA_DESERT ] = { levelCap = 50 }, + [xi.zone.JUGNER_FOREST ] = { levelCap = 30 }, + [xi.zone.MERIPHATAUD_MOUNTAINS ] = { levelCap = 30 }, + [xi.zone.PASHHOW_MARSHLANDS ] = { levelCap = 30 }, + [xi.zone.QUFIM_ISLAND ] = { levelCap = 30 }, + [xi.zone.THE_SANCTUARY_OF_ZITAH] = { levelCap = 40 }, + [xi.zone.VALKURM_DUNES ] = { levelCap = 30 }, + [xi.zone.XARCABARD ] = { levelCap = 50 }, + [xi.zone.YHOATOR_JUNGLE ] = { levelCap = 50 }, + [xi.zone.YUHTUNGA_JUNGLE ] = { levelCap = 40 }, +} + +local bannerTable = +{ + [xi.zone.BEAUCEDINE_GLACIER] = + { + -- position = { x, y, z, rot } + [1] = { position = { 193.614, -0.307, -35.663, 255 } }, -- I-8, Gigas + [2] = { position = { 20.169, -80.061, 180.063, 224 } }, -- H-7, Gigas + [3] = { position = { -326.264, -99.694, 140.523, 220 } }, -- F-7, Gigas + [4] = { position = { 255.402, 0.072, 382.940, 110 } }, -- J-6, Hobgoblin + [5] = { position = { -173.299, -81.847, 150.200, 246 } }, -- G-7, Hobgoblin + }, + + [xi.zone.BUBURIMU_PENINSULA] = + { + [1] = { position = { 101.491, -23.090, 199.798, 218 } }, -- Hobgoblin + [2] = { position = { 527.885, 0.486, -40.241, 157 } }, -- Hobgoblin + [3] = { position = { 315.895, -0.025, 361.453, 17 } }, -- Theoyagudo + [4] = { position = { -132.589, 20.000, -314.261, 230 } }, -- Theoyagudo + [5] = { position = { -446.510, -8.799, -282.799, 240 } }, -- Theoyagudo + }, + + [xi.zone.CAPE_TERIGGAN] = + { + [1] = { position = { 126.583, -0.194, -117.367, 75 } }, -- I-9, Hobgoblin + [2] = { position = { -213.169, -3.320, 254.085, 181 } }, -- G-6, Hobgoblin + [3] = { position = { 251.977, 5.241, 50.698, 128 } }, -- J-8, Hobgoblin + [4] = { position = { -29.071, -9.694, 224.300, 46 } }, -- H-7, Hobgoblin + [5] = { position = { 162.059, -0.740, 250.538, 139 } }, -- I-6, Hobgoblin + }, + + [xi.zone.EASTERN_ALTEPA_DESERT] = + { + [1] = { position = { -63.319, -10.629, 408.180, 77 } }, -- G-5, Contantican + [2] = { position = { 463.219, -10.608, 248.849, 212 } }, -- J-6, Contantican + [3] = { position = { 329.054, 6.684, -330.958, 201 } }, -- J-10, Contantican + [4] = { position = { -332.218, -1.203, 126.229, 60 } }, -- E-7, Hobgoblin + [5] = { position = { 27.934, -10.019, 398.640, 126 } }, -- H-6, Hobgoblin + }, + + [xi.zone.JUGNER_FOREST] = + { + [1] = { position = { 279.408, -15.592, -547.181, 176 } }, -- J-11, Halforc + [2] = { position = { -159.588, 0.647, 386.042, 17 } }, -- G-6, Halforc + [3] = { position = { 3.419, -16.000, -642.232, 7 } }, -- H-12, Halforc + [4] = { position = { 448.240, 0.212, -157.228, 225 } }, -- K-9, Hobgoblin + [5] = { position = { 600.809, 0.873, 217.453, 130 } }, -- L-7, Hobgoblin + }, + + [xi.zone.MERIPHATAUD_MOUNTAINS] = + { + [1] = { position = { 199.396, -0.723, -527.072, 169 } }, -- H-11, Hobgoblin + [2] = { position = { 342.918, -1.109, 529.219, 226 } }, -- I-5, Hobgoblin + [3] = { position = { 592.850, -16.741, -518.802, 227 } }, -- K-11, Theoyagudo + [4] = { position = { -536.930, 4.317, 338.845, 200 } }, -- D-6, Theoyagudo + [5] = { position = { -559.025, -16.761, 47.233, 72 } }, -- D-8, Theoyagudo + }, + + [xi.zone.PASHHOW_MARSHLANDS] = + { + [1] = { position = { -172.764, 25.125, 93.640, 154 } }, -- G-8, Hobgoblin + [2] = { position = { 261.910, 24.213, 211.070, 85 } }, -- J-7, Hobgoblin + [3] = { position = { 140.080, 23.971, -411.951, 112 } }, -- I-11, Metaquadav + [4] = { position = { -447.851, 24.305, -219.899, 113 } }, -- E-10, Metaquadav + [5] = { position = { -460.959, 24.203, 469.851, 223 } }, -- E-5, Metaquadav + }, + + [xi.zone.QUFIM_ISLAND] = + { + [1] = { position = { 0.348, -20.126, 73.479, 202 } }, -- H-8, Giant + [2] = { position = { -72.247, -20.055, 353.529, 140 } }, -- H-6, Giant + [3] = { position = { -67.440, -18.291, -68.641, 186 } }, -- H-8, Giant + [4] = { position = { 93.082, -21.458, -67.584, 1 } }, -- I-8, Hobgoblin + [5] = { position = { -339.785, -19.984, 33.289, 171 } }, -- F-8, Hobgoblin + }, + + [xi.zone.THE_SANCTUARY_OF_ZITAH] = + { + [1] = { position = { 643.619, 0.842, -176.843, 128 } }, -- L-10, Hobgoblin + [2] = { position = { 174.336, -1.015, -413.606, 59 } }, -- I-11, Hobgoblin + [3] = { position = { -512.058, -0.975, 253.275, 37 } }, -- E-7, Hobgoblin + [4] = { position = { 429.298, 0.084, -604.489, 231 } }, -- J-12, Hobgoblin + [5] = { position = { -399.822, 0.162, -168.998, 174 } }, -- E-10, Hobgoblin + }, + + [xi.zone.VALKURM_DUNES] = + { + [1] = { position = { -522.404, -8.175, 113.667, 141 } }, -- Halforc + [2] = { position = { 643.175, -0.592, 8.854, 10 } }, -- Halforc + [3] = { position = { 478.713, -16.140, 365.873, 28 } }, -- J-6, Hobgoblin + [4] = { position = { -352.679, -8.856, 327.661, 18 } }, -- Metaquadav + [5] = { position = { -116.204, 4.000, -113.608, 160 } }, -- Metaquadav + }, + + [xi.zone.XARCABARD] = + { + [1] = { position = { 32.788, -24.162, -205.200, 6 } }, -- G-9, Gigas + [2] = { position = { -160.590, -24.169, -87.061, 174 } }, -- F-8, Gigas + [3] = { position = { 153.000, -36.438, 23.500, 16 } }, -- H-7, Gigas + [4] = { position = { 47.461, -36.500, 66.281, 201 } }, -- G-7, Hobgoblin + [5] = { position = { 320.399, -8.190, 167.796, 52 } }, -- I-6, Hobgoblin + }, + + [xi.zone.YHOATOR_JUNGLE] = + { + [1] = { position = { -54.134, 0.344, -405.397, 199 } }, -- H-10, Hobgoblin + [2] = { position = { -196.704, 0.000, -149.953, 75 } }, -- G-9, Hobgoblin + [3] = { position = { -289.835, 0.000, -357.025, 5 } }, -- F-10, Noctonberry + [4] = { position = { 366.014, -0.176, -394.801, 96 } }, -- J-10, Noctonberry + [5] = { position = { -176.760, 0.162, 26.774, 40 } }, -- G-8, Noctonberry + }, + + [xi.zone.YUHTUNGA_JUNGLE] = + { + [1] = { position = { -63.927, -0.042, -126.052, 153 } }, -- H-9, Demisahagin + [2] = { position = { 102.301, 0.600, 442.978, 17 } }, -- I-6, Demisahagin + [3] = { position = { -305.061, 16.186, -438.904, 132 } }, -- G-11, Demisahagin + [4] = { position = { 381.229, 3.908, 148.721, 115 } }, -- K-8, Hobgoblin + [5] = { position = { -647.367, 0.000, 42.053, 28 } }, -- E-8, Hobgoblin + }, +} + +local bannerNMs = +{ + [xi.zone.BEAUCEDINE_GLACIER] = + { + [1] = + { + zones[xi.zone.BEAUCEDINE_GLACIER].mob.GIGAS_BEASTMASTER, zones[xi.zone.BEAUCEDINE_GLACIER].mob.GIGAS_MONK, + zones[xi.zone.BEAUCEDINE_GLACIER].mob.GIGAS_RANGER, zones[xi.zone.BEAUCEDINE_GLACIER].mob.GIGAS_WARRIOR, + }, + + [2] = + { + zones[xi.zone.BEAUCEDINE_GLACIER].mob.GIGAS_BEASTMASTER, zones[xi.zone.BEAUCEDINE_GLACIER].mob.GIGAS_MONK, + zones[xi.zone.BEAUCEDINE_GLACIER].mob.GIGAS_RANGER, zones[xi.zone.BEAUCEDINE_GLACIER].mob.GIGAS_WARRIOR, + }, + + [3] = + { + zones[xi.zone.BEAUCEDINE_GLACIER].mob.GIGAS_BEASTMASTER, zones[xi.zone.BEAUCEDINE_GLACIER].mob.GIGAS_MONK, + zones[xi.zone.BEAUCEDINE_GLACIER].mob.GIGAS_RANGER, zones[xi.zone.BEAUCEDINE_GLACIER].mob.GIGAS_WARRIOR, + }, + + [4] = + { + zones[xi.zone.BEAUCEDINE_GLACIER].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.BEAUCEDINE_GLACIER].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.BEAUCEDINE_GLACIER].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.BEAUCEDINE_GLACIER].mob.HOBGOBLIN_RANGER, + zones[xi.zone.BEAUCEDINE_GLACIER].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.BEAUCEDINE_GLACIER].mob.HOBGOBLIN_THIEF, + zones[xi.zone.BEAUCEDINE_GLACIER].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.BEAUCEDINE_GLACIER].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [5] = + { + zones[xi.zone.BEAUCEDINE_GLACIER].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.BEAUCEDINE_GLACIER].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.BEAUCEDINE_GLACIER].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.BEAUCEDINE_GLACIER].mob.HOBGOBLIN_RANGER, + zones[xi.zone.BEAUCEDINE_GLACIER].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.BEAUCEDINE_GLACIER].mob.HOBGOBLIN_THIEF, + zones[xi.zone.BEAUCEDINE_GLACIER].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.BEAUCEDINE_GLACIER].mob.HOBGOBLIN_WHITE_MAGE, + }, + }, + + [xi.zone.BUBURIMU_PENINSULA] = + { + [1] = + { + zones[xi.zone.BUBURIMU_PENINSULA].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.BUBURIMU_PENINSULA].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.BUBURIMU_PENINSULA].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.BUBURIMU_PENINSULA].mob.HOBGOBLIN_RANGER, + zones[xi.zone.BUBURIMU_PENINSULA].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.BUBURIMU_PENINSULA].mob.HOBGOBLIN_THIEF, + zones[xi.zone.BUBURIMU_PENINSULA].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.BUBURIMU_PENINSULA].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [2] = + { + zones[xi.zone.BUBURIMU_PENINSULA].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.BUBURIMU_PENINSULA].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.BUBURIMU_PENINSULA].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.BUBURIMU_PENINSULA].mob.HOBGOBLIN_RANGER, + zones[xi.zone.BUBURIMU_PENINSULA].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.BUBURIMU_PENINSULA].mob.HOBGOBLIN_THIEF, + zones[xi.zone.BUBURIMU_PENINSULA].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.BUBURIMU_PENINSULA].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [3] = + { + zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_BARD, zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_BLACK_MAGE, + zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_MONK, zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_NINJA, + zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_SAMURAI, zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_SUMMONER, + zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_WHITE_MAGE, + }, + + [4] = + { + zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_BARD, zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_BLACK_MAGE, + zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_MONK, zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_NINJA, + zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_SAMURAI, zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_SUMMONER, + zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_WHITE_MAGE, + }, + + [5] = + { + zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_BARD, zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_BLACK_MAGE, + zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_MONK, zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_NINJA, + zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_SAMURAI, zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_SUMMONER, + zones[xi.zone.BUBURIMU_PENINSULA].mob.THEOYAGUDO_WHITE_MAGE, + }, + }, + + [xi.zone.CAPE_TERIGGAN] = + { + [1] = + { + zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_RANGER, + zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_THIEF, + zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [2] = + { + zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_RANGER, + zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_THIEF, + zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [3] = + { + zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_RANGER, + zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_THIEF, + zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [4] = + { + zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_RANGER, + zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_THIEF, + zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [5] = + { + zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_RANGER, + zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_THIEF, + zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.CAPE_TERIGGAN].mob.HOBGOBLIN_WHITE_MAGE, + }, + }, + + [xi.zone.EASTERN_ALTEPA_DESERT] = + { + [1] = + { + zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.CONTANTICAN_BLACK_MAGE, zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.CONTANTICAN_PALADIN, + zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.CONTANTICAN_RANGER, zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.CONTANTICAN_WARRIOR, + }, + + [2] = + { + zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.CONTANTICAN_BLACK_MAGE, zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.CONTANTICAN_PALADIN, + zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.CONTANTICAN_RANGER, zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.CONTANTICAN_WARRIOR, + }, + + [3] = + { + zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.CONTANTICAN_BLACK_MAGE, zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.CONTANTICAN_PALADIN, + zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.CONTANTICAN_RANGER, zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.CONTANTICAN_WARRIOR, + }, + + [4] = + { + zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.HOBGOBLIN_RANGER, + zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.HOBGOBLIN_THIEF, + zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [5] = + { + zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.HOBGOBLIN_RANGER, + zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.HOBGOBLIN_THIEF, + zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.EASTERN_ALTEPA_DESERT].mob.HOBGOBLIN_WHITE_MAGE, + }, + }, + + [xi.zone.JUGNER_FOREST] = + { + [1] = + { + zones[xi.zone.JUGNER_FOREST].mob.HALFORC_BLACK_MAGE, zones[xi.zone.JUGNER_FOREST].mob.HALFORC_DARK_KNIGHT, + zones[xi.zone.JUGNER_FOREST].mob.HALFORC_DRAGOON, zones[xi.zone.JUGNER_FOREST].mob.HALFORC_MONK, + zones[xi.zone.JUGNER_FOREST].mob.HALFORC_PALADIN, zones[xi.zone.JUGNER_FOREST].mob.HALFORC_RANGER, + zones[xi.zone.JUGNER_FOREST].mob.HALFORC_WARRIOR, + }, + + [2] = + { + zones[xi.zone.JUGNER_FOREST].mob.HALFORC_BLACK_MAGE, zones[xi.zone.JUGNER_FOREST].mob.HALFORC_DARK_KNIGHT, + zones[xi.zone.JUGNER_FOREST].mob.HALFORC_DRAGOON, zones[xi.zone.JUGNER_FOREST].mob.HALFORC_MONK, + zones[xi.zone.JUGNER_FOREST].mob.HALFORC_PALADIN, zones[xi.zone.JUGNER_FOREST].mob.HALFORC_RANGER, + zones[xi.zone.JUGNER_FOREST].mob.HALFORC_WARRIOR, + }, + + [3] = + { + zones[xi.zone.JUGNER_FOREST].mob.HALFORC_BLACK_MAGE, zones[xi.zone.JUGNER_FOREST].mob.HALFORC_DARK_KNIGHT, + zones[xi.zone.JUGNER_FOREST].mob.HALFORC_DRAGOON, zones[xi.zone.JUGNER_FOREST].mob.HALFORC_MONK, + zones[xi.zone.JUGNER_FOREST].mob.HALFORC_PALADIN, zones[xi.zone.JUGNER_FOREST].mob.HALFORC_RANGER, + zones[xi.zone.JUGNER_FOREST].mob.HALFORC_WARRIOR, + }, + + [4] = + { + zones[xi.zone.JUGNER_FOREST].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.JUGNER_FOREST].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.JUGNER_FOREST].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.JUGNER_FOREST].mob.HOBGOBLIN_RANGER, + zones[xi.zone.JUGNER_FOREST].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.JUGNER_FOREST].mob.HOBGOBLIN_THIEF, + zones[xi.zone.JUGNER_FOREST].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.JUGNER_FOREST].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [5] = + { + zones[xi.zone.JUGNER_FOREST].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.JUGNER_FOREST].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.JUGNER_FOREST].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.JUGNER_FOREST].mob.HOBGOBLIN_RANGER, + zones[xi.zone.JUGNER_FOREST].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.JUGNER_FOREST].mob.HOBGOBLIN_THIEF, + zones[xi.zone.JUGNER_FOREST].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.JUGNER_FOREST].mob.HOBGOBLIN_WHITE_MAGE, + }, + }, + + [xi.zone.MERIPHATAUD_MOUNTAINS] = + { + [1] = + { + zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.HOBGOBLIN_RANGER, + zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.HOBGOBLIN_THIEF, + zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [2] = + { + zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.HOBGOBLIN_RANGER, + zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.HOBGOBLIN_THIEF, + zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [3] = + { + zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_BARD, zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_BLACK_MAGE, + zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_MONK, zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_NINJA, + zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_SAMURAI, zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_SUMMONER, + zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_WHITE_MAGE, + }, + + [4] = + { + zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_BARD, zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_BLACK_MAGE, + zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_MONK, zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_NINJA, + zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_SAMURAI, zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_SUMMONER, + zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_WHITE_MAGE, + }, + + [5] = + { + zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_BARD, zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_BLACK_MAGE, + zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_MONK, zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_NINJA, + zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_SAMURAI, zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_SUMMONER, + zones[xi.zone.MERIPHATAUD_MOUNTAINS].mob.THEOYAGUDO_WHITE_MAGE, + }, + }, + + [xi.zone.PASHHOW_MARSHLANDS] = + { + [1] = + { + zones[xi.zone.PASHHOW_MARSHLANDS].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.PASHHOW_MARSHLANDS].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.PASHHOW_MARSHLANDS].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.PASHHOW_MARSHLANDS].mob.HOBGOBLIN_RANGER, + zones[xi.zone.PASHHOW_MARSHLANDS].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.PASHHOW_MARSHLANDS].mob.HOBGOBLIN_THIEF, + zones[xi.zone.PASHHOW_MARSHLANDS].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.PASHHOW_MARSHLANDS].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [2] = + { + zones[xi.zone.PASHHOW_MARSHLANDS].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.PASHHOW_MARSHLANDS].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.PASHHOW_MARSHLANDS].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.PASHHOW_MARSHLANDS].mob.HOBGOBLIN_RANGER, + zones[xi.zone.PASHHOW_MARSHLANDS].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.PASHHOW_MARSHLANDS].mob.HOBGOBLIN_THIEF, + zones[xi.zone.PASHHOW_MARSHLANDS].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.PASHHOW_MARSHLANDS].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [3] = + { + zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_BLACK_MAGE, zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_DARK_KNIGHT, + zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_PALADIN, zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_RED_MAGE, + zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_THIEF, zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_WARRIOR, + zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_WHITE_MAGE, + }, + + [4] = + { + zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_BLACK_MAGE, zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_DARK_KNIGHT, + zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_PALADIN, zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_RED_MAGE, + zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_THIEF, zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_WARRIOR, + zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_WHITE_MAGE, + }, + + [5] = + { + zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_BLACK_MAGE, zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_DARK_KNIGHT, + zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_PALADIN, zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_RED_MAGE, + zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_THIEF, zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_WARRIOR, + zones[xi.zone.PASHHOW_MARSHLANDS].mob.METAQUADAV_WHITE_MAGE, + }, + }, + + [xi.zone.QUFIM_ISLAND] = + { + [1] = + { + zones[xi.zone.QUFIM_ISLAND].mob.GIANT_BEASTMASTER, zones[xi.zone.QUFIM_ISLAND].mob.GIANT_HIGH_RANGER, + zones[xi.zone.QUFIM_ISLAND].mob.GIANT_MONK, zones[xi.zone.QUFIM_ISLAND].mob.GIANT_WARRIOR, + }, + + [2] = + { + zones[xi.zone.QUFIM_ISLAND].mob.GIANT_BEASTMASTER, zones[xi.zone.QUFIM_ISLAND].mob.GIANT_HIGH_RANGER, + zones[xi.zone.QUFIM_ISLAND].mob.GIANT_MONK, zones[xi.zone.QUFIM_ISLAND].mob.GIANT_WARRIOR, + }, + + [3] = + { + zones[xi.zone.QUFIM_ISLAND].mob.GIANT_BEASTMASTER, zones[xi.zone.QUFIM_ISLAND].mob.GIANT_HIGH_RANGER, + zones[xi.zone.QUFIM_ISLAND].mob.GIANT_MONK, zones[xi.zone.QUFIM_ISLAND].mob.GIANT_WARRIOR, + }, + + [4] = + { + zones[xi.zone.QUFIM_ISLAND].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.QUFIM_ISLAND].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.QUFIM_ISLAND].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.QUFIM_ISLAND].mob.HOBGOBLIN_RANGER, + zones[xi.zone.QUFIM_ISLAND].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.QUFIM_ISLAND].mob.HOBGOBLIN_THIEF, + zones[xi.zone.QUFIM_ISLAND].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.QUFIM_ISLAND].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [5] = + { + zones[xi.zone.QUFIM_ISLAND].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.QUFIM_ISLAND].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.QUFIM_ISLAND].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.QUFIM_ISLAND].mob.HOBGOBLIN_RANGER, + zones[xi.zone.QUFIM_ISLAND].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.QUFIM_ISLAND].mob.HOBGOBLIN_THIEF, + zones[xi.zone.QUFIM_ISLAND].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.QUFIM_ISLAND].mob.HOBGOBLIN_WHITE_MAGE, + }, + }, + + [xi.zone.THE_SANCTUARY_OF_ZITAH] = + { + [1] = + { + zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_RANGER, + zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_THIEF, + zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [2] = + { + zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_RANGER, + zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_THIEF, + zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [3] = + { + zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_RANGER, + zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_THIEF, + zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [4] = + { + zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_RANGER, + zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_THIEF, + zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [5] = + { + zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_RANGER, + zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_THIEF, + zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.THE_SANCTUARY_OF_ZITAH].mob.HOBGOBLIN_WHITE_MAGE, + }, + }, + + [xi.zone.VALKURM_DUNES] = + { + [1] = + { + zones[xi.zone.VALKURM_DUNES].mob.HALFORC_BLACK_MAGE, zones[xi.zone.VALKURM_DUNES].mob.HALFORC_DARK_KNIGHT, + zones[xi.zone.VALKURM_DUNES].mob.HALFORC_DRAGOON, zones[xi.zone.VALKURM_DUNES].mob.HALFORC_MONK, + zones[xi.zone.VALKURM_DUNES].mob.HALFORC_PALADIN, zones[xi.zone.VALKURM_DUNES].mob.HALFORC_RANGER, + zones[xi.zone.VALKURM_DUNES].mob.HALFORC_WARRIOR, + }, + + [2] = + { + zones[xi.zone.VALKURM_DUNES].mob.HALFORC_BLACK_MAGE, zones[xi.zone.VALKURM_DUNES].mob.HALFORC_DARK_KNIGHT, + zones[xi.zone.VALKURM_DUNES].mob.HALFORC_DRAGOON, zones[xi.zone.VALKURM_DUNES].mob.HALFORC_MONK, + zones[xi.zone.VALKURM_DUNES].mob.HALFORC_PALADIN, zones[xi.zone.VALKURM_DUNES].mob.HALFORC_RANGER, + zones[xi.zone.VALKURM_DUNES].mob.HALFORC_WARRIOR, + }, + + [3] = + { + zones[xi.zone.VALKURM_DUNES].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.VALKURM_DUNES].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.VALKURM_DUNES].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.VALKURM_DUNES].mob.HOBGOBLIN_RANGER, + zones[xi.zone.VALKURM_DUNES].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.VALKURM_DUNES].mob.HOBGOBLIN_THIEF, + zones[xi.zone.VALKURM_DUNES].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.VALKURM_DUNES].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [4] = + { + zones[xi.zone.VALKURM_DUNES].mob.METAQUADAV_BLACK_MAGE, zones[xi.zone.VALKURM_DUNES].mob.METAQUADAV_DARK_KNIGHT, + zones[xi.zone.VALKURM_DUNES].mob.METAQUADAV_PALADIN, zones[xi.zone.VALKURM_DUNES].mob.METAQUADAV_RED_MAGE, + zones[xi.zone.VALKURM_DUNES].mob.METAQUADAV_THIEF, zones[xi.zone.VALKURM_DUNES].mob.METAQUADAV_WARRIOR, + zones[xi.zone.VALKURM_DUNES].mob.METAQUADAV_WHITE_MAGE, + }, + + [5] = + { + zones[xi.zone.VALKURM_DUNES].mob.METAQUADAV_BLACK_MAGE, zones[xi.zone.VALKURM_DUNES].mob.METAQUADAV_DARK_KNIGHT, + zones[xi.zone.VALKURM_DUNES].mob.METAQUADAV_PALADIN, zones[xi.zone.VALKURM_DUNES].mob.METAQUADAV_RED_MAGE, + zones[xi.zone.VALKURM_DUNES].mob.METAQUADAV_THIEF, zones[xi.zone.VALKURM_DUNES].mob.METAQUADAV_WARRIOR, + zones[xi.zone.VALKURM_DUNES].mob.METAQUADAV_WHITE_MAGE, + }, + }, + + [xi.zone.XARCABARD] = + { + [1] = + { + zones[xi.zone.XARCABARD].mob.GIGAS_BEASTMASTER, zones[xi.zone.XARCABARD].mob.GIGAS_MONK, + zones[xi.zone.XARCABARD].mob.GIGAS_RANGER, zones[xi.zone.XARCABARD].mob.GIGAS_WARRIOR, + }, + + [2] = + { + zones[xi.zone.XARCABARD].mob.GIGAS_BEASTMASTER, zones[xi.zone.XARCABARD].mob.GIGAS_MONK, + zones[xi.zone.XARCABARD].mob.GIGAS_RANGER, zones[xi.zone.XARCABARD].mob.GIGAS_WARRIOR, + }, + + [3] = + { + zones[xi.zone.XARCABARD].mob.GIGAS_BEASTMASTER, zones[xi.zone.XARCABARD].mob.GIGAS_MONK, + zones[xi.zone.XARCABARD].mob.GIGAS_RANGER, zones[xi.zone.XARCABARD].mob.GIGAS_WARRIOR, + }, + + [4] = + { + zones[xi.zone.XARCABARD].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.XARCABARD].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.XARCABARD].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.XARCABARD].mob.HOBGOBLIN_RANGER, + zones[xi.zone.XARCABARD].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.XARCABARD].mob.HOBGOBLIN_THIEF, + zones[xi.zone.XARCABARD].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.XARCABARD].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [5] = + { + zones[xi.zone.XARCABARD].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.XARCABARD].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.XARCABARD].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.XARCABARD].mob.HOBGOBLIN_RANGER, + zones[xi.zone.XARCABARD].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.XARCABARD].mob.HOBGOBLIN_THIEF, + zones[xi.zone.XARCABARD].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.XARCABARD].mob.HOBGOBLIN_WHITE_MAGE, + }, + }, + + [xi.zone.YHOATOR_JUNGLE] = + { + [1] = + { + zones[xi.zone.YHOATOR_JUNGLE].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.YHOATOR_JUNGLE].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.YHOATOR_JUNGLE].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.YHOATOR_JUNGLE].mob.HOBGOBLIN_RANGER, + zones[xi.zone.YHOATOR_JUNGLE].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.YHOATOR_JUNGLE].mob.HOBGOBLIN_THIEF, + zones[xi.zone.YHOATOR_JUNGLE].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.YHOATOR_JUNGLE].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [2] = + { + zones[xi.zone.YHOATOR_JUNGLE].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.YHOATOR_JUNGLE].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.YHOATOR_JUNGLE].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.YHOATOR_JUNGLE].mob.HOBGOBLIN_RANGER, + zones[xi.zone.YHOATOR_JUNGLE].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.YHOATOR_JUNGLE].mob.HOBGOBLIN_THIEF, + zones[xi.zone.YHOATOR_JUNGLE].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.YHOATOR_JUNGLE].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [3] = + { + zones[xi.zone.YHOATOR_JUNGLE].mob.NOCTONBERRY_BLACK_MAGE, zones[xi.zone.YHOATOR_JUNGLE].mob.NOCTONBERRY_NINJA, + zones[xi.zone.YHOATOR_JUNGLE].mob.NOCTONBERRY_SUMMONER, zones[xi.zone.YHOATOR_JUNGLE].mob.NOCTONBERRY_THIEF, + }, + + [4] = + { + zones[xi.zone.YHOATOR_JUNGLE].mob.NOCTONBERRY_BLACK_MAGE, zones[xi.zone.YHOATOR_JUNGLE].mob.NOCTONBERRY_NINJA, + zones[xi.zone.YHOATOR_JUNGLE].mob.NOCTONBERRY_SUMMONER, zones[xi.zone.YHOATOR_JUNGLE].mob.NOCTONBERRY_THIEF, + }, + + [5] = + { + zones[xi.zone.YHOATOR_JUNGLE].mob.NOCTONBERRY_BLACK_MAGE, zones[xi.zone.YHOATOR_JUNGLE].mob.NOCTONBERRY_NINJA, + zones[xi.zone.YHOATOR_JUNGLE].mob.NOCTONBERRY_SUMMONER, zones[xi.zone.YHOATOR_JUNGLE].mob.NOCTONBERRY_THIEF, + }, + }, + + [xi.zone.YUHTUNGA_JUNGLE] = + { + [1] = + { + zones[xi.zone.YUHTUNGA_JUNGLE].mob.DEMISAHAGIN_BARD, zones[xi.zone.YUHTUNGA_JUNGLE].mob.DEMISAHAGIN_DRAGOON, + zones[xi.zone.YUHTUNGA_JUNGLE].mob.DEMISAHAGIN_MONK, zones[xi.zone.YUHTUNGA_JUNGLE].mob.DEMISAHAGIN_WHITE_MAGE, + }, + + [2] = + { + zones[xi.zone.YUHTUNGA_JUNGLE].mob.DEMISAHAGIN_BARD, zones[xi.zone.YUHTUNGA_JUNGLE].mob.DEMISAHAGIN_DRAGOON, + zones[xi.zone.YUHTUNGA_JUNGLE].mob.DEMISAHAGIN_MONK, zones[xi.zone.YUHTUNGA_JUNGLE].mob.DEMISAHAGIN_WHITE_MAGE, + }, + + [3] = + { + zones[xi.zone.YUHTUNGA_JUNGLE].mob.DEMISAHAGIN_BARD, zones[xi.zone.YUHTUNGA_JUNGLE].mob.DEMISAHAGIN_DRAGOON, + zones[xi.zone.YUHTUNGA_JUNGLE].mob.DEMISAHAGIN_MONK, zones[xi.zone.YUHTUNGA_JUNGLE].mob.DEMISAHAGIN_WHITE_MAGE, + }, + + [4] = + { + zones[xi.zone.YUHTUNGA_JUNGLE].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.YUHTUNGA_JUNGLE].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.YUHTUNGA_JUNGLE].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.YUHTUNGA_JUNGLE].mob.HOBGOBLIN_RANGER, + zones[xi.zone.YUHTUNGA_JUNGLE].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.YUHTUNGA_JUNGLE].mob.HOBGOBLIN_THIEF, + zones[xi.zone.YUHTUNGA_JUNGLE].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.YUHTUNGA_JUNGLE].mob.HOBGOBLIN_WHITE_MAGE, + }, + + [5] = + { + zones[xi.zone.YUHTUNGA_JUNGLE].mob.HOBGOBLIN_BEASTMASTER, zones[xi.zone.YUHTUNGA_JUNGLE].mob.HOBGOBLIN_BLACK_MAGE, + zones[xi.zone.YUHTUNGA_JUNGLE].mob.HOBGOBLIN_DARK_KNIGHT, zones[xi.zone.YUHTUNGA_JUNGLE].mob.HOBGOBLIN_RANGER, + zones[xi.zone.YUHTUNGA_JUNGLE].mob.HOBGOBLIN_RED_MAGE, zones[xi.zone.YUHTUNGA_JUNGLE].mob.HOBGOBLIN_THIEF, + zones[xi.zone.YUHTUNGA_JUNGLE].mob.HOBGOBLIN_WARRIOR, zones[xi.zone.YUHTUNGA_JUNGLE].mob.HOBGOBLIN_WHITE_MAGE, + }, + }, +} + local regionKITable = { [xi.region.ARAGONEU] = xi.ki.ARAGONEU_EF_INSIGNIA, @@ -29,10 +704,330 @@ local regionKITable = -- Local functions ----------------------------------- +-- Spawn 4 NMs at the banner +local function spawnBattleNMs(player, banner) + local zoneId = banner:getZoneID() + local levelCap = zoneInfoTable[zoneId].levelCap + local bannerIndex = banner:getLocalVar('BannerIndex') + + local candidates = utils.shuffle(bannerNMs[zoneId][bannerIndex]) + local bx, by, bz = unpack(bannerTable[zoneId][bannerIndex].position) + + for i = 1, 4 do + local mob = GetMobByID(candidates[i]) + if not mob then + break + end + + -- Spawn is a normal distribution with a mean of 3.5 and standard deviation of 1.5. + -- The spawn distance is also restricted to [2.0, 7.5]. This is based on 234 samples. + local distance = math.randomNormal(3.5, 1.5, 2.0, 7.5) + + -- Scatter around the banner in random direction. + local angle = math.randomFloat(0, 1) * 2 * math.pi -- 0 to 360 degrees + local pos = GetFurthestValidPosition(banner, distance, angle) -- Drops mob on valid ground and snaps closer if terrain blocks the distance. + + if pos then + mob:setSpawn(pos.x, pos.y, pos.z, 0) + + -- Account for weird situation where the GetFurthestValidPosition can't find any position due to navmesh + else + mob:setSpawn(bx, by, bz, 0) + end + + mob:spawn() + mob:lookAt(player:getPos()) -- face whoever triggered the banner + + -- Add the CONFRONTATION to the NMs. The level restriction already won't apply to mobs. I just need the CONFRONTATION flag and matching power. + -- TODO: Confrontation is not how retail works. Mobs can attack non level restricted players on retail. + mob:addStatusEffect(xi.effect.LEVEL_RESTRICTION, { + power = levelCap, + origin = mob, + flag = xi.effectFlag.CONFRONTATION, + }) + + mob:updateClaim(player) + end +end + +-- CLEARED -> HIDDEN. This is called from a 60-second timer callback. +local function hideBanner(banner) + -- Make the banner disappear and set to HIDDEN state + banner:setStatus(xi.status.DISAPPEAR) + banner:setLocalVar('State', bannerState.HIDDEN) + + -- Respawn the banner in 5 minutes + banner:timer(5 * 60 * 1000, function(npcArg) + xi.expeditionaryForce.initZone(npcArg:getZone()) + end) +end + ----------------------------------- -- Public functions ----------------------------------- +-- This code runs whenever the zone is initialized as well as every time the Expeditionary Force has been reset. +xi.expeditionaryForce.initZone = function(zone) + local zoneId = zone:getID() + local ID = zones[zoneId] + + -- Set the banner to a random position and set the status to normal + local banner = GetNPCByID(ID.npc.BEASTMENS_BANNER) + local bannerOptions = bannerTable[zoneId] + + if not banner then + return + end + + -- Set IDLE state + banner:setLocalVar('State', bannerState.IDLE) + + -- Select a new banner position. Do not repeat the old position. + local lastBannerIndex = banner:getLocalVar('BannerIndex') -- 0 if never set + local availableOptions = {} + for i = 1, #bannerOptions do + if i ~= lastBannerIndex then + table.insert(availableOptions, i) + end + end + + local newBannerIndex = availableOptions[math.randomInt(1, #availableOptions)] + + local pos = bannerOptions[newBannerIndex].position + banner:setPos(pos[1], pos[2], pos[3], pos[4]) + banner:setStatus(xi.status.NORMAL) -- forces visible + + -- Store the position index for later to make sure the banner does not spawn in the same place twice in a row + banner:setLocalVar('BannerIndex', newBannerIndex) +end + +-- Handle all states of the Beastmen's Banner +-- The flow of Expeditionary Force goes from IDLE to ACTIVE to CLEARED to HIDDEN then back to IDLE +xi.expeditionaryForce.onBannerTrigger = function(player, banner) + local zoneId = banner:getZoneID() + local ID = zones[zoneId] + local state = banner:getLocalVar('State') + + -- IDLE + if state == bannerState.IDLE then + -- Find out if an alliance member in the zone has level sync already. If so, they can not activate the flag. + local allianceMemberCapped = false + for _, member in pairs(player:getAlliance()) do + if + member:getZoneID() == zoneId and + member:hasStatusEffect(xi.effect.LEVEL_RESTRICTION) + then + allianceMemberCapped = true + break -- No need to keep checking + end + end + + -- Gate is if no alliance member is level synched, player has key item, nation does not hold the region, nation's ally does not hold the region. + local currentRegion = player:getCurrentRegion() + local playerNation = player:getNation() + local ownerNation = GetRegionOwner(currentRegion) + if + player:hasKeyItem(regionKITable[currentRegion]) and -- Player has KI + playerNation ~= ownerNation and -- Player's nation does not own the region + not xi.conquest.areAllies(playerNation, ownerNation) and -- Player nation is not allied with region owner nation + not allianceMemberCapped + then + -- Level cap every alliance member in zone + local cap = zoneInfoTable[zoneId].levelCap + + for _, member in pairs(player:getAlliance()) do -- Get members in zone + if member:getZoneID() == zoneId then + -- Add level restriction if in zone + member:addStatusEffect(xi.effect.LEVEL_RESTRICTION, { + power = cap, + subPower = 1, -- exp uses actual level and not the restricted level. + duration = 900, -- 15 min if not removed at the banner or zone + origin = member, + flag = xi.effectFlag.ON_ZONE + xi.effectFlag.CONFRONTATION, + }) + + -- Display banner message to all members who have been level restricted + member:messageSpecial(ID.text.BEASTMEN_BANNER_CURSE) -- There was a curse on the beastmen's banner! + end + end + + -- Spawn 4 NMs at the banner + spawnBattleNMs(player, banner) + banner:setLocalVar('State', bannerState.ACTIVE) + + -- If the player is ineligible to initiate, just send a message. + else + player:messageSpecial(ID.text.BEASTMEN_BANNER) -- There is a beastmen's banner. + end + + -- ACTIVE: Mobs exist + elseif state == bannerState.ACTIVE then + -- Remove level restriction if it exists. + if player:hasStatusEffect(xi.effect.LEVEL_RESTRICTION) then + player:delStatusEffect(xi.effect.LEVEL_RESTRICTION) + end + + -- Anyone not level restricted can click to get level restriction. No checks. + local cap = zoneInfoTable[zoneId].levelCap + + player:addStatusEffect(xi.effect.LEVEL_RESTRICTION, { + power = cap, + subPower = 1, -- exp uses actual level and not the restricted level. + duration = 900, -- 15 min if not removed at the banner or zone + origin = player, + flag = xi.effectFlag.ON_ZONE + xi.effectFlag.CONFRONTATION, + }) + + -- Display banner message + player:messageSpecial(ID.text.BEASTMEN_BANNER_CURSE) -- There was a curse on the beastmen's banner! + + -- CLEARED: All mobs despawned + elseif state == bannerState.CLEARED then + -- Remove clicker's level cap + if player:hasStatusEffect(xi.effect.LEVEL_RESTRICTION) then + player:delStatusEffect(xi.effect.LEVEL_RESTRICTION) + player:messageSpecial(ID.text.BEASTMEN_BANNER_LIFTED) -- The curse of the beastmen's banner has been lifted! + + -- Default banner text. + else + player:messageSpecial(ID.text.BEASTMEN_BANNER) -- There is a beastmen's banner. + end + end + + -- HIDDEN: Banner is invisible and not clickable +end + +-- Called from mob lua files. Fires once per alliance member in zone. +xi.expeditionaryForce.onMobDeath = function(mob, player, optParams) + -- Early Return: Only fires once for the killer or DoT + if not (optParams.isKiller or optParams.noKiller) then + return + end + + -- Remove NM from the zone list. When all NMs are accounted for, transition banner to CLEARED. + local zoneId = mob:getZoneID() + local mobId = mob:getID() + + local ID = zones[zoneId] + local banner = GetNPCByID(ID.npc.BEASTMENS_BANNER) + + if not banner then + return + end + + local bannerIndex = banner:getLocalVar('BannerIndex') + local allDefeated = true + for _, nmId in ipairs(bannerNMs[zoneId][bannerIndex]) do + if nmId ~= mobId and GetMobByID(nmId):isAlive() then + allDefeated = false + break + end + end + + if allDefeated and banner:getLocalVar('State') == bannerState.ACTIVE then + -- Battle is cleared + banner:setLocalVar('State', bannerState.CLEARED) + + -- The banner will disappear after 60 seconds. + banner:timer(60 * 1000, function(bannerArg) + hideBanner(bannerArg) + end) + end + + -- This catches if a DoT kills while not engaged. + if not player then + return + end + + -- Early return: Player doesn't have KI. + local currentRegion = player:getCurrentRegion() + if not player:hasKeyItem(regionKITable[currentRegion]) then + return + end + + -- Early return: Player nation owns current region. + local creditNation = player:getNation() + local ownerNation = GetRegionOwner(currentRegion) + if creditNation == ownerNation then + return + end + + -- Early return: Player nation is allied with region owner nation. + if xi.conquest.areAllies(creditNation, ownerNation) then + return + end + + -- Award Influence + -- TODO: Implement this + -- player:gainConquestInfluence(xi.settings.main.EXP_FORCE_MOBKILL_INFLUENCE) + + -- SEND ZONE MESSAGE + for _, person in pairs(mob:getZone():getPlayers()) do + person:messageText(person, ID.text.EXP_FORCE_KILL_SANDORIA + creditNation, 5) -- 5 = Grey: messageText event + end + + -- For every alliance member: Send message, add title, Flag participation + for _, member in pairs(player:getAlliance()) do + if player:getZoneID() == member:getZoneID() then + -- Message: "x's region points have increased" + member:messageSpecial(ID.text.REGION_POINTS_SANDORIA + creditNation) -- showText event + + -- Award all alliance members title + member:addTitle(xi.title.EXPEDITIONARY_TROOPER) + + -- Check and mark for participation + -- TODO: The specific ways participation is earned was never captured. It was assumed you have to be the same nation as the killer and meet all other Exp. Force participation conditions. + if + member:getNation() == creditNation and -- Party member must be part of the credit nation group to get participation + member:hasKeyItem(regionKITable[currentRegion]) and -- Party member has KI + member:hasStatusEffect(xi.effect.LEVEL_RESTRICTION) + then + -- Record participation. + local participation = member:getCharVar('[ExpForce]Participation') + member:setCharVar('[ExpForce]Participation', bit.bor(participation, bit.lshift(1, currentRegion))) + end + end + end +end + +-- Fires on despawn. This is for if mobs despawn naturally without death. 3 minute despawn timer. +xi.expeditionaryForce.onMobDespawn = function(mob) + local zoneId = mob:getZoneID() + local banner = GetNPCByID(zones[zoneId].npc.BEASTMENS_BANNER) + + if not banner then + return + end + + local bannerIndex = banner:getLocalVar('BannerIndex') + for _, nmId in ipairs(bannerNMs[zoneId][bannerIndex]) do + if nmId ~= mob:getID() and GetMobByID(nmId):isAlive() then + return + end + end + + if banner:getLocalVar('State') == bannerState.ACTIVE then + -- Battle is cleared + banner:setLocalVar('State', bannerState.CLEARED) + + -- The banner will disappear after 60 seconds. + banner:timer(60 * 1000, function(bannerArg) + hideBanner(bannerArg) + end) + end +end + +-- Pets called mid-fight (call beast, astral flow) miss the gate at spawn. Need to apply manually. +xi.expeditionaryForce.gatePet = function(mob) + local cap = zoneInfoTable[mob:getZoneID()].levelCap + + mob:addStatusEffect(xi.effect.LEVEL_RESTRICTION, { + power = cap, + origin = mob, + flag = xi.effectFlag.CONFRONTATION, + }) +end + -- Award influence for opening a chest/coffer with the region's insignia. -- TODO: The text order is slightly different than retail, but that would require modifying treasure.lua. xi.expeditionaryForce.onChestOpen = function(player) diff --git a/scripts/zones/Beaucedine_Glacier/IDs.lua b/scripts/zones/Beaucedine_Glacier/IDs.lua index 025ce720719..c13e0145b3c 100644 --- a/scripts/zones/Beaucedine_Glacier/IDs.lua +++ b/scripts/zones/Beaucedine_Glacier/IDs.lua @@ -8,6 +8,10 @@ zones[xi.zone.BEAUCEDINE_GLACIER] = text = { CONQUEST_BASE = 0, -- Tallying conquest results... + REGION_POINTS_SANDORIA = 65, -- San d'Oria's region points have increased! + EXP_FORCE_KILL_SANDORIA = 68, -- San d'Orian E.F. defeats beastmen hordes... Maintain current momentum. + BEASTMEN_BANNER_CURSE = 79, -- There was a curse on the beastmen's banner! + BEASTMEN_BANNER_LIFTED = 80, -- The curse of the beastmen's banner has been lifted! BEASTMEN_BANNER = 81, -- There is a beastmen's banner. ITEM_CANNOT_BE_OBTAINED = 6569, -- You cannot obtain the item. Come back after sorting your inventory. FULL_INVENTORY_AFTER_TRADE = 6571, -- You cannot obtain the . Try trading again after sorting your inventory. @@ -50,10 +54,22 @@ zones[xi.zone.BEAUCEDINE_GLACIER] = }, mob = { - GARGANTUA = GetFirstID('Gargantua'), - HUMBABA = GetFirstID('Humbaba'), - KIRATA = GetFirstID('Kirata'), - NUE = GetFirstID('Nue'), + GARGANTUA = GetFirstID('Gargantua'), + GIGAS_BEASTMASTER = GetFirstID('Gigas_Beastmaster'), + GIGAS_MONK = GetFirstID('Gigas_Monk'), + GIGAS_RANGER = GetFirstID('Gigas_Ranger'), + GIGAS_WARRIOR = GetFirstID('Gigas_Warrior'), + HOBGOBLIN_BEASTMASTER = GetFirstID('Hobgoblin_Beastmaster'), + HOBGOBLIN_BLACK_MAGE = GetFirstID('Hobgoblin_Black_Mage'), + HOBGOBLIN_DARK_KNIGHT = GetFirstID('Hobgoblin_Dark_Knight'), + HOBGOBLIN_RANGER = GetFirstID('Hobgoblin_Ranger'), + HOBGOBLIN_RED_MAGE = GetFirstID('Hobgoblin_Red_Mage'), + HOBGOBLIN_THIEF = GetFirstID('Hobgoblin_Thief'), + HOBGOBLIN_WARRIOR = GetFirstID('Hobgoblin_Warrior'), + HOBGOBLIN_WHITE_MAGE = GetFirstID('Hobgoblin_White_Mage'), + HUMBABA = GetFirstID('Humbaba'), + KIRATA = GetFirstID('Kirata'), + NUE = GetFirstID('Nue'), VOIDWALKER = { @@ -89,8 +105,9 @@ zones[xi.zone.BEAUCEDINE_GLACIER] = npc = { - MIRROR_POND_J8 = GetFirstID('Mirror_Pond_1'), - OVERSEER_BASE = GetFirstID('Parledaire_RK'), + BEASTMENS_BANNER = GetFirstID('Beastmens_Banner'), + MIRROR_POND_J8 = GetFirstID('Mirror_Pond_1'), + OVERSEER_BASE = GetFirstID('Parledaire_RK'), }, } diff --git a/scripts/zones/Buburimu_Peninsula/IDs.lua b/scripts/zones/Buburimu_Peninsula/IDs.lua index 65de576468a..7b17d88e858 100644 --- a/scripts/zones/Buburimu_Peninsula/IDs.lua +++ b/scripts/zones/Buburimu_Peninsula/IDs.lua @@ -19,6 +19,10 @@ zones[xi.zone.BUBURIMU_PENINSULA] = LOGIN_NUMBER = 7042, -- In celebration of your most recent login (login no. ), we have provided you with points! You currently have a total of points. MEMBERS_LEVELS_ARE_RESTRICTED = 7062, -- Your party is unable to participate because certain members' levels are restricted. CONQUEST_BASE = 7107, -- Tallying conquest results... + REGION_POINTS_SANDORIA = 7172, -- San d'Oria's region points have increased! + EXP_FORCE_KILL_SANDORIA = 7175, -- San d'Orian E.F. defeats beastmen hordes... Maintain current momentum. + BEASTMEN_BANNER_CURSE = 7186, -- There was a curse on the beastmen's banner! + BEASTMEN_BANNER_LIFTED = 7187, -- The curse of the beastmen's banner has been lifted! BEASTMEN_BANNER = 7188, -- There is a beastmen's banner. FIVEOFSPADES_DIALOG = 7266, -- GiMme★fIvE! FiVe is★A cArdIan★OF WiN-DuRst! FIvE★iS On★pA-tRol! FISHING_MESSAGE_OFFSET = 7272, -- You can't fish here. @@ -61,12 +65,28 @@ zones[xi.zone.BUBURIMU_PENINSULA] = }, mob = { - BACKOO = GetFirstID('Backoo'), - BUBURIMBOO = GetFirstID('Buburimboo'), - HELLDIVER = GetFirstID('Helldiver'), + BACKOO = GetFirstID('Backoo'), + BUBURIMBOO = GetFirstID('Buburimboo'), + HELLDIVER = GetFirstID('Helldiver'), + HOBGOBLIN_BEASTMASTER = GetFirstID('Hobgoblin_Beastmaster'), + HOBGOBLIN_BLACK_MAGE = GetFirstID('Hobgoblin_Black_Mage'), + HOBGOBLIN_DARK_KNIGHT = GetFirstID('Hobgoblin_Dark_Knight'), + HOBGOBLIN_RANGER = GetFirstID('Hobgoblin_Ranger'), + HOBGOBLIN_RED_MAGE = GetFirstID('Hobgoblin_Red_Mage'), + HOBGOBLIN_THIEF = GetFirstID('Hobgoblin_Thief'), + HOBGOBLIN_WARRIOR = GetFirstID('Hobgoblin_Warrior'), + HOBGOBLIN_WHITE_MAGE = GetFirstID('Hobgoblin_White_Mage'), + THEOYAGUDO_BARD = GetFirstID('Theoyagudo_Bard'), + THEOYAGUDO_BLACK_MAGE = GetFirstID('Theoyagudo_Black_Mage'), + THEOYAGUDO_MONK = GetFirstID('Theoyagudo_Monk'), + THEOYAGUDO_NINJA = GetFirstID('Theoyagudo_Ninja'), + THEOYAGUDO_SAMURAI = GetFirstID('Theoyagudo_Samurai'), + THEOYAGUDO_SUMMONER = GetFirstID('Theoyagudo_Summoner'), + THEOYAGUDO_WHITE_MAGE = GetFirstID('Theoyagudo_White_Mage'), }, npc = { + BEASTMENS_BANNER = GetFirstID('Beastmens_Banner'), BRIGAND_CHART_HUME = GetFirstID('Brigand_Chart_Hume'), BRIGAND_CHART_QM = GetFirstID('qm1'), JADE_ETUI_TABLE = GetTableOfIDs('Jade_Etui'), diff --git a/scripts/zones/Cape_Teriggan/IDs.lua b/scripts/zones/Cape_Teriggan/IDs.lua index 373e7aa10f6..0f69c2b44b7 100644 --- a/scripts/zones/Cape_Teriggan/IDs.lua +++ b/scripts/zones/Cape_Teriggan/IDs.lua @@ -22,6 +22,10 @@ zones[xi.zone.CAPE_TERIGGAN] = LOGIN_NUMBER = 7007, -- In celebration of your most recent login (login no. ), we have provided you with points! You currently have a total of points. MEMBERS_LEVELS_ARE_RESTRICTED = 7027, -- Your party is unable to participate because certain members' levels are restricted. CONQUEST_BASE = 7072, -- Tallying conquest results... + REGION_POINTS_SANDORIA = 7137, -- San d'Oria's region points have increased! + EXP_FORCE_KILL_SANDORIA = 7140, -- San d'Orian E.F. defeats beastmen hordes... Maintain current momentum. + BEASTMEN_BANNER_CURSE = 7151, -- There was a curse on the beastmen's banner! + BEASTMEN_BANNER_LIFTED = 7152, -- The curse of the beastmen's banner has been lifted! BEASTMEN_BANNER = 7153, -- There is a beastmen's banner. CONQUEST = 7240, -- You've earned conquest points! FISHING_MESSAGE_OFFSET = 7573, -- You can't fish here. @@ -46,17 +50,26 @@ zones[xi.zone.CAPE_TERIGGAN] = }, mob = { + AXESARION_THE_WANDERER = GetFirstID('Axesarion_the_Wanderer'), FROSTMANE = GetFirstID('Frostmane'), + HOBGOBLIN_BEASTMASTER = GetFirstID('Hobgoblin_Beastmaster'), + HOBGOBLIN_BLACK_MAGE = GetFirstID('Hobgoblin_Black_Mage'), + HOBGOBLIN_DARK_KNIGHT = GetFirstID('Hobgoblin_Dark_Knight'), + HOBGOBLIN_RANGER = GetFirstID('Hobgoblin_Ranger'), + HOBGOBLIN_RED_MAGE = GetFirstID('Hobgoblin_Red_Mage'), + HOBGOBLIN_THIEF = GetFirstID('Hobgoblin_Thief'), + HOBGOBLIN_WARRIOR = GetFirstID('Hobgoblin_Warrior'), + HOBGOBLIN_WHITE_MAGE = GetFirstID('Hobgoblin_White_Mage'), KILLER_JONNY = GetFirstID('Killer_Jonny'), KREUTZET = GetFirstID('Kreutzet'), - AXESARION_THE_WANDERER = GetFirstID('Axesarion_the_Wanderer'), STOLAS = GetFirstID('Stolas'), - ZMEY_GORYNYCH = GetFirstID('Zmey_Gorynych') + ZMEY_GORYNYCH = GetFirstID('Zmey_Gorynych'), }, npc = { - OVERSEER_BASE = GetFirstID('Salimardi_RK'), + BEASTMENS_BANNER = GetFirstID('Beastmens_Banner'), CERMET_HEADSTONE = 17240498, + OVERSEER_BASE = GetFirstID('Salimardi_RK'), }, } diff --git a/scripts/zones/Eastern_Altepa_Desert/IDs.lua b/scripts/zones/Eastern_Altepa_Desert/IDs.lua index 8d49db714b5..65c3a6a93f0 100644 --- a/scripts/zones/Eastern_Altepa_Desert/IDs.lua +++ b/scripts/zones/Eastern_Altepa_Desert/IDs.lua @@ -20,6 +20,10 @@ zones[xi.zone.EASTERN_ALTEPA_DESERT] = LOGIN_NUMBER = 7007, -- In celebration of your most recent login (login no. ), we have provided you with points! You currently have a total of points. MEMBERS_LEVELS_ARE_RESTRICTED = 7027, -- Your party is unable to participate because certain members' levels are restricted. CONQUEST_BASE = 7072, -- Tallying conquest results... + REGION_POINTS_SANDORIA = 7137, -- San d'Oria's region points have increased! + EXP_FORCE_KILL_SANDORIA = 7140, -- San d'Orian E.F. defeats beastmen hordes... Maintain current momentum. + BEASTMEN_BANNER_CURSE = 7151, -- There was a curse on the beastmen's banner! + BEASTMEN_BANNER_LIFTED = 7152, -- The curse of the beastmen's banner has been lifted! BEASTMEN_BANNER = 7153, -- There is a beastmen's banner. CONQUEST = 7240, -- You've earned conquest points! FISHING_MESSAGE_OFFSET = 7573, -- You can't fish here. @@ -42,17 +46,30 @@ zones[xi.zone.EASTERN_ALTEPA_DESERT] = }, mob = { - DUNE_WIDOW = GetFirstID('Dune_Widow'), - DONNERGUGI = GetFirstID('Donnergugi'), - CENTURIO_XII_I = GetFirstID('Centurio_XII-I'), - NANDI = GetFirstID('Nandi'), - DECURIO_I_III = GetFirstID('Decurio_I-III'), - TSUCHIGUMO_OFFSET = GetFirstID('Tsuchigumo'), - CACTROT_RAPIDO = GetFirstID('Cactrot_Rapido'), + CACTROT_RAPIDO = GetFirstID('Cactrot_Rapido'), + CENTURIO_XII_I = GetFirstID('Centurio_XII-I'), + CONTANTICAN_BLACK_MAGE = GetFirstID('Contantican_Black_Mage'), + CONTANTICAN_PALADIN = GetFirstID('Contantican_Paladin'), + CONTANTICAN_RANGER = GetFirstID('Contantican_Ranger'), + CONTANTICAN_WARRIOR = GetFirstID('Contantican_Warrior'), + DECURIO_I_III = GetFirstID('Decurio_I-III'), + DONNERGUGI = GetFirstID('Donnergugi'), + DUNE_WIDOW = GetFirstID('Dune_Widow'), + HOBGOBLIN_BEASTMASTER = GetFirstID('Hobgoblin_Beastmaster'), + HOBGOBLIN_BLACK_MAGE = GetFirstID('Hobgoblin_Black_Mage'), + HOBGOBLIN_DARK_KNIGHT = GetFirstID('Hobgoblin_Dark_Knight'), + HOBGOBLIN_RANGER = GetFirstID('Hobgoblin_Ranger'), + HOBGOBLIN_RED_MAGE = GetFirstID('Hobgoblin_Red_Mage'), + HOBGOBLIN_THIEF = GetFirstID('Hobgoblin_Thief'), + HOBGOBLIN_WARRIOR = GetFirstID('Hobgoblin_Warrior'), + HOBGOBLIN_WHITE_MAGE = GetFirstID('Hobgoblin_White_Mage'), + NANDI = GetFirstID('Nandi'), + TSUCHIGUMO_OFFSET = GetFirstID('Tsuchigumo'), }, npc = { - OVERSEER_BASE = GetFirstID('Eaulevisat_RK'), + BEASTMENS_BANNER = GetFirstID('Beastmens_Banner'), + OVERSEER_BASE = GetFirstID('Eaulevisat_RK'), }, } diff --git a/scripts/zones/Jugner_Forest/IDs.lua b/scripts/zones/Jugner_Forest/IDs.lua index 6aa2c3de784..effeb987d54 100644 --- a/scripts/zones/Jugner_Forest/IDs.lua +++ b/scripts/zones/Jugner_Forest/IDs.lua @@ -20,6 +20,10 @@ zones[xi.zone.JUGNER_FOREST] = LOGIN_NUMBER = 7029, -- In celebration of your most recent login (login no. ), we have provided you with points! You currently have a total of points. MEMBERS_LEVELS_ARE_RESTRICTED = 7049, -- Your party is unable to participate because certain members' levels are restricted. CONQUEST_BASE = 7094, -- Tallying conquest results... + REGION_POINTS_SANDORIA = 7159, -- San d'Oria's region points have increased! + EXP_FORCE_KILL_SANDORIA = 7162, -- San d'Orian E.F. defeats beastmen hordes... Maintain current momentum. + BEASTMEN_BANNER_CURSE = 7173, -- There was a curse on the beastmen's banner! + BEASTMEN_BANNER_LIFTED = 7174, -- The curse of the beastmen's banner has been lifted! BEASTMEN_BANNER = 7175, -- There is a beastmen's banner. FISHING_MESSAGE_OFFSET = 7727, -- You can't fish here. DIG_THROW_AWAY = 7740, -- You dig up , but your inventory is full. You regretfully throw the away. @@ -59,14 +63,29 @@ zones[xi.zone.JUGNER_FOREST] = mob = { - CERNUNNOS = GetFirstID('Cernunnos'), - FRAELISSA = GetFirstID('Fraelissa'), - FRADUBIO = GetFirstID('Fradubio'), - GIOLLEMITTE = GetFirstID('Giollemitte_B_Feroun'), - KING_ARTHRO = GetFirstID('King_Arthro'), - METEORMAULER = GetFirstID('Meteormauler_Zhagtegg'), - PANZER_PERCIVAL = GetTableOfIDs('Panzer_Percival'), -- 2 NMs - SUPPLESPINE_MUJWUJ = GetFirstID('Supplespine_Mujwuj'), + CERNUNNOS = GetFirstID('Cernunnos'), + FRADUBIO = GetFirstID('Fradubio'), + FRAELISSA = GetFirstID('Fraelissa'), + GIOLLEMITTE = GetFirstID('Giollemitte_B_Feroun'), + HALFORC_BLACK_MAGE = GetFirstID('Halforc_Black_Mage'), + HALFORC_DARK_KNIGHT = GetFirstID('Halforc_Dark_Knight'), + HALFORC_DRAGOON = GetFirstID('Halforc_Dragoon'), + HALFORC_MONK = GetFirstID('Halforc_Monk'), + HALFORC_PALADIN = GetFirstID('Halforc_Paladin'), + HALFORC_RANGER = GetFirstID('Halforc_Ranger'), + HALFORC_WARRIOR = GetFirstID('Halforc_Warrior'), + HOBGOBLIN_BEASTMASTER = GetFirstID('Hobgoblin_Beastmaster'), + HOBGOBLIN_BLACK_MAGE = GetFirstID('Hobgoblin_Black_Mage'), + HOBGOBLIN_DARK_KNIGHT = GetFirstID('Hobgoblin_Dark_Knight'), + HOBGOBLIN_RANGER = GetFirstID('Hobgoblin_Ranger'), + HOBGOBLIN_RED_MAGE = GetFirstID('Hobgoblin_Red_Mage'), + HOBGOBLIN_THIEF = GetFirstID('Hobgoblin_Thief'), + HOBGOBLIN_WARRIOR = GetFirstID('Hobgoblin_Warrior'), + HOBGOBLIN_WHITE_MAGE = GetFirstID('Hobgoblin_White_Mage'), + KING_ARTHRO = GetFirstID('King_Arthro'), + METEORMAULER = GetFirstID('Meteormauler_Zhagtegg'), + PANZER_PERCIVAL = GetTableOfIDs('Panzer_Percival'), -- 2 NMs + SUPPLESPINE_MUJWUJ = GetFirstID('Supplespine_Mujwuj'), VOIDWALKER = { @@ -103,10 +122,11 @@ zones[xi.zone.JUGNER_FOREST] = npc = { - OVERSEER_BASE = GetFirstID('Chaplion_RK'), - LOGGING = GetTableOfIDs('Logging_Point'), - SIGNPOST = GetTableOfIDs('Signpost'), - TIMELYVISITQM = GetFirstID('qm1'), + BEASTMENS_BANNER = GetFirstID('Beastmens_Banner'), + LOGGING = GetTableOfIDs('Logging_Point'), + OVERSEER_BASE = GetFirstID('Chaplion_RK'), + SIGNPOST = GetTableOfIDs('Signpost'), + TIMELYVISITQM = GetFirstID('qm1'), }, } diff --git a/scripts/zones/Meriphataud_Mountains/IDs.lua b/scripts/zones/Meriphataud_Mountains/IDs.lua index 3c1dd1fda9b..940d228ff36 100644 --- a/scripts/zones/Meriphataud_Mountains/IDs.lua +++ b/scripts/zones/Meriphataud_Mountains/IDs.lua @@ -19,6 +19,10 @@ zones[xi.zone.MERIPHATAUD_MOUNTAINS] = LOGIN_NUMBER = 7029, -- In celebration of your most recent login (login no. ), we have provided you with points! You currently have a total of points. MEMBERS_LEVELS_ARE_RESTRICTED = 7049, -- Your party is unable to participate because certain members' levels are restricted. CONQUEST_BASE = 7094, -- Tallying conquest results... + REGION_POINTS_SANDORIA = 7159, -- San d'Oria's region points have increased! + EXP_FORCE_KILL_SANDORIA = 7162, -- San d'Orian E.F. defeats beastmen hordes... Maintain current momentum. + BEASTMEN_BANNER_CURSE = 7173, -- There was a curse on the beastmen's banner! + BEASTMEN_BANNER_LIFTED = 7174, -- The curse of the beastmen's banner has been lifted! BEASTMEN_BANNER = 7175, -- There is a beastmen's banner. FISHING_MESSAGE_OFFSET = 7253, -- You can't fish here. DIG_THROW_AWAY = 7266, -- You dig up , but your inventory is full. You regretfully throw the away. @@ -52,11 +56,26 @@ zones[xi.zone.MERIPHATAUD_MOUNTAINS] = mob = { + COO_KEJA_THE_UNSEEN = GetFirstID('Coo_Keja_the_Unseen'), + DAGGERCLAW_DRACOS = GetFirstID('Daggerclaw_Dracos'), + HOBGOBLIN_BEASTMASTER = GetFirstID('Hobgoblin_Beastmaster'), + HOBGOBLIN_BLACK_MAGE = GetFirstID('Hobgoblin_Black_Mage'), + HOBGOBLIN_DARK_KNIGHT = GetFirstID('Hobgoblin_Dark_Knight'), + HOBGOBLIN_RANGER = GetFirstID('Hobgoblin_Ranger'), + HOBGOBLIN_RED_MAGE = GetFirstID('Hobgoblin_Red_Mage'), + HOBGOBLIN_THIEF = GetFirstID('Hobgoblin_Thief'), + HOBGOBLIN_WARRIOR = GetFirstID('Hobgoblin_Warrior'), + HOBGOBLIN_WHITE_MAGE = GetFirstID('Hobgoblin_White_Mage'), NAA_ZEKU_THE_UNWAITING = GetFirstID('Naa_Zeku_the_Unwaiting'), PATRIPATAN = GetFirstID('Patripatan'), - DAGGERCLAW_DRACOS = GetFirstID('Daggerclaw_Dracos'), + THEOYAGUDO_BARD = GetFirstID('Theoyagudo_Bard'), + THEOYAGUDO_BLACK_MAGE = GetFirstID('Theoyagudo_Black_Mage'), + THEOYAGUDO_MONK = GetFirstID('Theoyagudo_Monk'), + THEOYAGUDO_NINJA = GetFirstID('Theoyagudo_Ninja'), + THEOYAGUDO_SAMURAI = GetFirstID('Theoyagudo_Samurai'), + THEOYAGUDO_SUMMONER = GetFirstID('Theoyagudo_Summoner'), + THEOYAGUDO_WHITE_MAGE = GetFirstID('Theoyagudo_White_Mage'), WARAXE_BEAK = GetFirstID('Waraxe_Beak'), - COO_KEJA_THE_UNSEEN = GetFirstID('Coo_Keja_the_Unseen'), VOIDWALKER = { @@ -92,7 +111,8 @@ zones[xi.zone.MERIPHATAUD_MOUNTAINS] = npc = { - OVERSEER_BASE = GetFirstID('Chegourt_RK'), + BEASTMENS_BANNER = GetFirstID('Beastmens_Banner'), + OVERSEER_BASE = GetFirstID('Chegourt_RK'), }, } diff --git a/scripts/zones/Pashhow_Marshlands/IDs.lua b/scripts/zones/Pashhow_Marshlands/IDs.lua index 64c5b167217..d15e3b83885 100644 --- a/scripts/zones/Pashhow_Marshlands/IDs.lua +++ b/scripts/zones/Pashhow_Marshlands/IDs.lua @@ -20,6 +20,10 @@ zones[xi.zone.PASHHOW_MARSHLANDS] = LOGIN_NUMBER = 7029, -- In celebration of your most recent login (login no. ), we have provided you with points! You currently have a total of points. MEMBERS_LEVELS_ARE_RESTRICTED = 7049, -- Your party is unable to participate because certain members' levels are restricted. CONQUEST_BASE = 7094, -- Tallying conquest results... + REGION_POINTS_SANDORIA = 7159, -- San d'Oria's region points have increased! + EXP_FORCE_KILL_SANDORIA = 7162, -- San d'Orian E.F. defeats beastmen hordes... Maintain current momentum. + BEASTMEN_BANNER_CURSE = 7173, -- There was a curse on the beastmen's banner! + BEASTMEN_BANNER_LIFTED = 7174, -- The curse of the beastmen's banner has been lifted! BEASTMEN_BANNER = 7175, -- There is a beastmen's banner. FISHING_MESSAGE_OFFSET = 7253, -- You can't fish here. DIG_THROW_AWAY = 7266, -- You dig up , but your inventory is full. You regretfully throw the away. @@ -52,11 +56,26 @@ zones[xi.zone.PASHHOW_MARSHLANDS] = mob = { - NI_ZHO_BLADEBENDER = GetFirstID('NiZho_Bladebender'), - JOLLY_GREEN = GetFirstID('Jolly_Green'), - BLOODPOOL_VORAX = GetFirstID('Bloodpool_Vorax'), - BOWHO_WARMONGER = GetFirstID('BoWho_Warmonger'), - TOXIC_TAMLYN = GetFirstID('Toxic_Tamlyn'), + BLOODPOOL_VORAX = GetFirstID('Bloodpool_Vorax'), + BOWHO_WARMONGER = GetFirstID('BoWho_Warmonger'), + HOBGOBLIN_BEASTMASTER = GetFirstID('Hobgoblin_Beastmaster'), + HOBGOBLIN_BLACK_MAGE = GetFirstID('Hobgoblin_Black_Mage'), + HOBGOBLIN_DARK_KNIGHT = GetFirstID('Hobgoblin_Dark_Knight'), + HOBGOBLIN_RANGER = GetFirstID('Hobgoblin_Ranger'), + HOBGOBLIN_RED_MAGE = GetFirstID('Hobgoblin_Red_Mage'), + HOBGOBLIN_THIEF = GetFirstID('Hobgoblin_Thief'), + HOBGOBLIN_WARRIOR = GetFirstID('Hobgoblin_Warrior'), + HOBGOBLIN_WHITE_MAGE = GetFirstID('Hobgoblin_White_Mage'), + JOLLY_GREEN = GetFirstID('Jolly_Green'), + METAQUADAV_BLACK_MAGE = GetFirstID('Metaquadav_Black_Mage'), + METAQUADAV_DARK_KNIGHT = GetFirstID('Metaquadav_Dark_Knight'), + METAQUADAV_PALADIN = GetFirstID('Metaquadav_Paladin'), + METAQUADAV_RED_MAGE = GetFirstID('Metaquadav_Red_Mage'), + METAQUADAV_THIEF = GetFirstID('Metaquadav_Thief'), + METAQUADAV_WARRIOR = GetFirstID('Metaquadav_Warrior'), + METAQUADAV_WHITE_MAGE = GetFirstID('Metaquadav_White_Mage'), + NI_ZHO_BLADEBENDER = GetFirstID('NiZho_Bladebender'), + TOXIC_TAMLYN = GetFirstID('Toxic_Tamlyn'), VOIDWALKER = { @@ -105,7 +124,8 @@ zones[xi.zone.PASHHOW_MARSHLANDS] = npc = { - OVERSEER_BASE = GetFirstID('Mesachedeau_RK'), + BEASTMENS_BANNER = GetFirstID('Beastmens_Banner'), + OVERSEER_BASE = GetFirstID('Mesachedeau_RK'), }, } diff --git a/scripts/zones/Qufim_Island/IDs.lua b/scripts/zones/Qufim_Island/IDs.lua index 56ea00c0147..5c059e7ed04 100644 --- a/scripts/zones/Qufim_Island/IDs.lua +++ b/scripts/zones/Qufim_Island/IDs.lua @@ -22,6 +22,10 @@ zones[xi.zone.QUFIM_ISLAND] = LOGIN_NUMBER = 7007, -- In celebration of your most recent login (login no. ), we have provided you with points! You currently have a total of points. MEMBERS_LEVELS_ARE_RESTRICTED = 7027, -- Your party is unable to participate because certain members' levels are restricted. CONQUEST_BASE = 7072, -- Tallying conquest results... + REGION_POINTS_SANDORIA = 7137, -- San d'Oria's region points have increased! + EXP_FORCE_KILL_SANDORIA = 7140, -- San d'Orian E.F. defeats beastmen hordes... Maintain current momentum. + BEASTMEN_BANNER_CURSE = 7151, -- There was a curse on the beastmen's banner! + BEASTMEN_BANNER_LIFTED = 7152, -- The curse of the beastmen's banner has been lifted! BEASTMEN_BANNER = 7153, -- There is a beastmen's banner. FISHING_MESSAGE_OFFSET = 7231, -- You can't fish here. THESE_WITHERED_FLOWERS = 7352, -- These withered flowers seem unable to bloom. @@ -48,15 +52,28 @@ zones[xi.zone.QUFIM_ISLAND] = }, mob = { - DOSETSU_TREE = GetFirstID('Dosetsu_Tree'), - KRAKEN_NM = GetTableOfIDs('Kraken')[3], - OPHIOTAURUS = GetFirstID('Ophiotaurus'), - SLIPPERY_SUCKER = GetFirstID('Slippery_Sucker'), - TRICKSTER_KINETIX = GetFirstID('Trickster_Kinetix'), + DOSETSU_TREE = GetFirstID('Dosetsu_Tree'), + GIANT_BEASTMASTER = GetFirstID('Giant_Beastmaster'), + GIANT_HIGH_RANGER = GetFirstID('Giant_High_Ranger'), + GIANT_MONK = GetFirstID('Giant_Monk'), + GIANT_WARRIOR = GetFirstID('Giant_Warrior'), + HOBGOBLIN_BEASTMASTER = GetFirstID('Hobgoblin_Beastmaster'), + HOBGOBLIN_BLACK_MAGE = GetFirstID('Hobgoblin_Black_Mage'), + HOBGOBLIN_DARK_KNIGHT = GetFirstID('Hobgoblin_Dark_Knight'), + HOBGOBLIN_RANGER = GetFirstID('Hobgoblin_Ranger'), + HOBGOBLIN_RED_MAGE = GetFirstID('Hobgoblin_Red_Mage'), + HOBGOBLIN_THIEF = GetFirstID('Hobgoblin_Thief'), + HOBGOBLIN_WARRIOR = GetFirstID('Hobgoblin_Warrior'), + HOBGOBLIN_WHITE_MAGE = GetFirstID('Hobgoblin_White_Mage'), + KRAKEN_NM = GetTableOfIDs('Kraken')[3], + OPHIOTAURUS = GetFirstID('Ophiotaurus'), + SLIPPERY_SUCKER = GetFirstID('Slippery_Sucker'), + TRICKSTER_KINETIX = GetFirstID('Trickster_Kinetix'), }, npc = { - OVERSEER_BASE = GetFirstID('Pitoire_RK'), + BEASTMENS_BANNER = GetFirstID('Beastmens_Banner'), + OVERSEER_BASE = GetFirstID('Pitoire_RK'), }, } diff --git a/scripts/zones/The_Sanctuary_of_ZiTah/IDs.lua b/scripts/zones/The_Sanctuary_of_ZiTah/IDs.lua index 0b4ee2ff6f3..1f2445965c0 100644 --- a/scripts/zones/The_Sanctuary_of_ZiTah/IDs.lua +++ b/scripts/zones/The_Sanctuary_of_ZiTah/IDs.lua @@ -22,6 +22,10 @@ zones[xi.zone.THE_SANCTUARY_OF_ZITAH] = LOGIN_NUMBER = 7007, -- In celebration of your most recent login (login no. ), we have provided you with points! You currently have a total of points. MEMBERS_LEVELS_ARE_RESTRICTED = 7027, -- Your party is unable to participate because certain members' levels are restricted. CONQUEST_BASE = 7072, -- Tallying conquest results... + REGION_POINTS_SANDORIA = 7137, -- San d'Oria's region points have increased! + EXP_FORCE_KILL_SANDORIA = 7140, -- San d'Orian E.F. defeats beastmen hordes... Maintain current momentum. + BEASTMEN_BANNER_CURSE = 7151, -- There was a curse on the beastmen's banner! + BEASTMEN_BANNER_LIFTED = 7152, -- The curse of the beastmen's banner has been lifted! BEASTMEN_BANNER = 7153, -- There is a beastmen's banner. CONQUEST = 7240, -- You've earned conquest points! FISHING_MESSAGE_OFFSET = 7573, -- You can't fish here. @@ -57,17 +61,26 @@ zones[xi.zone.THE_SANCTUARY_OF_ZITAH] = }, mob = { - KEEPER_OF_HALIDOM = GetFirstID('Keeper_of_Halidom'), - NOBLE_MOLD = GetFirstID('Noble_Mold'), - GUARDIAN_TREANT = GetFirstID('Guardian_Treant'), - DOOMED_PILGRIMS = GetFirstID('Doomed_Pilgrims'), - ISONADE = GetFirstID('Isonade'), - GREENMAN = GetFirstID('Greenman'), + DOOMED_PILGRIMS = GetFirstID('Doomed_Pilgrims'), + GREENMAN = GetFirstID('Greenman'), + GUARDIAN_TREANT = GetFirstID('Guardian_Treant'), + HOBGOBLIN_BEASTMASTER = GetFirstID('Hobgoblin_Beastmaster'), + HOBGOBLIN_BLACK_MAGE = GetFirstID('Hobgoblin_Black_Mage'), + HOBGOBLIN_DARK_KNIGHT = GetFirstID('Hobgoblin_Dark_Knight'), + HOBGOBLIN_RANGER = GetFirstID('Hobgoblin_Ranger'), + HOBGOBLIN_RED_MAGE = GetFirstID('Hobgoblin_Red_Mage'), + HOBGOBLIN_THIEF = GetFirstID('Hobgoblin_Thief'), + HOBGOBLIN_WARRIOR = GetFirstID('Hobgoblin_Warrior'), + HOBGOBLIN_WHITE_MAGE = GetFirstID('Hobgoblin_White_Mage'), + ISONADE = GetFirstID('Isonade'), + KEEPER_OF_HALIDOM = GetFirstID('Keeper_of_Halidom'), + NOBLE_MOLD = GetFirstID('Noble_Mold'), }, npc = { - OVERSEER_BASE = GetFirstID('Credaurion_RK'), + BEASTMENS_BANNER = GetFirstID('Beastmens_Banner'), CERMET_HEADSTONE = GetFirstID('Cermet_Headstone'), + OVERSEER_BASE = GetFirstID('Credaurion_RK'), }, } diff --git a/scripts/zones/Valkurm_Dunes/IDs.lua b/scripts/zones/Valkurm_Dunes/IDs.lua index e1d5e83314f..5b420c3ded5 100644 --- a/scripts/zones/Valkurm_Dunes/IDs.lua +++ b/scripts/zones/Valkurm_Dunes/IDs.lua @@ -21,6 +21,10 @@ zones[xi.zone.VALKURM_DUNES] = LOGIN_NUMBER = 7029, -- In celebration of your most recent login (login no. ), we have provided you with points! You currently have a total of points. MEMBERS_LEVELS_ARE_RESTRICTED = 7049, -- Your party is unable to participate because certain members' levels are restricted. CONQUEST_BASE = 7094, -- Tallying conquest results... + REGION_POINTS_SANDORIA = 7159, -- San d'Oria's region points have increased! + EXP_FORCE_KILL_SANDORIA = 7162, -- San d'Orian E.F. defeats beastmen hordes... Maintain current momentum. + BEASTMEN_BANNER_CURSE = 7173, -- There was a curse on the beastmen's banner! + BEASTMEN_BANNER_LIFTED = 7174, -- The curse of the beastmen's banner has been lifted! BEASTMEN_BANNER = 7175, -- There is a beastmen's banner. FISHING_MESSAGE_OFFSET = 7253, -- You can't fish here. DIG_THROW_AWAY = 7266, -- You dig up , but your inventory is full. You regretfully throw the away. @@ -63,19 +67,42 @@ zones[xi.zone.VALKURM_DUNES] = mob = { - BEACH_MONK = GetFirstID('Beach_Monk'), - DOMAN = GetFirstID('Doman'), - GOLDEN_BAT = GetFirstID('Golden_Bat'), - HEIKE_CRAB = GetFirstID('Heike_Crab'), - HOUU_THE_SHOALWADER = GetFirstID('Houu_the_Shoalwader'), - MARCHELUTE = GetFirstID('Marchelute'), - ONRYO = GetFirstID('Onryo'), - VALKURM_EMPEROR = GetFirstID('Valkurm_Emperor'), + BEACH_MONK = GetFirstID('Beach_Monk'), + DOMAN = GetFirstID('Doman'), + GOLDEN_BAT = GetFirstID('Golden_Bat'), + HALFORC_BLACK_MAGE = GetFirstID('Halforc_Black_Mage'), + HALFORC_DARK_KNIGHT = GetFirstID('Halforc_Dark_Knight'), + HALFORC_DRAGOON = GetFirstID('Halforc_Dragoon'), + HALFORC_MONK = GetFirstID('Halforc_Monk'), + HALFORC_PALADIN = GetFirstID('Halforc_Paladin'), + HALFORC_RANGER = GetFirstID('Halforc_Ranger'), + HALFORC_WARRIOR = GetFirstID('Halforc_Warrior'), + HEIKE_CRAB = GetFirstID('Heike_Crab'), + HOBGOBLIN_BEASTMASTER = GetFirstID('Hobgoblin_Beastmaster'), + HOBGOBLIN_BLACK_MAGE = GetFirstID('Hobgoblin_Black_Mage'), + HOBGOBLIN_DARK_KNIGHT = GetFirstID('Hobgoblin_Dark_Knight'), + HOBGOBLIN_RANGER = GetFirstID('Hobgoblin_Ranger'), + HOBGOBLIN_RED_MAGE = GetFirstID('Hobgoblin_Red_Mage'), + HOBGOBLIN_THIEF = GetFirstID('Hobgoblin_Thief'), + HOBGOBLIN_WARRIOR = GetFirstID('Hobgoblin_Warrior'), + HOBGOBLIN_WHITE_MAGE = GetFirstID('Hobgoblin_White_Mage'), + HOUU_THE_SHOALWADER = GetFirstID('Houu_the_Shoalwader'), + MARCHELUTE = GetFirstID('Marchelute'), + METAQUADAV_BLACK_MAGE = GetFirstID('Metaquadav_Black_Mage'), + METAQUADAV_DARK_KNIGHT = GetFirstID('Metaquadav_Dark_Knight'), + METAQUADAV_PALADIN = GetFirstID('Metaquadav_Paladin'), + METAQUADAV_RED_MAGE = GetFirstID('Metaquadav_Red_Mage'), + METAQUADAV_THIEF = GetFirstID('Metaquadav_Thief'), + METAQUADAV_WARRIOR = GetFirstID('Metaquadav_Warrior'), + METAQUADAV_WHITE_MAGE = GetFirstID('Metaquadav_White_Mage'), + ONRYO = GetFirstID('Onryo'), + VALKURM_EMPEROR = GetFirstID('Valkurm_Emperor'), }, npc = { BARNACLED_BOX = GetFirstID('Barnacled_Box'), + BEASTMENS_BANNER = GetFirstID('Beastmens_Banner'), OVERSEER_BASE = GetFirstID('Quanteilleron_RK'), PIRATE_CHART_QM = GetFirstID('qm4'), PIRATE_CHART_TARU = GetFirstID('Pirate_Chart_Taru'), diff --git a/scripts/zones/Xarcabard/IDs.lua b/scripts/zones/Xarcabard/IDs.lua index d64592ec168..2833a9565ad 100644 --- a/scripts/zones/Xarcabard/IDs.lua +++ b/scripts/zones/Xarcabard/IDs.lua @@ -20,7 +20,11 @@ zones[xi.zone.XARCABARD] = LOGIN_NUMBER = 7020, -- In celebration of your most recent login (login no. ), we have provided you with points! You currently have a total of points. MEMBERS_LEVELS_ARE_RESTRICTED = 7040, -- Your party is unable to participate because certain members' levels are restricted. CONQUEST_BASE = 7085, -- Tallying conquest results... - BEASTMEN_BANNER = 7164, -- There was a curse on the beastmen's banner! + REGION_POINTS_SANDORIA = 7150, -- San d'Oria's region points have increased! + EXP_FORCE_KILL_SANDORIA = 7153, -- San d'Orian E.F. defeats beastmen hordes... Maintain current momentum. + BEASTMEN_BANNER_CURSE = 7164, -- There was a curse on the beastmen's banner! + BEASTMEN_BANNER_LIFTED = 7165, -- The curse of the beastmen's banner has been lifted! + BEASTMEN_BANNER = 7166, -- There is a beastmen's banner. PRESENCE_IN_CAVE = 7245, -- You sense a presence in the cave... MONSTER_APPEARS = 7248, -- A monster appears from deep within the cave! SENSE_EVIL = 7374, -- You can sense an evil force around you. @@ -59,16 +63,28 @@ zones[xi.zone.XARCABARD] = }, mob = { - BARBARIC_WEAPON = GetFirstID('Barbaric_Weapon'), - BOREAL_HOUND = GetFirstID('Boreal_Hound'), - BOREAL_COEURL = GetFirstID('Boreal_Coeurl'), - BOREAL_TIGER = GetFirstID('Boreal_Tiger'), - CHAOS_ELEMENTAL = GetFirstID('Chaos_Elemental'), - ERESHKIGAL = GetFirstID('Ereshkigal'), - KOENIGSTIGER = GetFirstID('Koenigstiger'), - SHADOW_EYE = GetFirstID('Shadow_Eye'), - TIMEWORN_WARRIOR = GetFirstID('Timeworn_Warrior'), - VOIDWALKER = + BARBARIC_WEAPON = GetFirstID('Barbaric_Weapon'), + BOREAL_COEURL = GetFirstID('Boreal_Coeurl'), + BOREAL_HOUND = GetFirstID('Boreal_Hound'), + BOREAL_TIGER = GetFirstID('Boreal_Tiger'), + CHAOS_ELEMENTAL = GetFirstID('Chaos_Elemental'), + ERESHKIGAL = GetFirstID('Ereshkigal'), + GIGAS_BEASTMASTER = GetFirstID('Gigas_Beastmaster'), + GIGAS_MONK = GetFirstID('Gigas_Monk'), + GIGAS_RANGER = GetFirstID('Gigas_Ranger'), + GIGAS_WARRIOR = GetFirstID('Gigas_Warrior'), + HOBGOBLIN_BEASTMASTER = GetFirstID('Hobgoblin_Beastmaster'), + HOBGOBLIN_BLACK_MAGE = GetFirstID('Hobgoblin_Black_Mage'), + HOBGOBLIN_DARK_KNIGHT = GetFirstID('Hobgoblin_Dark_Knight'), + HOBGOBLIN_RANGER = GetFirstID('Hobgoblin_Ranger'), + HOBGOBLIN_RED_MAGE = GetFirstID('Hobgoblin_Red_Mage'), + HOBGOBLIN_THIEF = GetFirstID('Hobgoblin_Thief'), + HOBGOBLIN_WARRIOR = GetFirstID('Hobgoblin_Warrior'), + HOBGOBLIN_WHITE_MAGE = GetFirstID('Hobgoblin_White_Mage'), + KOENIGSTIGER = GetFirstID('Koenigstiger'), + SHADOW_EYE = GetFirstID('Shadow_Eye'), + TIMEWORN_WARRIOR = GetFirstID('Timeworn_Warrior'), + VOIDWALKER = { [xi.keyItem.CLEAR_ABYSSITE] = { @@ -98,13 +114,14 @@ zones[xi.zone.XARCABARD] = }, npc = { - OVERSEER_BASE = GetFirstID('Jeantelas_RK'), - BOREAL_TIGER_QM = GetFirstID('qm_boreal_tiger'), + BEASTMENS_BANNER = GetFirstID('Beastmens_Banner'), BOREAL_COEURL_QM = GetFirstID('qm_boreal_coeurl'), BOREAL_HOUND_QM = GetFirstID('qm_boreal_hound'), + BOREAL_TIGER_QM = GetFirstID('qm_boreal_tiger'), OPTION_ONE = GetFirstID('Option_One'), OPTION_TWO = GetFirstID('Option_Two'), OPTION_THREE = GetFirstID('Option_Three'), + OVERSEER_BASE = GetFirstID('Jeantelas_RK'), }, } diff --git a/scripts/zones/Yhoator_Jungle/IDs.lua b/scripts/zones/Yhoator_Jungle/IDs.lua index 07ff280f9eb..1c3b6768635 100644 --- a/scripts/zones/Yhoator_Jungle/IDs.lua +++ b/scripts/zones/Yhoator_Jungle/IDs.lua @@ -19,6 +19,10 @@ zones[xi.zone.YHOATOR_JUNGLE] = LOGIN_NUMBER = 7007, -- In celebration of your most recent login (login no. ), we have provided you with points! You currently have a total of points. MEMBERS_LEVELS_ARE_RESTRICTED = 7027, -- Your party is unable to participate because certain members' levels are restricted. CONQUEST_BASE = 7072, -- Tallying conquest results... + REGION_POINTS_SANDORIA = 7137, -- San d'Oria's region points have increased! + EXP_FORCE_KILL_SANDORIA = 7140, -- San d'Orian E.F. defeats beastmen hordes... Maintain current momentum. + BEASTMEN_BANNER_CURSE = 7151, -- There was a curse on the beastmen's banner! + BEASTMEN_BANNER_LIFTED = 7152, -- The curse of the beastmen's banner has been lifted! BEASTMEN_BANNER = 7153, -- There is a beastmen's banner. CONQUEST = 7240, -- You've earned conquest points! FISHING_MESSAGE_OFFSET = 7573, -- You can't fish here. @@ -49,21 +53,34 @@ zones[xi.zone.YHOATOR_JUNGLE] = }, mob = { - HOAR_KNUCKLED_RIMBERRY = GetFirstID('Hoar-knuckled_Rimberry'), - WOODLAND_SAGE = 17285220, - POWDERER_PENNY = 17285248, BISQUE_HEELED_SUNBERRY = 17285460, BRIGHT_HANDED_KUNBERRY = 17285526, + EDACIOUS_OPO_OPO = 17285571, + HOAR_KNUCKLED_RIMBERRY = GetFirstID('Hoar-knuckled_Rimberry'), + HOBGOBLIN_BEASTMASTER = GetFirstID('Hobgoblin_Beastmaster'), + HOBGOBLIN_BLACK_MAGE = GetFirstID('Hobgoblin_Black_Mage'), + HOBGOBLIN_DARK_KNIGHT = GetFirstID('Hobgoblin_Dark_Knight'), + HOBGOBLIN_RANGER = GetFirstID('Hobgoblin_Ranger'), + HOBGOBLIN_RED_MAGE = GetFirstID('Hobgoblin_Red_Mage'), + HOBGOBLIN_THIEF = GetFirstID('Hobgoblin_Thief'), + HOBGOBLIN_WARRIOR = GetFirstID('Hobgoblin_Warrior'), + HOBGOBLIN_WHITE_MAGE = GetFirstID('Hobgoblin_White_Mage'), KAPPA_AKUSO = 17285544, - KAPPA_BONZE = 17285545, KAPPA_BIWA = 17285546, - EDACIOUS_OPO_OPO = 17285571, + KAPPA_BONZE = 17285545, + NOCTONBERRY_BLACK_MAGE = GetFirstID('Noctonberry_Black_Mage'), + NOCTONBERRY_NINJA = GetFirstID('Noctonberry_Ninja'), + NOCTONBERRY_SUMMONER = GetFirstID('Noctonberry_Summoner'), + NOCTONBERRY_THIEF = GetFirstID('Noctonberry_Thief'), + POWDERER_PENNY = 17285248, + WOODLAND_SAGE = 17285220, }, npc = { - OVERSEER_BASE = GetFirstID('Ilieumort_RK'), - PEDDLESTOX = 17285687, + BEASTMENS_BANNER = GetFirstID('Beastmens_Banner'), BEASTMEN_TREASURE_OFFSET = GetFirstID('qm5'), -- qm4 has an ID after qm11 so start the offset at qm5 + OVERSEER_BASE = GetFirstID('Ilieumort_RK'), + PEDDLESTOX = 17285687, HARVESTING = GetTableOfIDs('Harvesting_Point'), LOGGING = GetTableOfIDs('Logging_Point'), diff --git a/scripts/zones/Yuhtunga_Jungle/IDs.lua b/scripts/zones/Yuhtunga_Jungle/IDs.lua index d5c6e57b3be..22acebd29af 100644 --- a/scripts/zones/Yuhtunga_Jungle/IDs.lua +++ b/scripts/zones/Yuhtunga_Jungle/IDs.lua @@ -22,6 +22,10 @@ zones[xi.zone.YUHTUNGA_JUNGLE] = LOGIN_NUMBER = 7007, -- In celebration of your most recent login (login no. ), we have provided you with points! You currently have a total of points. MEMBERS_LEVELS_ARE_RESTRICTED = 7027, -- Your party is unable to participate because certain members' levels are restricted. CONQUEST_BASE = 7072, -- Tallying conquest results... + REGION_POINTS_SANDORIA = 7137, -- San d'Oria's region points have increased! + EXP_FORCE_KILL_SANDORIA = 7140, -- San d'Orian E.F. defeats beastmen hordes... Maintain current momentum. + BEASTMEN_BANNER_CURSE = 7151, -- There was a curse on the beastmen's banner! + BEASTMEN_BANNER_LIFTED = 7152, -- The curse of the beastmen's banner has been lifted! BEASTMEN_BANNER = 7153, -- There is a beastmen's banner. CONQUEST = 7240, -- You've earned conquest points! FISHING_MESSAGE_OFFSET = 7573, -- You can't fish here. @@ -57,23 +61,36 @@ zones[xi.zone.YUHTUNGA_JUNGLE] = }, mob = { - BAYAWAK = GetFirstID('Bayawak'), - CARTHI = GetFirstID('Carthi'), - MISCHIEVOUS_MICHOLAS = GetFirstID('Mischievous_Micholas'), - NASUS_OFFSET = GetFirstID('Nasus'), - TIPHA = GetFirstID('Tipha'), - ROSE_GARDEN = GetFirstID('Rose_Garden'), - SIREN = GetFirstID('Siren'), - VOLUPTUOUS_VILMA = GetFirstID('Voluptuous_Vilma'), + BAYAWAK = GetFirstID('Bayawak'), + CARTHI = GetFirstID('Carthi'), + DEMISAHAGIN_BARD = GetFirstID('Demisahagin_Bard'), + DEMISAHAGIN_DRAGOON = GetFirstID('Demisahagin_Dragoon'), + DEMISAHAGIN_MONK = GetFirstID('Demisahagin_Monk'), + DEMISAHAGIN_WHITE_MAGE = GetFirstID('Demishagin_White_Mage'), -- Demishagin name typo is retail accurate + HOBGOBLIN_BEASTMASTER = GetFirstID('Hobgoblin_Beastmaster'), + HOBGOBLIN_BLACK_MAGE = GetFirstID('Hobgoblin_Black_Mage'), + HOBGOBLIN_DARK_KNIGHT = GetFirstID('Hobgoblin_Dark_Knight'), + HOBGOBLIN_RANGER = GetFirstID('Hobgoblin_Ranger'), + HOBGOBLIN_RED_MAGE = GetFirstID('Hobgoblin_Red_Mage'), + HOBGOBLIN_THIEF = GetFirstID('Hobgoblin_Thief'), + HOBGOBLIN_WARRIOR = GetFirstID('Hobgoblin_Warrior'), + HOBGOBLIN_WHITE_MAGE = GetFirstID('Hobgoblin_White_Mage'), + MISCHIEVOUS_MICHOLAS = GetFirstID('Mischievous_Micholas'), + NASUS_OFFSET = GetFirstID('Nasus'), + ROSE_GARDEN = GetFirstID('Rose_Garden'), + SIREN = GetFirstID('Siren'), + TIPHA = GetFirstID('Tipha'), + VOLUPTUOUS_VILMA = GetFirstID('Voluptuous_Vilma'), }, npc = { + BEASTMENS_BANNER = GetFirstID('Beastmens_Banner'), + BEASTMEN_TREASURE_OFFSET = GetFirstID('qm3'), BLUE_RAFFLESIA_OFFSET = GetFirstID('Blue_Rafflesia'), - TUNING_OUT_QM = GetFirstID('qm2'), - OVERSEER_BASE = GetFirstID('Zorchorevi_RK'), CERMET_HEADSTONE = GetFirstID('Cermet_Headstone'), + OVERSEER_BASE = GetFirstID('Zorchorevi_RK'), PEDDLESTOX = GetFirstID('Peddlestox'), - BEASTMEN_TREASURE_OFFSET = GetFirstID('qm3'), + TUNING_OUT_QM = GetFirstID('qm2'), HARVESTING = GetTableOfIDs('Harvesting_Point'), LOGGING = GetTableOfIDs('Logging_Point'),