diff --git a/scripts/battlefields/Boneyard_Gully/head_wind.lua b/scripts/battlefields/Boneyard_Gully/head_wind.lua index ae659f26965..281b1ebed54 100644 --- a/scripts/battlefields/Boneyard_Gully/head_wind.lua +++ b/scripts/battlefields/Boneyard_Gully/head_wind.lua @@ -35,29 +35,38 @@ content.groups = boneyardGullyID.mob.SHIKAREE_Z, boneyardGullyID.mob.SHIKAREE_Z + 1, boneyardGullyID.mob.SHIKAREE_Z + 2, - boneyardGullyID.mob.SHIKAREE_Z + 4, }, { boneyardGullyID.mob.SHIKAREE_Z + 5, boneyardGullyID.mob.SHIKAREE_Z + 6, boneyardGullyID.mob.SHIKAREE_Z + 7, - boneyardGullyID.mob.SHIKAREE_Z + 9, }, { boneyardGullyID.mob.SHIKAREE_Z + 10, boneyardGullyID.mob.SHIKAREE_Z + 11, boneyardGullyID.mob.SHIKAREE_Z + 12, - boneyardGullyID.mob.SHIKAREE_Z + 14, }, }, - allDeath = function(battlefield, mob) + superlinkGroup = 1, + allDeath = function(battlefield, mob) battlefield:setStatus(xi.battlefield.status.WON) end, }, + { + mobIds = + { + { boneyardGullyID.mob.SHIKAREE_Z + 4 }, + { boneyardGullyID.mob.SHIKAREE_Z + 9, }, + { boneyardGullyID.mob.SHIKAREE_Z + 14, }, + }, + + superlinkGroup = 1, + }, + -- NOTE: Rabbit is spawned on start, but wyvern is a result of an on engage action. { mobIds = @@ -67,7 +76,8 @@ content.groups = { boneyardGullyID.mob.SHIKAREE_Z + 13 }, }, - spawned = false, + superlinkGroup = 1, + spawned = false, }, } diff --git a/scripts/battlefields/Boneyard_Gully/like_the_wind.lua b/scripts/battlefields/Boneyard_Gully/like_the_wind.lua index e054306e288..265f4599cdc 100644 --- a/scripts/battlefields/Boneyard_Gully/like_the_wind.lua +++ b/scripts/battlefields/Boneyard_Gully/like_the_wind.lua @@ -3,8 +3,6 @@ -- Boneyard Gully ENM, Miasma Filter -- !addkeyitem MIASMA_FILTER ----------------------------------- -local boneyardGullyID = zones[xi.zone.BONEYARD_GULLY] ------------------------------------ local content = Battlefield:new({ zoneId = xi.zone.BONEYARD_GULLY, diff --git a/scripts/battlefields/Boneyard_Gully/sheep_in_antlions_clothing.lua b/scripts/battlefields/Boneyard_Gully/sheep_in_antlions_clothing.lua new file mode 100644 index 00000000000..2323d17a932 --- /dev/null +++ b/scripts/battlefields/Boneyard_Gully/sheep_in_antlions_clothing.lua @@ -0,0 +1,151 @@ +----------------------------------- +-- Sheep in Antlion's Clothing +-- Boneyard Gully ENM, Miasma Filter +-- !addkeyitem MIASMA_FILTER +----------------------------------- +local boneyardGullyID = zones[xi.zone.BONEYARD_GULLY] +----------------------------------- + +local content = Battlefield:new({ + zoneId = xi.zone.BONEYARD_GULLY, + battlefieldId = xi.battlefield.id.SHEEP_IN_ANTLIONS_CLOTHING, + maxPlayers = 18, + levelCap = 75, + timeLimit = utils.minutes(15), + index = 2, + entryNpc = '_081', + exitNpcs = { '_082', '_084', '_086' }, + requiredKeyItems = { xi.ki.MIASMA_FILTER }, + armouryCrates = + { + boneyardGullyID.mob.TUCHULCHA + 4, + boneyardGullyID.mob.TUCHULCHA + 9, + boneyardGullyID.mob.TUCHULCHA + 14, + }, + + grantXP = 2500, +}) + +-- TODO: Tuchulcha mob script needs refactoring, and a common method +-- to store these IDs without duplicated code (and _not_ in IDs.lua) is +-- needed. + +local antlionPositions = +{ + [1] = + { + { -517, 0, -521, 171 }, + { -534, 0, -460, 171 }, + { -552, 2.2, -440, 171 }, + { -572, -3.6, -464, 171 }, + { -573, 2.2, -427, 171 }, + { -562, 0, -484, 171 }, + { -593, 0, -480, 171 }, + { -610, -1.5, -490, 171 }, + }, + + [2] = + { + { 43, 0, 40, 7 }, + { 26, 0, 100, 7 }, + { 7, 2.2, 118, 7 }, + { -13, -3.6, 95, 7 }, + { -13, 2.2, 133, 7 }, + { -2.3, 0, 76, 7 }, + { -33, 0, 79, 7 }, + { -54, -1.5, 67, 7 }, + }, + + [3] = + { + { 522, 0, 521, 240 }, + { 506, 0, 580, 240 }, + { 466, 2.2, 614, 240 }, + { 467, -3.6, 57, 240 }, + { 488, 2.2, 598, 240 }, + { 478, 0, 557, 240 }, + { 446, 0, 558, 240 }, + { 430, -1.5, 550, 240 }, + }, +} + +function content:setupBattlefield(battlefield) + local battlefieldArea = battlefield:getArea() + local selectedPositions = utils.permgen(#antlionPositions[battlefieldArea]) + + -- Set the Hunter Spawn locations + for mobNum = 1, 3 do + GetMobByID(content.groups[2].mobIds[battlefieldArea][mobNum]):setPos(antlionPositions[battlefieldArea][selectedPositions[mobNum]]) + end + + -- Select Tuchulcha's sandpit positions + local tuchulcha = GetMobByID(content.groups[1].mobIds[battlefieldArea][1]) + tuchulcha:setLocalVar('sand_pit1', selectedPositions[4]) + tuchulcha:setLocalVar('sand_pit2', selectedPositions[5]) + tuchulcha:setLocalVar('sand_pit3', selectedPositions[6]) + tuchulcha:setPos(antlionPositions[battlefieldArea][selectedPositions[7]]) +end + +content.groups = +{ + { + mobIds = + { + { boneyardGullyID.mob.TUCHULCHA }, + { boneyardGullyID.mob.TUCHULCHA + 4 }, + { boneyardGullyID.mob.TUCHULCHA + 8 }, + }, + + superlink = false, + allDeath = utils.bind(content.handleAllMonstersDefeated, content), + }, + + { + mobIds = + { + { + boneyardGullyID.mob.TUCHULCHA + 1, + boneyardGullyID.mob.TUCHULCHA + 2, + boneyardGullyID.mob.TUCHULCHA + 3, + }, + + { + boneyardGullyID.mob.TUCHULCHA + 5, + boneyardGullyID.mob.TUCHULCHA + 6, + boneyardGullyID.mob.TUCHULCHA + 7, + }, + + { + boneyardGullyID.mob.TUCHULCHA + 9, + boneyardGullyID.mob.TUCHULCHA + 10, + boneyardGullyID.mob.TUCHULCHA + 11, + }, + }, + + superlink = false, + }, +} + +content.loot = +{ + { + { item = xi.item.SQUARE_OF_GALATEIA, weight = 268 }, -- Square of Galateia (26.8% Drop Rate) + { item = xi.item.SQUARE_OF_KEJUSU_SATIN, weight = 266 }, -- Kejusu Satin + { item = xi.item.POT_OF_VIRIDIAN_URUSHI, weight = 342 }, -- Viridian Urushi + }, + + { + { item = xi.item.NONE, weight = 944 }, -- nothing + { item = xi.item.CLOUD_EVOKER, weight = 56 }, -- Cloud Evoker + }, + + { + { item = xi.item.HAGUN, weight = 82 }, -- Hagun + { item = xi.item.MARTIAL_AXE, weight = 92 }, -- Martial Axe + { item = xi.item.MARTIAL_WAND, weight = 63 }, -- Martial Wand + { item = xi.item.FORAGERS_MANTLE, weight = 105 }, -- Forager's Mantle + { item = xi.item.HARMONIAS_TORQUE, weight = 121 }, -- Harmonia's Torque + }, +} + +return content:register() diff --git a/scripts/battlefields/Boneyard_Gully/shell_we_dance.lua b/scripts/battlefields/Boneyard_Gully/shell_we_dance.lua index 025810099ce..807ab1811f1 100644 --- a/scripts/battlefields/Boneyard_Gully/shell_we_dance.lua +++ b/scripts/battlefields/Boneyard_Gully/shell_we_dance.lua @@ -16,6 +16,12 @@ local content = Battlefield:new({ entryNpc = '_081', exitNpcs = { '_082', '_084', '_086' }, requiredKeyItems = { xi.ki.MIASMA_FILTER }, + armouryCrates = + { + boneyardGullyID.mob.PARATA + 8, + boneyardGullyID.mob.PARATA + 17, + boneyardGullyID.mob.PARATA + 26, + }, grantXP = 2000, diff --git a/scripts/battlefields/Full_Moon_Fountain/moon_reading.lua b/scripts/battlefields/Full_Moon_Fountain/moon_reading.lua index 7fa050a0222..35e87b8ab67 100644 --- a/scripts/battlefields/Full_Moon_Fountain/moon_reading.lua +++ b/scripts/battlefields/Full_Moon_Fountain/moon_reading.lua @@ -24,16 +24,16 @@ local content = BattlefieldMission:new({ function content:onEventFinishBattlefield(player, csid, option, npc) local playerCoords = { - [1] = { -400, -201, 419, 61 }, - [2] = { 0, -1, 10, 61 }, - [3] = { 399, 198, -381, 57 }, + [1] = { 340.220, 48.557, -386.114, 190 }, + [2] = { -59.877, 10.577, 13.853, 190 }, + [3] = { -459.974, -51.423, 373.86, 190 }, } local ajidoCoords = { - [1] = { -403, -201, 413, 58 }, - [2] = { -3, -1, 4, 61 }, - [3] = { 397, 198, -395, 64 }, + [1] = { 340.117, 48.752, -383.747, 64 }, + [2] = { -59.98, 10.752, 16.22, 64 }, + [3] = { -379.826, -51.248, 376.227, 64 }, } local battlefield = player:getBattlefield() diff --git a/scripts/battlefields/Ghelsba_Outpost/holy_crest.lua b/scripts/battlefields/Ghelsba_Outpost/holy_crest.lua index 119d8d9a09e..8675f891d50 100644 --- a/scripts/battlefields/Ghelsba_Outpost/holy_crest.lua +++ b/scripts/battlefields/Ghelsba_Outpost/holy_crest.lua @@ -34,7 +34,7 @@ function content:onEventFinishWin(player, csid, option, npc) player:delKeyItem(xi.ki.DRAGON_CURSE_REMEDY) player:unlockJob(xi.job.DRG) - player:messageSpecial(ID.text.YOU_CAN_NOW_BECOME_A_DRAGOON) + player:messageSpecial(ghelsbaID.text.YOU_CAN_NOW_BECOME_A_DRAGOON) player:setPetName(xi.petType.WYVERN, option + 1) end end diff --git a/scripts/battlefields/Ghelsba_Outpost/petrifying_pair.lua b/scripts/battlefields/Ghelsba_Outpost/petrifying_pair.lua index d8daf34510a..509e9ccd4b2 100644 --- a/scripts/battlefields/Ghelsba_Outpost/petrifying_pair.lua +++ b/scripts/battlefields/Ghelsba_Outpost/petrifying_pair.lua @@ -16,6 +16,10 @@ local content = Battlefield:new({ area = 1, entryNpc = 'Hut_Door', requiredItems = { xi.item.SKY_ORB, wearMessage = ghelsbaID.text.A_CRACK_HAS_FORMED, wornMessage = ghelsbaID.text.ORB_IS_CRACKED }, + armouryCrates = + { + ghelsbaID.mob.KALAMAINU + 2, + }, }) content:addEssentialMobs({ 'Kalamainu', 'Kilioa' }) diff --git a/scripts/battlefields/Ghelsba_Outpost/toadal_recall.lua b/scripts/battlefields/Ghelsba_Outpost/toadal_recall.lua index b3ff9362632..f6352310e16 100644 --- a/scripts/battlefields/Ghelsba_Outpost/toadal_recall.lua +++ b/scripts/battlefields/Ghelsba_Outpost/toadal_recall.lua @@ -16,6 +16,10 @@ local content = Battlefield:new({ area = 1, entryNpc = 'Hut_Door', requiredItems = { xi.item.SKY_ORB, wearMessage = ghelsbaID.text.A_CRACK_HAS_FORMED, wornMessage = ghelsbaID.text.ORB_IS_CRACKED }, + armouryCrates = + { + ghelsbaID.mob.TOADPILLOW + 4, + }, }) -- TODO: Shroom-in-Cap Mechanic diff --git a/scripts/battlefields/Ghelsba_Outpost/wings_of_fury.lua b/scripts/battlefields/Ghelsba_Outpost/wings_of_fury.lua index d9c69e80ed0..14005b6cf08 100644 --- a/scripts/battlefields/Ghelsba_Outpost/wings_of_fury.lua +++ b/scripts/battlefields/Ghelsba_Outpost/wings_of_fury.lua @@ -16,6 +16,10 @@ local content = Battlefield:new({ area = 1, entryNpc = 'Hut_Door', requiredItems = { xi.item.CLOUDY_ORB, wearMessage = ghelsbaID.text.A_CRACK_HAS_FORMED, wornMessage = ghelsbaID.text.ORB_IS_CRACKED }, + armouryCrates = + { + ghelsbaID.mob.COLO_COLO + 3, + }, }) -- TODO: MobSkills Slipstream and Turbulence need to be implemented/applied. diff --git a/scripts/battlefields/The_Garden_of_RuHmet/when_angels_fall.lua b/scripts/battlefields/The_Garden_of_RuHmet/when_angels_fall.lua index 9140396f1da..d6e6804ca4f 100644 --- a/scripts/battlefields/The_Garden_of_RuHmet/when_angels_fall.lua +++ b/scripts/battlefields/The_Garden_of_RuHmet/when_angels_fall.lua @@ -45,7 +45,8 @@ content.groups = ruHmetID.mob.IXZDEI_RDM + 3, }, - allDeath = function(battlefield, mob) + superlink = true, + allDeath = function(battlefield, mob) battlefield:setStatus(xi.battlefield.status.WON) end, }, diff --git a/scripts/globals/battlefield.lua b/scripts/globals/battlefield.lua index 3919f19867b..ca98be6c417 100644 --- a/scripts/globals/battlefield.lua +++ b/scripts/globals/battlefield.lua @@ -273,7 +273,7 @@ xi.battlefield.id = HOLY_COW = 644, -- Converted HEAD_WIND = 672, -- Converted LIKE_THE_WIND = 673, -- Experimental - SHEEP_IN_ANTLIONS_CLOTHING = 674, + SHEEP_IN_ANTLIONS_CLOTHING = 674, -- Converted SHELL_WE_DANCE = 675, -- Experimental TOTENTANZ = 676, TANGO_WITH_A_TRACKER = 677, diff --git a/scripts/globals/bcnm.lua b/scripts/globals/bcnm.lua index 19cd5daa645..e1e21811139 100644 --- a/scripts/globals/bcnm.lua +++ b/scripts/globals/bcnm.lua @@ -10,11 +10,6 @@ xi.bcnm = xi.bcnm or {} local battlefields = { - [xi.zone.BONEYARD_GULLY] = - { - { 2, 674, 0 }, -- Sheep in Antlion's Clothing (ENM) - }, - [xi.zone.THE_SHROUDED_MAW] = { { 0, 704, 0 }, -- Darkness Named (PM3-5) @@ -49,10 +44,6 @@ local function checkReqs(player, npc, bfid, registrant) -- Requirements to register a battlefield local registerReqs = { - [674] = function() -- ENM: Sheep in Antlion's Clothing - return player:hasKeyItem(xi.ki.MIASMA_FILTER) - end, - [704] = function() -- PM3-5: Darkness Named return promathiaMission == xi.mission.id.cop.DARKNESS_NAMED and player:getCharVar('Mission[6][358]Status') == 4 @@ -90,10 +81,6 @@ local function checkReqs(player, npc, bfid, registrant) return npc:getXPos() > -721 and npc:getXPos() < 719 end, - [674] = function() -- ENM: Sheep in Antlion's Clothing - return player:hasKeyItem(xi.ki.MIASMA_FILTER) - end, - [1057] = function() -- Quest: Apocalypse Nigh return player:hasCompletedQuest(xi.questLog.JEUNO, xi.quest.id.jeuno.APOCALYPSE_NIGH) or ( diff --git a/scripts/zones/Boneyard_Gully/IDs.lua b/scripts/zones/Boneyard_Gully/IDs.lua index d209e27e6d6..c9a17a1c95a 100644 --- a/scripts/zones/Boneyard_Gully/IDs.lua +++ b/scripts/zones/Boneyard_Gully/IDs.lua @@ -31,73 +31,15 @@ zones[xi.zone.BONEYARD_GULLY] = }, mob = { + PARATA = GetFirstID('Parata'), SHIKAREE_Z = GetFirstID('Shikaree_Z'), + TUCHULCHA = GetFirstID('Tuchulcha'), }, npc = { }, - sheepInAntlionsClothing = - { - [1] = - { - TUCHULCHA_ID = 16810001, - SWIFT_HUNTER_ID = 16810002, - SHREWD_HUNTER_ID = 16810003, - ARMORED_HUNTER_ID = 16810004, - -- List of positions used to set - -- (1) Tuchulcha's location after using sand pit - -- (2) The starting position of the hunters - ant_positions = - { - { -517, 0, -521, 171 }, - { -534, 0, -460, 171 }, - { -552, 2.2, -440, 171 }, - { -572, -3.6, -464, 171 }, - { -573, 2.2, -427, 171 }, - { -562, 0, -484, 171 }, - { -593, 0, -480, 171 }, - { -610, -1.5, -490, 171 }, - }, - }, - [2] = - { - TUCHULCHA_ID = 16810007, - SWIFT_HUNTER_ID = 16810008, - SHREWD_HUNTER_ID = 16810009, - ARMORED_HUNTER_ID = 16810010, - ant_positions = - { - { 43, 0, 40, 7 }, - { 26, 0, 100, 7 }, - { 7, 2.2, 118, 7 }, - { -13, -3.6, 95, 7 }, - { -13, 2.2, 133, 7 }, - { -2.3, 0, 76, 7 }, - { -33, 0, 79, 7 }, - { -54, -1.5, 67, 7 }, - }, - }, - [3] = - { - TUCHULCHA_ID = 16810013, - SWIFT_HUNTER_ID = 16810014, - SHREWD_HUNTER_ID = 16810015, - ARMORED_HUNTER_ID = 16810016, - ant_positions = - { - { 522, 0, 521, 240 }, - { 506, 0, 580, 240 }, - { 466, 2.2, 614, 240 }, - { 467, -3.6, 57, 240 }, - { 488, 2.2, 598, 240 }, - { 478, 0, 557, 240 }, - { 446, 0, 558, 240 }, - { 430, -1.5, 550, 240 }, - }, - }, - }, shellWeDance = { [1] = diff --git a/scripts/zones/Boneyard_Gully/bcnms/sheep_in_antlions_clothing.lua b/scripts/zones/Boneyard_Gully/bcnms/sheep_in_antlions_clothing.lua deleted file mode 100644 index a7712437676..00000000000 --- a/scripts/zones/Boneyard_Gully/bcnms/sheep_in_antlions_clothing.lua +++ /dev/null @@ -1,63 +0,0 @@ ------------------------------------ --- Sheep in Antlion's Clothing --- Boneyard Gully ENM, Miasma Filter --- !addkeyitem MIASMA_FILTER ------------------------------------ -local ID = zones[xi.zone.BONEYARD_GULLY] ------------------------------------ -local battlefieldObject = {} - -battlefieldObject.onBattlefieldInitialise = function(battlefield) - battlefield:setLocalVar('loot', 1) - - -- Used to grab the mob IDs - local bfID = battlefield:getArea() - - -- Shuffle the possible coords to randomize antlion positions - local pos = utils.permgen(#ID.sheepInAntlionsClothing[bfID].ant_positions) - - -- Set the hunter spawn positions - GetMobByID(ID.sheepInAntlionsClothing[bfID].SWIFT_HUNTER_ID):setPos(ID.sheepInAntlionsClothing[bfID].ant_positions[pos[1]]) -- Swift Hunter - GetMobByID(ID.sheepInAntlionsClothing[bfID].SHREWD_HUNTER_ID):setPos(ID.sheepInAntlionsClothing[bfID].ant_positions[pos[2]]) -- Shrewd Hunter - GetMobByID(ID.sheepInAntlionsClothing[bfID].ARMORED_HUNTER_ID):setPos(ID.sheepInAntlionsClothing[bfID].ant_positions[pos[3]]) -- Armored Hunter - - -- Select Tuchulcha's sandpit positions - local tuchulcha = GetMobByID(ID.sheepInAntlionsClothing[bfID].TUCHULCHA_ID) - tuchulcha:setLocalVar('sand_pit1', pos[4]) - tuchulcha:setLocalVar('sand_pit2', pos[5]) - tuchulcha:setLocalVar('sand_pit3', pos[6]) - tuchulcha:setPos(ID.sheepInAntlionsClothing[bfID].ant_positions[pos[7]]) -- set his initial position randomly -end - -battlefieldObject.onBattlefieldTick = function(battlefield, tick) - xi.battlefield.onBattlefieldTick(battlefield, tick) -end - -battlefieldObject.onBattlefieldRegister = function(player, battlefield) -end - -battlefieldObject.onBattlefieldEnter = function(player, battlefield) - if player:hasKeyItem(xi.ki.MIASMA_FILTER) then - player:delKeyItem(xi.ki.MIASMA_FILTER) - end -end - -battlefieldObject.onBattlefieldLeave = function(player, battlefield, leavecode) - if leavecode == xi.battlefield.leaveCode.WON then - local _, clearTime, partySize = battlefield:getRecord() - player:startEvent(32001, battlefield:getArea(), clearTime, partySize, battlefield:getTimeInside(), 1, battlefield:getLocalVar('[cs]bit'), 0) - elseif leavecode == xi.battlefield.leaveCode.LOST then - player:startEvent(32002) - end -end - -battlefieldObject.onEventUpdate = function(player, csid, option, npc) -end - -battlefieldObject.onEventFinish = function(player, csid, option, npc) - if csid == 32001 then - player:addExp(2500) - end -end - -return battlefieldObject diff --git a/scripts/zones/Boneyard_Gully/mobs/Race_Runner.lua b/scripts/zones/Boneyard_Gully/mobs/Race_Runner.lua index 4d6772bc111..cf04af0b226 100644 --- a/scripts/zones/Boneyard_Gully/mobs/Race_Runner.lua +++ b/scripts/zones/Boneyard_Gully/mobs/Race_Runner.lua @@ -7,17 +7,16 @@ local entity = {} local pathNodes = { - { x = -539, y = 0, z = -481 }, - { x = -556, y = 0, z = -478 }, - { x = -581, y = 0, z = -475 }, + { x = -539, y = 0, z = -481 }, + { x = -556, y = 0, z = -478 }, + { x = -581, y = 0, z = -475 }, { x = -579, y = -3, z = -460 }, - { x = -572, y = 2, z = -433 }, - { x = -545, y = 1, z = -440 }, - { x = -532, y = 0, z = -466 }, + { x = -572, y = 2, z = -433 }, + { x = -545, y = 1, z = -440 }, + { x = -532, y = 0, z = -466 }, } entity.onMobSpawn = function(mob) - entity.onMobRoam(mob) mob:pathThrough(pathNodes, bit.bor(xi.path.flag.PATROL, xi.path.flag.REVERSE)) end diff --git a/scripts/zones/Boneyard_Gully/mobs/Tuchulcha.lua b/scripts/zones/Boneyard_Gully/mobs/Tuchulcha.lua index 9c12f0aece3..7516a8ccd8a 100644 --- a/scripts/zones/Boneyard_Gully/mobs/Tuchulcha.lua +++ b/scripts/zones/Boneyard_Gully/mobs/Tuchulcha.lua @@ -9,6 +9,44 @@ local ID = zones[xi.zone.BONEYARD_GULLY] local entity = {} local sandpitID = 276 +local antlionPositions = +{ + [1] = + { + { -517, 0, -521, 171 }, + { -534, 0, -460, 171 }, + { -552, 2.2, -440, 171 }, + { -572, -3.6, -464, 171 }, + { -573, 2.2, -427, 171 }, + { -562, 0, -484, 171 }, + { -593, 0, -480, 171 }, + { -610, -1.5, -490, 171 }, + }, + + [2] = + { + { 43, 0, 40, 7 }, + { 26, 0, 100, 7 }, + { 7, 2.2, 118, 7 }, + { -13, -3.6, 95, 7 }, + { -13, 2.2, 133, 7 }, + { -2.3, 0, 76, 7 }, + { -33, 0, 79, 7 }, + { -54, -1.5, 67, 7 }, + }, + + [3] = + { + { 522, 0, 521, 240 }, + { 506, 0, 580, 240 }, + { 466, 2.2, 614, 240 }, + { 467, -3.6, 57, 240 }, + { 488, 2.2, 598, 240 }, + { 478, 0, 557, 240 }, + { 446, 0, 558, 240 }, + { 430, -1.5, 550, 240 }, + }, +} entity.onMobSpawn = function(mob) -- Aggros via ambush, not superlinking @@ -23,7 +61,7 @@ entity.onMobSpawn = function(mob) tuchulcha:setMobMod(xi.mobMod.NO_MOVE, 1) tuchulcha:setMobMod(xi.mobMod.NO_REST, 1) local posIndex = tuchulcha:getLocalVar('sand_pit' .. tuchulcha:getLocalVar('Sandpits')) - local coords = ID.sheepInAntlionsClothing[tuchulcha:getBattlefield():getArea()].ant_positions[posIndex] + local coords = antlionPositions[tuchulcha:getBattlefield():getArea()][posIndex] local players = tuchulcha:getBattlefield():getPlayers() for _, char in pairs(players) do char:messageSpecial(ID.text.TUCHULCHA_SANDPIT) @@ -71,10 +109,10 @@ entity.onMobDeath = function(mob, player, optParams) -- Used to grab the mob IDs -- Despawn the hunters if optParams.isKiller then - local bfID = mob:getBattlefield():getArea() - DespawnMob(ID.sheepInAntlionsClothing[bfID].SWIFT_HUNTER_ID) - DespawnMob(ID.sheepInAntlionsClothing[bfID].SHREWD_HUNTER_ID) - DespawnMob(ID.sheepInAntlionsClothing[bfID].ARMORED_HUNTER_ID) + local mobOffset = mob:getID() + for hunterMobId = mobOffset + 1, mobOffset + 3 do + DespawnMob(hunterMobId) + end end end diff --git a/scripts/zones/Boneyard_Gully/npcs/Armoury_Crate.lua b/scripts/zones/Boneyard_Gully/npcs/Armoury_Crate.lua index 0cc2db666ed..dd56814175d 100644 --- a/scripts/zones/Boneyard_Gully/npcs/Armoury_Crate.lua +++ b/scripts/zones/Boneyard_Gully/npcs/Armoury_Crate.lua @@ -4,40 +4,10 @@ ----------------------------------- local entity = {} -local loot = -{ - -- ENM: Sheep in Antlion's Clothing - [674] = - { - { - { itemid = xi.item.SQUARE_OF_GALATEIA, droprate = 268 }, -- Square of Galateia (26.8% Drop Rate) - { itemid = xi.item.SQUARE_OF_KEJUSU_SATIN, droprate = 266 }, -- Kejusu Satin - { itemid = xi.item.POT_OF_VIRIDIAN_URUSHI, droprate = 342 }, -- Viridian Urushi - }, - - { - { itemid = xi.item.NONE, droprate = 944 }, -- nothing - { itemid = xi.item.CLOUD_EVOKER, droprate = 56 }, -- Cloud Evoker - }, - - { - { itemid = xi.item.HAGUN, droprate = 82 }, -- Hagun - { itemid = xi.item.MARTIAL_AXE, droprate = 92 }, -- Martial Axe - { itemid = xi.item.MARTIAL_WAND, droprate = 63 }, -- Martial Wand - { itemid = xi.item.FORAGERS_MANTLE, droprate = 105 }, -- Forager's Mantle - { itemid = xi.item.HARMONIAS_TORQUE, droprate = 121 }, -- Harmonia's Torque - }, - }, -} - entity.onTrade = function(player, npc, trade) end entity.onTrigger = function(player, npc) - local battlefield = player:getBattlefield() - if battlefield then - xi.battlefield.HandleLootRolls(battlefield, loot[battlefield:getID()], nil, npc) - end end entity.onEventUpdate = function(player, csid, option, npc) diff --git a/scripts/zones/Ghelsba_Outpost/IDs.lua b/scripts/zones/Ghelsba_Outpost/IDs.lua index 048f6746e5a..a336c05fc27 100644 --- a/scripts/zones/Ghelsba_Outpost/IDs.lua +++ b/scripts/zones/Ghelsba_Outpost/IDs.lua @@ -38,9 +38,12 @@ zones[xi.zone.GHELSBA_OUTPOST] = mob = { CARRION_DRAGON = GetFirstID('Carrion_Dragon'), + COLO_COLO = GetFirstID('Colo-colo'), CYRANUCE_M_CUTAULEON = GetFirstID('Cyranuce_M_Cutauleon'), FODDERCHIEF_VOKDEK = GetFirstID('Fodderchief_Vokdek'), + KALAMAINU = GetFirstID('Kalamainu'), THOUSANDARM_DESHGLESH = GetFirstID('Thousandarm_Deshglesh'), + TOADPILLOW = GetFirstID('Toadpillow'), }, npc = {