From 8978126639d9e5f84aefda4ff6a5f189194d4eaa Mon Sep 17 00:00:00 2001 From: sruon Date: Fri, 22 May 2026 01:09:27 -0600 Subject: [PATCH] Strange Happenings event --- scripts/enum/item.lua | 4 + scripts/events/handler.lua | 1 + scripts/events/strange_happenings.lua | 147 ++++++++++++++++++ scripts/items/lungo-nangos_thesis.lua | 26 ++++ scripts/zones/Alzadaal_Undersea_Ruins/IDs.lua | 14 +- .../mobs/Alexander.lua | 33 ++++ .../npcs/Treasure_Chest.lua | 25 +++ scripts/zones/RuAun_Gardens/IDs.lua | 24 +-- scripts/zones/RuAun_Gardens/mobs/Kirin.lua | 20 +++ .../RuAun_Gardens/mobs/Kirins_Avatar.lua | 16 ++ .../RuAun_Gardens/npcs/Treasure_Chest.lua | 25 +++ scripts/zones/The_Boyahda_Tree/IDs.lua | 15 +- .../zones/The_Boyahda_Tree/mobs/Fafnir.lua | 20 +++ .../The_Boyahda_Tree/npcs/Treasure_Chest.lua | 25 +++ settings/default/main.lua | 3 + sql/mob_groups.sql | 8 +- sql/mob_pools.sql | 6 +- sql/mob_spawn_points.sql | 8 +- 18 files changed, 391 insertions(+), 29 deletions(-) create mode 100644 scripts/events/strange_happenings.lua create mode 100644 scripts/items/lungo-nangos_thesis.lua create mode 100644 scripts/zones/Alzadaal_Undersea_Ruins/mobs/Alexander.lua create mode 100644 scripts/zones/Alzadaal_Undersea_Ruins/npcs/Treasure_Chest.lua create mode 100644 scripts/zones/RuAun_Gardens/mobs/Kirin.lua create mode 100644 scripts/zones/RuAun_Gardens/mobs/Kirins_Avatar.lua create mode 100644 scripts/zones/RuAun_Gardens/npcs/Treasure_Chest.lua create mode 100644 scripts/zones/The_Boyahda_Tree/mobs/Fafnir.lua create mode 100644 scripts/zones/The_Boyahda_Tree/npcs/Treasure_Chest.lua diff --git a/scripts/enum/item.lua b/scripts/enum/item.lua index 0c3b6cb8c87..4ea87eedafd 100644 --- a/scripts/enum/item.lua +++ b/scripts/enum/item.lua @@ -3859,6 +3859,7 @@ xi.item = MAATS_CONCOCTION = 6597, MAATS_MIX = 6598, POPPER_II = 6684, + LUNGO_NANGOS_THESIS = 6703, HARLEQUIN_HEAD = 8193, VALOREDGE_HEAD = 8194, SHARPSHOT_HEAD = 8195, @@ -4189,6 +4190,9 @@ xi.item = AMBUSCADE_CHIT_LEGGEAR_P1 = 9946, AMBUSCADE_CHIT_FOOTGEAR_P1 = 9947, AMBUSCADE_CHIT_RING = 9948, + FAFNIRS_SCALE = 10037, + KIRINS_MANE = 10038, + IRON_GIANT_SHARD = 10039, MOUNT_TIGER = 10050, MOUNT_CRAB = 10051, MOUNT_RED_CRAB = 10052, diff --git a/scripts/events/handler.lua b/scripts/events/handler.lua index 5c6d83e0ffe..149f253a956 100644 --- a/scripts/events/handler.lua +++ b/scripts/events/handler.lua @@ -68,6 +68,7 @@ xi.events.registeredEvents = require('scripts/events/starlight_celebration'), require('scripts/events/egg_hunt_egg-stravaganza'), require('scripts/events/mog_bonanza'), + require('scripts/events/strange_happenings'), } xi.events.handler.checkSeasonalEvents = function() diff --git a/scripts/events/strange_happenings.lua b/scripts/events/strange_happenings.lua new file mode 100644 index 00000000000..c273572d8db --- /dev/null +++ b/scripts/events/strange_happenings.lua @@ -0,0 +1,147 @@ +----------------------------------- +-- Strange Happenings in Vana'diel +-- https://www.playonline.com/pcd2/topics/ff11us/detail/40250/detail.html +----------------------------------- +xi = xi or {} +xi.events = xi.events or {} +xi.events.strangeHappenings = xi.events.strangeHappenings or {} + +local event = SeasonalEvent:new('StrangeHappenings') + +local chestDurationMinutes = 10 + +local function getEncounters() + local result = {} + local ID + + ID = zones[xi.zone.ALZADAAL_UNDERSEA_RUINS] + if ID then + result[xi.zone.ALZADAAL_UNDERSEA_RUINS] = + { + mob = ID.mob.ALEXANDER, + chest = ID.npc.STRANGE_HAPPENINGS_CHEST, + rewards = { xi.item.IRON_GIANT_SHARD, xi.item.LUNGO_NANGOS_THESIS }, + } + end + + ID = zones[xi.zone.RUAUN_GARDENS] + if ID then + result[xi.zone.RUAUN_GARDENS] = + { + mob = ID.mob.KIRIN, + chest = ID.npc.STRANGE_HAPPENINGS_CHEST, + rewards = { xi.item.KIRINS_MANE, xi.item.LUNGO_NANGOS_THESIS }, + } + end + + ID = zones[xi.zone.THE_BOYAHDA_TREE] + if ID then + result[xi.zone.THE_BOYAHDA_TREE] = + { + mob = ID.mob.FAFNIR, + chest = ID.npc.STRANGE_HAPPENINGS_CHEST, + rewards = { xi.item.FAFNIRS_SCALE, xi.item.LUNGO_NANGOS_THESIS }, + } + end + + return result +end + +local chestData = {} + +local function removeChest(chest) + chestData[chest:getID()] = nil + npcUtil.disappearCrate(chest) +end + +xi.events.strangeHappenings.onMobInitialize = function(mob) + mob:setMobMod(xi.mobMod.EXP_BONUS, -100) + mob:setMobMod(xi.mobMod.GIL_BONUS, -100) + mob:setMobMod(xi.mobMod.CLAIM_TYPE, xi.claimType.NON_EXCLUSIVE) +end + +xi.events.strangeHappenings.onMobDeath = function(mob) + local enc = getEncounters()[mob:getZoneID()] + if not enc or mob:getID() ~= enc.mob then + return + end + + local chest = GetNPCByID(enc.chest) + if not chest then + return + end + + chestData[enc.chest] = + { + items = enc.rewards, + claimed = {}, + } + + chest:setPos(mob:getXPos(), mob:getYPos(), mob:getZPos(), mob:getRotPos()) + npcUtil.showCrate(chest) + + chest:timer(chestDurationMinutes * 60 * 1000, function(chestArg) + if chestArg:getStatus() == xi.status.NORMAL then + removeChest(chestArg) + end + end) +end + +xi.events.strangeHappenings.hasClaimed = function(player, npc) + local data = chestData[npc:getID()] + return data and data.claimed[player:getID()] == true +end + +xi.events.strangeHappenings.onChestTrigger = function(player, npc) + local data = chestData[npc:getID()] + if not data then + return + end + + local playerId = player:getID() + if data.claimed[playerId] then + return + end + + local anyGiven = false + for _, itemId in ipairs(data.items) do + if npcUtil.giveItem(player, itemId) then + anyGiven = true + end + end + + if anyGiven then + data.claimed[playerId] = true + end +end + +event:setEnableCheck(function() + return xi.settings.main.ENABLE_STRANGE_HAPPENINGS == 1 +end) + +event:setStartFunction(function() + for _, enc in pairs(getEncounters()) do + local mob = GetMobByID(enc.mob) + if mob and not mob:isSpawned() then + DisallowRespawn(enc.mob, false) + SpawnMob(enc.mob) + end + end +end) + +event:setEndFunction(function() + for _, enc in pairs(getEncounters()) do + local mob = GetMobByID(enc.mob) + if mob and mob:isSpawned() then + DisallowRespawn(enc.mob, true) + DespawnMob(enc.mob) + end + + local chest = GetNPCByID(enc.chest) + if chest and chest:getStatus() == xi.status.NORMAL then + removeChest(chest) + end + end +end) + +return event diff --git a/scripts/items/lungo-nangos_thesis.lua b/scripts/items/lungo-nangos_thesis.lua new file mode 100644 index 00000000000..07adcf7b4e6 --- /dev/null +++ b/scripts/items/lungo-nangos_thesis.lua @@ -0,0 +1,26 @@ +----------------------------------- +-- ID: 6703 +-- Item: Lungo-Nango's Thesis +----------------------------------- +---@type TItem +local itemObject = {} + +itemObject.onItemCheck = function(target, item, param, caster) + -- Only usable on a mastered job. + if not target:hasKeyItem(xi.ki.MASTER_BREAKER) then + return xi.msg.basic.ITEM_UNABLE_TO_USE + end + + if target:getMod(xi.mod.SUPERIOR_LEVEL) ~= 5 then + return xi.msg.basic.ITEM_UNABLE_TO_USE + end + + -- Item disabled until Examplar Points support is added + return xi.msg.basic.ITEM_UNABLE_TO_USE +end + +itemObject.onItemUse = function(target) + -- TODO: Grant 4000~6000 examplar points to current job +end + +return itemObject diff --git a/scripts/zones/Alzadaal_Undersea_Ruins/IDs.lua b/scripts/zones/Alzadaal_Undersea_Ruins/IDs.lua index 81abd75e45c..204ea9d4af0 100644 --- a/scripts/zones/Alzadaal_Undersea_Ruins/IDs.lua +++ b/scripts/zones/Alzadaal_Undersea_Ruins/IDs.lua @@ -17,6 +17,7 @@ zones[xi.zone.ALZADAAL_UNDERSEA_RUINS] = LOGIN_CAMPAIGN_UNDERWAY = 7005, -- The [/January/February/March/April/May/June/July/August/September/October/November/December] Login Campaign is currently underway! LOGIN_NUMBER = 7006, -- In celebration of your most recent login (login no. ), we have provided you with points! You currently have a total of points. MEMBERS_LEVELS_ARE_RESTRICTED = 7026, -- Your party is unable to participate because certain members' levels are restricted. + CHEST_WONT_OPEN = 7070, -- It won't open. STAGING_GATE_CLOSER = 7231, -- You must move closer. STAGING_GATE_INTERACT = 7232, -- This gate guards an area under Imperial control. STAGING_GATE_NYZUL = 7238, -- Nyzul Isle Staging Point. @@ -39,18 +40,19 @@ zones[xi.zone.ALZADAAL_UNDERSEA_RUINS] = }, mob = { - NEPIONIC_SOULFLAYER = GetFirstID('Nepionic_Soulflayer'), + ALEXANDER = GetFirstID('Alexander'), + ARMED_GEARS = GetFirstID('Armed_Gears'), + CHEESE_HOARDER_GIGIROON = GetFirstID('Cheese_Hoarder_Gigiroon'), COOKIEDUSTER_LIPIROON = GetFirstID('Cookieduster_Lipiroon'), + NEPIONIC_SOULFLAYER = GetFirstID('Nepionic_Soulflayer'), OB = GetFirstID('Ob'), - CHEESE_HOARDER_GIGIROON = GetFirstID('Cheese_Hoarder_Gigiroon'), - ARMED_GEARS = GetFirstID('Armed_Gears'), WULGARU = GetFirstID('Wulgaru'), - }, npc = { - RUNIC_PORTAL_OFFSET = GetFirstID('Runic_Portal'), -- North portal - NEPIONIC_QM = GetFirstID('blank_transformations'), + NEPIONIC_QM = GetFirstID('blank_transformations'), + RUNIC_PORTAL_OFFSET = GetFirstID('Runic_Portal'), -- North portal + STRANGE_HAPPENINGS_CHEST = GetFirstID('Treasure_Chest'), }, } diff --git a/scripts/zones/Alzadaal_Undersea_Ruins/mobs/Alexander.lua b/scripts/zones/Alzadaal_Undersea_Ruins/mobs/Alexander.lua new file mode 100644 index 00000000000..806d8750082 --- /dev/null +++ b/scripts/zones/Alzadaal_Undersea_Ruins/mobs/Alexander.lua @@ -0,0 +1,33 @@ +----------------------------------- +-- Area: Alzadaal Undersea Ruins +-- NM: Alexander +----------------------------------- +---@type TMobEntity +local entity = {} + +entity.spawnPoints = +{ + { x = 620.000, y = -0.449, z = -260.000 }, + { x = -580.000, y = -0.449, z = -100.000 }, + { x = -580.000, y = -0.449, z = -460.000 }, -- TODO: one more spawn position remains uncaptured +} + +entity.onMobInitialize = function(mob) + xi.events.strangeHappenings.onMobInitialize(mob) + mob:setMobMod(xi.mobMod.NO_MOVE, 1) + xi.mob.updateNMSpawnPoint(mob) + + if xi.settings.main.ENABLE_STRANGE_HAPPENINGS ~= 1 then + DisallowRespawn(mob:getID(), true) + end +end + +entity.onMobDeath = function(mob, player, optParams) + xi.events.strangeHappenings.onMobDeath(mob) +end + +entity.onMobDespawn = function(mob) + xi.mob.updateNMSpawnPoint(mob) +end + +return entity diff --git a/scripts/zones/Alzadaal_Undersea_Ruins/npcs/Treasure_Chest.lua b/scripts/zones/Alzadaal_Undersea_Ruins/npcs/Treasure_Chest.lua new file mode 100644 index 00000000000..ebbc1593261 --- /dev/null +++ b/scripts/zones/Alzadaal_Undersea_Ruins/npcs/Treasure_Chest.lua @@ -0,0 +1,25 @@ +----------------------------------- +-- Area: Alzadaal Undersea Ruins +-- NPC: Treasure Chest +----------------------------------- +local ID = zones[xi.zone.ALZADAAL_UNDERSEA_RUINS] +----------------------------------- +---@type TNpcEntity +local entity = {} + +entity.onTrigger = function(player, npc) + if xi.events.strangeHappenings.hasClaimed(player, npc) then + player:messageSpecial(ID.text.CHEST_WONT_OPEN) + return + end + + player:startEvent(414) +end + +entity.onEventFinish = function(player, csid, option, npc) + if csid == 414 then + xi.events.strangeHappenings.onChestTrigger(player, npc) + end +end + +return entity diff --git a/scripts/zones/RuAun_Gardens/IDs.lua b/scripts/zones/RuAun_Gardens/IDs.lua index 645e332f32a..06b97d5d1bc 100644 --- a/scripts/zones/RuAun_Gardens/IDs.lua +++ b/scripts/zones/RuAun_Gardens/IDs.lua @@ -18,6 +18,7 @@ zones[xi.zone.RUAUN_GARDENS] = LOGIN_CAMPAIGN_UNDERWAY = 7005, -- The [/January/February/March/April/May/June/July/August/September/October/November/December] Login Campaign is currently underway! LOGIN_NUMBER = 7006, -- In celebration of your most recent login (login no. ), we have provided you with points! You currently have a total of points. MEMBERS_LEVELS_ARE_RESTRICTED = 7026, -- Your party is unable to participate because certain members' levels are restricted. + CHEST_WONT_OPEN = 7070, -- It won't open. FISHING_MESSAGE_OFFSET = 7071, -- You can't fish here. CONQUEST_BASE = 7172, -- Tallying conquest results... IT_IS_ALREADY_FUNCTIONING = 7332, -- It is already functioning. @@ -35,20 +36,23 @@ zones[xi.zone.RUAUN_GARDENS] = mob = { - DESPOT = GetFirstID('Despot'), - MIMIC = GetFirstID('Mimic'), - GENBU = GetFirstID('Genbu'), - SEIRYU = GetFirstID('Seiryu'), - BYAKKO = GetFirstID('Byakko'), - SUZAKU = GetFirstID('Suzaku'), + BYAKKO = GetFirstID('Byakko'), + DESPOT = GetFirstID('Despot'), + GENBU = GetFirstID('Genbu'), + KIRIN = GetFirstID('Kirin'), + KIRINS_AVATAR = GetFirstID('Kirins_Avatar'), + MIMIC = GetFirstID('Mimic'), + SEIRYU = GetFirstID('Seiryu'), + SUZAKU = GetFirstID('Suzaku'), }, npc = { - TREASURE_COFFER = GetFirstID('Treasure_Coffer'), - PINCERSTONE_OFFSET = GetFirstID('Pincerstone'), - PORTAL_OFFSET = GetFirstID('_3mc'), - OVERSEER_BASE = GetFirstID('Conquest_Banner'), + OVERSEER_BASE = GetFirstID('Conquest_Banner'), + PINCERSTONE_OFFSET = GetFirstID('Pincerstone'), + PORTAL_OFFSET = GetFirstID('_3mc'), + STRANGE_HAPPENINGS_CHEST = GetFirstID('Treasure_Chest'), + TREASURE_COFFER = GetFirstID('Treasure_Coffer'), }, } diff --git a/scripts/zones/RuAun_Gardens/mobs/Kirin.lua b/scripts/zones/RuAun_Gardens/mobs/Kirin.lua new file mode 100644 index 00000000000..e35d2939be9 --- /dev/null +++ b/scripts/zones/RuAun_Gardens/mobs/Kirin.lua @@ -0,0 +1,20 @@ +----------------------------------- +-- Area: Ru'Aun Gardens +-- NM: Kirin +----------------------------------- +---@type TMobEntity +local entity = {} + +entity.onMobInitialize = function(mob) + xi.events.strangeHappenings.onMobInitialize(mob) + + if xi.settings.main.ENABLE_STRANGE_HAPPENINGS ~= 1 then + DisallowRespawn(mob:getID(), true) + end +end + +entity.onMobDeath = function(mob, player, optParams) + xi.events.strangeHappenings.onMobDeath(mob) +end + +return entity diff --git a/scripts/zones/RuAun_Gardens/mobs/Kirins_Avatar.lua b/scripts/zones/RuAun_Gardens/mobs/Kirins_Avatar.lua new file mode 100644 index 00000000000..4909a3c38cc --- /dev/null +++ b/scripts/zones/RuAun_Gardens/mobs/Kirins_Avatar.lua @@ -0,0 +1,16 @@ +----------------------------------- +-- Area: Ru'Aun Gardens +-- NM: Kirin's Avatar +----------------------------------- +---@type TMobEntity +local entity = {} + +entity.onMobInitialize = function(mob) + xi.events.strangeHappenings.onMobInitialize(mob) + + if xi.settings.main.ENABLE_STRANGE_HAPPENINGS ~= 1 then + DisallowRespawn(mob:getID(), true) + end +end + +return entity diff --git a/scripts/zones/RuAun_Gardens/npcs/Treasure_Chest.lua b/scripts/zones/RuAun_Gardens/npcs/Treasure_Chest.lua new file mode 100644 index 00000000000..816d12ca4c1 --- /dev/null +++ b/scripts/zones/RuAun_Gardens/npcs/Treasure_Chest.lua @@ -0,0 +1,25 @@ +----------------------------------- +-- Area: Ru'Aun Gardens +-- NPC: Treasure Chest +----------------------------------- +local ID = zones[xi.zone.RUAUN_GARDENS] +----------------------------------- +---@type TNpcEntity +local entity = {} + +entity.onTrigger = function(player, npc) + if xi.events.strangeHappenings.hasClaimed(player, npc) then + player:messageSpecial(ID.text.CHEST_WONT_OPEN) + return + end + + player:startEvent(81) +end + +entity.onEventFinish = function(player, csid, option, npc) + if csid == 81 then + xi.events.strangeHappenings.onChestTrigger(player, npc) + end +end + +return entity diff --git a/scripts/zones/The_Boyahda_Tree/IDs.lua b/scripts/zones/The_Boyahda_Tree/IDs.lua index 20c0e107fc9..2f94507d020 100644 --- a/scripts/zones/The_Boyahda_Tree/IDs.lua +++ b/scripts/zones/The_Boyahda_Tree/IDs.lua @@ -17,6 +17,7 @@ zones[xi.zone.THE_BOYAHDA_TREE] = LOGIN_CAMPAIGN_UNDERWAY = 7005, -- The [/January/February/March/April/May/June/July/August/September/October/November/December] Login Campaign is currently underway! LOGIN_NUMBER = 7006, -- In celebration of your most recent login (login no. ), we have provided you with points! You currently have a total of points. MEMBERS_LEVELS_ARE_RESTRICTED = 7026, -- Your party is unable to participate because certain members' levels are restricted. + CHEST_WONT_OPEN = 7070, -- It won't open. FISHING_MESSAGE_OFFSET = 7071, -- You can't fish here. CHEST_UNLOCKED = 7180, -- You unlock the chest! CAN_SEE_SKY = 7193, -- You can see the sky from here. @@ -37,18 +38,20 @@ zones[xi.zone.THE_BOYAHDA_TREE] = }, mob = { - ELLYLLON = GetFirstID('Ellyllon'), + AGAS = GetFirstID('Agas'), AQUARIUS = GetFirstID('Aquarius'), - UNUT = GetFirstID('Unut'), + BEET_LEAFHOPPER = GetFirstID('Beet_Leafhopper'), + ELLYLLON = GetFirstID('Ellyllon'), + FAFNIR = GetFirstID('Fafnir'), LESHONKI = GetFirstID('Leshonki'), - VOLUPTUOUS_VIVIAN = GetFirstID('Voluptuous_Vivian'), MIMIC = GetFirstID('Mimic'), - AGAS = GetFirstID('Agas'), - BEET_LEAFHOPPER = GetFirstID('Beet_Leafhopper'), + UNUT = GetFirstID('Unut'), + VOLUPTUOUS_VIVIAN = GetFirstID('Voluptuous_Vivian'), }, npc = { - TREASURE_COFFER = GetFirstID('Treasure_Coffer'), + STRANGE_HAPPENINGS_CHEST = GetFirstID('Treasure_Chest'), + TREASURE_COFFER = GetFirstID('Treasure_Coffer'), }, } diff --git a/scripts/zones/The_Boyahda_Tree/mobs/Fafnir.lua b/scripts/zones/The_Boyahda_Tree/mobs/Fafnir.lua new file mode 100644 index 00000000000..698d46aa79c --- /dev/null +++ b/scripts/zones/The_Boyahda_Tree/mobs/Fafnir.lua @@ -0,0 +1,20 @@ +----------------------------------- +-- Area: The Boyahda Tree +-- NM: Fafnir +----------------------------------- +---@type TMobEntity +local entity = {} + +entity.onMobInitialize = function(mob) + xi.events.strangeHappenings.onMobInitialize(mob) + + if xi.settings.main.ENABLE_STRANGE_HAPPENINGS ~= 1 then + DisallowRespawn(mob:getID(), true) + end +end + +entity.onMobDeath = function(mob, player, optParams) + xi.events.strangeHappenings.onMobDeath(mob) +end + +return entity diff --git a/scripts/zones/The_Boyahda_Tree/npcs/Treasure_Chest.lua b/scripts/zones/The_Boyahda_Tree/npcs/Treasure_Chest.lua new file mode 100644 index 00000000000..99b856a3a1f --- /dev/null +++ b/scripts/zones/The_Boyahda_Tree/npcs/Treasure_Chest.lua @@ -0,0 +1,25 @@ +----------------------------------- +-- Area: The Boyahda Tree +-- NPC: Treasure Chest +----------------------------------- +local ID = zones[xi.zone.THE_BOYAHDA_TREE] +----------------------------------- +---@type TNpcEntity +local entity = {} + +entity.onTrigger = function(player, npc) + if xi.events.strangeHappenings.hasClaimed(player, npc) then + player:messageSpecial(ID.text.CHEST_WONT_OPEN) + return + end + + player:startEvent(34) +end + +entity.onEventFinish = function(player, csid, option, npc) + if csid == 34 then + xi.events.strangeHappenings.onChestTrigger(player, npc) + end +end + +return entity diff --git a/settings/default/main.lua b/settings/default/main.lua index 152b03246a9..e9a519ac46f 100644 --- a/settings/default/main.lua +++ b/settings/default/main.lua @@ -290,6 +290,9 @@ xi.settings.main = -- Please visit scripts/globals/events/login_campaign.lua for assigning the correct campaign dates. ENABLE_LOGIN_CAMPAIGN = 0, + -- Strange Happenings in Vana'Diel + ENABLE_STRANGE_HAPPENINGS = 0, + -- FISH RANKING CONTEST -- Set to false to require manual progression of contest AUTO_FISHING_CONTEST = true, diff --git a/sql/mob_groups.sql b/sql/mob_groups.sql index ffcacabd5de..68a06b2204c 100644 --- a/sql/mob_groups.sql +++ b/sql/mob_groups.sql @@ -3699,6 +3699,7 @@ INSERT INTO `mob_groups` VALUES (12,6757,72,'Vidmapire',0,128,0,0,0,0,NULL); INSERT INTO `mob_groups` VALUES (13,7577,72,'Apex_Archaic_Cog',960,0,0,305000,0,0,'ROV'); INSERT INTO `mob_groups` VALUES (14,7578,72,'Apex_Archaic_Cogs',960,0,0,305000,0,0,'ROV'); INSERT INTO `mob_groups` VALUES (15,7579,72,'Panaiveriyamman',0,128,0,0,0,0,NULL); +INSERT INTO `mob_groups` VALUES (16,7361,72,'Alexander',2700,0,0,3240000,0,0,'TVR'); -- ------------------------------------------------------------ -- Zhayolm_Remnants (Zone 73) @@ -9606,6 +9607,8 @@ INSERT INTO `mob_groups` VALUES (18,3816,130,'Suzaku',0,128,2362,25000,25000,0,N INSERT INTO `mob_groups` VALUES (19,1249,130,'Eraser',0,128,0,0,0,0,NULL); INSERT INTO `mob_groups` VALUES (20,4720,130,'Aello',0,128,0,0,9999,0,NULL); INSERT INTO `mob_groups` VALUES (21,4721,130,'Aellos_Handmaiden',0,128,0,0,9999,0,NULL); +INSERT INTO `mob_groups` VALUES (22,7359,130,'Kirin',2700,0,0,3240000,0,0,'TVR'); +INSERT INTO `mob_groups` VALUES (23,7360,130,'Kirins_Avatar',0,128,0,0,0,0,'TVR'); -- ------------------------------------------------------------ -- Abyssea-La_Theine (Zone 132) @@ -11104,10 +11107,9 @@ INSERT INTO `mob_groups` VALUES (37,5159,153,'Modron',0,128,0,0,9999,0,NULL); INSERT INTO `mob_groups` VALUES (38,5160,153,'Modrons_Druid',0,128,0,0,0,0,NULL); INSERT INTO `mob_groups` VALUES (39,6876,153,'Ayapec',0,128,0,0,0,0,NULL); INSERT INTO `mob_groups` VALUES (40,6877,153,'Hidhaegg',0,128,0,0,0,0,NULL); - --- Star Onion Fortune -INSERT INTO `mob_groups` VALUES (41,0,153,'Templar_Crawler',0,128,0,0,0,0,NULL); +INSERT INTO `mob_groups` VALUES (41,0,153,'Templar_Crawler',0,128,0,0,0,0,NULL); -- Star Onion Fortune INSERT INTO `mob_groups` VALUES (42,3768,153,'Steelshell',1200,0,2330,0,0,0,NULL); -- 20 min respawn near Cloister +INSERT INTO `mob_groups` VALUES (43,7358,153,'Fafnir',2700,0,0,3240000,0,0,'TVR'); -- ------------------------------------------------------------ -- Dragons_Aery (Zone 154) diff --git a/sql/mob_pools.sql b/sql/mob_pools.sql index 29fd807847c..14e35c3ba8e 100644 --- a/sql/mob_pools.sql +++ b/sql/mob_pools.sql @@ -7450,7 +7450,11 @@ INSERT INTO `mob_pools` VALUES (7354,'Macro_Test','Macro_Test',49,0x0000AF010000 INSERT INTO `mob_pools` VALUES (7355,'Blade_Bat_Inner_Horutoto','Blade_Bat',173,0x0000000100000000000000000000000000000000,1,1,11,240,100,0,0,0,0,0,0,0,322,641,8,0,0,0,0,46,46,0,11); INSERT INTO `mob_pools` VALUES (7356,'Locus_Imp','Locus_Imp',212,0x00004E0E00000000000000000000000000000000,4,4,7,240,100,0,1,1,0,0,0,0,47,1153,4,0,2,0,0,165,165,1,12); INSERT INTO `mob_pools` VALUES (7357,'Locus_Fiddler_Crab','Locus_Fiddler_Crab',25,0x0000960B00000000000000000000000000000000,7,7,4,240,100,0,1,0,0,4,0,0,0,131,8,0,0,0,0,77,77,1,27); --- 1 Unused space at 3687 or fresh blocks at 7358. +INSERT INTO `mob_pools` VALUES (7358,'Fafnir_Strange_Happenings','Fafnir',226,0x00000F0300000000000000000000000000000000,1,1,7,240,100,1040,0,1,1,2,0,32,0,153,0,0,0,0,0,260,260,0,42); +INSERT INTO `mob_pools` VALUES (7359,'Kirin_Strange_Happenings','Kirin',97,0x0000930100000000000000000000000000000000,15,4,7,360,125,0,0,1,0,2,6144,32,539,159,0,0,23,0,0,281,281,3,44); +INSERT INTO `mob_pools` VALUES (7360,'Kirins_Avatar_Strange_Happenings','Kirins_Avatar',243,0x0000170300000000000000000000000000000000,4,4,7,240,100,0,0,0,1,8,0,32,7,155,0,0,0,0,0,34,34,3,7); +INSERT INTO `mob_pools` VALUES (7361,'Alexander_Strange_Happenings','Alexander',239,0x00002A0700000000000000000000000000000000,7,7,11,240,100,0,0,1,0,2,0,32,1,1179,0,0,214,0,0,784,33,1,30); +-- 1 Unused space at 3687 or fresh blocks at 7362. -- Jug pet pools (skipped to allow keeping them sequential) INSERT INTO `mob_pools` VALUES (7500,'Pet_Sweet_Caroline','Pet_Sweet_Caroline',350,0x00008E0B00000000000000000000000000000000,2,2,1,480,100,0,0,0,0,8,0,32,605,129,0,0,0,0,0,766,178,0,12); diff --git a/sql/mob_spawn_points.sql b/sql/mob_spawn_points.sql index 82e09695674..b394246af59 100644 --- a/sql/mob_spawn_points.sql +++ b/sql/mob_spawn_points.sql @@ -16926,6 +16926,7 @@ INSERT INTO `mob_spawn_points` VALUES (17072273,0,'Apex_Archaic_Cog','Apex Archa INSERT INTO `mob_spawn_points` VALUES (17072274,0,'Apex_Archaic_Cog','Apex Archaic Cog',13,143,145,487.557,-0.216,-168.425,140); INSERT INTO `mob_spawn_points` VALUES (17072275,0,'Apex_Archaic_Cogs','Apex Archaic Cogs',14,145,147,502.520,-0.162,-191.722,63); INSERT INTO `mob_spawn_points` VALUES (17072276,0,'Apex_Archaic_Cogs','Apex Archaic Cogs',14,145,147,492.102,-0.166,-184.230,116); +INSERT INTO `mob_spawn_points` VALUES (17072277,0,'Alexander','Alexander',16,119,119,-1.000,0.000,0.000,0); -- ------------------------------------------------------------ -- Zhayolm Remnants (Zone 73) @@ -46591,6 +46592,8 @@ INSERT INTO `mob_spawn_points` VALUES (17309993,0,'Aello','Aello',20,110,110,91. INSERT INTO `mob_spawn_points` VALUES (17309994,0,'Aellos_Handmaiden','Aello\'s Handmaiden',21,100,100,75.755,-40.700,-462.634,106); INSERT INTO `mob_spawn_points` VALUES (17309995,0,'Aellos_Handmaiden','Aello\'s Handmaiden',21,100,100,75.716,-40.700,-463.924,127); INSERT INTO `mob_spawn_points` VALUES (17309996,0,'Aellos_Handmaiden','Aello\'s Handmaiden',21,100,100,76.129,-40.700,-463.250,117); +INSERT INTO `mob_spawn_points` VALUES (17309997,0,'Kirin','Kirin',22,119,119,-1.689,-40.000,-364.978,0); +INSERT INTO `mob_spawn_points` VALUES (17309998,0,'Kirins_Avatar','Kirin\'s Avatar',23,119,119,-0.716,-40.000,-365.949,192); -- ------------------------------------------------------------ -- Abyssea - La Theine (Zone 132) @@ -55803,9 +55806,8 @@ INSERT INTO `mob_spawn_points` VALUES (17404350,0,'Ayapec','Ayapec',39,125,125,- INSERT INTO `mob_spawn_points` VALUES (17404351,0,'Hidhaegg','Hidhaegg',40,135,135,35.724,9.466,67.278,37); INSERT INTO `mob_spawn_points` VALUES (17404352,0,'Hidhaegg','Hidhaegg',40,135,135,51.167,-18.547,-154.090,214); INSERT INTO `mob_spawn_points` VALUES (17404353,0,'Hidhaegg','Hidhaegg',40,135,135,0.000,0.000,0.000,0); - --- Star Onion Fortune -INSERT INTO `mob_spawn_points` VALUES (17404354,0,'Templar_Crawler','Templar Crawler',41,0,0,0.000,0.000,0.000,0); +INSERT INTO `mob_spawn_points` VALUES (17404354,0,'Templar_Crawler','Templar Crawler',41,0,0,0.000,0.000,0.000,0); -- Star Onion Fortune +INSERT INTO `mob_spawn_points` VALUES (17404355,0,'Fafnir','Fafnir',43,119,119,32.483,-18.000,-167.690,12); -- ------------------------------------------------------------ -- Dragon's Aery (Zone 154)