From 6f3b7df14ea9dd6f18e00cc19bab9688526de448 Mon Sep 17 00:00:00 2001 From: Xaver-DaRed Date: Fri, 6 Feb 2026 18:09:49 +0100 Subject: [PATCH] Add player check to all mobs that grant a title in onMobDeath And some cleanup --- scripts/zones/Abyssea-Altepa/mobs/Rani.lua | 4 +- .../Abyssea-Konschtat/mobs/Eccentric_Eve.lua | 4 +- .../zones/Abyssea-Konschtat/mobs/Fistule.lua | 2 +- .../zones/Abyssea-Konschtat/mobs/Kukulkan.lua | 4 +- .../zones/Abyssea-Konschtat/mobs/Turul.lua | 4 +- .../zones/Abyssea-La_Theine/mobs/Briareus.lua | 4 +- .../zones/Abyssea-Tahrongi/mobs/Iratham.lua | 4 +- scripts/zones/Abyssea-Vunkerl/mobs/Sippoy.lua | 4 +- .../Alzadaal_Undersea_Ruins/mobs/Oupire.lua | 6 +- scripts/zones/Arrapago_Reef/mobs/Medusa.lua | 56 ++++++++----------- .../mobs/Armored_Chariot.lua | 4 +- scripts/zones/Attohwa_Chasm/mobs/Tiamat.lua | 4 +- .../zones/Batallia_Downs/mobs/Verthandi.lua | 8 ++- .../zones/Batallia_Downs/mobs/Yilbegan.lua | 8 ++- .../Batallia_Downs_[S]/mobs/Sandworm.lua | 4 +- .../Batallia_Downs_[S]/mobs/Verthandi.lua | 8 ++- .../Batallia_Downs_[S]/mobs/Yilbegan.lua | 8 ++- .../Beaucedine_Glacier/mobs/Lord_Ruthven.lua | 8 ++- .../Beaucedine_Glacier/mobs/Yilbegan.lua | 8 ++- .../mobs/Lord_Ruthven.lua | 8 ++- .../Beaucedine_Glacier_[S]/mobs/Yilbegan.lua | 8 ++- .../Behemoths_Dominion/mobs/Behemoth.lua | 4 +- .../Behemoths_Dominion/mobs/King_Behemoth.lua | 4 +- .../mobs/Long-Bowed_Chariot.lua | 5 +- scripts/zones/Caedarva_Mire/mobs/Khimaira.lua | 12 ++-- .../mobs/Tzee_Xicu_the_Manifest.lua | 7 ++- .../Castle_Zvahl_Keep/mobs/Baron_Vapula.lua | 8 ++- .../Castle_Zvahl_Keep/mobs/Baronet_Romwe.lua | 10 ++-- .../Castle_Zvahl_Keep/mobs/Count_Bifrons.lua | 8 ++- .../Castle_Zvahl_Keep/mobs/Viscount_Morax.lua | 9 ++- .../zones/Crawlers_Nest/mobs/Awd_Goggie.lua | 4 +- scripts/zones/Dragons_Aery/mobs/Fafnir.lua | 4 +- scripts/zones/Dragons_Aery/mobs/Nidhogg.lua | 4 +- .../Dynamis-Tavnazia/mobs/Diabolos_Club.lua | 6 +- .../mobs/Diabolos_Diamond.lua | 6 +- .../Dynamis-Tavnazia/mobs/Diabolos_Heart.lua | 6 +- .../Dynamis-Tavnazia/mobs/Diabolos_Spade.lua | 6 +- .../Dynamis-Xarcabard/mobs/Dynamis_Lord.lua | 9 ++- .../zones/East_Ronfaure/mobs/Krabkatoa.lua | 8 ++- scripts/zones/East_Ronfaure/mobs/Yilbegan.lua | 8 ++- .../East_Ronfaure_[S]/mobs/Krabkatoa.lua | 8 ++- .../zones/East_Ronfaure_[S]/mobs/Sandworm.lua | 4 +- .../zones/East_Ronfaure_[S]/mobs/Yilbegan.lua | 8 ++- .../mobs/Cactrot_Rapido.lua | 4 +- .../Everbloom_Hollow/mobs/Lambton_Worm.lua | 4 +- .../zones/FeiYin/mobs/Capricious_Cassie.lua | 4 +- scripts/zones/FeiYin/mobs/Goliath.lua | 4 +- .../zones/Garlaige_Citadel/mobs/Serket.lua | 4 +- .../Garlaige_Citadel/mobs/Skewer_Sam.lua | 4 +- .../Ghelsba_Outpost/mobs/Warchief_Vatgit.lua | 4 +- .../Ghoyus_Reverie/mobs/Lambton_Worm.lua | 4 +- .../Halvung/mobs/Gurfurlur_the_Menacing.lua | 54 ++++++++---------- .../zones/Horlais_Peak/mobs/Dread_Dragon.lua | 4 +- .../zones/Ifrits_Cauldron/mobs/Ash_Dragon.lua | 4 +- .../zones/Jugner_Forest/mobs/Krabkatoa.lua | 8 ++- scripts/zones/Jugner_Forest/mobs/Yilbegan.lua | 8 ++- .../Jugner_Forest_[S]/mobs/Krabkatoa.lua | 8 ++- .../zones/Jugner_Forest_[S]/mobs/Yilbegan.lua | 8 ++- .../mobs/Cemetery_Cherry.lua | 11 +++- .../zones/King_Ranperres_Tomb/mobs/Vrtra.lua | 18 +++--- .../mobs/Steelfleece_Baldarich.lua | 6 +- .../Konschtat_Highlands/mobs/Stray_Mary.lua | 13 ++--- .../Konschtat_Highlands/mobs/Yilbegan.lua | 8 ++- .../mobs/Bloodtear_Baldurf.lua | 6 +- .../zones/La_Theine_Plateau/mobs/Yilbegan.lua | 8 ++- scripts/zones/Mamook/mobs/Gulool_Ja_Ja.lua | 54 ++++++++---------- .../Maze_of_Shakhrami/mobs/Ichorous_Ire.lua | 4 +- .../Meriphataud_Mountains/mobs/Orcus.lua | 8 ++- .../Meriphataud_Mountains/mobs/Yilbegan.lua | 8 ++- .../Meriphataud_Mountains_[S]/mobs/Orcus.lua | 8 ++- .../mobs/Sandworm.lua | 4 +- .../mobs/Yilbegan.lua | 8 ++- .../mobs/Overlord_Bakgodek.lua | 9 ++- scripts/zones/Mount_Zhayolm/mobs/Cerberus.lua | 14 +++-- .../zones/North_Gustaberg/mobs/Yilbegan.lua | 8 ++- .../North_Gustaberg_[S]/mobs/Sandworm.lua | 4 +- .../North_Gustaberg_[S]/mobs/Yilbegan.lua | 8 ++- .../zones/Ordelles_Caves/mobs/Morbolger.lua | 4 +- .../Pashhow_Marshlands/mobs/Yilbegan.lua | 8 ++- .../Pashhow_Marshlands_[S]/mobs/Yilbegan.lua | 8 ++- .../Qulun_Dome/mobs/ZaDha_Adamantking.lua | 15 +++-- .../zones/Ranguemont_Pass/mobs/Taisaijin.lua | 4 +- scripts/zones/Riverne-Site_A01/mobs/Ouryu.lua | 38 +++++++------ .../zones/Riverne-Site_B01/mobs/Boroka.lua | 5 +- .../zones/Rolanberry_Fields/mobs/Simurgh.lua | 4 +- .../Rolanberry_Fields/mobs/Verthandi.lua | 8 ++- .../zones/Rolanberry_Fields/mobs/Yilbegan.lua | 8 ++- .../Rolanberry_Fields_[S]/mobs/Sandworm.lua | 4 +- .../Rolanberry_Fields_[S]/mobs/Verthandi.lua | 8 ++- .../Rolanberry_Fields_[S]/mobs/Yilbegan.lua | 8 ++- .../Ruhotz_Silvermines/mobs/Lambton_Worm.lua | 4 +- .../zones/Sauromugue_Champaign/mobs/Roc.lua | 4 +- .../Sauromugue_Champaign/mobs/Verthandi.lua | 8 ++- .../Sauromugue_Champaign/mobs/Yilbegan.lua | 8 ++- .../mobs/Sandworm.lua | 4 +- .../mobs/Verthandi.lua | 8 ++- .../mobs/Yilbegan.lua | 8 ++- .../mobs/Long-Armed_Chariot.lua | 4 +- .../zones/Tahrongi_Canyon/mobs/Yilbegan.lua | 8 ++- .../mobs/Voluptuous_Vivian.lua | 15 +++-- .../mobs/Lich_C_Magnus.lua | 4 +- .../mobs/Skull_of_Envy.lua | 6 +- .../mobs/Skull_of_Gluttony.lua | 6 +- .../mobs/Skull_of_Greed.lua | 6 +- .../mobs/Skull_of_Lust.lua | 6 +- .../mobs/Skull_of_Pride.lua | 6 +- .../mobs/Skull_of_Sloth.lua | 6 +- .../mobs/Skull_of_Wrath.lua | 6 +- .../The_Shrine_of_RuAvitau/mobs/Kirin.lua | 6 +- .../Uleguerand_Range/mobs/Jormungand.lua | 27 ++++----- .../Valley_of_Sorrows/mobs/Adamantoise.lua | 21 ++++--- .../Valley_of_Sorrows/mobs/Aspidochelone.lua | 40 ++++++++----- scripts/zones/Wajaom_Woodlands/mobs/Hydra.lua | 4 +- .../Waughroon_Shrine/mobs/Dark_Dragon.lua | 4 +- .../zones/West_Sarutabaruta/mobs/Orcus.lua | 8 ++- .../zones/West_Sarutabaruta/mobs/Yilbegan.lua | 8 ++- .../West_Sarutabaruta_[S]/mobs/Orcus.lua | 8 ++- .../West_Sarutabaruta_[S]/mobs/Sandworm.lua | 4 +- .../West_Sarutabaruta_[S]/mobs/Yilbegan.lua | 8 ++- .../mobs/King_Vinegarroon.lua | 4 +- scripts/zones/Xarcabard/mobs/Lord_Ruthven.lua | 8 ++- scripts/zones/Xarcabard/mobs/Yilbegan.lua | 8 ++- .../zones/Xarcabard_[S]/mobs/Lord_Ruthven.lua | 8 ++- scripts/zones/Xarcabard_[S]/mobs/Yilbegan.lua | 8 ++- .../mobs/Battleclad_Chariot.lua | 5 +- 125 files changed, 648 insertions(+), 419 deletions(-) diff --git a/scripts/zones/Abyssea-Altepa/mobs/Rani.lua b/scripts/zones/Abyssea-Altepa/mobs/Rani.lua index 4d22184020a..c7396db7374 100644 --- a/scripts/zones/Abyssea-Altepa/mobs/Rani.lua +++ b/scripts/zones/Abyssea-Altepa/mobs/Rani.lua @@ -18,7 +18,9 @@ entity.onMobFight = function(mob, target) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.RANI_DECROWNER) + if player then + player:addTitle(xi.title.RANI_DECROWNER) + end end return entity diff --git a/scripts/zones/Abyssea-Konschtat/mobs/Eccentric_Eve.lua b/scripts/zones/Abyssea-Konschtat/mobs/Eccentric_Eve.lua index f5f270affb6..e0c9082a3c4 100644 --- a/scripts/zones/Abyssea-Konschtat/mobs/Eccentric_Eve.lua +++ b/scripts/zones/Abyssea-Konschtat/mobs/Eccentric_Eve.lua @@ -6,7 +6,9 @@ local entity = {} entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.ECCENTRICITY_EXPUNGER) + if player then + player:addTitle(xi.title.ECCENTRICITY_EXPUNGER) + end end return entity diff --git a/scripts/zones/Abyssea-Konschtat/mobs/Fistule.lua b/scripts/zones/Abyssea-Konschtat/mobs/Fistule.lua index 21b00096a40..5ad00310ec5 100644 --- a/scripts/zones/Abyssea-Konschtat/mobs/Fistule.lua +++ b/scripts/zones/Abyssea-Konschtat/mobs/Fistule.lua @@ -54,7 +54,7 @@ entity.onMobRoam = function(mob) end entity.onMobDeath = function(mob, player, isKiller) - if player ~= nil and not player:hasTitle(xi.title.FISTULE_DRAINER) then + if player then player:addTitle(xi.title.FISTULE_DRAINER) end end diff --git a/scripts/zones/Abyssea-Konschtat/mobs/Kukulkan.lua b/scripts/zones/Abyssea-Konschtat/mobs/Kukulkan.lua index 5dd7025310d..2253642228a 100644 --- a/scripts/zones/Abyssea-Konschtat/mobs/Kukulkan.lua +++ b/scripts/zones/Abyssea-Konschtat/mobs/Kukulkan.lua @@ -8,7 +8,9 @@ mixins = { require('scripts/mixins/families/peiste') } local entity = {} entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.KUKULKAN_DEFANGER) + if player then + player:addTitle(xi.title.KUKULKAN_DEFANGER) + end end return entity diff --git a/scripts/zones/Abyssea-Konschtat/mobs/Turul.lua b/scripts/zones/Abyssea-Konschtat/mobs/Turul.lua index ecc43034eac..ec5cd8f9c9a 100644 --- a/scripts/zones/Abyssea-Konschtat/mobs/Turul.lua +++ b/scripts/zones/Abyssea-Konschtat/mobs/Turul.lua @@ -29,7 +29,9 @@ entity.onSpellPrecast = function(mob, spell) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.TURUL_GROUNDER) + if player then + player:addTitle(xi.title.TURUL_GROUNDER) + end end return entity diff --git a/scripts/zones/Abyssea-La_Theine/mobs/Briareus.lua b/scripts/zones/Abyssea-La_Theine/mobs/Briareus.lua index 8ba46fb2351..3bd78454ae7 100644 --- a/scripts/zones/Abyssea-La_Theine/mobs/Briareus.lua +++ b/scripts/zones/Abyssea-La_Theine/mobs/Briareus.lua @@ -60,7 +60,9 @@ entity.onMobMobskillChoose = function(mob, target, skillId) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.BRIAREUS_FELLER) + if player then + player:addTitle(xi.title.BRIAREUS_FELLER) + end end return entity diff --git a/scripts/zones/Abyssea-Tahrongi/mobs/Iratham.lua b/scripts/zones/Abyssea-Tahrongi/mobs/Iratham.lua index 3cc09d76a27..502c6273e80 100644 --- a/scripts/zones/Abyssea-Tahrongi/mobs/Iratham.lua +++ b/scripts/zones/Abyssea-Tahrongi/mobs/Iratham.lua @@ -18,7 +18,9 @@ entity.onMobFight = function(mob, target) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.IRATHAM_CAPTURER) + if player then + player:addTitle(xi.title.IRATHAM_CAPTURER) + end end return entity diff --git a/scripts/zones/Abyssea-Vunkerl/mobs/Sippoy.lua b/scripts/zones/Abyssea-Vunkerl/mobs/Sippoy.lua index 6db6d099b9b..b2445602aca 100644 --- a/scripts/zones/Abyssea-Vunkerl/mobs/Sippoy.lua +++ b/scripts/zones/Abyssea-Vunkerl/mobs/Sippoy.lua @@ -16,7 +16,9 @@ entity.onMobFight = function(mob, target) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.SIPPOY_CAPTURER) + if player then + player:addTitle(xi.title.SIPPOY_CAPTURER) + end end return entity diff --git a/scripts/zones/Alzadaal_Undersea_Ruins/mobs/Oupire.lua b/scripts/zones/Alzadaal_Undersea_Ruins/mobs/Oupire.lua index 30a701a492e..d635a286b9a 100644 --- a/scripts/zones/Alzadaal_Undersea_Ruins/mobs/Oupire.lua +++ b/scripts/zones/Alzadaal_Undersea_Ruins/mobs/Oupire.lua @@ -14,8 +14,10 @@ entity.onAdditionalEffect = function(mob, target, damage) end entity.onMobDeath = function(mob, player, optParams) - xi.hunts.checkHunt(mob, player, 478) - player:addTitle(xi.title.OUPIRE_IMPALER) + if player then + player:addTitle(xi.title.OUPIRE_IMPALER) + xi.hunts.checkHunt(mob, player, 478) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/Arrapago_Reef/mobs/Medusa.lua b/scripts/zones/Arrapago_Reef/mobs/Medusa.lua index d78f3f5ad65..6549fb75159 100644 --- a/scripts/zones/Arrapago_Reef/mobs/Medusa.lua +++ b/scripts/zones/Arrapago_Reef/mobs/Medusa.lua @@ -28,32 +28,6 @@ entity.onMobEngage = function(mob, target) end entity.onMobFight = function(mob, target) - if mob:getBattleTime() % 60 < 2 and mob:getBattleTime() > 10 then - local mob1 = GetMobByID(ID.mob.MEDUSA + 1) - if mob1 and not mob1:isSpawned() then - mob1:setSpawn(mob:getXPos() + math.random(1, 5), mob:getYPos(), mob:getZPos() + math.random(1, 5)) - SpawnMob(ID.mob.MEDUSA + 1):updateEnmity(target) - else - local mob2 = GetMobByID(ID.mob.MEDUSA + 2) - if mob2 and not mob2:isSpawned() then - mob2:setSpawn(mob:getXPos() + math.random(1, 5), mob:getYPos(), mob:getZPos() + math.random(1, 5)) - SpawnMob(ID.mob.MEDUSA + 2):updateEnmity(target) - else - local mob3 = GetMobByID(ID.mob.MEDUSA + 3) - if mob3 and not mob3:isSpawned() then - mob3:setSpawn(mob:getXPos() + math.random(1, 5), mob:getYPos(), mob:getZPos() + math.random(1, 5)) - SpawnMob(ID.mob.MEDUSA + 3):updateEnmity(target) - else - local mob4 = GetMobByID(ID.mob.MEDUSA + 4) - if mob4 and not mob4:isSpawned() then - mob4:setSpawn(mob:getXPos() + math.random(1, 5), mob:getYPos(), mob:getZPos() + math.random(1, 5)) - SpawnMob(ID.mob.MEDUSA + 4):updateEnmity(target) - end - end - end - end - end - for i = ID.mob.MEDUSA + 1, ID.mob.MEDUSA + 4 do local pet = GetMobByID(i) if @@ -63,20 +37,36 @@ entity.onMobFight = function(mob, target) pet:updateEnmity(target) end end + + if mob:getBattleTime() % 60 < 2 and mob:getBattleTime() > 10 then + for i = ID.mob.MEDUSA + 1, ID.mob.MEDUSA + 4 do + local bodyguard = GetMobByID(ID.mob.MEDUSA + 1) + if bodyguard and not bodyguard:isSpawned() then + bodyguard:setSpawn(mob:getXPos() + math.random(1, 5), mob:getYPos(), mob:getZPos() + math.random(1, 5)) + SpawnMob(i):updateEnmity(target) + break + end + end + end end entity.onMobDisengage = function(mob) - for i = 1, 4 do DespawnMob(ID.mob.MEDUSA + i) end + for i = ID.mob.MEDUSA + 1, ID.mob.MEDUSA + 4 do + DespawnMob(i) + end end entity.onMobDeath = function(mob, player, optParams) - player:showText(mob, ID.text.MEDUSA_DEATH) - player:addTitle(xi.title.GORGONSTONE_SUNDERER) - for i = 1, 4 do DespawnMob(ID.mob.MEDUSA + i) end -end + if player then + player:addTitle(xi.title.GORGONSTONE_SUNDERER) + player:showText(mob, ID.text.MEDUSA_DEATH) + end -entity.onMobDespawn = function(mob) - for i = 1, 4 do DespawnMob(ID.mob.MEDUSA + i) end + if optParams.isKiller or optParams.noKiller then + for i = ID.mob.MEDUSA + 1, ID.mob.MEDUSA + 4 do + DespawnMob(i) + end + end end return entity diff --git a/scripts/zones/Arrapago_Remnants/mobs/Armored_Chariot.lua b/scripts/zones/Arrapago_Remnants/mobs/Armored_Chariot.lua index 8fa3dd720a3..c1d8c75d989 100644 --- a/scripts/zones/Arrapago_Remnants/mobs/Armored_Chariot.lua +++ b/scripts/zones/Arrapago_Remnants/mobs/Armored_Chariot.lua @@ -6,7 +6,9 @@ local entity = {} entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.SUN_CHARIOTEER) + if player then + player:addTitle(xi.title.SUN_CHARIOTEER) + end end return entity diff --git a/scripts/zones/Attohwa_Chasm/mobs/Tiamat.lua b/scripts/zones/Attohwa_Chasm/mobs/Tiamat.lua index af00651fe70..d7b81a15933 100644 --- a/scripts/zones/Attohwa_Chasm/mobs/Tiamat.lua +++ b/scripts/zones/Attohwa_Chasm/mobs/Tiamat.lua @@ -269,7 +269,9 @@ entity.onMobDisengage = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.TIAMAT_TROUNCER) + if player then + player:addTitle(xi.title.TIAMAT_TROUNCER) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/Batallia_Downs/mobs/Verthandi.lua b/scripts/zones/Batallia_Downs/mobs/Verthandi.lua index 2f601c857e4..7868e024883 100644 --- a/scripts/zones/Batallia_Downs/mobs/Verthandi.lua +++ b/scripts/zones/Batallia_Downs/mobs/Verthandi.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.VERTHANDI_ENSNARER) - xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) - xi.hunts.checkHunt(mob, player, 553) + if player then + player:addTitle(xi.title.VERTHANDI_ENSNARER) + xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) + xi.hunts.checkHunt(mob, player, 553) + end end return entity diff --git a/scripts/zones/Batallia_Downs/mobs/Yilbegan.lua b/scripts/zones/Batallia_Downs/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/Batallia_Downs/mobs/Yilbegan.lua +++ b/scripts/zones/Batallia_Downs/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/Batallia_Downs_[S]/mobs/Sandworm.lua b/scripts/zones/Batallia_Downs_[S]/mobs/Sandworm.lua index ff7878193a8..83cb882eac8 100644 --- a/scripts/zones/Batallia_Downs_[S]/mobs/Sandworm.lua +++ b/scripts/zones/Batallia_Downs_[S]/mobs/Sandworm.lua @@ -11,7 +11,9 @@ entity.onMobInitialize = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.SANDWORM_WRANGLER) + if player then + player:addTitle(xi.title.SANDWORM_WRANGLER) + end end return entity diff --git a/scripts/zones/Batallia_Downs_[S]/mobs/Verthandi.lua b/scripts/zones/Batallia_Downs_[S]/mobs/Verthandi.lua index 2f601c857e4..7868e024883 100644 --- a/scripts/zones/Batallia_Downs_[S]/mobs/Verthandi.lua +++ b/scripts/zones/Batallia_Downs_[S]/mobs/Verthandi.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.VERTHANDI_ENSNARER) - xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) - xi.hunts.checkHunt(mob, player, 553) + if player then + player:addTitle(xi.title.VERTHANDI_ENSNARER) + xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) + xi.hunts.checkHunt(mob, player, 553) + end end return entity diff --git a/scripts/zones/Batallia_Downs_[S]/mobs/Yilbegan.lua b/scripts/zones/Batallia_Downs_[S]/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/Batallia_Downs_[S]/mobs/Yilbegan.lua +++ b/scripts/zones/Batallia_Downs_[S]/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/Beaucedine_Glacier/mobs/Lord_Ruthven.lua b/scripts/zones/Beaucedine_Glacier/mobs/Lord_Ruthven.lua index 0d9d835ee6c..c7dac5df17d 100644 --- a/scripts/zones/Beaucedine_Glacier/mobs/Lord_Ruthven.lua +++ b/scripts/zones/Beaucedine_Glacier/mobs/Lord_Ruthven.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.RUTHVEN_ENTOMBER) - xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) - xi.hunts.checkHunt(mob, player, 556) + if player then + player:addTitle(xi.title.RUTHVEN_ENTOMBER) + xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) + xi.hunts.checkHunt(mob, player, 556) + end end return entity diff --git a/scripts/zones/Beaucedine_Glacier/mobs/Yilbegan.lua b/scripts/zones/Beaucedine_Glacier/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/Beaucedine_Glacier/mobs/Yilbegan.lua +++ b/scripts/zones/Beaucedine_Glacier/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/Beaucedine_Glacier_[S]/mobs/Lord_Ruthven.lua b/scripts/zones/Beaucedine_Glacier_[S]/mobs/Lord_Ruthven.lua index 0d9d835ee6c..c7dac5df17d 100644 --- a/scripts/zones/Beaucedine_Glacier_[S]/mobs/Lord_Ruthven.lua +++ b/scripts/zones/Beaucedine_Glacier_[S]/mobs/Lord_Ruthven.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.RUTHVEN_ENTOMBER) - xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) - xi.hunts.checkHunt(mob, player, 556) + if player then + player:addTitle(xi.title.RUTHVEN_ENTOMBER) + xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) + xi.hunts.checkHunt(mob, player, 556) + end end return entity diff --git a/scripts/zones/Beaucedine_Glacier_[S]/mobs/Yilbegan.lua b/scripts/zones/Beaucedine_Glacier_[S]/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/Beaucedine_Glacier_[S]/mobs/Yilbegan.lua +++ b/scripts/zones/Beaucedine_Glacier_[S]/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/Behemoths_Dominion/mobs/Behemoth.lua b/scripts/zones/Behemoths_Dominion/mobs/Behemoth.lua index a19cd5c7a0d..202024c5d8f 100644 --- a/scripts/zones/Behemoths_Dominion/mobs/Behemoth.lua +++ b/scripts/zones/Behemoths_Dominion/mobs/Behemoth.lua @@ -101,7 +101,9 @@ entity.onMobFight = function(mob, target) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.BEHEMOTHS_BANE) + if player then + player:addTitle(xi.title.BEHEMOTHS_BANE) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/Behemoths_Dominion/mobs/King_Behemoth.lua b/scripts/zones/Behemoths_Dominion/mobs/King_Behemoth.lua index 55632b56b5b..91ca95abf10 100644 --- a/scripts/zones/Behemoths_Dominion/mobs/King_Behemoth.lua +++ b/scripts/zones/Behemoths_Dominion/mobs/King_Behemoth.lua @@ -138,7 +138,9 @@ entity.onSpellPrecast = function(mob, spell) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.BEHEMOTH_DETHRONER) + if player then + player:addTitle(xi.title.BEHEMOTH_DETHRONER) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/Bhaflau_Remnants/mobs/Long-Bowed_Chariot.lua b/scripts/zones/Bhaflau_Remnants/mobs/Long-Bowed_Chariot.lua index f2755c19802..677b9d7a9f4 100644 --- a/scripts/zones/Bhaflau_Remnants/mobs/Long-Bowed_Chariot.lua +++ b/scripts/zones/Bhaflau_Remnants/mobs/Long-Bowed_Chariot.lua @@ -35,7 +35,10 @@ entity.onMobSpawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.COMET_CHARIOTEER) + if player then + player:addTitle(xi.title.COMET_CHARIOTEER) + end + if optParams.isKiller or optParams.noKiller then mob:getInstance():complete() end diff --git a/scripts/zones/Caedarva_Mire/mobs/Khimaira.lua b/scripts/zones/Caedarva_Mire/mobs/Khimaira.lua index b2fae7b822e..360afd4cd10 100644 --- a/scripts/zones/Caedarva_Mire/mobs/Khimaira.lua +++ b/scripts/zones/Caedarva_Mire/mobs/Khimaira.lua @@ -15,10 +15,6 @@ entity.onMobSpawn = function(mob) mob:setMobMod(xi.mobMod.AOE_HIT_ALL, 1) end -entity.onMobRoam = function(mob) - mob:setMobMod(xi.mobMod.NO_MOVE, 0) -end - entity.onMobFight = function(mob, target) local targetPos = target:getPos() local drawInPositions = @@ -55,8 +51,14 @@ entity.onMobFight = function(mob, target) end end +entity.onMobDisengage = function(mob) + mob:setMobMod(xi.mobMod.NO_MOVE, 0) +end + entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.KHIMAIRA_CARVER) + if player then + player:addTitle(xi.title.KHIMAIRA_CARVER) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/Castle_Oztroja/mobs/Tzee_Xicu_the_Manifest.lua b/scripts/zones/Castle_Oztroja/mobs/Tzee_Xicu_the_Manifest.lua index b8327d12945..f5f5bcbee8b 100644 --- a/scripts/zones/Castle_Oztroja/mobs/Tzee_Xicu_the_Manifest.lua +++ b/scripts/zones/Castle_Oztroja/mobs/Tzee_Xicu_the_Manifest.lua @@ -66,6 +66,7 @@ entity.spawnPoints = entity.onMobInitialize = function(mob) xi.pet.setMobPet(mob, 1, 'Yagudos_Elemental') mob:setMobMod(xi.mobMod.ADD_EFFECT, 1) + mob:addImmunity(xi.immunity.LIGHT_SLEEP) end entity.onMobSpawn = function(mob) @@ -73,7 +74,6 @@ entity.onMobSpawn = function(mob) mob:setMod(xi.mod.PARALYZE_RES_RANK, 8) mob:setMod(xi.mod.SLOW_RES_RANK, 8) mob:setMod(xi.mod.SILENCE_RES_RANK, 10) - mob:addImmunity(xi.immunity.LIGHT_SLEEP) end entity.onMobEngage = function(mob, target) @@ -93,7 +93,10 @@ entity.onAdditionalEffect = function(mob, target, damage) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.DEITY_DEBUNKER) + if player then + player:addTitle(xi.title.DEITY_DEBUNKER) + end + if optParams.isKiller or optParams.noKiller then mob:showText(mob, ID.text.YAGUDO_KING_DEATH) end diff --git a/scripts/zones/Castle_Zvahl_Keep/mobs/Baron_Vapula.lua b/scripts/zones/Castle_Zvahl_Keep/mobs/Baron_Vapula.lua index 2bd5498c0f2..c485e044b4c 100644 --- a/scripts/zones/Castle_Zvahl_Keep/mobs/Baron_Vapula.lua +++ b/scripts/zones/Castle_Zvahl_Keep/mobs/Baron_Vapula.lua @@ -15,7 +15,7 @@ entity.phList = [ID.mob.BARON_VAPULA - 1] = ID.mob.BARON_VAPULA, -- -227.007 -52.125 83.768 } -entity.onMobSpawn = function(mob) +entity.onMobInitialize = function(mob) mob:addImmunity(xi.immunity.DARK_SLEEP) mob:addImmunity(xi.immunity.LIGHT_SLEEP) mob:addImmunity(xi.immunity.SILENCE) @@ -23,8 +23,10 @@ entity.onMobSpawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - xi.hunts.checkHunt(mob, player, 354) - player:addTitle(xi.title.HELLSBANE) + if player then + player:addTitle(xi.title.HELLSBANE) + xi.hunts.checkHunt(mob, player, 354) + end end return entity diff --git a/scripts/zones/Castle_Zvahl_Keep/mobs/Baronet_Romwe.lua b/scripts/zones/Castle_Zvahl_Keep/mobs/Baronet_Romwe.lua index efe5b9ef1c5..6f8905b5e2b 100644 --- a/scripts/zones/Castle_Zvahl_Keep/mobs/Baronet_Romwe.lua +++ b/scripts/zones/Castle_Zvahl_Keep/mobs/Baronet_Romwe.lua @@ -15,16 +15,18 @@ entity.phList = [ID.mob.BARONET_ROMWE - 1] = ID.mob.BARONET_ROMWE, -- -335.444 -52.125 15.148 } -entity.onMobSpawn = function(mob) +entity.onMobInitialize = function(mob) mob:addImmunity(xi.immunity.DARK_SLEEP) mob:addImmunity(xi.immunity.LIGHT_SLEEP) - mob:addImmunity(xi.immunity.TERROR) mob:addImmunity(xi.immunity.SILENCE) + mob:addImmunity(xi.immunity.TERROR) end entity.onMobDeath = function(mob, player, optParams) - xi.hunts.checkHunt(mob, player, 353) - player:addTitle(xi.title.HELLSBANE) + if player then + player:addTitle(xi.title.HELLSBANE) + xi.hunts.checkHunt(mob, player, 353) + end end return entity diff --git a/scripts/zones/Castle_Zvahl_Keep/mobs/Count_Bifrons.lua b/scripts/zones/Castle_Zvahl_Keep/mobs/Count_Bifrons.lua index a0290a9fda9..5acc80e330e 100644 --- a/scripts/zones/Castle_Zvahl_Keep/mobs/Count_Bifrons.lua +++ b/scripts/zones/Castle_Zvahl_Keep/mobs/Count_Bifrons.lua @@ -14,7 +14,7 @@ entity.phList = [ID.mob.COUNT_BIFRONS - 1] = ID.mob.COUNT_BIFRONS, -- -204.000 -52.125 -95.000 } -entity.onMobSpawn = function(mob) +entity.onMobInitialize = function(mob) mob:addImmunity(xi.immunity.DARK_SLEEP) mob:addImmunity(xi.immunity.LIGHT_SLEEP) mob:addImmunity(xi.immunity.SILENCE) @@ -22,8 +22,10 @@ entity.onMobSpawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - xi.hunts.checkHunt(mob, player, 355) - player:addTitle(xi.title.HELLSBANE) + if player then + player:addTitle(xi.title.HELLSBANE) + xi.hunts.checkHunt(mob, player, 355) + end end return entity diff --git a/scripts/zones/Castle_Zvahl_Keep/mobs/Viscount_Morax.lua b/scripts/zones/Castle_Zvahl_Keep/mobs/Viscount_Morax.lua index 13b37de2817..d7c52118a87 100644 --- a/scripts/zones/Castle_Zvahl_Keep/mobs/Viscount_Morax.lua +++ b/scripts/zones/Castle_Zvahl_Keep/mobs/Viscount_Morax.lua @@ -16,9 +16,6 @@ entity.phList = entity.onMobInitialize = function(mob) xi.pet.setMobPet(mob, 1, 'Demons_Elemental') -end - -entity.onMobSpawn = function(mob) mob:addImmunity(xi.immunity.DARK_SLEEP) mob:addImmunity(xi.immunity.LIGHT_SLEEP) mob:addImmunity(xi.immunity.SILENCE) @@ -26,8 +23,10 @@ entity.onMobSpawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - xi.hunts.checkHunt(mob, player, 356) - player:addTitle(xi.title.HELLSBANE) + if player then + player:addTitle(xi.title.HELLSBANE) + xi.hunts.checkHunt(mob, player, 356) + end end return entity diff --git a/scripts/zones/Crawlers_Nest/mobs/Awd_Goggie.lua b/scripts/zones/Crawlers_Nest/mobs/Awd_Goggie.lua index 3cfdbe400ac..72f20f37707 100644 --- a/scripts/zones/Crawlers_Nest/mobs/Awd_Goggie.lua +++ b/scripts/zones/Crawlers_Nest/mobs/Awd_Goggie.lua @@ -11,7 +11,9 @@ entity.onMobInitialize = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.BOGEYDOWNER) + if player then + player:addTitle(xi.title.BOGEYDOWNER) + end end return entity diff --git a/scripts/zones/Dragons_Aery/mobs/Fafnir.lua b/scripts/zones/Dragons_Aery/mobs/Fafnir.lua index e23730eb1c8..9840e284f43 100644 --- a/scripts/zones/Dragons_Aery/mobs/Fafnir.lua +++ b/scripts/zones/Dragons_Aery/mobs/Fafnir.lua @@ -98,7 +98,9 @@ entity.onMobFight = function(mob, target) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.FAFNIR_SLAYER) + if player then + player:addTitle(xi.title.FAFNIR_SLAYER) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/Dragons_Aery/mobs/Nidhogg.lua b/scripts/zones/Dragons_Aery/mobs/Nidhogg.lua index e2d9d415fb5..07f39f06e9b 100644 --- a/scripts/zones/Dragons_Aery/mobs/Nidhogg.lua +++ b/scripts/zones/Dragons_Aery/mobs/Nidhogg.lua @@ -112,7 +112,9 @@ entity.onMobFight = function(mob, target) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.NIDHOGG_SLAYER) + if player then + player:addTitle(xi.title.NIDHOGG_SLAYER) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/Dynamis-Tavnazia/mobs/Diabolos_Club.lua b/scripts/zones/Dynamis-Tavnazia/mobs/Diabolos_Club.lua index b02fab7e6f2..c97e5c25713 100644 --- a/scripts/zones/Dynamis-Tavnazia/mobs/Diabolos_Club.lua +++ b/scripts/zones/Dynamis-Tavnazia/mobs/Diabolos_Club.lua @@ -11,8 +11,10 @@ entity.onMobInitialize = function(mob) end entity.onMobDeath = function(mob, player, optParams) - xi.dynamis.megaBossOnDeath(mob, player, optParams) - player:addTitle(xi.title.NIGHTMARE_AWAKENER) + if player then + player:addTitle(xi.title.NIGHTMARE_AWAKENER) + xi.dynamis.megaBossOnDeath(mob, player, optParams) + end end return entity diff --git a/scripts/zones/Dynamis-Tavnazia/mobs/Diabolos_Diamond.lua b/scripts/zones/Dynamis-Tavnazia/mobs/Diabolos_Diamond.lua index 7f0e2252d8c..118e81ca119 100644 --- a/scripts/zones/Dynamis-Tavnazia/mobs/Diabolos_Diamond.lua +++ b/scripts/zones/Dynamis-Tavnazia/mobs/Diabolos_Diamond.lua @@ -7,8 +7,10 @@ local entity = {} entity.onMobDeath = function(mob, player, optParams) - xi.dynamis.megaBossOnDeath(mob, player, optParams) - player:addTitle(xi.title.NIGHTMARE_AWAKENER) + if player then + player:addTitle(xi.title.NIGHTMARE_AWAKENER) + xi.dynamis.megaBossOnDeath(mob, player, optParams) + end end return entity diff --git a/scripts/zones/Dynamis-Tavnazia/mobs/Diabolos_Heart.lua b/scripts/zones/Dynamis-Tavnazia/mobs/Diabolos_Heart.lua index 0ee34827423..6c61614d7f6 100644 --- a/scripts/zones/Dynamis-Tavnazia/mobs/Diabolos_Heart.lua +++ b/scripts/zones/Dynamis-Tavnazia/mobs/Diabolos_Heart.lua @@ -7,8 +7,10 @@ local entity = {} entity.onMobDeath = function(mob, player, optParams) - xi.dynamis.megaBossOnDeath(mob, player, optParams) - player:addTitle(xi.title.NIGHTMARE_AWAKENER) + if player then + player:addTitle(xi.title.NIGHTMARE_AWAKENER) + xi.dynamis.megaBossOnDeath(mob, player, optParams) + end end return entity diff --git a/scripts/zones/Dynamis-Tavnazia/mobs/Diabolos_Spade.lua b/scripts/zones/Dynamis-Tavnazia/mobs/Diabolos_Spade.lua index 45d480a84cb..6bc9c31ca1e 100644 --- a/scripts/zones/Dynamis-Tavnazia/mobs/Diabolos_Spade.lua +++ b/scripts/zones/Dynamis-Tavnazia/mobs/Diabolos_Spade.lua @@ -7,8 +7,10 @@ local entity = {} entity.onMobDeath = function(mob, player, optParams) - xi.dynamis.megaBossOnDeath(mob, player, optParams) - player:addTitle(xi.title.NIGHTMARE_AWAKENER) + if player then + player:addTitle(xi.title.NIGHTMARE_AWAKENER) + xi.dynamis.megaBossOnDeath(mob, player, optParams) + end end return entity diff --git a/scripts/zones/Dynamis-Xarcabard/mobs/Dynamis_Lord.lua b/scripts/zones/Dynamis-Xarcabard/mobs/Dynamis_Lord.lua index 55fa2f98343..e0411883c8a 100644 --- a/scripts/zones/Dynamis-Xarcabard/mobs/Dynamis_Lord.lua +++ b/scripts/zones/Dynamis-Xarcabard/mobs/Dynamis_Lord.lua @@ -49,9 +49,12 @@ entity.onMobFight = function(mob, target) end entity.onMobDeath = function(mob, player, optParams) - xi.dynamis.megaBossOnDeath(mob, player, optParams) - player:addTitle(xi.title.LIFTER_OF_SHADOWS) - if optParams.isKiller then + if player then + player:addTitle(xi.title.LIFTER_OF_SHADOWS) + xi.dynamis.megaBossOnDeath(mob, player, optParams) + end + + if optParams.isKiller or optParams.noKiller then DespawnMob(ID.mob.YING) DespawnMob(ID.mob.YING + 1) end diff --git a/scripts/zones/East_Ronfaure/mobs/Krabkatoa.lua b/scripts/zones/East_Ronfaure/mobs/Krabkatoa.lua index a77365be860..c7fbb665563 100644 --- a/scripts/zones/East_Ronfaure/mobs/Krabkatoa.lua +++ b/scripts/zones/East_Ronfaure/mobs/Krabkatoa.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.KRABKATOA_STEAMER) - xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) - xi.hunts.checkHunt(mob, player, 544) + if player then + player:addTitle(xi.title.KRABKATOA_STEAMER) + xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) + xi.hunts.checkHunt(mob, player, 544) + end end return entity diff --git a/scripts/zones/East_Ronfaure/mobs/Yilbegan.lua b/scripts/zones/East_Ronfaure/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/East_Ronfaure/mobs/Yilbegan.lua +++ b/scripts/zones/East_Ronfaure/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/East_Ronfaure_[S]/mobs/Krabkatoa.lua b/scripts/zones/East_Ronfaure_[S]/mobs/Krabkatoa.lua index a77365be860..c7fbb665563 100644 --- a/scripts/zones/East_Ronfaure_[S]/mobs/Krabkatoa.lua +++ b/scripts/zones/East_Ronfaure_[S]/mobs/Krabkatoa.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.KRABKATOA_STEAMER) - xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) - xi.hunts.checkHunt(mob, player, 544) + if player then + player:addTitle(xi.title.KRABKATOA_STEAMER) + xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) + xi.hunts.checkHunt(mob, player, 544) + end end return entity diff --git a/scripts/zones/East_Ronfaure_[S]/mobs/Sandworm.lua b/scripts/zones/East_Ronfaure_[S]/mobs/Sandworm.lua index 8fedc0ce5db..a3f95be40e0 100644 --- a/scripts/zones/East_Ronfaure_[S]/mobs/Sandworm.lua +++ b/scripts/zones/East_Ronfaure_[S]/mobs/Sandworm.lua @@ -11,7 +11,9 @@ entity.onMobInitialize = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.SANDWORM_WRANGLER) + if player then + player:addTitle(xi.title.SANDWORM_WRANGLER) + end end return entity diff --git a/scripts/zones/East_Ronfaure_[S]/mobs/Yilbegan.lua b/scripts/zones/East_Ronfaure_[S]/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/East_Ronfaure_[S]/mobs/Yilbegan.lua +++ b/scripts/zones/East_Ronfaure_[S]/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/Eastern_Altepa_Desert/mobs/Cactrot_Rapido.lua b/scripts/zones/Eastern_Altepa_Desert/mobs/Cactrot_Rapido.lua index 93221a89874..d9f12ea66a0 100644 --- a/scripts/zones/Eastern_Altepa_Desert/mobs/Cactrot_Rapido.lua +++ b/scripts/zones/Eastern_Altepa_Desert/mobs/Cactrot_Rapido.lua @@ -194,7 +194,9 @@ entity.onMobEngage = function(mob, target) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.CACTROT_DESACELERADOR) + if player then + player:addTitle(xi.title.CACTROT_DESACELERADOR) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/Everbloom_Hollow/mobs/Lambton_Worm.lua b/scripts/zones/Everbloom_Hollow/mobs/Lambton_Worm.lua index 4daf395d3fe..1fc525a26d9 100644 --- a/scripts/zones/Everbloom_Hollow/mobs/Lambton_Worm.lua +++ b/scripts/zones/Everbloom_Hollow/mobs/Lambton_Worm.lua @@ -6,7 +6,9 @@ local entity = {} entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.LAMBTON_WORM_DESEGMENTER) + if player then + player:addTitle(xi.title.LAMBTON_WORM_DESEGMENTER) + end end return entity diff --git a/scripts/zones/FeiYin/mobs/Capricious_Cassie.lua b/scripts/zones/FeiYin/mobs/Capricious_Cassie.lua index 4f96bcde642..3cead2a83f5 100644 --- a/scripts/zones/FeiYin/mobs/Capricious_Cassie.lua +++ b/scripts/zones/FeiYin/mobs/Capricious_Cassie.lua @@ -118,7 +118,9 @@ entity.onMobFight = function(mob, target) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.CASSIENOVA) + if player then + player:addTitle(xi.title.CASSIENOVA) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/FeiYin/mobs/Goliath.lua b/scripts/zones/FeiYin/mobs/Goliath.lua index dc0c1e0b33c..4b9e9082851 100644 --- a/scripts/zones/FeiYin/mobs/Goliath.lua +++ b/scripts/zones/FeiYin/mobs/Goliath.lua @@ -18,7 +18,9 @@ entity.phList = } entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.GOLIATH_KILLER) + if player then + player:addTitle(xi.title.GOLIATH_KILLER) + end end return entity diff --git a/scripts/zones/Garlaige_Citadel/mobs/Serket.lua b/scripts/zones/Garlaige_Citadel/mobs/Serket.lua index 770bd66929b..6e031833d65 100644 --- a/scripts/zones/Garlaige_Citadel/mobs/Serket.lua +++ b/scripts/zones/Garlaige_Citadel/mobs/Serket.lua @@ -112,7 +112,9 @@ entity.onMobSpellChoose = function(mob, target, spellId) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.SERKET_BREAKER) + if player then + player:addTitle(xi.title.SERKET_BREAKER) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/Garlaige_Citadel/mobs/Skewer_Sam.lua b/scripts/zones/Garlaige_Citadel/mobs/Skewer_Sam.lua index 585f49c36ce..9cba5cb783a 100644 --- a/scripts/zones/Garlaige_Citadel/mobs/Skewer_Sam.lua +++ b/scripts/zones/Garlaige_Citadel/mobs/Skewer_Sam.lua @@ -65,7 +65,9 @@ entity.onMobInitialize = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.BEAKBENDER) + if player then + player:addTitle(xi.title.BEAKBENDER) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/Ghelsba_Outpost/mobs/Warchief_Vatgit.lua b/scripts/zones/Ghelsba_Outpost/mobs/Warchief_Vatgit.lua index 2e9143bb373..1b0891dd7bc 100644 --- a/scripts/zones/Ghelsba_Outpost/mobs/Warchief_Vatgit.lua +++ b/scripts/zones/Ghelsba_Outpost/mobs/Warchief_Vatgit.lua @@ -7,7 +7,9 @@ local entity = {} entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.WARCHIEF_WRECKER) + if player then + player:addTitle(xi.title.WARCHIEF_WRECKER) + end end return entity diff --git a/scripts/zones/Ghoyus_Reverie/mobs/Lambton_Worm.lua b/scripts/zones/Ghoyus_Reverie/mobs/Lambton_Worm.lua index 1a5b312a811..c711bfc843c 100644 --- a/scripts/zones/Ghoyus_Reverie/mobs/Lambton_Worm.lua +++ b/scripts/zones/Ghoyus_Reverie/mobs/Lambton_Worm.lua @@ -6,7 +6,9 @@ local entity = {} entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.LAMBTON_WORM_DESEGMENTER) + if player then + player:addTitle(xi.title.LAMBTON_WORM_DESEGMENTER) + end end return entity diff --git a/scripts/zones/Halvung/mobs/Gurfurlur_the_Menacing.lua b/scripts/zones/Halvung/mobs/Gurfurlur_the_Menacing.lua index a72cb4623fc..56bbfca5a71 100644 --- a/scripts/zones/Halvung/mobs/Gurfurlur_the_Menacing.lua +++ b/scripts/zones/Halvung/mobs/Gurfurlur_the_Menacing.lua @@ -16,32 +16,6 @@ entity.onMobEngage = function(mob, target) end entity.onMobFight = function(mob, target) - if mob:getBattleTime() % 60 < 2 and mob:getBattleTime() > 10 then - local mob1 = GetMobByID(ID.mob.GURFURLUR_THE_MENACING + 1) - if mob1 and not mob1:isSpawned() then - mob1:setSpawn(mob:getXPos() + math.random(1, 5), mob:getYPos(), mob:getZPos() + math.random(1, 5)) - SpawnMob(ID.mob.GURFURLUR_THE_MENACING + 1):updateEnmity(target) - else - local mob2 = GetMobByID(ID.mob.GURFURLUR_THE_MENACING + 2) - if mob2 and not mob2:isSpawned() then - mob2:setSpawn(mob:getXPos() + math.random(1, 5), mob:getYPos(), mob:getZPos() + math.random(1, 5)) - SpawnMob(ID.mob.GURFURLUR_THE_MENACING + 2):updateEnmity(target) - else - local mob3 = GetMobByID(ID.mob.GURFURLUR_THE_MENACING + 3) - if mob3 and not mob3:isSpawned() then - mob3:setSpawn(mob:getXPos() + math.random(1, 5), mob:getYPos(), mob:getZPos() + math.random(1, 5)) - SpawnMob(ID.mob.GURFURLUR_THE_MENACING + 3):updateEnmity(target) - else - local mob4 = GetMobByID(ID.mob.GURFURLUR_THE_MENACING + 4) - if mob4 and not mob4:isSpawned() then - mob4:setSpawn(mob:getXPos() + math.random(1, 5), mob:getYPos(), mob:getZPos() + math.random(1, 5)) - SpawnMob(ID.mob.GURFURLUR_THE_MENACING + 4):updateEnmity(target) - end - end - end - end - end - for i = ID.mob.GURFURLUR_THE_MENACING + 1, ID.mob.GURFURLUR_THE_MENACING + 4 do local pet = GetMobByID(i) @@ -49,19 +23,35 @@ entity.onMobFight = function(mob, target) pet:updateEnmity(target) end end + + if mob:getBattleTime() % 60 < 2 and mob:getBattleTime() > 10 then + for i = ID.mob.GURFURLUR_THE_MENACING + 1, ID.mob.GURFURLUR_THE_MENACING + 4 do + local bodyguard = GetMobByID(i) + if bodyguard and not bodyguard:isSpawned() then + bodyguard:setSpawn(mob:getXPos() + math.random(1, 5), mob:getYPos(), mob:getZPos() + math.random(1, 5)) + SpawnMob(i):updateEnmity(target) + break + end + end + end end entity.onMobDisengage = function(mob) - for i = 1, 4 do DespawnMob(ID.mob.GURFURLUR_THE_MENACING + i) end + for i = ID.mob.GURFURLUR_THE_MENACING + 1, ID.mob.GURFURLUR_THE_MENACING + 4 do + DespawnMob(i) + end end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.TROLL_SUBJUGATOR) - for i = 1, 4 do DespawnMob(ID.mob.GURFURLUR_THE_MENACING + i) end -end + if player then + player:addTitle(xi.title.TROLL_SUBJUGATOR) + end -entity.onMobDespawn = function(mob) - for i = 1, 4 do DespawnMob(ID.mob.GURFURLUR_THE_MENACING + i) end + if optParams.isKiller or optParams.noKiller then + for i = ID.mob.GURFURLUR_THE_MENACING + 1, ID.mob.GURFURLUR_THE_MENACING + 4 do + DespawnMob(i) + end + end end return entity diff --git a/scripts/zones/Horlais_Peak/mobs/Dread_Dragon.lua b/scripts/zones/Horlais_Peak/mobs/Dread_Dragon.lua index dc49ac43bef..3e48f05682e 100644 --- a/scripts/zones/Horlais_Peak/mobs/Dread_Dragon.lua +++ b/scripts/zones/Horlais_Peak/mobs/Dread_Dragon.lua @@ -13,7 +13,9 @@ entity.onMobInitialize = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.DREAD_DRAGON_SLAYER) + if player then + player:addTitle(xi.title.DREAD_DRAGON_SLAYER) + end end return entity diff --git a/scripts/zones/Ifrits_Cauldron/mobs/Ash_Dragon.lua b/scripts/zones/Ifrits_Cauldron/mobs/Ash_Dragon.lua index b2b240f8a35..6cb7b6c3ab1 100644 --- a/scripts/zones/Ifrits_Cauldron/mobs/Ash_Dragon.lua +++ b/scripts/zones/Ifrits_Cauldron/mobs/Ash_Dragon.lua @@ -99,7 +99,9 @@ entity.onMobFight = function(mob, target) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.DRAGON_ASHER) + if player then + player:addTitle(xi.title.DRAGON_ASHER) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/Jugner_Forest/mobs/Krabkatoa.lua b/scripts/zones/Jugner_Forest/mobs/Krabkatoa.lua index a77365be860..c7fbb665563 100644 --- a/scripts/zones/Jugner_Forest/mobs/Krabkatoa.lua +++ b/scripts/zones/Jugner_Forest/mobs/Krabkatoa.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.KRABKATOA_STEAMER) - xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) - xi.hunts.checkHunt(mob, player, 544) + if player then + player:addTitle(xi.title.KRABKATOA_STEAMER) + xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) + xi.hunts.checkHunt(mob, player, 544) + end end return entity diff --git a/scripts/zones/Jugner_Forest/mobs/Yilbegan.lua b/scripts/zones/Jugner_Forest/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/Jugner_Forest/mobs/Yilbegan.lua +++ b/scripts/zones/Jugner_Forest/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/Jugner_Forest_[S]/mobs/Krabkatoa.lua b/scripts/zones/Jugner_Forest_[S]/mobs/Krabkatoa.lua index a77365be860..c7fbb665563 100644 --- a/scripts/zones/Jugner_Forest_[S]/mobs/Krabkatoa.lua +++ b/scripts/zones/Jugner_Forest_[S]/mobs/Krabkatoa.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.KRABKATOA_STEAMER) - xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) - xi.hunts.checkHunt(mob, player, 544) + if player then + player:addTitle(xi.title.KRABKATOA_STEAMER) + xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) + xi.hunts.checkHunt(mob, player, 544) + end end return entity diff --git a/scripts/zones/Jugner_Forest_[S]/mobs/Yilbegan.lua b/scripts/zones/Jugner_Forest_[S]/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/Jugner_Forest_[S]/mobs/Yilbegan.lua +++ b/scripts/zones/Jugner_Forest_[S]/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/King_Ranperres_Tomb/mobs/Cemetery_Cherry.lua b/scripts/zones/King_Ranperres_Tomb/mobs/Cemetery_Cherry.lua index ae2a76d159a..174bf96e9f9 100644 --- a/scripts/zones/King_Ranperres_Tomb/mobs/Cemetery_Cherry.lua +++ b/scripts/zones/King_Ranperres_Tomb/mobs/Cemetery_Cherry.lua @@ -31,7 +31,6 @@ entity.onMobInitialize = function(mob) mob:addImmunity(xi.immunity.DARK_SLEEP) mob:addImmunity(xi.immunity.LIGHT_SLEEP) mob:addImmunity(xi.immunity.TERROR) - mob:setMobMod(xi.mobMod.BASE_DAMAGE_MULTIPLIER, 150) local saplingsRespawn = math.random(1800, 3600) -- 30 to 60 minutes mob:timer(saplingsRespawn * 1000, function(mobArg) @@ -42,6 +41,7 @@ end entity.onMobSpawn = function(mob) mob:setLocalVar('wasKilled', 0) mob:setMod(xi.mod.DOUBLE_ATTACK, 15) + mob:setMobMod(xi.mobMod.BASE_DAMAGE_MULTIPLIER, 150) end entity.onMobMobskillChoose = function(mob, target, skillId) @@ -57,8 +57,13 @@ entity.onMobMobskillChoose = function(mob, target, skillId) end entity.onMobDeath = function(mob, player, optParams) - mob:setLocalVar('wasKilled', 1) - player:addTitle(xi.title.MON_CHERRY) + if player then + player:addTitle(xi.title.MON_CHERRY) + end + + if optParams.isKiller or optParams.noKiller then + mob:setLocalVar('wasKilled', 1) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/King_Ranperres_Tomb/mobs/Vrtra.lua b/scripts/zones/King_Ranperres_Tomb/mobs/Vrtra.lua index d8b02ce22bc..101b665e8e2 100644 --- a/scripts/zones/King_Ranperres_Tomb/mobs/Vrtra.lua +++ b/scripts/zones/King_Ranperres_Tomb/mobs/Vrtra.lua @@ -78,9 +78,17 @@ entity.spawnPoints = } entity.onMobInitialize = function(mob) - mob:setCarefulPathing(true) - mob:setMobMod(xi.mobMod.AOE_HIT_ALL, 1) xi.mob.updateNMSpawnPoint(mob) + + mob:addImmunity(xi.immunity.BIND) + mob:addImmunity(xi.immunity.BLIND) + mob:addImmunity(xi.immunity.DARK_SLEEP) + mob:addImmunity(xi.immunity.PLAGUE) + mob:addImmunity(xi.immunity.PETRIFY) + mob:addImmunity(xi.immunity.TERROR) + mob:setMobMod(xi.mobMod.AOE_HIT_ALL, 1) + + mob:setCarefulPathing(true) mob:setRespawnTime(math.random(144, 240) * 1800) -- 3 to 5 days in 30 minute windows end @@ -103,12 +111,6 @@ entity.onMobSpawn = function(mob) mob:setMobMod(xi.mobMod.ROAM_DISTANCE, 5) mob:setMobMod(xi.mobMod.SIGHT_RANGE, 30) mob:setMobMod(xi.mobMod.WEAPON_BONUS, 148) -- 245 total weapon damage - mob:addImmunity(xi.immunity.BIND) - mob:addImmunity(xi.immunity.BLIND) - mob:addImmunity(xi.immunity.DARK_SLEEP) - mob:addImmunity(xi.immunity.PLAGUE) - mob:addImmunity(xi.immunity.PETRIFY) - mob:addImmunity(xi.immunity.TERROR) end entity.onMobRoam = function(mob) diff --git a/scripts/zones/Konschtat_Highlands/mobs/Steelfleece_Baldarich.lua b/scripts/zones/Konschtat_Highlands/mobs/Steelfleece_Baldarich.lua index 784b59f6e88..9e57de67522 100644 --- a/scripts/zones/Konschtat_Highlands/mobs/Steelfleece_Baldarich.lua +++ b/scripts/zones/Konschtat_Highlands/mobs/Steelfleece_Baldarich.lua @@ -42,8 +42,10 @@ entity.onMobSpawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.THE_HORNSPLITTER) - xi.tutorial.onMobDeath(player) + if player then + player:addTitle(xi.title.THE_HORNSPLITTER) + xi.tutorial.onMobDeath(player) + end end return entity diff --git a/scripts/zones/Konschtat_Highlands/mobs/Stray_Mary.lua b/scripts/zones/Konschtat_Highlands/mobs/Stray_Mary.lua index 309a571c8b2..59d22011fb8 100644 --- a/scripts/zones/Konschtat_Highlands/mobs/Stray_Mary.lua +++ b/scripts/zones/Konschtat_Highlands/mobs/Stray_Mary.lua @@ -20,14 +20,13 @@ entity.phList = [ID.mob.STRAY_MARY[2] - 5] = ID.mob.STRAY_MARY[2], -- -293.900 33.393 342.710 } -entity.onMobSpawn = function(mob) -end - entity.onMobDeath = function(mob, player, optParams) - xi.hunts.checkHunt(mob, player, 203) - player:addTitle(xi.title.MARYS_GUIDE) - xi.tutorial.onMobDeath(player) - xi.magian.onMobDeath(mob, player, optParams, set{ 710 }) + if player then + player:addTitle(xi.title.MARYS_GUIDE) + xi.hunts.checkHunt(mob, player, 203) + xi.tutorial.onMobDeath(player) + xi.magian.onMobDeath(mob, player, optParams, set{ 710 }) + end end return entity diff --git a/scripts/zones/Konschtat_Highlands/mobs/Yilbegan.lua b/scripts/zones/Konschtat_Highlands/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/Konschtat_Highlands/mobs/Yilbegan.lua +++ b/scripts/zones/Konschtat_Highlands/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/La_Theine_Plateau/mobs/Bloodtear_Baldurf.lua b/scripts/zones/La_Theine_Plateau/mobs/Bloodtear_Baldurf.lua index 95bee8029b1..a28a956b3ba 100644 --- a/scripts/zones/La_Theine_Plateau/mobs/Bloodtear_Baldurf.lua +++ b/scripts/zones/La_Theine_Plateau/mobs/Bloodtear_Baldurf.lua @@ -56,8 +56,10 @@ entity.onMobSpawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.THE_HORNSPLITTER) - xi.tutorial.onMobDeath(player) + if player then + player:addTitle(xi.title.THE_HORNSPLITTER) + xi.tutorial.onMobDeath(player) + end end return entity diff --git a/scripts/zones/La_Theine_Plateau/mobs/Yilbegan.lua b/scripts/zones/La_Theine_Plateau/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/La_Theine_Plateau/mobs/Yilbegan.lua +++ b/scripts/zones/La_Theine_Plateau/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/Mamook/mobs/Gulool_Ja_Ja.lua b/scripts/zones/Mamook/mobs/Gulool_Ja_Ja.lua index 8829ee6fe6f..eb103a7d803 100644 --- a/scripts/zones/Mamook/mobs/Gulool_Ja_Ja.lua +++ b/scripts/zones/Mamook/mobs/Gulool_Ja_Ja.lua @@ -23,51 +23,41 @@ entity.onMobEngage = function(mob, target) end entity.onMobFight = function(mob, target) - if mob:getBattleTime() % 60 < 2 and mob:getBattleTime() > 10 then - local mob1 = GetMobByID(ID.mob.GULOOL_JA_JA + 1) - if mob1 and not mob1:isSpawned() then - mob1:setSpawn(mob:getXPos() + math.random(1, 5), mob:getYPos(), mob:getZPos() + math.random(1, 5)) - SpawnMob(ID.mob.GULOOL_JA_JA + 1):updateEnmity(target) - else - local mob2 = GetMobByID(ID.mob.GULOOL_JA_JA + 2) - if mob2 and not mob2:isSpawned() then - mob2:setSpawn(mob:getXPos() + math.random(1, 5), mob:getYPos(), mob:getZPos() + math.random(1, 5)) - SpawnMob(ID.mob.GULOOL_JA_JA + 2):updateEnmity(target) - else - local mob3 = GetMobByID(ID.mob.GULOOL_JA_JA + 3) - if mob3 and not mob3:isSpawned() then - mob3:setSpawn(mob:getXPos() + math.random(1, 5), mob:getYPos(), mob:getZPos() + math.random(1, 5)) - SpawnMob(ID.mob.GULOOL_JA_JA + 3):updateEnmity(target) - else - local mob4 = GetMobByID(ID.mob.GULOOL_JA_JA + 4) - if mob4 and not mob4:isSpawned() then - mob4:setSpawn(mob:getXPos() + math.random(1, 5), mob:getYPos(), mob:getZPos() + math.random(1, 5)) - SpawnMob(ID.mob.GULOOL_JA_JA + 4):updateEnmity(target) - end - end - end - end - end - for i = ID.mob.GULOOL_JA_JA + 1, ID.mob.GULOOL_JA_JA + 4 do local pet = GetMobByID(i) if pet and pet:getCurrentAction() == xi.action.category.ROAMING then pet:updateEnmity(target) end end + + if mob:getBattleTime() % 60 < 2 and mob:getBattleTime() > 10 then + for i = ID.mob.GULOOL_JA_JA + 1, ID.mob.GULOOL_JA_JA + 4 do + local bodyguard = GetMobByID(i) + if bodyguard and not bodyguard:isSpawned() then + bodyguard:setSpawn(mob:getXPos() + math.random(1, 5), mob:getYPos(), mob:getZPos() + math.random(1, 5)) + SpawnMob(i):updateEnmity(target) + break + end + end + end end entity.onMobDisengage = function(mob) - for i = 1, 4 do DespawnMob(ID.mob.GULOOL_JA_JA + i) end + for i = ID.mob.GULOOL_JA_JA + 1, ID.mob.GULOOL_JA_JA + 4 do + DespawnMob(i) + end end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.SHINING_SCALE_RIFLER) - for i = 1, 4 do DespawnMob(ID.mob.GULOOL_JA_JA + i) end -end + if player then + player:addTitle(xi.title.SHINING_SCALE_RIFLER) + end -entity.onMobDespawn = function(mob) - for i = 1, 4 do DespawnMob(ID.mob.GULOOL_JA_JA + i) end + if optParams.isKiller or optParams.noKiller then + for i = ID.mob.GULOOL_JA_JA + 1, ID.mob.GULOOL_JA_JA + 4 do + DespawnMob(i) + end + end end return entity diff --git a/scripts/zones/Maze_of_Shakhrami/mobs/Ichorous_Ire.lua b/scripts/zones/Maze_of_Shakhrami/mobs/Ichorous_Ire.lua index 15e16fd6122..7439b37b87f 100644 --- a/scripts/zones/Maze_of_Shakhrami/mobs/Ichorous_Ire.lua +++ b/scripts/zones/Maze_of_Shakhrami/mobs/Ichorous_Ire.lua @@ -6,7 +6,9 @@ local entity = {} entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.JELLYBANE) + if player then + player:addTitle(xi.title.JELLYBANE) + end end return entity diff --git a/scripts/zones/Meriphataud_Mountains/mobs/Orcus.lua b/scripts/zones/Meriphataud_Mountains/mobs/Orcus.lua index ae50498a79e..dc360266ad3 100644 --- a/scripts/zones/Meriphataud_Mountains/mobs/Orcus.lua +++ b/scripts/zones/Meriphataud_Mountains/mobs/Orcus.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.ORCUS_TROPHY_HUNTER) - xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) - xi.hunts.checkHunt(mob, player, 550) + if player then + player:addTitle(xi.title.ORCUS_TROPHY_HUNTER) + xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) + xi.hunts.checkHunt(mob, player, 550) + end end return entity diff --git a/scripts/zones/Meriphataud_Mountains/mobs/Yilbegan.lua b/scripts/zones/Meriphataud_Mountains/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/Meriphataud_Mountains/mobs/Yilbegan.lua +++ b/scripts/zones/Meriphataud_Mountains/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/Meriphataud_Mountains_[S]/mobs/Orcus.lua b/scripts/zones/Meriphataud_Mountains_[S]/mobs/Orcus.lua index ae50498a79e..dc360266ad3 100644 --- a/scripts/zones/Meriphataud_Mountains_[S]/mobs/Orcus.lua +++ b/scripts/zones/Meriphataud_Mountains_[S]/mobs/Orcus.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.ORCUS_TROPHY_HUNTER) - xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) - xi.hunts.checkHunt(mob, player, 550) + if player then + player:addTitle(xi.title.ORCUS_TROPHY_HUNTER) + xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) + xi.hunts.checkHunt(mob, player, 550) + end end return entity diff --git a/scripts/zones/Meriphataud_Mountains_[S]/mobs/Sandworm.lua b/scripts/zones/Meriphataud_Mountains_[S]/mobs/Sandworm.lua index d72f742a435..563c6666594 100644 --- a/scripts/zones/Meriphataud_Mountains_[S]/mobs/Sandworm.lua +++ b/scripts/zones/Meriphataud_Mountains_[S]/mobs/Sandworm.lua @@ -11,7 +11,9 @@ entity.onMobInitialize = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.SANDWORM_WRANGLER) + if player then + player:addTitle(xi.title.SANDWORM_WRANGLER) + end end return entity diff --git a/scripts/zones/Meriphataud_Mountains_[S]/mobs/Yilbegan.lua b/scripts/zones/Meriphataud_Mountains_[S]/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/Meriphataud_Mountains_[S]/mobs/Yilbegan.lua +++ b/scripts/zones/Meriphataud_Mountains_[S]/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/Monastic_Cavern/mobs/Overlord_Bakgodek.lua b/scripts/zones/Monastic_Cavern/mobs/Overlord_Bakgodek.lua index dba741a4229..d66646a57ed 100644 --- a/scripts/zones/Monastic_Cavern/mobs/Overlord_Bakgodek.lua +++ b/scripts/zones/Monastic_Cavern/mobs/Overlord_Bakgodek.lua @@ -9,7 +9,7 @@ mixins = { require('scripts/mixins/job_special') } ---@type TMobEntity local entity = {} -entity.onMobInitialize = function(mob) +entity.onMobSpawn = function(mob) mob:setMobMod(xi.mobMod.ADD_EFFECT, 1) mob:setMod(xi.mod.DARK_SLEEP_RES_RANK, 11) mob:setMod(xi.mod.LIGHT_SLEEP_RES_RANK, 11) @@ -28,8 +28,11 @@ entity.onAdditionalEffect = function(mob, target, damage) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.OVERLORD_OVERTHROWER) - if optParams.isKiller then + if player then + player:addTitle(xi.title.OVERLORD_OVERTHROWER) + end + + if optParams.isKiller or optParams.noKiller then mob:showText(mob, ID.text.ORC_KING_DEATH) end end diff --git a/scripts/zones/Mount_Zhayolm/mobs/Cerberus.lua b/scripts/zones/Mount_Zhayolm/mobs/Cerberus.lua index e5eaa2c4446..aea673506f7 100644 --- a/scripts/zones/Mount_Zhayolm/mobs/Cerberus.lua +++ b/scripts/zones/Mount_Zhayolm/mobs/Cerberus.lua @@ -10,13 +10,9 @@ entity.onMobSpawn = function(mob) mob:setMobMod(xi.mobMod.AOE_HIT_ALL, 1) end -entity.onMobRoam = function(mob) - mob:setMobMod(xi.mobMod.NO_MOVE, 0) -end - entity.onMobFight = function(mob, target) local targetPos = target:getPos() - local spawnPos = mob:getSpawnPos() + local spawnPos = mob:getSpawnPos() local arenaBoundaries = { { { 335, -92 }, { 332, -94 } }, @@ -62,8 +58,14 @@ entity.onMobFight = function(mob, target) end end +entity.onMobDisengage = function(mob) + mob:setMobMod(xi.mobMod.NO_MOVE, 0) +end + entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.CERBERUS_MUZZLER) + if player then + player:addTitle(xi.title.CERBERUS_MUZZLER) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/North_Gustaberg/mobs/Yilbegan.lua b/scripts/zones/North_Gustaberg/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/North_Gustaberg/mobs/Yilbegan.lua +++ b/scripts/zones/North_Gustaberg/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/North_Gustaberg_[S]/mobs/Sandworm.lua b/scripts/zones/North_Gustaberg_[S]/mobs/Sandworm.lua index 95720272069..9a3b4e1e219 100644 --- a/scripts/zones/North_Gustaberg_[S]/mobs/Sandworm.lua +++ b/scripts/zones/North_Gustaberg_[S]/mobs/Sandworm.lua @@ -11,7 +11,9 @@ entity.onMobInitialize = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.SANDWORM_WRANGLER) + if player then + player:addTitle(xi.title.SANDWORM_WRANGLER) + end end return entity diff --git a/scripts/zones/North_Gustaberg_[S]/mobs/Yilbegan.lua b/scripts/zones/North_Gustaberg_[S]/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/North_Gustaberg_[S]/mobs/Yilbegan.lua +++ b/scripts/zones/North_Gustaberg_[S]/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/Ordelles_Caves/mobs/Morbolger.lua b/scripts/zones/Ordelles_Caves/mobs/Morbolger.lua index 443c5fe9de1..d15ff6d3ea4 100644 --- a/scripts/zones/Ordelles_Caves/mobs/Morbolger.lua +++ b/scripts/zones/Ordelles_Caves/mobs/Morbolger.lua @@ -67,7 +67,9 @@ entity.onMobInitialize = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.MORBOLBANE) + if player then + player:addTitle(xi.title.MORBOLBANE) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/Pashhow_Marshlands/mobs/Yilbegan.lua b/scripts/zones/Pashhow_Marshlands/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/Pashhow_Marshlands/mobs/Yilbegan.lua +++ b/scripts/zones/Pashhow_Marshlands/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/Pashhow_Marshlands_[S]/mobs/Yilbegan.lua b/scripts/zones/Pashhow_Marshlands_[S]/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/Pashhow_Marshlands_[S]/mobs/Yilbegan.lua +++ b/scripts/zones/Pashhow_Marshlands_[S]/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/Qulun_Dome/mobs/ZaDha_Adamantking.lua b/scripts/zones/Qulun_Dome/mobs/ZaDha_Adamantking.lua index bbfdfb505bc..9e52bb01679 100644 --- a/scripts/zones/Qulun_Dome/mobs/ZaDha_Adamantking.lua +++ b/scripts/zones/Qulun_Dome/mobs/ZaDha_Adamantking.lua @@ -11,20 +11,20 @@ local entity = {} entity.spawnPoints = { - { x = 281.000, y = 43.000, z = 96.000 } + { x = 281.000, y = 43.000, z = 96.000 } } entity.onMobInitialize = function(mob) mob:setMobMod(xi.mobMod.ADD_EFFECT, 1) +end + +entity.onMobSpawn = function(mob) mob:setMod(xi.mod.DARK_SLEEP_RES_RANK, 11) mob:setMod(xi.mod.LIGHT_SLEEP_RES_RANK, 11) mob:setMod(xi.mod.PARALYZE_RES_RANK, 8) mob:setMod(xi.mod.SLOW_RES_RANK, 8) mob:setMod(xi.mod.SILENCE_RES_RANK, 11) -end - -entity.onMobSpawn = function(mob) - mob:setMobMod(xi.mobMod.BASE_DAMAGE_MULTIPLIER, 150) mob:setMod(xi.mod.DOUBLE_ATTACK, 20) + mob:setMobMod(xi.mobMod.BASE_DAMAGE_MULTIPLIER, 150) end entity.onMobEngage = function(mob, target) @@ -36,7 +36,10 @@ entity.onAdditionalEffect = function(mob, target, damage) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.ADAMANTKING_USURPER) + if player then + player:addTitle(xi.title.ADAMANTKING_USURPER) + end + if optParams.isKiller then mob:showText(mob, ID.text.QUADAV_KING_DEATH) end diff --git a/scripts/zones/Ranguemont_Pass/mobs/Taisaijin.lua b/scripts/zones/Ranguemont_Pass/mobs/Taisaijin.lua index 07b19059621..9295ddefa86 100644 --- a/scripts/zones/Ranguemont_Pass/mobs/Taisaijin.lua +++ b/scripts/zones/Ranguemont_Pass/mobs/Taisaijin.lua @@ -21,7 +21,9 @@ entity.onMobSpawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.BYE_BYE_TAISAI) + if player then + player:addTitle(xi.title.BYE_BYE_TAISAI) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/Riverne-Site_A01/mobs/Ouryu.lua b/scripts/zones/Riverne-Site_A01/mobs/Ouryu.lua index 1af0e970ecb..2484e585c2e 100644 --- a/scripts/zones/Riverne-Site_A01/mobs/Ouryu.lua +++ b/scripts/zones/Riverne-Site_A01/mobs/Ouryu.lua @@ -51,37 +51,36 @@ local function landWithoutTouchdown(mob) mob:setLocalVar('mistmeltUsed', 0) end +entity.onMobInitialize = function(mob) + mob:addImmunity(xi.immunity.SLOW) + mob:addImmunity(xi.immunity.TERROR) + mob:addImmunity(xi.immunity.STUN) + mob:addImmunity(xi.immunity.PLAGUE) + mob:addImmunity(xi.immunity.ELEGY) + mob:addImmunity(xi.immunity.PETRIFY) +end + entity.onMobSpawn = function(mob) - mob:setMobMod(xi.mobMod.ADD_EFFECT, 1) - mob:setMobMod(xi.mobMod.NO_STANDBACK, 1) -- resetting so it doesn't respawn in flight mode mob:setMobSkillAttack(0) - -- subanim 0 is only used when it spawns until first flight + mob:setSpellList(548) mob:setAnimationSub(initialGroundPhaseAnimationSub) - if mob:hasStatusEffect(xi.effect.ALL_MISS) then - mob:delStatusEffect(xi.effect.ALL_MISS) - end + mob:delStatusEffect(xi.effect.ALL_MISS) -- Level 90 + 2 + 53 = 145 Base Weapon Damage - mob:setMobMod(xi.mobMod.WEAPON_BONUS, 53) mob:setMod(xi.mod.UDMGRANGE, -5000) mob:setMod(xi.mod.UDMGMAGIC, -5000) mob:setMod(xi.mod.UDMGBREATH, -5000) - mob:addImmunity(xi.immunity.SLOW) - mob:addImmunity(xi.immunity.TERROR) - mob:addImmunity(xi.immunity.STUN) - mob:addImmunity(xi.immunity.PLAGUE) - mob:addImmunity(xi.immunity.ELEGY) - mob:addImmunity(xi.immunity.PETRIFY) mob:setMod(xi.mod.UFASTCAST, 90) + mob:setMod(xi.mod.DOUBLE_ATTACK, 10) + mob:setMod(xi.mod.REFRESH, 200) + mob:setMobMod(xi.mobMod.WEAPON_BONUS, 53) mob:setMobMod(xi.mobMod.DETECTION, bit.bor(xi.detects.SIGHT, xi.detects.HEARING)) mob:setMobMod(xi.mobMod.SIGHT_RANGE, 20) mob:setMobMod(xi.mobMod.SOUND_RANGE, 15) - -- consider making new mob group so spell list can be set there - mob:setSpellList(548) mob:setMobMod(xi.mobMod.MAGIC_COOL, 60) - mob:setMod(xi.mod.DOUBLE_ATTACK, 10) - mob:setMod(xi.mod.REFRESH, 200) + mob:setMobMod(xi.mobMod.ADD_EFFECT, 1) + mob:setMobMod(xi.mobMod.NO_STANDBACK, 1) -- can use invincible on ground or air xi.mix.jobSpecial.config(mob, { @@ -208,7 +207,10 @@ entity.onAdditionalEffect = function(mob, target, damage) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.OURYU_OVERWHELMER) + if player then + player:addTitle(xi.title.OURYU_OVERWHELMER) + end + if optParams.isKiller or optParams.noKiller then local battlefield = mob:getBattlefield() if battlefield then diff --git a/scripts/zones/Riverne-Site_B01/mobs/Boroka.lua b/scripts/zones/Riverne-Site_B01/mobs/Boroka.lua index 9d97875854f..a8efd98d71e 100644 --- a/scripts/zones/Riverne-Site_B01/mobs/Boroka.lua +++ b/scripts/zones/Riverne-Site_B01/mobs/Boroka.lua @@ -76,7 +76,10 @@ entity.onMobWeaponSkill = function(mob, target, skill) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.BOROKA_BELEAGUERER) + if player then + player:addTitle(xi.title.BOROKA_BELEAGUERER) + end + mob:setRespawnTime(math.random(75600, 86400)) -- 21-24 hour respawn end diff --git a/scripts/zones/Rolanberry_Fields/mobs/Simurgh.lua b/scripts/zones/Rolanberry_Fields/mobs/Simurgh.lua index 1f958a6bb23..d1a2007e7e7 100644 --- a/scripts/zones/Rolanberry_Fields/mobs/Simurgh.lua +++ b/scripts/zones/Rolanberry_Fields/mobs/Simurgh.lua @@ -99,7 +99,9 @@ entity.onMobFight = function(mob, target) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.SIMURGH_POACHER) + if player then + player:addTitle(xi.title.SIMURGH_POACHER) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/Rolanberry_Fields/mobs/Verthandi.lua b/scripts/zones/Rolanberry_Fields/mobs/Verthandi.lua index 2f601c857e4..7868e024883 100644 --- a/scripts/zones/Rolanberry_Fields/mobs/Verthandi.lua +++ b/scripts/zones/Rolanberry_Fields/mobs/Verthandi.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.VERTHANDI_ENSNARER) - xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) - xi.hunts.checkHunt(mob, player, 553) + if player then + player:addTitle(xi.title.VERTHANDI_ENSNARER) + xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) + xi.hunts.checkHunt(mob, player, 553) + end end return entity diff --git a/scripts/zones/Rolanberry_Fields/mobs/Yilbegan.lua b/scripts/zones/Rolanberry_Fields/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/Rolanberry_Fields/mobs/Yilbegan.lua +++ b/scripts/zones/Rolanberry_Fields/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/Rolanberry_Fields_[S]/mobs/Sandworm.lua b/scripts/zones/Rolanberry_Fields_[S]/mobs/Sandworm.lua index 97e6bf1920f..383ed4cc7fc 100644 --- a/scripts/zones/Rolanberry_Fields_[S]/mobs/Sandworm.lua +++ b/scripts/zones/Rolanberry_Fields_[S]/mobs/Sandworm.lua @@ -11,7 +11,9 @@ entity.onMobInitialize = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.SANDWORM_WRANGLER) + if player then + player:addTitle(xi.title.SANDWORM_WRANGLER) + end end return entity diff --git a/scripts/zones/Rolanberry_Fields_[S]/mobs/Verthandi.lua b/scripts/zones/Rolanberry_Fields_[S]/mobs/Verthandi.lua index 2f601c857e4..7868e024883 100644 --- a/scripts/zones/Rolanberry_Fields_[S]/mobs/Verthandi.lua +++ b/scripts/zones/Rolanberry_Fields_[S]/mobs/Verthandi.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.VERTHANDI_ENSNARER) - xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) - xi.hunts.checkHunt(mob, player, 553) + if player then + player:addTitle(xi.title.VERTHANDI_ENSNARER) + xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) + xi.hunts.checkHunt(mob, player, 553) + end end return entity diff --git a/scripts/zones/Rolanberry_Fields_[S]/mobs/Yilbegan.lua b/scripts/zones/Rolanberry_Fields_[S]/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/Rolanberry_Fields_[S]/mobs/Yilbegan.lua +++ b/scripts/zones/Rolanberry_Fields_[S]/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/Ruhotz_Silvermines/mobs/Lambton_Worm.lua b/scripts/zones/Ruhotz_Silvermines/mobs/Lambton_Worm.lua index 8bfbdb6f510..a55b4d3f838 100644 --- a/scripts/zones/Ruhotz_Silvermines/mobs/Lambton_Worm.lua +++ b/scripts/zones/Ruhotz_Silvermines/mobs/Lambton_Worm.lua @@ -6,7 +6,9 @@ local entity = {} entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.LAMBTON_WORM_DESEGMENTER) + if player then + player:addTitle(xi.title.LAMBTON_WORM_DESEGMENTER) + end end return entity diff --git a/scripts/zones/Sauromugue_Champaign/mobs/Roc.lua b/scripts/zones/Sauromugue_Champaign/mobs/Roc.lua index 598dcdf451d..d40e80a9e58 100644 --- a/scripts/zones/Sauromugue_Champaign/mobs/Roc.lua +++ b/scripts/zones/Sauromugue_Champaign/mobs/Roc.lua @@ -69,7 +69,9 @@ entity.onMobFight = function(mob, target) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.ROC_STAR) + if player then + player:addTitle(xi.title.ROC_STAR) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/Sauromugue_Champaign/mobs/Verthandi.lua b/scripts/zones/Sauromugue_Champaign/mobs/Verthandi.lua index 2f601c857e4..7868e024883 100644 --- a/scripts/zones/Sauromugue_Champaign/mobs/Verthandi.lua +++ b/scripts/zones/Sauromugue_Champaign/mobs/Verthandi.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.VERTHANDI_ENSNARER) - xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) - xi.hunts.checkHunt(mob, player, 553) + if player then + player:addTitle(xi.title.VERTHANDI_ENSNARER) + xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) + xi.hunts.checkHunt(mob, player, 553) + end end return entity diff --git a/scripts/zones/Sauromugue_Champaign/mobs/Yilbegan.lua b/scripts/zones/Sauromugue_Champaign/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/Sauromugue_Champaign/mobs/Yilbegan.lua +++ b/scripts/zones/Sauromugue_Champaign/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/Sauromugue_Champaign_[S]/mobs/Sandworm.lua b/scripts/zones/Sauromugue_Champaign_[S]/mobs/Sandworm.lua index 98ddf3261c2..564b3c0926c 100644 --- a/scripts/zones/Sauromugue_Champaign_[S]/mobs/Sandworm.lua +++ b/scripts/zones/Sauromugue_Champaign_[S]/mobs/Sandworm.lua @@ -11,7 +11,9 @@ entity.onMobInitialize = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.SANDWORM_WRANGLER) + if player then + player:addTitle(xi.title.SANDWORM_WRANGLER) + end end return entity diff --git a/scripts/zones/Sauromugue_Champaign_[S]/mobs/Verthandi.lua b/scripts/zones/Sauromugue_Champaign_[S]/mobs/Verthandi.lua index 2f601c857e4..7868e024883 100644 --- a/scripts/zones/Sauromugue_Champaign_[S]/mobs/Verthandi.lua +++ b/scripts/zones/Sauromugue_Champaign_[S]/mobs/Verthandi.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.VERTHANDI_ENSNARER) - xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) - xi.hunts.checkHunt(mob, player, 553) + if player then + player:addTitle(xi.title.VERTHANDI_ENSNARER) + xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) + xi.hunts.checkHunt(mob, player, 553) + end end return entity diff --git a/scripts/zones/Sauromugue_Champaign_[S]/mobs/Yilbegan.lua b/scripts/zones/Sauromugue_Champaign_[S]/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/Sauromugue_Champaign_[S]/mobs/Yilbegan.lua +++ b/scripts/zones/Sauromugue_Champaign_[S]/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/Silver_Sea_Remnants/mobs/Long-Armed_Chariot.lua b/scripts/zones/Silver_Sea_Remnants/mobs/Long-Armed_Chariot.lua index bf42243a295..2fca9d5442a 100644 --- a/scripts/zones/Silver_Sea_Remnants/mobs/Long-Armed_Chariot.lua +++ b/scripts/zones/Silver_Sea_Remnants/mobs/Long-Armed_Chariot.lua @@ -6,7 +6,9 @@ local entity = {} entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.MOON_CHARIOTEER) + if player then + player:addTitle(xi.title.MOON_CHARIOTEER) + end end return entity diff --git a/scripts/zones/Tahrongi_Canyon/mobs/Yilbegan.lua b/scripts/zones/Tahrongi_Canyon/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/Tahrongi_Canyon/mobs/Yilbegan.lua +++ b/scripts/zones/Tahrongi_Canyon/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/The_Boyahda_Tree/mobs/Voluptuous_Vivian.lua b/scripts/zones/The_Boyahda_Tree/mobs/Voluptuous_Vivian.lua index a7022912d1e..ce81cee4671 100644 --- a/scripts/zones/The_Boyahda_Tree/mobs/Voluptuous_Vivian.lua +++ b/scripts/zones/The_Boyahda_Tree/mobs/Voluptuous_Vivian.lua @@ -72,18 +72,15 @@ entity.onMobInitialize = function(mob) xi.mob.updateNMSpawnPoint(mob) mob:setMobMod(xi.mobMod.GIL_MIN, 20000) mob:setMobMod(xi.mobMod.GIL_MAX, 20000) - mob:setMobMod(xi.mobMod.BASE_DAMAGE_MULTIPLIER, 150) -end -entity.onMobSpawn = function(mob) - mob:setMobMod(xi.mobMod.NO_MOVE, 0) mob:addImmunity(xi.immunity.DARK_SLEEP) mob:addImmunity(xi.immunity.LIGHT_SLEEP) mob:addImmunity(xi.immunity.PARALYZE) end -entity.onMobRoam = function(mob) +entity.onMobSpawn = function(mob) mob:setMobMod(xi.mobMod.NO_MOVE, 0) + mob:setMobMod(xi.mobMod.BASE_DAMAGE_MULTIPLIER, 150) end entity.onMobFight = function(mob, target) @@ -105,8 +102,14 @@ entity.onMobFight = function(mob, target) end end +entity.onMobDisengage = function(mob) + mob:setMobMod(xi.mobMod.NO_MOVE, 0) +end + entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.THE_VIVISECTOR) + if player then + player:addTitle(xi.title.THE_VIVISECTOR) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/The_Eldieme_Necropolis/mobs/Lich_C_Magnus.lua b/scripts/zones/The_Eldieme_Necropolis/mobs/Lich_C_Magnus.lua index 9d07273d4e3..1022cd3d585 100644 --- a/scripts/zones/The_Eldieme_Necropolis/mobs/Lich_C_Magnus.lua +++ b/scripts/zones/The_Eldieme_Necropolis/mobs/Lich_C_Magnus.lua @@ -6,7 +6,9 @@ local entity = {} entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.LICH_BANISHER) + if player then + player:addTitle(xi.title.LICH_BANISHER) + end end return entity diff --git a/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Envy.lua b/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Envy.lua index ad66d8e1bdd..902aacfab03 100644 --- a/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Envy.lua +++ b/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Envy.lua @@ -6,8 +6,10 @@ local entity = {} entity.onMobDeath = function(mob, player, optParams) - xi.hunts.checkHunt(mob, player, 189) - player:addTitle(xi.title.SKULLCRUSHER) + if player then + player:addTitle(xi.title.SKULLCRUSHER) + xi.hunts.checkHunt(mob, player, 189) + end end return entity diff --git a/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Gluttony.lua b/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Gluttony.lua index c2a1dc08135..2aff0ed6776 100644 --- a/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Gluttony.lua +++ b/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Gluttony.lua @@ -6,8 +6,10 @@ local entity = {} entity.onMobDeath = function(mob, player, optParams) - xi.hunts.checkHunt(mob, player, 184) - player:addTitle(xi.title.SKULLCRUSHER) + if player then + player:addTitle(xi.title.SKULLCRUSHER) + xi.hunts.checkHunt(mob, player, 184) + end end return entity diff --git a/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Greed.lua b/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Greed.lua index 1aff84fdf8e..aaa1eb01888 100644 --- a/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Greed.lua +++ b/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Greed.lua @@ -6,8 +6,10 @@ local entity = {} entity.onMobDeath = function(mob, player, optParams) - xi.hunts.checkHunt(mob, player, 185) - player:addTitle(xi.title.SKULLCRUSHER) + if player then + player:addTitle(xi.title.SKULLCRUSHER) + xi.hunts.checkHunt(mob, player, 185) + end end return entity diff --git a/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Lust.lua b/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Lust.lua index 4429b491e7e..48b69fbdd63 100644 --- a/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Lust.lua +++ b/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Lust.lua @@ -6,8 +6,10 @@ local entity = {} entity.onMobDeath = function(mob, player, optParams) - xi.hunts.checkHunt(mob, player, 187) - player:addTitle(xi.title.SKULLCRUSHER) + if player then + player:addTitle(xi.title.SKULLCRUSHER) + xi.hunts.checkHunt(mob, player, 187) + end end return entity diff --git a/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Pride.lua b/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Pride.lua index f67b4a316af..bf8a3f82d5a 100644 --- a/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Pride.lua +++ b/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Pride.lua @@ -6,8 +6,10 @@ local entity = {} entity.onMobDeath = function(mob, player, optParams) - xi.hunts.checkHunt(mob, player, 188) - player:addTitle(xi.title.SKULLCRUSHER) + if player then + player:addTitle(xi.title.SKULLCRUSHER) + xi.hunts.checkHunt(mob, player, 188) + end end return entity diff --git a/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Sloth.lua b/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Sloth.lua index 86da68a809e..d4af402c10b 100644 --- a/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Sloth.lua +++ b/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Sloth.lua @@ -6,8 +6,10 @@ local entity = {} entity.onMobDeath = function(mob, player, optParams) - xi.hunts.checkHunt(mob, player, 186) - player:addTitle(xi.title.SKULLCRUSHER) + if player then + player:addTitle(xi.title.SKULLCRUSHER) + xi.hunts.checkHunt(mob, player, 186) + end end return entity diff --git a/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Wrath.lua b/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Wrath.lua index 18ded9157e4..8d84e123375 100644 --- a/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Wrath.lua +++ b/scripts/zones/The_Eldieme_Necropolis/mobs/Skull_of_Wrath.lua @@ -6,8 +6,10 @@ local entity = {} entity.onMobDeath = function(mob, player, optParams) - xi.hunts.checkHunt(mob, player, 190) - player:addTitle(xi.title.SKULLCRUSHER) + if player then + player:addTitle(xi.title.SKULLCRUSHER) + xi.hunts.checkHunt(mob, player, 190) + end end return entity diff --git a/scripts/zones/The_Shrine_of_RuAvitau/mobs/Kirin.lua b/scripts/zones/The_Shrine_of_RuAvitau/mobs/Kirin.lua index b7cbfcbf0d0..60292ca6cc7 100644 --- a/scripts/zones/The_Shrine_of_RuAvitau/mobs/Kirin.lua +++ b/scripts/zones/The_Shrine_of_RuAvitau/mobs/Kirin.lua @@ -85,8 +85,10 @@ entity.onMobFight = function(mob, target) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.KIRIN_CAPTIVATOR) - player:showText(mob, ID.text.KIRIN_OFFSET + 1) + if player then + player:addTitle(xi.title.KIRIN_CAPTIVATOR) + player:showText(mob, ID.text.KIRIN_OFFSET + 1) + end end return entity diff --git a/scripts/zones/Uleguerand_Range/mobs/Jormungand.lua b/scripts/zones/Uleguerand_Range/mobs/Jormungand.lua index cdee53db1a6..3c4b53a13f8 100644 --- a/scripts/zones/Uleguerand_Range/mobs/Jormungand.lua +++ b/scripts/zones/Uleguerand_Range/mobs/Jormungand.lua @@ -68,6 +68,15 @@ local function enterFlight(mob) end entity.onMobInitialize = function(mob) + mob:addImmunity(xi.immunity.BIND) + mob:addImmunity(xi.immunity.LIGHT_SLEEP) + mob:addImmunity(xi.immunity.PARALYZE) + mob:addImmunity(xi.immunity.SILENCE) + mob:addImmunity(xi.immunity.PETRIFY) + mob:addImmunity(xi.immunity.PLAGUE) + mob:addImmunity(xi.immunity.GRAVITY) + mob:addImmunity(xi.immunity.TERROR) + mob:setCarefulPathing(true) mob:setMobMod(xi.mobMod.AOE_HIT_ALL, 1) @@ -100,18 +109,6 @@ entity.onMobSpawn = function(mob) mob:setMobMod(xi.mobMod.ROAM_DISTANCE, 5) mob:setMobMod(xi.mobMod.WEAPON_BONUS, 158) -- 255 total weapon damage mob:setBehavior(bit.bor(mob:getBehavior(), xi.behavior.NO_TURN)) - mob:addImmunity(xi.immunity.BIND) - mob:addImmunity(xi.immunity.LIGHT_SLEEP) - mob:addImmunity(xi.immunity.PARALYZE) - mob:addImmunity(xi.immunity.SILENCE) - mob:addImmunity(xi.immunity.PETRIFY) - mob:addImmunity(xi.immunity.PLAGUE) - mob:addImmunity(xi.immunity.GRAVITY) - mob:addImmunity(xi.immunity.TERROR) -end - -entity.onMobRoam = function(mob) - mob:setMobMod(xi.mobMod.NO_MOVE, 0) end entity.onMobEngage = function(mob, target) @@ -267,10 +264,14 @@ entity.onMobDisengage = function(mob) mob:setMobSkillAttack(0) mob:setLocalVar('changeHP', 0) end + + mob:setMobMod(xi.mobMod.NO_MOVE, 0) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.WORLD_SERPENT_SLAYER) + if player then + player:addTitle(xi.title.WORLD_SERPENT_SLAYER) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/Valley_of_Sorrows/mobs/Adamantoise.lua b/scripts/zones/Valley_of_Sorrows/mobs/Adamantoise.lua index b92336f32b0..59d646f5f7c 100644 --- a/scripts/zones/Valley_of_Sorrows/mobs/Adamantoise.lua +++ b/scripts/zones/Valley_of_Sorrows/mobs/Adamantoise.lua @@ -67,21 +67,28 @@ entity.spawnPoints = { x = -24.813, y = -0.148, z = -14.807 } } -entity.onMobSpawn = function(mob) - mob:setLocalVar('[rage]timer', 1800) -- 30 minutes +entity.onMobInitialize = function(mob) mob:addImmunity(xi.immunity.LIGHT_SLEEP) mob:addImmunity(xi.immunity.DARK_SLEEP) - mob:setMod(xi.mod.DMGMAGIC, -3500) - mob:setMobMod(xi.mobMod.WEAPON_BONUS, 36) -- 108 total weapon damage - mob:setMod(xi.mod.DEF, 4112) - mob:setMod(xi.mod.ATT, 450) +end +entity.onMobSpawn = function(mob) -- Despawn the ??? GetNPCByID(ID.npc.ADAMANTOISE_QM):setStatus(xi.status.DISAPPEAR) + + mob:setMod(xi.mod.DEF, 4112) + mob:setMod(xi.mod.ATT, 450) + mob:setMod(xi.mod.DMGMAGIC, -3500) + + mob:setMobMod(xi.mobMod.WEAPON_BONUS, 36) -- 108 total weapon damage + + mob:setLocalVar('[rage]timer', 1800) -- 30 minutes end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.TORTOISE_TORTURER) + if player then + player:addTitle(xi.title.TORTOISE_TORTURER) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/Valley_of_Sorrows/mobs/Aspidochelone.lua b/scripts/zones/Valley_of_Sorrows/mobs/Aspidochelone.lua index e4dc7440666..21b90949a6f 100644 --- a/scripts/zones/Valley_of_Sorrows/mobs/Aspidochelone.lua +++ b/scripts/zones/Valley_of_Sorrows/mobs/Aspidochelone.lua @@ -85,27 +85,39 @@ local outOfShell = function(mob) mob:setMod(xi.mod.UDMGRANGE, 0) mob:setMod(xi.mod.UDMGPHYS, 0) mob:setMobMod(xi.mobMod.NO_MOVE, 0) + mob:setAnimationSub(2) + mob:setTP(3000) -- Immediately TPs coming out of shell +end + +entity.onMobInitialize = function(mob) + mob:addImmunity(xi.immunity.LIGHT_SLEEP) + mob:addImmunity(xi.immunity.DARK_SLEEP) end entity.onMobSpawn = function(mob) -- Despawn the ??? GetNPCByID(ID.npc.ADAMANTOISE_QM):setStatus(xi.status.DISAPPEAR) - outOfShell(mob) -- Ensure out of shell mods are set on spawn + mob:setMobAbilityEnabled(true) + mob:setAutoAttackEnabled(true) + mob:setAnimationSub(0) - mob:setLocalVar('[rage]timer', 3600) -- 60 minutes - mob:setLocalVar('dmgToChange', mob:getHP() - 1000) - mob:addImmunity(xi.immunity.LIGHT_SLEEP) - mob:addImmunity(xi.immunity.DARK_SLEEP) - mob:addMod(xi.mod.DOUBLE_ATTACK, 20) + mob:setMod(xi.mod.DEF, 702) + mob:setMod(xi.mod.ATT, 395) + mob:setMod(xi.mod.EVA, 310) + mob:setMod(xi.mod.REGEN, 0) + mob:setMod(xi.mod.UDMGRANGE, 0) + mob:setMod(xi.mod.UDMGPHYS, 0) + mob:setMod(xi.mod.DOUBLE_ATTACK, 20) mob:setMod(xi.mod.UDMGMAGIC, -3000) mob:setMod(xi.mod.CURSERES, 100) + mob:setMobMod(xi.mobMod.WEAPON_BONUS, 45) -- 130 total weapon damage mob:setMobMod(xi.mobMod.AOE_HIT_ALL, 1) - mob:setMod(xi.mod.DEF, 702) - mob:setMod(xi.mod.ATT, 395) - mob:setMod(xi.mod.EVA, 310) - mob:setAnimationSub(0) + mob:setMobMod(xi.mobMod.NO_MOVE, 0) + + mob:setLocalVar('[rage]timer', 3600) -- 60 minutes + mob:setLocalVar('dmgToChange', mob:getHP() - 1000) end entity.onMobFight = function(mob, target) @@ -119,8 +131,6 @@ entity.onMobFight = function(mob, target) mob:getHPP() == 100) then outOfShell(mob) - mob:setAnimationSub(2) - mob:setTP(3000) -- Immediately TPs coming out of shell end if @@ -131,8 +141,6 @@ entity.onMobFight = function(mob, target) if mob:getAnimationSub() == 1 then outOfShell(mob) - mob:setAnimationSub(2) - mob:setTP(3000) -- Immediately TPs coming out of shell elseif mob:getAnimationSub() == 2 or mob:getAnimationSub() == 0 @@ -148,7 +156,9 @@ entity.onMobFight = function(mob, target) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.ASPIDOCHELONE_SINKER) + if player then + player:addTitle(xi.title.ASPIDOCHELONE_SINKER) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/Wajaom_Woodlands/mobs/Hydra.lua b/scripts/zones/Wajaom_Woodlands/mobs/Hydra.lua index 7d47dd289c8..141af55f46c 100644 --- a/scripts/zones/Wajaom_Woodlands/mobs/Hydra.lua +++ b/scripts/zones/Wajaom_Woodlands/mobs/Hydra.lua @@ -54,7 +54,9 @@ entity.onMobFight = function(mob, target) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.HYDRA_HEADHUNTER) + if player then + player:addTitle(xi.title.HYDRA_HEADHUNTER) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/Waughroon_Shrine/mobs/Dark_Dragon.lua b/scripts/zones/Waughroon_Shrine/mobs/Dark_Dragon.lua index 9c405534922..4897499e016 100644 --- a/scripts/zones/Waughroon_Shrine/mobs/Dark_Dragon.lua +++ b/scripts/zones/Waughroon_Shrine/mobs/Dark_Dragon.lua @@ -15,7 +15,9 @@ entity.onMobInitialize = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.DARK_DRAGON_SLAYER) + if player then + player:addTitle(xi.title.DARK_DRAGON_SLAYER) + end end return entity diff --git a/scripts/zones/West_Sarutabaruta/mobs/Orcus.lua b/scripts/zones/West_Sarutabaruta/mobs/Orcus.lua index ae50498a79e..dc360266ad3 100644 --- a/scripts/zones/West_Sarutabaruta/mobs/Orcus.lua +++ b/scripts/zones/West_Sarutabaruta/mobs/Orcus.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.ORCUS_TROPHY_HUNTER) - xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) - xi.hunts.checkHunt(mob, player, 550) + if player then + player:addTitle(xi.title.ORCUS_TROPHY_HUNTER) + xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) + xi.hunts.checkHunt(mob, player, 550) + end end return entity diff --git a/scripts/zones/West_Sarutabaruta/mobs/Yilbegan.lua b/scripts/zones/West_Sarutabaruta/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/West_Sarutabaruta/mobs/Yilbegan.lua +++ b/scripts/zones/West_Sarutabaruta/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/West_Sarutabaruta_[S]/mobs/Orcus.lua b/scripts/zones/West_Sarutabaruta_[S]/mobs/Orcus.lua index ae50498a79e..dc360266ad3 100644 --- a/scripts/zones/West_Sarutabaruta_[S]/mobs/Orcus.lua +++ b/scripts/zones/West_Sarutabaruta_[S]/mobs/Orcus.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.ORCUS_TROPHY_HUNTER) - xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) - xi.hunts.checkHunt(mob, player, 550) + if player then + player:addTitle(xi.title.ORCUS_TROPHY_HUNTER) + xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) + xi.hunts.checkHunt(mob, player, 550) + end end return entity diff --git a/scripts/zones/West_Sarutabaruta_[S]/mobs/Sandworm.lua b/scripts/zones/West_Sarutabaruta_[S]/mobs/Sandworm.lua index 416bfc0f43c..c7e43c62dc0 100644 --- a/scripts/zones/West_Sarutabaruta_[S]/mobs/Sandworm.lua +++ b/scripts/zones/West_Sarutabaruta_[S]/mobs/Sandworm.lua @@ -11,7 +11,9 @@ entity.onMobInitialize = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.SANDWORM_WRANGLER) + if player then + player:addTitle(xi.title.SANDWORM_WRANGLER) + end end return entity diff --git a/scripts/zones/West_Sarutabaruta_[S]/mobs/Yilbegan.lua b/scripts/zones/West_Sarutabaruta_[S]/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/West_Sarutabaruta_[S]/mobs/Yilbegan.lua +++ b/scripts/zones/West_Sarutabaruta_[S]/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/Western_Altepa_Desert/mobs/King_Vinegarroon.lua b/scripts/zones/Western_Altepa_Desert/mobs/King_Vinegarroon.lua index 41e478dea14..46504d3a634 100644 --- a/scripts/zones/Western_Altepa_Desert/mobs/King_Vinegarroon.lua +++ b/scripts/zones/Western_Altepa_Desert/mobs/King_Vinegarroon.lua @@ -145,7 +145,9 @@ entity.onMobSkillTarget = function(target, mob, mobskill) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.VINEGAR_EVAPORATOR) + if player then + player:addTitle(xi.title.VINEGAR_EVAPORATOR) + end end entity.onMobDespawn = function(mob) diff --git a/scripts/zones/Xarcabard/mobs/Lord_Ruthven.lua b/scripts/zones/Xarcabard/mobs/Lord_Ruthven.lua index 0d9d835ee6c..c7dac5df17d 100644 --- a/scripts/zones/Xarcabard/mobs/Lord_Ruthven.lua +++ b/scripts/zones/Xarcabard/mobs/Lord_Ruthven.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.RUTHVEN_ENTOMBER) - xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) - xi.hunts.checkHunt(mob, player, 556) + if player then + player:addTitle(xi.title.RUTHVEN_ENTOMBER) + xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) + xi.hunts.checkHunt(mob, player, 556) + end end return entity diff --git a/scripts/zones/Xarcabard/mobs/Yilbegan.lua b/scripts/zones/Xarcabard/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/Xarcabard/mobs/Yilbegan.lua +++ b/scripts/zones/Xarcabard/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/Xarcabard_[S]/mobs/Lord_Ruthven.lua b/scripts/zones/Xarcabard_[S]/mobs/Lord_Ruthven.lua index 0d9d835ee6c..c7dac5df17d 100644 --- a/scripts/zones/Xarcabard_[S]/mobs/Lord_Ruthven.lua +++ b/scripts/zones/Xarcabard_[S]/mobs/Lord_Ruthven.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.RUTHVEN_ENTOMBER) - xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) - xi.hunts.checkHunt(mob, player, 556) + if player then + player:addTitle(xi.title.RUTHVEN_ENTOMBER) + xi.voidwalker.onMobDeath(mob, player, optParams, xi.keyItem.BLACK_ABYSSITE) + xi.hunts.checkHunt(mob, player, 556) + end end return entity diff --git a/scripts/zones/Xarcabard_[S]/mobs/Yilbegan.lua b/scripts/zones/Xarcabard_[S]/mobs/Yilbegan.lua index c337c6f4f20..ce07586688c 100644 --- a/scripts/zones/Xarcabard_[S]/mobs/Yilbegan.lua +++ b/scripts/zones/Xarcabard_[S]/mobs/Yilbegan.lua @@ -25,9 +25,11 @@ entity.onMobDespawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) - xi.voidwalker.onMobDeath(mob, player, optParams, nil) - xi.hunts.checkHunt(mob, player, 559) + if player then + player:addTitle(xi.title.YILBEGAN_HIDEFLAYER) + xi.voidwalker.onMobDeath(mob, player, optParams, nil) + xi.hunts.checkHunt(mob, player, 559) + end end return entity diff --git a/scripts/zones/Zhayolm_Remnants/mobs/Battleclad_Chariot.lua b/scripts/zones/Zhayolm_Remnants/mobs/Battleclad_Chariot.lua index 3b104a2fccb..ab490b94793 100644 --- a/scripts/zones/Zhayolm_Remnants/mobs/Battleclad_Chariot.lua +++ b/scripts/zones/Zhayolm_Remnants/mobs/Battleclad_Chariot.lua @@ -26,7 +26,10 @@ entity.onMobSpawn = function(mob) end entity.onMobDeath = function(mob, player, optParams) - player:addTitle(xi.title.STAR_CHARIOTEER) + if player then + player:addTitle(xi.title.STAR_CHARIOTEER) + end + if optParams.isKiller or optParams.noKiller then mob:getInstance():complete() end