From 339811d9a078a637d44eaae434f58cb037613ab3 Mon Sep 17 00:00:00 2001 From: sruon Date: Fri, 14 Mar 2025 04:43:08 -0600 Subject: [PATCH] Einherjar system --- scripts/enum/einherjar.lua | 16 +- scripts/enum/item.lua | 1 + scripts/globals/einherjar/chambers.lua | 37 +- scripts/globals/einherjar/lamp.lua | 46 +- scripts/globals/einherjar/lockout.lua | 24 + scripts/globals/einherjar/planner.lua | 116 +++- scripts/globals/einherjar/reservation.lua | 88 +++ scripts/globals/einherjar/system.lua | 574 ++++++++++++++++++ scripts/globals/einherjar/treasure.lua | 20 +- scripts/specs/core/CTradeContainer.lua | 4 + scripts/zones/Hazhalm_Testing_Grounds/IDs.lua | 59 +- .../zones/Hazhalm_Testing_Grounds/Zone.lua | 32 + .../Hazhalm_Testing_Grounds/npcs/_260.lua | 64 +- sql/item_basic.sql | 2 +- sql/mob_groups.sql | 9 +- sql/mob_pools.sql | 117 ++-- sql/mob_spawn_points.sql | 110 ++-- sql/npc_list.sql | 36 +- 18 files changed, 1115 insertions(+), 240 deletions(-) create mode 100644 scripts/globals/einherjar/lockout.lua create mode 100644 scripts/globals/einherjar/reservation.lua create mode 100644 scripts/globals/einherjar/system.lua diff --git a/scripts/enum/einherjar.lua b/scripts/enum/einherjar.lua index 3ad01d4350c..a2c1ed343dc 100644 --- a/scripts/enum/einherjar.lua +++ b/scripts/enum/einherjar.lua @@ -7,12 +7,12 @@ xi.einherjar = xi.einherjar or {} ---@enum xi.einherjar.chamber xi.einherjar.chamber = { - ROSSWEISS = 1, + ROSSWEISSE = 1, GRIMGERDE = 2, SIEGRUNE = 3, - WALTRAUTE = 4, - HELMWIGE = 5, - SCHWERTLEITE = 6, + HELMWIGE = 4, + SCHWERTLEITE = 5, + WALTRAUTE = 6, ORTLINDE = 7, GERHILDE = 8, BRUNNHILDE = 9, @@ -23,8 +23,8 @@ xi.einherjar.chamber = ---@enum xi.einherjar.wing xi.einherjar.wing = { - WING_1 = 1, - WING_2 = 2, - WING_3 = 3, - ODIN = 4, + WING_1 = 1, + WING_2 = 2, + WING_3 = 3, + VALGRIND = 4, } diff --git a/scripts/enum/item.lua b/scripts/enum/item.lua index cb73e892f22..90fd65d052c 100644 --- a/scripts/enum/item.lua +++ b/scripts/enum/item.lua @@ -2656,6 +2656,7 @@ xi.item = VIRTUE_STONE_POUCH = 5410, SMOLDERING_LAMP = 5413, GLOWING_LAMP = 5414, + HEROS_REFLECTIONS = 5415, SCROLL_OF_INSTANT_RETRACE = 5428, DUSTY_POTION = 5431, DUSTY_ETHER = 5432, diff --git a/scripts/globals/einherjar/chambers.lua b/scripts/globals/einherjar/chambers.lua index 3def1bc624f..964cc0ab895 100644 --- a/scripts/globals/einherjar/chambers.lua +++ b/scripts/globals/einherjar/chambers.lua @@ -7,7 +7,7 @@ xi.einherjar = xi.einherjar or {} local chambersByTier = { [xi.einherjar.wing.WING_1] = { { - id = xi.einherjar.chamber.ROSSWEISS, + id = xi.einherjar.chamber.ROSSWEISSE, ki = xi.ki.ROSSWEISSES_FEATHER, menu = 0x2, center = { 401.1, -216, 40.6, 28 }, @@ -30,22 +30,22 @@ local chambersByTier = { }, [xi.einherjar.wing.WING_2] = { { - id = xi.einherjar.chamber.WALTRAUTE, - ki = xi.ki.WALTRAUTES_FEATHER, + id = xi.einherjar.chamber.HELMWIGE, + ki = xi.ki.HELMWIGES_FEATHER, menu = 0x10, center = { -197.32, -146, -439.5, 218 }, ichor = 1440, }, { - id = xi.einherjar.chamber.HELMWIGE, - ki = xi.ki.HELMWIGES_FEATHER, + id = xi.einherjar.chamber.SCHWERTLEITE, + ki = xi.ki.SCHWERTLEITES_FEATHER, menu = 0x20, center = { -437.3986, -126.0, -281.89, 34 }, ichor = 1440, }, { - id = xi.einherjar.chamber.SCHWERTLEITE, - ki = xi.ki.SCHWERTLEITES_FEATHER, + id = xi.einherjar.chamber.WALTRAUTE, + ki = xi.ki.WALTRAUTES_FEATHER, menu = 0x40, center = { -678, -106, -120, 28 }, ichor = 1440, @@ -74,7 +74,7 @@ local chambersByTier = { ichor = 1920, }, }, - [xi.einherjar.wing.ODIN] = { + [xi.einherjar.wing.VALGRIND] = { { id = xi.einherjar.chamber.ODIN, ki = 0, @@ -93,27 +93,18 @@ local chambersByTier = { } xi.einherjar.chambers = { - [xi.einherjar.chamber.ROSSWEISS] = chambersByTier[xi.einherjar.wing.WING_1][1], + [xi.einherjar.chamber.ROSSWEISSE] = chambersByTier[xi.einherjar.wing.WING_1][1], [xi.einherjar.chamber.GRIMGERDE] = chambersByTier[xi.einherjar.wing.WING_1][2], [xi.einherjar.chamber.SIEGRUNE] = chambersByTier[xi.einherjar.wing.WING_1][3], - [xi.einherjar.chamber.WALTRAUTE] = chambersByTier[xi.einherjar.wing.WING_2][1], - [xi.einherjar.chamber.HELMWIGE] = chambersByTier[xi.einherjar.wing.WING_2][2], - [xi.einherjar.chamber.SCHWERTLEITE] = chambersByTier[xi.einherjar.wing.WING_2][3], + [xi.einherjar.chamber.HELMWIGE] = chambersByTier[xi.einherjar.wing.WING_2][1], + [xi.einherjar.chamber.SCHWERTLEITE] = chambersByTier[xi.einherjar.wing.WING_2][2], + [xi.einherjar.chamber.WALTRAUTE] = chambersByTier[xi.einherjar.wing.WING_2][3], [xi.einherjar.chamber.ORTLINDE] = chambersByTier[xi.einherjar.wing.WING_3][1], [xi.einherjar.chamber.GERHILDE] = chambersByTier[xi.einherjar.wing.WING_3][2], [xi.einherjar.chamber.BRUNNHILDE] = chambersByTier[xi.einherjar.wing.WING_3][3], - [xi.einherjar.chamber.ODIN] = chambersByTier[xi.einherjar.wing.ODIN][1], + -- [xi.einherjar.chamber.ODIN] = chambersByTier[xi.einherjar.wing.VALGRIND][1], -- Not implemented } -xi.einherjar.isLockedOut = function(player) - local lockout = player:getCharVar('[ein]lockout') - if lockout == 0 then - return 0 - end - - return math.ceil((lockout - os.time()) / 2088) -- Vanadiel days -end - -- Bitmask of chambers the player has access to -- Player must own all key items from previous tier to access the next tier -- Wing 1 is always accessible @@ -123,7 +114,7 @@ xi.einherjar.getChambersMenu = function(player) xi.einherjar.wing.WING_1, xi.einherjar.wing.WING_2, xi.einherjar.wing.WING_3, - xi.einherjar.wing.ODIN + -- xi.einherjar.wing.ODIN -- Not implemented } for i = 1, #wings do diff --git a/scripts/globals/einherjar/lamp.lua b/scripts/globals/einherjar/lamp.lua index 18c4b506743..055cc9d5c4a 100644 --- a/scripts/globals/einherjar/lamp.lua +++ b/scripts/globals/einherjar/lamp.lua @@ -59,31 +59,47 @@ xi.einherjar.decypherLamp = function(lampObj) local exData = lampObj and lampObj:getExData() if not exData or #exData < 16 or exData[0] == 0 then - return { chamber = 0, tier = 0, enter = 0, exit = 0 } + return { chamber = 0, tier = 0, startTime = 0, endTime = 0 } end local chamber = exData[0] - 0x1D - local exit = bit.bor( + local endTime = bit.bor( exData[8] or 0, bit.lshift(exData[9] or 0, 8), bit.lshift(exData[10] or 0, 16), bit.lshift(exData[11] or 0, 24) ) - local enter = bit.bor( + local startTime = bit.bor( exData[12] or 0, bit.lshift(exData[13] or 0, 8), bit.lshift(exData[14] or 0, 16), bit.lshift(exData[15] or 0, 24) ) - return { chamber = chamber, enter = enter, exit = exit } + return { chamber = chamber, startTime = startTime, endTime = endTime } end xi.einherjar.isLampExpired = function(lampObj) local lampData = xi.einherjar.decypherLamp(lampObj) - return lampData and lampData.exit and os.time() > lampData.exit + return lampData and lampData.endTime and os.time() > lampData.endTime +end + +xi.einherjar.getMatchingLamps = function(player, chamberId, startTime) + local matchingLamps = { } + + for _, item in ipairs(player:findItems(xi.item.GLOWING_LAMP)) do + local lampData = xi.einherjar.decypherLamp(item) + if + lampData.chamber == chamberId and + lampData.startTime == startTime + then + table.insert(matchingLamps, item) + end + end + + return matchingLamps end xi.einherjar.onLampCheck = function(player, lampObj) @@ -119,11 +135,16 @@ xi.einherjar.onLampUse = function(player, lampObj) return end + local chamberInstance = xi.einherjar.getChamber(lampData.chamber) + if not chamberInstance then + xi.einherjar.voidLamp(player, lampObj) + return + end + -- Using the lamp consumes it, so we need to make two new ones - -- TODO: Check if chamber is still active -- TODO: Figure out if lamp consumption can be blocked for _ = 1, 2 do - xi.einherjar.makeLamp(player, lampData.chamber, lampData.enter, lampData.exit) + xi.einherjar.makeLamp(player, lampData.chamber, lampData.startTime, lampData.endTime) end end @@ -140,7 +161,12 @@ xi.einherjar.onLampDrop = function(player, lampObj) return end - -- TODO: Check if chamber is still reserved - -- TODO: Check if player has other matching lamps - -- TODO: Ask Chamber to kick player out + local chamberData = xi.einherjar.getChamber(lampData.chamber) + if not chamberData then + return + end + + if #xi.einherjar.getMatchingLamps(player, lampData.chamber, lampData.startTime) == 0 then + xi.einherjar.onChamberExit(chamberData, player) + end end diff --git a/scripts/globals/einherjar/lockout.lua b/scripts/globals/einherjar/lockout.lua new file mode 100644 index 00000000000..d8af6376434 --- /dev/null +++ b/scripts/globals/einherjar/lockout.lua @@ -0,0 +1,24 @@ +----------------------------------- +-- Einherjar: Player lockout +----------------------------------- +xi = xi or {} +xi.einherjar = xi.einherjar or {} + +xi.einherjar.recordLockout = function(player) + local lockoutInHours = xi.einherjar.settings.EINHERJAR_REENTRY_TIME + if player:hasKeyItem(xi.ki.RHAPSODY_IN_AZURE) then + lockoutInHours = 1 + end + + local expiry = os.time() + (lockoutInHours * 60 * 60) + player:setCharVar('[ein]lockout', expiry, expiry) +end + +xi.einherjar.isLockedOut = function(player) + local lockout = player:getCharVar('[ein]lockout') + if lockout == 0 then + return 0 + end + + return math.ceil((lockout - os.time()) / 2088) -- Vanadiel days +end diff --git a/scripts/globals/einherjar/planner.lua b/scripts/globals/einherjar/planner.lua index 7050879f488..ed738181d0e 100644 --- a/scripts/globals/einherjar/planner.lua +++ b/scripts/globals/einherjar/planner.lua @@ -27,14 +27,15 @@ local mobPool = { ID.mob.INFECTED_WAMOURA, ID.mob.LOGI, ID.mob.NICKUR, - ID.mob.ROTTING_HUSKARL, -- TODO: BLM/WAR ones, not DRK + ID.mob.ROTTING_HUSKARL_WAR, + ID.mob.ROTTING_HUSKARL_BLM, ID.mob.SJOKRAKJEN, }, [xi.einherjar.wing.WING_2] = { ID.mob.BATTLEMITE, ID.mob.CHIGOE, ID.mob.CORRUPT_EINHERJAR, - ID.mob.CRAVEN_EINHERJAR, + ID.mob.CRAVEN_EINHERJAR_BHOOT, ID.mob.EINHERJAR_BREI, ID.mob.EINHERJAR_EATER, ID.mob.FLAMES_OF_MUSPELHEIM, @@ -43,7 +44,8 @@ local mobPool = { ID.mob.HAZHALM_BATS, ID.mob.HAZHALM_LEECH, ID.mob.ODINS_FOOL, - ID.mob.ROTTING_HUSKARL, -- TODO: DRK ones, not BLM/WAR + ID.mob.ROTTING_HUSKARL_DRK, + ID.mob.ROTTING_HUSKARL_THF, ID.mob.SJOKRAKJEN, ID.mob.UTGARTH_BAT, ID.mob.UTGARTH_BATS, @@ -130,7 +132,7 @@ local bossPool = { } -- Returns a random boss for given chamber tier --- Boss is locked until explicitedly unlocked by chamber +-- Boss is locked until explicitly unlocked by chamber local function getRandomBoss(chamberTier) local availableBosses = {} @@ -145,27 +147,13 @@ local function getRandomBoss(chamberTier) return nil end - while #availableBosses > 0 do - -- Select a random boss - local index = math.random(#availableBosses) - local selectedBoss = availableBosses[index] + -- Select a random boss + local index = math.random(#availableBosses) + local selectedBoss = availableBosses[index] - -- Special case: HILDESVINI requires DJIGGA[1] to be available - if selectedBoss == ID.mob.HILDESVINI and lockedMobs[ID.mob.DJIGGA[1]] then - -- Remove from the pool and try again - table.remove(availableBosses, index) - else - if selectedBoss == ID.mob.HILDESVINI then - lockedMobs[ID.mob.DJIGGA[1]] = true - end - - -- Lock the selected boss and return it - lockedMobs[selectedBoss] = true - return selectedBoss - end - end - - return nil + -- Lock the selected boss and return it + lockedMobs[selectedBoss] = true + return selectedBoss end local specialPool = { @@ -198,12 +186,27 @@ local function generateDistribution(familyCount, waveCount) distribution[i] = 1 end - -- Distribute remaining families randomly across waves + -- Distribute remaining families with a max limit of 2 per wave local remainingFamilies = familyCount - waveCount - while remainingFamilies > 0 do - local waveIndex = math.random(1, waveCount) + local validWaves = {} + + for i = 1, waveCount do + table.insert(validWaves, i) + end + + while remainingFamilies > 0 and #validWaves > 0 do + local waveIndex = validWaves[math.random(1, #validWaves)] distribution[waveIndex] = distribution[waveIndex] + 1 remainingFamilies = remainingFamilies - 1 + + if distribution[waveIndex] == 2 then + for i, v in ipairs(validWaves) do + if v == waveIndex then + table.remove(validWaves, i) + break + end + end + end end return distribution @@ -229,7 +232,8 @@ end -- Generates a chamber plan based on the chamber ID and tier -- All selected mobs are locked until released by the chamber -xi.einherjar.makeChamberPlan = function(chamberId, chamberTier) +xi.einherjar.makeChamberPlan = function(chamberId) + local chamberTier = math.ceil(chamberId / 3) local chamberConfig = { boss = getRandomBoss(chamberTier), special = getRandomSpecial(chamberId), @@ -285,6 +289,15 @@ xi.einherjar.makeChamberPlan = function(chamberId, chamberTier) if not randomFamily then print('ERROR: Einherjar unable to plan chamber: no mob family available for tier ', chamberTier) + + -- Unlock everything we previously locked while generating this plan + xi.einherjar.unlockMob(chamberConfig.boss) + for _, family in ipairs(families) do + for _, mob in ipairs(family) do + xi.einherjar.unlockMob(mob) + end + end + return nil end @@ -314,3 +327,50 @@ xi.einherjar.makeChamberPlan = function(chamberId, chamberTier) return chamberConfig end + +-- Subdivides a list of mob IDs into random-sized subgroups +xi.einherjar.subDivideMobs = function(mobIds) + local subdividedGroups = {} + local shuffled = utils.shuffle(mobIds) + + -- Divide into random-sized subgroups (between 2 and 5) + local index = 1 + while index <= #shuffled do + local remaining = #shuffled - index + 1 + -- Random group size between 2 and 5, but not exceeding remaining mobs + local groupSize = math.min(math.random(2, 5), remaining) + local subGroup = {} + + for i = 0, groupSize - 1 do + table.insert(subGroup, shuffled[index + i]) + end + + table.insert(subdividedGroups, subGroup) + index = index + groupSize + end + + return subdividedGroups +end + +xi.einherjar.getRandomPosForMobGroup = function(chamberId, min, max) + local function getGroupCenterOffset() + return math.random(min, max) + end + + local groupOffsetX = getGroupCenterOffset() + local groupOffsetZ = getGroupCenterOffset() + + if math.random() > 0.5 then + groupOffsetX = -groupOffsetX + end + + if math.random() > 0.5 then + groupOffsetZ = -groupOffsetZ + end + + return { + xi.einherjar.chambers[chamberId].center[1] + groupOffsetX, + xi.einherjar.chambers[chamberId].center[2], + xi.einherjar.chambers[chamberId].center[3] + groupOffsetZ + } +end diff --git a/scripts/globals/einherjar/reservation.lua b/scripts/globals/einherjar/reservation.lua new file mode 100644 index 00000000000..6fc1e4ce211 --- /dev/null +++ b/scripts/globals/einherjar/reservation.lua @@ -0,0 +1,88 @@ +----------------------------------- +-- Einherjar: Chamber reservation +----------------------------------- +xi = xi or {} +xi.einherjar = xi.einherjar or {} + +xi.einherjar.meetsRequirementsForReservation = function(player) + local texts = zones[xi.zone.HAZHALM_TESTING_GROUNDS].text + local lockout = xi.einherjar.isLockedOut(player) + local toau = player:hasCompletedMission(xi.mission.log_id.TOAU, xi.mission.id.toau.IMMORTAL_SENTRIES) + + -- 1. Player must be level EINHERJAR_LEVEL_MIN+ + if player:getMainLvl() < xi.einherjar.settings.EINHERJAR_LEVEL_MIN then + player:messageSpecial(texts.MIN_LEVEL_RESERVATION, xi.einherjar.settings.EINHERJAR_LEVEL_MIN) + return false + end + + -- 2. Must have ToAU mission 2 completed + if not toau then + player:messageSpecial(texts.REQUIREMENTS_UNMET) + return false + end + + -- 3. Player must not be locked out + if lockout ~= 0 then + player:messageSpecial(texts.RESERVATION_LOCKOUT, lockout) + return false + end + + return true +end + +xi.einherjar.meetsRequirementsForEntry = function(player, chamberId) + local texts = zones[xi.zone.HAZHALM_TESTING_GROUNDS].text + local lockout = xi.einherjar.isLockedOut(player) + local toau = player:hasCompletedMission(xi.mission.log_id.TOAU, xi.mission.id.toau.IMMORTAL_SENTRIES) + local chamberData = xi.einherjar.getChamber(chamberId) + + if not chamberData then + player:messageSpecial(texts.REQUIREMENTS_UNMET) + return false + end + + -- 1. Player must be level EINHERJAR_LEVEL_MIN+ + if player:getMainLvl() < xi.einherjar.settings.EINHERJAR_LEVEL_MIN then + player:messageSpecial(texts.MIN_LEVEL_ENTRY, xi.einherjar.settings.EINHERJAR_LEVEL_MIN) + return false + end + + -- 2. Must have ToAU mission 2 completed + if not toau then + player:messageSpecial(texts.REQUIREMENTS_UNMET) + return false + end + + -- 3. Player must not be locked out + if lockout ~= 0 then + player:messageSpecial(texts.ENTRY_PROHIBITED, lockout) + return false + end + + -- 5. The leader must have entered the chamber + if + not chamberData.players[chamberData.leaderId] and + player:getID() ~= chamberData.leaderId + then + player:messageSpecial(texts.GROUP_LEADER_NOT_YET_ENTERED) + return false + end + + -- 6. Max players limit + local count = 0 + for _ in pairs(chamberData.players) do + count = count + 1 + end + + if count >= xi.einherjar.settings.EINHERJAR_MAX_PLAYERS_PER_CHAMBER then + player:messageSpecial(texts.CHAMBER_FULL) + return false + end + + if chamberData.locked then + player:messageSpecial(texts.MEMBERS_ENGAGED_IN_BATTLE) + return false + end + + return true +end diff --git a/scripts/globals/einherjar/system.lua b/scripts/globals/einherjar/system.lua new file mode 100644 index 00000000000..5bc4af681a0 --- /dev/null +++ b/scripts/globals/einherjar/system.lua @@ -0,0 +1,574 @@ +----------------------------------- +-- Einherjar +----------------------------------- +xi = xi or {} +xi.einherjar = xi.einherjar or {} + +local ID = zones[xi.zone.HAZHALM_TESTING_GROUNDS] + +local mobType = { + REGULAR = 1, + BOSS = 2, + SPECIAL = 3, +} + +local function forEachPlayer(players, callback) + for _, player in pairs(players) do + if player then + callback(player) + end + end +end + +local function log(chamberId, msg) + local function getChamberNameById(id) + for name, value in pairs(xi.einherjar.chamber) do + if value == id then + return name + end + end + + return id + end + + print(string.format('[einherjar][%s] ', getChamberNameById(chamberId)) .. msg) +end + +--============================= +-- Chamber instances management +--============================= + +local chambersInstances = { + [xi.einherjar.chamber.ROSSWEISSE] = nil, + [xi.einherjar.chamber.GRIMGERDE] = nil, + [xi.einherjar.chamber.SIEGRUNE] = nil, + [xi.einherjar.chamber.HELMWIGE] = nil, + [xi.einherjar.chamber.SCHWERTLEITE] = nil, + [xi.einherjar.chamber.WALTRAUTE] = nil, + [xi.einherjar.chamber.ORTLINDE] = nil, + [xi.einherjar.chamber.GERHILDE] = nil, + [xi.einherjar.chamber.BRUNNHILDE] = nil, + -- [xi.einherjar.chamber.ODIN] = nil, -- ODIN_II shares the same chamber -- Not implemented +} + +-- Get the chamber instance by ID +xi.einherjar.getChamber = function(id) + return chambersInstances[id] +end + +-- Create a new chamber instance +xi.einherjar.createNewChamber = function(chamberId, leaderId) + log(chamberId, 'Creating chamber ' .. chamberId) + local newInstance = xi.einherjar.new(chamberId, leaderId) + chambersInstances[chamberId] = newInstance + if newInstance then + xi.einherjar.cycleWave(newInstance) + end + + return chambersInstances[chamberId] +end + +-- Clean up related entities, hide chests, despawn mobs, etc. +local function cleanChamber(chamberData) + for _, mob in pairs(chamberData.mobs) do + if mob:isSpawned() then + mob:removeListener('EINHERJAR_ENGAGE') + mob:removeListener('EINHERJAR_DEATH') + mob:removeListener('EINHERJAR_DESPAWN') + DespawnMob(mob:getID()) + end + + xi.einherjar.unlockMob(mob:getID()) + end + + for _, mob in pairs(chamberData.deadMobs) do + xi.einherjar.unlockMob(mob:getID()) + end + + xi.einherjar.unlockMob(chamberData.encounters.boss) + + if chamberData.lootCrate then + xi.einherjar.hideCrate(chamberData.lootCrate) + end + + if chamberData.tempCrate then + xi.einherjar.hideCrate(chamberData.tempCrate) + end + + log(chamberData.id, 'Chamber cleaned.') +end + +local function releaseChamber(chamberId) + log(chamberId, 'Releasing chamber ' .. chamberId) + chambersInstances[chamberId] = nil +end + +-- Time's up! Force flush the pool and expel everyone. +local function expelAllFromChamber(chamberData) + -- TODO: Flush the chamber-scoped pool + + forEachPlayer(chamberData.players, function(player) + log(chamberData.id, 'Expelling player: ' .. player:getName() .. ' (' .. player:getID() .. ')') + xi.einherjar.onChamberExit(chamberData, player) + player:messageSpecial(ID.text.TIMEOUT_EXPIRED) + end) +end + +local function onWin(chamberData) + forEachPlayer(chamberData.players, function(player) + player:setCharVar('[ein]chamber', 0) + player:messageSpecial( + ID.text.CHAMBER_CLEARED, + xi.einherjar.settings.EINHERJAR_CLEAR_EXTRA_TIME, + chamberData.id - 1 + ) + if xi.einherjar.chambers[chamberData.id].ki then + if not player:hasKeyItem(xi.einherjar.chambers[chamberData.id].ki) then + player:addKeyItem(xi.einherjar.chambers[chamberData.id].ki) + player:messageSpecial(ID.text.KEYITEM_OBTAINED, xi.einherjar.chambers[chamberData.id].ki) + end + end + end) + + -- Cancel all pending events + for k in pairs(chamberData.eventsQueue) do + chamberData.eventsQueue[k] = nil + end + + chamberData.eventsQueue[os.time() + (xi.einherjar.settings.EINHERJAR_CLEAR_EXTRA_TIME * 60)] = function() + log(chamberData.id, 'Post-win timeout, expelling players and cleaning chamber.') + expelAllFromChamber(chamberData) + cleanChamber(chamberData) + releaseChamber(chamberData.id) + end +end + +--============================= +-- Chamber listeners +--============================= + +local function onArmouryCrateTrigger(chamberData, chestOpener, armouryCrate) + npcUtil.openCrate(armouryCrate, function() + onWin(chamberData) + + -- TODO: Rewards are supposed to go in a chamber-scoped treasure pool + for _, reward in ipairs(xi.einherjar.getArmouryCrateRewards(chamberData.encounters.boss, chamberData.id)) do + chestOpener:addTreasure(reward, armouryCrate) + end + + return false + end) +end + +local function onSpecialMobDespawn(chamberData, mob) + local specialMobHandlers = { + ['Saehrimnir'] = function() + -- TODO: The exact value is unknown but it appears to provide a certain amount of regain to all mobs + -- Future mobs will have 30% regain + chamberData.mods[xi.mod.REGAIN] = 30 + -- Apply regain to mobs already spawned + for _, spawnedMob in pairs(chamberData.mobs) do + spawnedMob:setMod(xi.mod.REGAIN, 30) + end + + forEachPlayer(chamberData.players, function(player) + player:messageSpecial(ID.text.STAGNANT_AURA_CLEARED) + player:messageSpecial(ID.text.CREATURES_RESTLESS) + end) + end + } + + if specialMobHandlers[mob:getName()] then + specialMobHandlers[mob:getName()]() + end +end + +local function onSpecialMobDeath(chamberData, mob) + local specialMobHandlers = { + ['Saehrimnir'] = function() + mob:removeListener('EINHERJAR_DESPAWN') + end, + + ['Heithrun'] = function() + -- TODO: Not enough data on Heithrun effect + end, + + ['Muninn'] = function() + chamberData.mods[xi.mod.HPP] = -10 + for _, spawnedMob in pairs(chamberData.mobs) do + spawnedMob:setMod(xi.mod.HPP, -10) + spawnedMob:updateHealth() + end + + forEachPlayer(chamberData.players, function(player) + player:messageSpecial(ID.text.STAGNANT_AURA_CLEARED) + player:messageSpecial(ID.text.CREATURES_CALMED) + end) + end, + + ['Huginn'] = function() + if chamberData.tempCrate then + log(chamberData.id, 'Showing temporary armory crate') + chamberData.tempCrate:setPos( + mob:getXPos(), + mob:getYPos(), + mob:getZPos(), + mob:getRotPos() + ) + npcUtil.showCrate(chamberData.tempCrate) + end + end, + } + + if specialMobHandlers[mob:getName()] then + specialMobHandlers[mob:getName()]() + end +end + +-- Check if all mobs are defeated and cycle to the next wave +-- Keeps track of defeated regular mobs for Ichor calculation +local function onMobDespawn(chamberData, mob) + if mob:getLocalVar('[ein]type') == mobType.REGULAR then + table.insert(chamberData.deadMobs, mob) + end + + for i, mobEntry in ipairs(chamberData.mobs) do + if mobEntry == mob then + table.remove(chamberData.mobs, i) + break + end + end + + if #chamberData.mobs <= 0 then + xi.einherjar.cycleWave(chamberData) + end +end + +-- Lock the chamber when any mob is engaged +local function onMobEngage(chamberData, mob) + if not chamberData.locked then + chamberData.locked = true + log(chamberData.id, 'Mobs engaged, locking the chamber.') + if chamberData.encounters.special then + -- Unknown if that's the actual trigger for countdown + -- Captures show special spawn as early as 1.5 minutes from engaging mobs + chamberData.eventsQueue[os.time() + math.random(90, 300)] = function() + local x, y, z = unpack(xi.einherjar.getRandomPosForMobGroup(chamberData.id, 10, 30)) + local specialMob = GetMobByID(chamberData.encounters.special) + if specialMob then + specialMob:setSpawn(x, y, z, math.random(0, 255)) + xi.einherjar.spawnMob(specialMob, mobType.SPECIAL, chamberData) + end + end + end + end +end + +xi.einherjar.new = function(chamberId, leaderId) + local startTime = os.time() + + local chamberData = { + id = chamberId, + leaderId = leaderId, + startTime = startTime, + endTime = startTime + (xi.einherjar.settings.EINHERJAR_TIME_LIMIT * 60), + locked = false, + players = {}, + + encounters = xi.einherjar.makeChamberPlan(chamberId), + mobs = {}, + deadMobs = {}, + plannedMobs = 0, + mobMods = { + [xi.mobMod.ALLI_HATE] = 100, + [xi.mobMod.CHECK_AS_NM] = 1, + [xi.mobMod.CHARMABLE] = 0, + [xi.mobMod.DONT_ROAM_HOME] = 1, + }, + mods = {}, + waveIndex = 0, + lootCrate = GetNPCByID(ID.npc.ARMOURY_CRATE[chamberId]), + tempCrate = GetNPCByID(ID.npc.ARMOURY_CRATE[chamberId * 2]), + } + + -- Back out if we failed to create a plan + if not chamberData.encounters then + log(chamberId, 'Failed to create chamber plan, releasing chamber.') + return nil + end + + -- Keep track of number of planned mobs + -- Used to calculate completion rate for Ichor rewards + for _, wave in ipairs(chamberData.encounters.waves) do + chamberData.plannedMobs = chamberData.plannedMobs + #wave + end + + if chamberData.lootCrate then + chamberData.lootCrate:setPos( + xi.einherjar.chambers[chamberData.id].center[1], + xi.einherjar.chambers[chamberData.id].center[2], + xi.einherjar.chambers[chamberData.id].center[3], + xi.einherjar.chambers[chamberData.id].center[4] + ) + xi.einherjar.hideCrate(chamberData.lootCrate) + chamberData.lootCrate:addListener('ON_TRIGGER', 'TRIGGER_ITEM_CRATE', utils.bind(onArmouryCrateTrigger, chamberData)) + end + + if chamberData.tempCrate then + xi.einherjar.hideCrate(chamberData.tempCrate) + end + + -- TODO: Create a chamber-scoped shared treasure pool + + chamberData.eventsQueue = { + [chamberData.startTime + (xi.einherjar.settings.EINHERJAR_RESERVATION_TIMEOUT * 60)] = function() + if not chamberData.players[chamberData.leaderId] then + log(chamberId, 'Leader never entered chamber, cancelling reservation.') + cleanChamber(chamberData) + releaseChamber(chamberData.id) + end + end, + + -- 10 minutes, 5 minutes, 30 seconds warnings + [chamberData.endTime - 600] = function() + forEachPlayer(chamberData.players, function(player) + player:messageSpecial(ID.text.TIMEOUT_WARNING, 10) + end) + end, + + [chamberData.endTime - 300] = function() + forEachPlayer(chamberData.players, function(player) + player:messageSpecial(ID.text.TIMEOUT_WARNING, 5) + end) + end, + + [chamberData.endTime - 30] = function() + forEachPlayer(chamberData.players, function(player) + player:messageSpecial(ID.text.TIMEOUT_WARNING_SECONDS, 30) + end) + end, + + [chamberData.endTime] = function() + expelAllFromChamber(chamberData) + end + } + + log(chamberId, 'Created chamber with ' .. #chamberData.encounters.waves .. ' waves.') + return chamberData +end + +xi.einherjar.onChamberEnter = function(chamberData, player, reconnecting) + local playerId = player:getID() + log(chamberData.id, 'Player entered: ' .. player:getName() .. ' (' .. playerId .. ')') + + player:setCharVar('[ein]chamber', chamberData.id, chamberData.endTime) + -- TODO: Add to chamber treasure pool + + for i = 0, 3 do + player:changeMusic(i, 0x8F) + end + + chamberData.players[playerId] = player + + if not reconnecting then + xi.einherjar.recordLockout(player) + end +end + +xi.einherjar.onChamberExit = function(chamberData, player) + if not chamberData.players[player:getID()] then -- player dropped glass without entering + return + end + + for _, remainingMob in pairs(chamberData.mobs) do + remainingMob:clearEnmityForEntity(player) + end + + -- Expel player from chamber + player:startEvent(4) + + player:messageSpecial(ID.text.LAMP_POWER_FADED, xi.item.GLOWING_LAMP) + + -- Award Therion Ichor + local ampoulesReward = xi.einherjar.getAmpoulesReward(chamberData.id, #chamberData.deadMobs, chamberData.plannedMobs) + player:messageSpecial(ID.text.AMPOULES_OBTAINED, ampoulesReward) + + if ampoulesReward ~= 0 then + player:addCurrency('therion_ichor', ampoulesReward) + end + + -- Clean player state + player:setCharVar('[ein]chamber', 0) + -- TODO: Remove from chamber treasure pool + + for i = 0, 3 do + player:changeMusic(i, 0x0) + end + + chamberData.players[player:getID()] = nil + + xi.einherjar.voidAllLamps(player, chamberData.id) + + -- Release chamber if no players are left without waiting for the timeout + if #chamberData.players == 0 then + cleanChamber(chamberData) + releaseChamber(chamberData.id) + end +end + +xi.einherjar.spawnMob = function(mob, newMobType, chamberData) + mob:setCallForHelpBlocked(true) + mob:setClaimable(false) -- TODO: On retail, mobs show as red but still allow everyone to attack + + if newMobType == mobType.SPECIAL then + mob:addListener('DEATH', 'EINHERJAR_DEATH', utils.bind(onSpecialMobDeath, chamberData)) + mob:addListener('DESPAWN', 'EINHERJAR_DESPAWN', utils.bind(onSpecialMobDespawn, chamberData)) + mob:addListener('ENGAGE', 'EINHERJAR_ENGAGE', utils.bind(onMobEngage, chamberData)) + + -- Despawn special mob after 5 minutes + chamberData.eventsQueue[os.time() + 300] = function() + DespawnMob(mob:getID()) + end + else + mob:addListener('DESPAWN', 'EINHERJAR_DESPAWN', utils.bind(onMobDespawn, chamberData)) + mob:addListener('ENGAGE', 'EINHERJAR_ENGAGE', utils.bind(onMobEngage, chamberData)) + table.insert(chamberData.mobs, mob) + end + + mob:spawn() + mob:setLocalVar('[ein]chamber', chamberData.id) + mob:setLocalVar('[ein]type', newMobType) + + for mod, value in pairs(chamberData.mobMods) do + mob:setMobMod(mod, value) + end + + if newMobType == mobType.SPECIAL then + -- Special mobs have unique roaming properties + mob:setMobMod(xi.mobMod.ROAM_COOL, 8) + mob:setMobMod(xi.mobMod.ROAM_DISTANCE, 60) + mob:setMobMod(xi.mobMod.ROAM_RATE, 5) + elseif newMobType == mobType.REGULAR then + mob:setMobMod(xi.mobMod.ROAM_DISTANCE, 20) + end + + for mod, value in pairs(chamberData.mods) do + mob:setMod(mod, value) + end + + log(chamberData.id, 'Spawned mob: ' .. mob:getName() .. '[' .. mob:getID() .. ']') + + -- Special case: Hrungnir spawns a clone + if mob:getID() == ID.mob.HRUNGNIR then + local clone = GetMobByID(ID.mob.HRUNGNIR_CLONE) + if clone then + clone:setSpawn( + mob:getXPos() + 1, + mob:getYPos(), + mob:getZPos(), + mob:getRotPos() + ) + xi.einherjar.spawnMob(clone, mobType.BOSS, chamberData) + end + end +end + +-- Spawn mobs for the next wave, including the boss on the last wave +-- Mobs are grouped randomly and spawned in a random position within a range +xi.einherjar.cycleWave = function(chamberData) + if not chamberData.encounters.waves[chamberData.waveIndex + 1] then + log(chamberData.id, 'All waves cleared! Showing armoury crate.') + npcUtil.showCrate(chamberData.lootCrate) + chamberData.lootCrate:setLocalVar('[ein]chamber', chamberData.id) + return + end + + log(chamberData.id, string.format('Cycling to next wave %d -> %d', chamberData.waveIndex, chamberData.waveIndex + 1)) + chamberData.waveIndex = chamberData.waveIndex + 1 + + local waveMobs = xi.einherjar.subDivideMobs(chamberData.encounters.waves[chamberData.waveIndex]) + + -- Spawn mobs with group-based and individual random variation + for _, subGroup in ipairs(waveMobs) do + -- Group center position relative to the chamber center + local groupCenterX, groupCenterY, groupCenterZ = unpack(xi.einherjar.getRandomPosForMobGroup(chamberData.id, 3, 15)) + + for _, mobId in ipairs(subGroup) do + local newMob = GetMobByID(mobId) + + if newMob then + newMob:setSpawn( + groupCenterX + math.random(-3, 3), + groupCenterY, + groupCenterZ + math.random(-7, 7), + math.random(0, 255) + ) + xi.einherjar.spawnMob(newMob, mobType.REGULAR, chamberData) + end + end + end + + -- On last wave, also spawn the boss + if + chamberData.waveIndex == chamberData.encounters.waveCount and + chamberData.encounters.boss + then + local newBoss = GetMobByID(chamberData.encounters.boss) + if newBoss then + newBoss:setSpawn(unpack(xi.einherjar.getRandomPosForMobGroup(chamberData.id, 0, 0))) + xi.einherjar.spawnMob(newBoss, mobType.BOSS, chamberData) + end + end +end + +--============================= +-- Zone events listeners +--============================= + +local function onChamberTick(chamberData) + if not chamberData.eventsQueue or next(chamberData.eventsQueue) == nil then + return + end + + local currentTime = os.time() + + for timestamp, event in pairs(chamberData.eventsQueue) do + if currentTime >= timestamp then + log(chamberData.id, 'Executing event at ' .. timestamp) + event() + chamberData.eventsQueue[timestamp] = nil + end + end +end + +-- On every zone tick, check if chambers have events to process +xi.einherjar.onZoneTick = function(zone) + for _, chamberData in pairs(chambersInstances) do + if chamberData then + onChamberTick(chamberData) + end + end +end + +-- Zoning out without dropping glass forfeits ichor rewards +xi.einherjar.onZoneOut = function(chamberData, player) + if chamberData.players[player:getID()] then + log(chamberData.id, 'Player zoned out: ' .. player:getName() .. ' (' .. player:getID() .. ')') + chamberData.players[player:getID()] = nil + end +end + +-- Check if player has a matching lamp, else they get warped to entrance +xi.einherjar.onReconnection = function(chamberData, player) + local playerId = player:getID() + + if #xi.einherjar.getMatchingLamps(player, chamberData.id, chamberData.startTime) == 0 then + return false + end + + chamberData.players[playerId] = player + log(chamberData.id, 'Player reconnected: ' .. player:getName() .. ' (' .. playerId .. ')') + xi.einherjar.onChamberEnter(chamberData, player, true) + + return true +end diff --git a/scripts/globals/einherjar/treasure.lua b/scripts/globals/einherjar/treasure.lua index 00cd6cbf1e6..8e23de893d4 100644 --- a/scripts/globals/einherjar/treasure.lua +++ b/scripts/globals/einherjar/treasure.lua @@ -193,8 +193,9 @@ end -- Einherjar Armoury Crate rewards generation -- Note: Only for Wing 1-3, no crate in Odin's Chamber -xi.einherjar.getArmouryCrateRewards = function(bossId, chamberTier) +xi.einherjar.getArmouryCrateRewards = function(bossId, chamberId) local rewards = {} + local tier = math.ceil(chamberId / 3) -- 1. Boss specific drops (1-3 guaranteed items, some bosses also have non-guaranteed drops) for _, lootEntry in ipairs(bossDrops[bossId]) do @@ -214,11 +215,22 @@ xi.einherjar.getArmouryCrateRewards = function(bossId, chamberTier) -- 3. Wing specific abjuration (5% chance) if math.random(1, 100) <= 5 then - table.insert(rewards, abjurations[chamberTier][math.random(1, #abjurations[chamberTier])]) + table.insert(rewards, abjurations[tier][math.random(1, #abjurations[tier])]) end - -- 4. (Optional) 4. Heithrun special rewards (not guaranteed) - -- TODO: Implement Heithrun + -- 4. (Optional) Heithrun special rewards (not guaranteed) + -- TODO: Not enough data to implement return rewards end + +xi.einherjar.getAmpoulesReward = function(chamberId, defeatedCount, totalCount) + local completionRate = defeatedCount / totalCount + local baseReward = xi.einherjar.chambers[chamberId].ichor * xi.einherjar.settings.EINHERJAR_ICHOR_RATE + return math.floor(baseReward * completionRate) +end + +xi.einherjar.hideCrate = function(crateNpc) + crateNpc:setStatus(xi.status.INVISIBLE) + crateNpc:setUntargetable(true) +end diff --git a/scripts/specs/core/CTradeContainer.lua b/scripts/specs/core/CTradeContainer.lua index 8b03835a6c5..f28b97005f8 100644 --- a/scripts/specs/core/CTradeContainer.lua +++ b/scripts/specs/core/CTradeContainer.lua @@ -67,3 +67,7 @@ end ---@return boolean function CTradeContainer:confirmSlot(slotID, amountObj) end + +---@return nil +function CTradeContainer:clean() +end diff --git a/scripts/zones/Hazhalm_Testing_Grounds/IDs.lua b/scripts/zones/Hazhalm_Testing_Grounds/IDs.lua index d7d1258e030..ccf01a239b8 100644 --- a/scripts/zones/Hazhalm_Testing_Grounds/IDs.lua +++ b/scripts/zones/Hazhalm_Testing_Grounds/IDs.lua @@ -26,6 +26,7 @@ zones[xi.zone.HAZHALM_TESTING_GROUNDS] = MIN_LEVEL_ENTRY = 8056, -- Adventurers who have yet to reach level will not be permitted entry to the training grounds. RESERVATION_LOCKOUT = 8057, -- Chamber reservation is prohibited for # more Vana'dielian [day/days]. MIN_LEVEL_RESERVATION = 8058, -- Adventurers who have yet to reach level will not be permitted to make reservations within the training grounds. + COULD_NOT_GATHER_DATA = 8060, -- Could not gather the sufficient data. CHAMBER_OCCUPIED = 8062, -- Currently, another expedition is occupying [/Rossweisse's Chamber/Grimgerde's Chamber/Siegrune's Chamber/Helmwige's Chamber/Schwertleite's Chamber/Waltraute's Chamber/Ortlinde's Chamber/Gerhilde's Chamber/Brunhilde's Chamber/Odin's Chamber/Odin's Chamber]. GLOWING_LAMP_OBTAINED = 8063, -- Time and destination have been recorded on your . MISSING_FEATHERS = 8064, -- You do not possess the items required for entry. @@ -45,20 +46,21 @@ zones[xi.zone.HAZHALM_TESTING_GROUNDS] = mob = { -- Einherjar: Wing 1: Mobs - BUGARD_X = GetTableOfIDs('Bugard-X'), - CHIGOE = GetTableOfIDs('Chigoe'), - CRAVEN_EINHERJAR = GetTableOfIDs('Craven_Einherjar'), - DARK_ELEMENTAL = GetTableOfIDs('Dark_Elemental'), - DJIGGA = GetTableOfIDs('Djigga'), -- Chigoes for Hildesvini; can also appear in Wing 3 - EINHERJAR_EATER = GetTableOfIDs('Einherjar_Eater'), - HAZHALM_BAT = GetTableOfIDs('Hazhalm_Bat'), - HAZHALM_BATS = GetTableOfIDs('Hazhalm_Bats'), - HYNDLA = GetTableOfIDs('Hyndla'), - INFECTED_WAMOURA = GetTableOfIDs('Infected_Wamoura'), - LOGI = GetTableOfIDs('Logi'), - NICKUR = GetTableOfIDs('Nickur'), - ROTTING_HUSKARL = GetTableOfIDs('Rotting_Huskarl'), -- TODO: This is 3 sets of mob, BLM x12, WAR x12, DRK x12 - SJOKRAKJEN = GetTableOfIDs('Sjokrakjen'), + BUGARD_X = GetTableOfIDs('Bugard-X'), + CHIGOE = GetTableOfIDs('Chigoe'), + CRAVEN_EINHERJAR = GetTableOfIDs('Craven_Einherjar'), + DARK_ELEMENTAL = GetTableOfIDs('Dark_Elemental'), + EINHERJAR_EATER = GetTableOfIDs('Einherjar_Eater'), + HAZHALM_BAT = GetTableOfIDs('Hazhalm_Bat'), + HAZHALM_BATS = GetTableOfIDs('Hazhalm_Bats'), + HYNDLA = GetTableOfIDs('Hyndla'), + INFECTED_WAMOURA = GetTableOfIDs('Infected_Wamoura'), + LOGI = GetTableOfIDs('Logi'), + NICKUR = GetTableOfIDs('Nickur'), + ROTTING_HUSKARL_WAR = GetTableOfIDs('Rotting_Huskarl_war'), + ROTTING_HUSKARL_BLM = GetTableOfIDs('Rotting_Huskarl_blm'), + SJOKRAKJEN = GetTableOfIDs('Sjokrakjen'), + DJIGGA_HILDESVINI = GetTableOfIDs('Djigga_Hildesvini'), -- Adds for Hildesvini -- Einherjar: Wing 1: Bosses HAKENMANN = GetFirstID('Hakenmann'), @@ -69,30 +71,35 @@ zones[xi.zone.HAZHALM_TESTING_GROUNDS] = NIHHUS = GetFirstID('Nihhus'), -- Einherjar: Wing 2: Mobs - BATTLEMITE = GetTableOfIDs('Battlemite'), - CORRUPT_EINHERJAR = GetTableOfIDs('Corrupt_Einherjar'), - EINHERJAR_BREI = GetTableOfIDs('Einherjar_Brei'), - FLAMES_OF_MUSPELHEIM = GetTableOfIDs('Flames_of_Muspelheim'), - GARDSVOR = GetTableOfIDs('Gardsvor'), - HAZHALM_LEECH = GetTableOfIDs('Hazhalm_Leech'), - ODINS_FOOL = GetTableOfIDs('Odins_Fool'), - UTGARTH_BAT = GetTableOfIDs('Utgarth_Bat'), - UTGARTH_BATS = GetTableOfIDs('Utgarth_Bats'), - UTGARTH_LEECH = GetTableOfIDs('Utgarth_Leech'), - WALDGEIST = GetTableOfIDs('Waldgeist'), - WINEBIBBER = GetTableOfIDs('Winebibber'), + BATTLEMITE = GetTableOfIDs('Battlemite'), + CORRUPT_EINHERJAR = GetTableOfIDs('Corrupt_Einherjar'), + CRAVEN_EINHERJAR_BHOOT = GetTableOfIDs('Craven_Einherjar_bhoot'), + EINHERJAR_BREI = GetTableOfIDs('Einherjar_Brei'), + FLAMES_OF_MUSPELHEIM = GetTableOfIDs('Flames_of_Muspelheim'), + GARDSVOR = GetTableOfIDs('Gardsvor'), + HAZHALM_LEECH = GetTableOfIDs('Hazhalm_Leech'), + ODINS_FOOL = GetTableOfIDs('Odins_Fool'), + ROTTING_HUSKARL_DRK = GetTableOfIDs('Rotting_Huskarl_drk'), -- Intertwined with THF + ROTTING_HUSKARL_THF = GetTableOfIDs('Rotting_Huskarl_thf'), -- Intertwined with DRK + UTGARTH_BAT = GetTableOfIDs('Utgarth_Bat'), + UTGARTH_BATS = GetTableOfIDs('Utgarth_Bats'), + UTGARTH_LEECH = GetTableOfIDs('Utgarth_Leech'), + WALDGEIST = GetTableOfIDs('Waldgeist'), + WINEBIBBER = GetTableOfIDs('Winebibber'), -- Einherjar: Wing 2: Bosses ANDHRIMNIR = GetFirstID('Andhrimnir'), ARIRI_SAMARIRI = GetFirstID('Ariri_Samariri'), BALRAHN = GetFirstID('Balrahn'), HRUNGNIR = GetFirstID('Hrungnir'), + HRUNGNIR_CLONE = GetFirstID('Hrungnir_clone'), MOKKURALFI = GetFirstID('Mokkuralfi'), TANNGRISNIR = GetFirstID('Tanngrisnir'), -- Einherjar: Wing 3: Mobs AUDHUMBLA = GetTableOfIDs('Audhumbla'), BERSERKR = GetTableOfIDs('Berserkr'), + DJIGGA = GetTableOfIDs('Djigga'), EXPERIMENTAL_POROGGO = GetTableOfIDs('Experimental_Poroggo'), HAFGYGR = GetTableOfIDs('Hafgygr'), IDUN = GetTableOfIDs('Idun'), diff --git a/scripts/zones/Hazhalm_Testing_Grounds/Zone.lua b/scripts/zones/Hazhalm_Testing_Grounds/Zone.lua index decd9ccf211..347834e67bf 100644 --- a/scripts/zones/Hazhalm_Testing_Grounds/Zone.lua +++ b/scripts/zones/Hazhalm_Testing_Grounds/Zone.lua @@ -7,6 +7,16 @@ local zoneObject = {} zoneObject.onInitialize = function(zone) end +zoneObject.onZoneOut = function(player) + local inEinherjar = player:getCharVar('[ein]chamber') + if inEinherjar then + local chamberData = xi.einherjar.getChamber(inEinherjar) + if chamberData then + xi.einherjar.onZoneOut(chamberData, player) + end + end +end + zoneObject.onZoneIn = function(player, prevZone) local cs = -1 @@ -18,9 +28,31 @@ zoneObject.onZoneIn = function(player, prevZone) player:setPos(652.174, -272.632, -104.92, 148) end + -- Eject players past the gate if they no longer have a valid reservation + -- TODO: Will likely conflict with The Rider Cometh + local inEinherjar = player:getCharVar('[ein]chamber') + if inEinherjar then + local chamberData = xi.einherjar.getChamber(inEinherjar) + if chamberData then + local validForChamber = xi.einherjar.onReconnection(chamberData, player) + if validForChamber then + return -1 + end + end + end + + if player:getXPos() < 486 then + -- Cutscene warps them back to entrance + cs = 4 + end + return cs end +zoneObject.onZoneTick = function(zone) + xi.einherjar.onZoneTick(zone) +end + zoneObject.onTriggerAreaEnter = function(player, triggerArea) end diff --git a/scripts/zones/Hazhalm_Testing_Grounds/npcs/_260.lua b/scripts/zones/Hazhalm_Testing_Grounds/npcs/_260.lua index 8b039084d2b..7e88eb58f73 100644 --- a/scripts/zones/Hazhalm_Testing_Grounds/npcs/_260.lua +++ b/scripts/zones/Hazhalm_Testing_Grounds/npcs/_260.lua @@ -13,7 +13,10 @@ entity.onTrade = function(player, npc, trade) end if npcUtil.tradeHasExactly(trade, { xi.item.SMOLDERING_LAMP }) then - -- TODO: Check requirements + if not xi.einherjar.meetsRequirementsForReservation(player) then + return + end + player:startEvent(2, 0, xi.besieged.getMercenaryRank(player), @@ -24,12 +27,28 @@ entity.onTrade = function(player, npc, trade) xi.item.SMOLDERING_LAMP, xi.item.GLOWING_LAMP ) - -- Continued in onEventFinish 2, 1 + -- Continued in onEventUpdate 2 end if npcUtil.tradeHasExactly(trade, { xi.item.GLOWING_LAMP }) then - -- TODO: Player requests entry into chamber - -- Continued in onEventFinish 3, 1 + local lampObj = trade:getItem() + local lampData = xi.einherjar.decypherLamp(lampObj) + + if not xi.einherjar.meetsRequirementsForEntry(player, lampData.chamber) then + return + end + + player:startEvent(3, + 0x1D + lampData.chamber, + xi.besieged.getMercenaryRank(player), + xi.einherjar.settings.EINHERJAR_KO_EXPEL_TIME, + xi.einherjar.settings.EINHERJAR_REENTRY_TIME, + 0, -- Unknown + xi.einherjar.getChambersMenu(player), + xi.item.SMOLDERING_LAMP, + xi.item.GLOWING_LAMP + ) + -- Continued in onEventFinish 3,1 end end @@ -51,8 +70,9 @@ entity.onEventUpdate = function(player, csid, option, npc) local mask = xi.einherjar.getChambersMenu(player) local chamberEntry = xi.einherjar.chambers[option] - if chamberEntry and bit.band(mask, chamberEntry.menu) ~= 0 then - -- Player attempted to reserve a chamber they don't have access to + if not chamberEntry or bit.band(mask, chamberEntry.menu) ~= 0 then + print(string.format("Einherjar: %s attempted to reserve a chamber they don't have access to.", player:getName())) + player:messageSpecial(ID.text.COULD_NOT_GATHER_DATA) player:instanceEntry(npc, 3) return end @@ -66,9 +86,23 @@ entity.onEventUpdate = function(player, csid, option, npc) xi.item.SMOLDERING_LAMP, xi.item.GLOWING_LAMP) if player:getFreeSlotsCount() ~= 0 then - -- TODO: Reserve chamber, generate waves - xi.einherjar.makeLamp(player, option, os.time(), os.time() + (xi.einherjar.settings.EINHERJAR_TIME_LIMIT * 60)) + local chamberData = xi.einherjar.getChamber(option) + if chamberData then + player:instanceEntry(npc, 3) -- 3 == chamber reservation failed + player:messageSpecial(ID.text.CHAMBER_OCCUPIED, option) + return + else + chamberData = xi.einherjar.createNewChamber(option, player:getID()) + if not chamberData then + player:messageSpecial(ID.text.COULD_NOT_GATHER_DATA) + player:instanceEntry(npc, 3) + return + end + end + + xi.einherjar.makeLamp(player, chamberData.id, chamberData.startTime, chamberData.endTime) player:instanceEntry(npc, 4) + -- Continued in onEventFinish 2 else player:messageSpecial(ID.text.ITEM_CANNOT_BE_OBTAINED, xi.item.GLOWING_LAMP) player:instanceEntry(npc, 3) @@ -84,8 +118,18 @@ entity.onEventFinish = function(player, csid, option) player:messageSpecial(ID.text.ITEM_OBTAINED, xi.item.GLOWING_LAMP) player:confirmTrade() elseif csid == 3 and option == 1 then -- player requested entry into chamber - local _ = player:getTrade():getItem() - -- TODO: Read lamp and warp player in + local tradeContainer = player:getTrade() + if tradeContainer then + local lampObj = tradeContainer:getItem() + local lampData = xi.einherjar.decypherLamp(lampObj) + tradeContainer:clean() -- release the lamp + if lampData then + local chamberData = xi.einherjar.getChamber(lampData.chamber) + if chamberData and chamberData.startTime == lampData.startTime then + xi.einherjar.onChamberEnter(chamberData, player) + end + end + end end end diff --git a/sql/item_basic.sql b/sql/item_basic.sql index 79e675443ce..ace9c70bdb7 100644 --- a/sql/item_basic.sql +++ b/sql/item_basic.sql @@ -5179,7 +5179,7 @@ INSERT INTO `item_basic` VALUES (5409,0,'dark_card_case','dark_card_case',12,154 INSERT INTO `item_basic` VALUES (5410,0,'virtue_stone_pouch','vrt._stn._pouch',99,30300,@NONE,1,0); INSERT INTO `item_basic` VALUES (5411,0,'bottle_of_dawn_mulsum','dawn_mulsum',1,1540,@MEDICINES,0,321); INSERT INTO `item_basic` VALUES (5412,0,'scapegoat','scapegoat',1,1540,@BONECRAFT,0,1918); -INSERT INTO `item_basic` VALUES (5413,0,'smouldering_lamp','smouldering_lamp',1,32832,@NONE,0,25); +INSERT INTO `item_basic` VALUES (5413,0,'smoldering_lamp','smoldering_lamp',1,32832,@NONE,0,25); INSERT INTO `item_basic` VALUES (5414,0,'glowing_lamp','glowing_lamp',1,13376,@NONE,1,0); INSERT INTO `item_basic` VALUES (5415,0,'page_from_balrahns_reflections','heros_reflections',1,63044,@NONE,1,0); INSERT INTO `item_basic` VALUES (5416,0,'steel_bullet_pouch','stl._bull._pouch',12,1540,@AMMUNITION,0,900); diff --git a/sql/mob_groups.sql b/sql/mob_groups.sql index 6dcee23ca3b..9f4e884095a 100644 --- a/sql/mob_groups.sql +++ b/sql/mob_groups.sql @@ -4129,7 +4129,7 @@ INSERT INTO `mob_groups` VALUES (16,1422,78,'Freke',0,128,0,80000,0,85,85,0); INSERT INTO `mob_groups` VALUES (17,4130,78,'Vampyr_Jarl',0,128,0,50000,0,85,85,0); INSERT INTO `mob_groups` VALUES (18,2756,78,'Motsognir',0,128,0,100000,0,85,85,0); INSERT INTO `mob_groups` VALUES (19,913,78,'Dark_Elemental',0,128,3410,10000,0,82,82,0); -INSERT INTO `mob_groups` VALUES (20,3397,78,'Rotting_Huskarl',0,128,3410,7000,0,82,82,0); +INSERT INTO `mob_groups` VALUES (20,3397,78,'Rotting_Huskarl_war',0,128,3410,7000,0,82,82,0); INSERT INTO `mob_groups` VALUES (21,829,78,'Craven_Einherjar',0,128,3410,10000,0,82,82,0); INSERT INTO `mob_groups` VALUES (22,2037,78,'Hyndla',0,128,3410,17500,0,82,82,0); INSERT INTO `mob_groups` VALUES (23,2838,78,'Nickur',0,128,3410,50000,0,82,82,0); @@ -4157,7 +4157,7 @@ INSERT INTO `mob_groups` VALUES (44,2943,78,'Odins_Jester',0,128,3410,7700,0,82, INSERT INTO `mob_groups` VALUES (45,800,78,'Corrupt_Einherjar',0,128,3410,8800,0,82,82,0); INSERT INTO `mob_groups` VALUES (46,2555,78,'Manticore-X',0,128,3410,13500,0,82,82,0); INSERT INTO `mob_groups` VALUES (47,3054,78,'Ormr',0,128,3410,32000,0,82,82,0); -INSERT INTO `mob_groups` VALUES (48,714,78,'Chigoe',0,128,3410,7200,0,82,82,0); +INSERT INTO `mob_groups` VALUES (48,7074,78,'Chigoe',0,128,3410,7200,0,82,82,0); INSERT INTO `mob_groups` VALUES (49,1071,78,'Djigga',0,128,3410,9000,0,82,82,0); INSERT INTO `mob_groups` VALUES (50,2430,78,'Logi',0,128,3410,7500,0,82,82,0); INSERT INTO `mob_groups` VALUES (51,1356,78,'Flames_of_Muspelheim',0,128,3410,18000,0,82,82,0); @@ -4199,6 +4199,11 @@ INSERT INTO `mob_groups` VALUES (86,4279,78,'Waltraute',0,128,0,12500,0,85,85,0) INSERT INTO `mob_groups` VALUES (87,0,78,'Odin_Prime',0,128,0,0,0,0,0,0); INSERT INTO `mob_groups` VALUES (88,0,78,'Odin_Image',0,128,0,0,0,0,0,0); INSERT INTO `mob_groups` VALUES (89,2941,78,'Odin',0,128,3411,110000,0,85,85,0); +INSERT INTO `mob_groups` VALUES (90,7075,78,'Craven_Einherjar_bhoot',0,128,3410,10000,0,82,82,0); +INSERT INTO `mob_groups` VALUES (91,7076,78,'Rotting_Huskarl_blm',0,128,3410,7000,0,82,82,0); +INSERT INTO `mob_groups` VALUES (92,7077,78,'Rotting_Huskarl_drk',0,128,3410,7000,0,82,82,0); +INSERT INTO `mob_groups` VALUES (93,7078,78,'Rotting_Huskarl_thf',0,128,3410,7000,0,82,82,0); +INSERT INTO `mob_groups` VALUES (94,1071,78,'Djigga_Hildesvini',0,128,0,9000,0,82,82,0); -- ------------------------------------------------------------ -- Caedarva_Mire (Zone 79) diff --git a/sql/mob_pools.sql b/sql/mob_pools.sql index ef6bb694a7a..9943e18f82a 100644 --- a/sql/mob_pools.sql +++ b/sql/mob_pools.sql @@ -190,7 +190,7 @@ INSERT INTO `mob_pools` VALUES (133,'Andhrimnir','Andhrimnir',74,0x0000540500000 INSERT INTO `mob_pools` VALUES (134,'Andrass_Vouivre','Andrass_Vouivre',267,0x00008E0100000000000000000000000000000000,1,1,7,240,100,0,1,0,1,8,0,0,0,643,0,0,0,0,0,267,267); INSERT INTO `mob_pools` VALUES (135,'Anemic_Aloysius','Anemic_Aloysius',258,0x0000580900000000000000000000000000000000,4,5,0,0,100,0,0,0,0,0,0,0,7,1173,0,0,272,0,64,953,258); INSERT INTO `mob_pools` VALUES (136,'Anemone','Anemone',186,0x00007C0100000000000000000000000000000000,1,1,7,200,100,0,1,0,0,0,0,0,20,1667,8,0,0,0,0,186,186); -INSERT INTO `mob_pools` VALUES (137,'Angantyr','Angantyr',358,0x0000E80200000000000000000000000000000000,1,1,2,240,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,358,358); +INSERT INTO `mob_pools` VALUES (137,'Angantyr','Angantyr',358,0x0000E80200000000000000000000000000000000,1,1,2,240,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,358,358); INSERT INTO `mob_pools` VALUES (138,'Angler_Crab','Angler_Crab',77,0x0000640100000000000000000000000000000000,7,7,4,240,100,0,1,0,0,4,0,0,0,1155,8,0,0,0,0,77,77); INSERT INTO `mob_pools` VALUES (139,'Angler_Orobon','Angler_Orobon',191,0x0000C10600000000000000000000000000000000,1,1,7,240,100,0,1,1,1,16,0,0,5386,1159,0,0,0,0,0,415,191); INSERT INTO `mob_pools` VALUES (140,'Angler_Tiger','Angler_Tiger',242,0x0000340100000000000000000000000000000000,1,1,7,240,100,0,1,0,0,0,0,0,0,1155,0,0,0,0,0,242,242); @@ -336,7 +336,7 @@ INSERT INTO `mob_pools` VALUES (279,'Atrociraptor','Atrociraptor',210,0x00003C01 INSERT INTO `mob_pools` VALUES (280,'Attack_Ziz','Attack_Ziz',70,0x0000210100000000000000000000000000000000,1,1,11,240,100,0,1,1,1,0,0,0,8,1153,13,0,0,0,0,70,70); INSERT INTO `mob_pools` VALUES (281,'Attohwa_Coeurl','Attohwa_Coeurl',71,0x00006F0100000000000000000000000000000000,1,1,2,240,100,0,1,0,0,0,0,0,237,1155,0,0,0,0,0,161,71); INSERT INTO `mob_pools` VALUES (282,'Ateuvhi','Ateuvhi',109,0x00000E0200000000000000000000000000000000,1,1,6,240,100,0,0,0,0,2,0,0,0,1155,6,0,0,0,0,109,109); -INSERT INTO `mob_pools` VALUES (283,'Audhumbla','Audhumbla',57,0x00004D0500000000000000000000000000000000,1,8,5,360,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,57,57); +INSERT INTO `mob_pools` VALUES (283,'Audhumbla','Audhumbla',57,0x00004D0500000000000000000000000000000000,1,8,5,360,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,57,57); INSERT INTO `mob_pools` VALUES (284,'Audumbla','Audumbla',57,0x00004D0500000000000000000000000000000000,1,1,6,240,100,0,0,0,0,2,0,32,7,1181,0,0,0,0,0,955,57); INSERT INTO `mob_pools` VALUES (285,'Augmented_Chigoe','Augmented_Chigoe',64,0x0000D30600000000000000000000000000000000,6,6,2,150,100,0,1,1,0,0,0,0,1,131,0,0,0,24,1024,64,64); INSERT INTO `mob_pools` VALUES (286,'Aura_Butler','Aura_Butler',85,0x0000300100000000000000000000000000000000,1,1,12,240,100,0,1,0,0,0,0,0,290,1155,4,0,0,0,0,85,85); @@ -404,7 +404,7 @@ INSERT INTO `mob_pools` VALUES (347,'Barong','Barong',87,0x0000A4010000000000000 INSERT INTO `mob_pools` VALUES (348,'Baronial_Bat','Baronial_Bat',46,0x0000000100000000000000000000000000000000,1,1,6,240,100,0,1,1,1,2,0,0,6,645,8,0,0,0,0,46,46); INSERT INTO `mob_pools` VALUES (349,'Baron_Vapula','Baron_Vapula',358,0x0000E70200000000000000000000000000000000,4,4,10,240,100,0,1,1,1,2,0,0,0,3,0,0,2,0,0,169,169); INSERT INTO `mob_pools` VALUES (350,'Barrens_Treant','Barrens_Treant',245,0x00008B0100000000000000000000000000000000,1,1,8,240,100,0,1,0,0,0,0,0,1,129,0,0,0,0,0,245,245); -INSERT INTO `mob_pools` VALUES (351,'Barri','Barri',358,0x0000E90200000000000000000000000000000000,1,1,2,240,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,358,358); +INSERT INTO `mob_pools` VALUES (351,'Barri','Barri',358,0x0000E90200000000000000000000000000000000,1,1,2,240,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,358,358); INSERT INTO `mob_pools` VALUES (352,'Bartholomaus','Bartholomaus',149,0x010000014910A220A230A240A250B5602C703A80,1,1,3,240,100,0,0,0,0,0,0,32,0,155,0,0,0,0,0,149,149); INSERT INTO `mob_pools` VALUES (353,'Bashdeel','Bashdeel',149,0x0500600700000000000000000000000000000000,16,16,3,240,100,0,1,0,1,16,0,0,1,155,0,0,8,0,0,149,149); INSERT INTO `mob_pools` VALUES (354,'Arch_Christelle','Arch_Christelle',186,0x00007C0100000000000000000000000000000000,1,1,7,200,100,0,1,1,1,2,0,32,7,1695,8,0,0,0,0,186,186); @@ -420,7 +420,7 @@ INSERT INTO `mob_pools` VALUES (363,'Battlechoir_Gitchfotch','Battlechoir_Gitchf INSERT INTO `mob_pools` VALUES (364,'Battleclad_Chariot','Battleclad_Chariot',63,0x0000200700000000000000000000000000000000,1,1,6,320,100,0,1,0,1,2,0,0,0,0,0,0,0,0,0,63,63); INSERT INTO `mob_pools` VALUES (365,'Battledressed_Chariot','Battledressed_Chariot',63,0x0000200700000000000000000000000000000000,1,1,6,320,100,0,1,0,1,2,0,0,415,133,16,0,0,0,0,63,63); INSERT INTO `mob_pools` VALUES (366,'Battlemaster_Vatgit','Battlemaster_Vatgit',334,0x0000F40700000000000000000000000000000000,1,1,2,220,100,0,1,1,1,0,0,32,0,157,0,0,0,0,0,334,334); -INSERT INTO `mob_pools` VALUES (367,'Battlemite','Battlemite',81,0x0000490500000000000000000000000000000000,8,8,5,210,100,0,1,1,1,16,0,0,0,3,0,0,5,0,0,81,81); +INSERT INTO `mob_pools` VALUES (367,'Battlemite','Battlemite',81,0x0000490500000000000000000000000000000000,8,8,5,210,100,0,1,1,1,0,0,0,0,3,0,0,5,0,0,81,81); INSERT INTO `mob_pools` VALUES (368,'Battlerigged_Chariot','Battlerigged_Chariot',63,0x00001D0700000000000000000000000000000000,4,4,12,240,100,0,0,0,1,2,0,0,1,133,0,0,260,0,0,932,63); INSERT INTO `mob_pools` VALUES (369,'Battle_Bat','Battle_Bat',46,0x0000000100000000000000000000000000000000,1,1,11,240,100,0,1,0,1,0,0,0,290,643,8,0,0,0,0,46,46); INSERT INTO `mob_pools` VALUES (370,'Battle_Bugard','Battle_Bugard',58,0x0000470500000000000000000000000000000000,1,1,3,300,100,0,1,0,0,0,0,0,184,133,0,0,0,0,0,58,58); @@ -450,7 +450,7 @@ INSERT INTO `mob_pools` VALUES (393,'Berried_Chigoe','Berried_Chigoe',64,0x0000D INSERT INTO `mob_pools` VALUES (394,'Berry_Grub','Berry_Grub',79,0x00008C0100000000000000000000000000000000,1,1,11,240,100,0,0,0,1,0,0,0,1037,131,0,0,0,0,0,79,79); INSERT INTO `mob_pools` VALUES (395,'Berry_Syrup','Berry_Syrup',66,0x0000240100000000000000000000000000000000,1,5,11,240,100,0,1,1,0,18,0,0,7,129,0,0,0,0,0,66,66); INSERT INTO `mob_pools` VALUES (396,'Berserker_Demon','Berserker_Demon',169,0x0000AC0800000000000000000000000000000000,1,1,4,240,100,0,1,0,1,0,0,0,1,131,0,0,0,0,0,169,169); -INSERT INTO `mob_pools` VALUES (397,'Berserkr','Berserkr',358,0x0000EC0200000000000000000000000000000000,8,4,7,240,100,0,1,1,1,16,0,0,0,3,0,0,5,0,0,358,358); +INSERT INTO `mob_pools` VALUES (397,'Berserkr','Berserkr',358,0x0000EC0200000000000000000000000000000000,8,4,7,240,100,0,1,1,1,0,0,0,0,3,0,0,5,0,0,358,358); INSERT INTO `mob_pools` VALUES (398,'Berstuk','Berstuk',231,0x0000E60700000000000000000000000000000000,4,5,12,240,100,0,0,0,0,2,0,32,7,159,0,0,216,0,0,857,231); INSERT INTO `mob_pools` VALUES (399,'Beryl-footed_Molberry','Beryl-footed_Molberry',243,0x0000B50400000000000000000000000000000000,13,13,2,240,100,0,1,0,1,2,0,32,223,157,0,0,7,0,0,243,243); INSERT INTO `mob_pools` VALUES (400,'Lost_Nantina','Lost_Nantina',136,0x0000280100000000000000000000000000000000,2,2,1,480,100,0,1,1,1,2,0,32,0,671,0,0,0,0,0,136,136); @@ -574,7 +574,7 @@ INSERT INTO `mob_pools` VALUES (517,'BoDhos_Shieldwarrior_C','BoDhos_Shieldwarri INSERT INTO `mob_pools` VALUES (518,'BoGha_Winterkill','BoGha_Winterkill',337,0x00009D0200000000000000000000000000000000,1,1,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,337,337); INSERT INTO `mob_pools` VALUES (519,'BoWho_Warmonger','BoWho_Warmonger',201,0x00008B0200000000000000000000000000000000,7,7,3,265,100,0,0,0,1,2,0,32,0,157,0,0,4,0,0,201,201); INSERT INTO `mob_pools` VALUES (520,'Brae_Opo-Opo','Brae_Opo-Opo',188,0x0000A00100000000000000000000000000000000,1,1,0,220,100,0,1,0,1,0,0,0,0,131,0,0,0,0,0,188,188); -INSERT INTO `mob_pools` VALUES (521,'Brami','Brami',358,0x0000EA0200000000000000000000000000000000,8,8,1,240,100,0,1,1,1,16,0,0,0,3,0,0,5,0,0,358,358); +INSERT INTO `mob_pools` VALUES (521,'Brami','Brami',358,0x0000EA0200000000000000000000000000000000,8,8,1,240,100,0,1,1,1,0,0,0,0,3,0,0,5,0,0,358,358); INSERT INTO `mob_pools` VALUES (522,'Branding_Iron','Branding_Iron',85,0x0000300100000000000000000000000000000000,1,1,12,240,100,0,1,0,0,0,0,0,205,131,4,0,0,0,0,85,85); INSERT INTO `mob_pools` VALUES (523,'Brasscap','Brasscap',116,0x0000C90800000000000000000000000000000000,1,1,11,240,100,0,0,0,1,0,0,0,609,131,0,0,0,0,0,116,116); INSERT INTO `mob_pools` VALUES (524,'Brass_Borer','Brass_Borer',289,0x00000A0700000000000000000000000000000000,1,1,7,265,100,0,0,0,1,2,6144,0,6439,157,5,0,0,0,0,289,289); @@ -611,7 +611,7 @@ INSERT INTO `mob_pools` VALUES (554,'Buffrix_Eargone','Buffrix_Eargone',373,0x00 INSERT INTO `mob_pools` VALUES (555,'Bugaboo','Bugaboo',121,0x0000700100000000000000000000000000000000,4,4,12,240,100,0,1,0,0,2,0,0,4859,131,0,0,28,0,0,121,121); INSERT INTO `mob_pools` VALUES (556,'Bugallug','Bugallug',59,0x00004B0500000000000000000000000000000000,2,2,1,480,100,0,1,0,1,2,0,32,0,157,0,0,0,0,0,59,59); INSERT INTO `mob_pools` VALUES (557,'Bugard','Bugard',58,0x0000470500000000000000000000000000000000,1,1,3,300,100,0,1,0,0,0,0,0,1379,131,0,0,0,0,0,58,58); -INSERT INTO `mob_pools` VALUES (558,'Bugard-X','Bugard-X',58,0x0000470500000000000000000000000000000000,1,1,5,300,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,58,58); +INSERT INTO `mob_pools` VALUES (558,'Bugard-X','Bugard-X',58,0x0000470500000000000000000000000000000000,1,1,5,300,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,58,58); INSERT INTO `mob_pools` VALUES (559,'Bugbby','Bugbby',59,0x00004B0500000000000000000000000000000000,1,1,5,240,100,0,1,0,1,18,6144,32,4045,155,0,0,0,0,0,59,59); INSERT INTO `mob_pools` VALUES (560,'Bugbear_Bondman','Bugbear_Bondman',59,0x00004B0500000000000000000000000000000000,2,2,1,480,100,0,1,0,1,0,0,0,6,131,0,0,0,0,0,59,59); INSERT INTO `mob_pools` VALUES (561,'Bugbear_Deathsman','Bugbear_Deathsman',59,0x00004B0500000000000000000000000000000000,2,2,1,480,100,0,1,0,1,0,0,0,79,133,0,0,0,0,0,59,59); @@ -624,7 +624,7 @@ INSERT INTO `mob_pools` VALUES (567,'Bugbear_Trashman','Bugbear_Trashman',59,0x0 INSERT INTO `mob_pools` VALUES (568,'Bugbear_Watchman','Bugbear_Watchman',59,0x00004B0500000000000000000000000000000000,2,2,1,480,100,0,1,0,1,0,0,0,7,133,0,0,0,0,0,59,59); INSERT INTO `mob_pools` VALUES (569,'Bugboy','Bugboy',59,0x00004B0500000000000000000000000000000000,1,1,6,240,100,0,1,1,0,16,0,32,6415,159,0,0,0,0,0,59,59); INSERT INTO `mob_pools` VALUES (570,'Bugul_Noz','Bugul_Noz',178,0x0000490900000000000000000000000000000000,2,2,1,480,100,0,0,0,1,2,0,0,7,143,0,0,0,0,0,871,178); -INSERT INTO `mob_pools` VALUES (571,'Bui','Bui',358,0x0000EB0200000000000000000000000000000000,4,1,6,240,100,0,1,1,1,16,0,0,0,3,0,0,2,0,0,358,358); +INSERT INTO `mob_pools` VALUES (571,'Bui','Bui',358,0x0000EB0200000000000000000000000000000000,4,1,6,240,100,0,1,1,1,0,0,0,0,3,0,0,2,0,0,358,358); INSERT INTO `mob_pools` VALUES (572,'Bukhis','Bukhis',240,0x0000560900000000000000000000000000000000,4,4,12,240,100,0,1,1,0,2,0,32,0,159,0,0,245,0,0,910,240); INSERT INTO `mob_pools` VALUES (573,'Bukki','Bukki',165,0x0000BE0600000000000000000000000000000000,4,4,7,240,100,0,0,0,0,2,0,0,0,3,0,0,2,0,0,165,165); INSERT INTO `mob_pools` VALUES (574,'Bullbeggar','Bullbeggar',188,0x0000A00100000000000000000000000000000000,1,1,7,200,100,0,1,0,1,0,0,0,139,133,0,0,0,0,0,188,188); @@ -853,7 +853,7 @@ INSERT INTO `mob_pools` VALUES (796,'Cornu','Cornu',55,0x0000BD01000000000000000 INSERT INTO `mob_pools` VALUES (797,'Corrupted_Soffeil','Corrupted_Soffeil',227,0x0000340200000000000000000000000000000000,4,4,10,240,100,0,1,0,0,34,0,0,4381,133,0,0,28,0,0,227,227); INSERT INTO `mob_pools` VALUES (798,'Corrupted_Ulbrig','Corrupted_Ulbrig',227,0x0000340200000000000000000000000000000000,4,4,10,240,100,0,1,0,0,34,0,0,6,133,0,0,28,0,0,227,227); INSERT INTO `mob_pools` VALUES (799,'Corrupted_Yorgos','Corrupted_Yorgos',227,0x00003C0200000000000000000000000000000000,1,1,5,240,100,0,1,0,0,34,0,32,6455,157,0,0,0,0,0,227,227); -INSERT INTO `mob_pools` VALUES (800,'Corrupt_Einherjar','Corrupt_Einherjar',240,0x00004F0500000000000000000000000000000000,1,1,7,240,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,240,240); +INSERT INTO `mob_pools` VALUES (800,'Corrupt_Einherjar','Corrupt_Einherjar',240,0x00004F0500000000000000000000000000000000,1,1,7,240,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,240,240); INSERT INTO `mob_pools` VALUES (801,'Corse','Corse',74,0x0000530500000000000000000000000000000000,4,4,11,290,100,0,1,0,0,0,0,0,379,131,0,0,28,0,0,74,74); INSERT INTO `mob_pools` VALUES (802,'Cosmos_Cocora','Cosmos_Cocora',178,0x0000C70800000000000000000000000000000000,2,2,1,480,100,0,1,0,1,0,0,0,0,0,0,0,0,0,0,178,178); INSERT INTO `mob_pools` VALUES (803,'Cosmos_Stamen','Cosmos_Stamen',178,0x00002C0100000000000000000000000000000000,2,2,1,480,100,0,1,0,1,0,0,0,0,0,0,0,0,0,0,178,178); @@ -882,7 +882,7 @@ INSERT INTO `mob_pools` VALUES (825,'Crabtrap','Crabtrap',114,0x0000410500000000 INSERT INTO `mob_pools` VALUES (826,'Crag_Limule','Crag_Limule',173,0x00004D0900000000000000000000000000000000,4,3,12,240,100,0,1,0,0,0,0,0,0,643,0,0,2,0,0,173,173); INSERT INTO `mob_pools` VALUES (827,'Crane_Fly','Crane_Fly',113,0x0000C00100000000000000000000000000000000,1,1,8,240,100,0,0,0,1,0,0,0,818,643,8,0,0,0,0,113,113); INSERT INTO `mob_pools` VALUES (828,'Crapaudy','Crapaudy',111,0x0000BF0800000000000000000000000000000000,6,6,2,240,100,0,0,0,1,0,0,0,0,131,0,0,0,0,0,0,196); -INSERT INTO `mob_pools` VALUES (829,'Craven_Einherjar','Craven_Einherjar',121,0x0000700100000000000000000000000000000000,4,4,12,240,100,0,1,1,1,18,0,0,0,3,0,0,28,0,0,121,121); +INSERT INTO `mob_pools` VALUES (829,'Craven_Einherjar','Craven_Einherjar',121,0x0000700100000000000000000000000000000000,4,4,12,240,100,0,1,1,1,0,0,0,0,3,0,0,28,0,0,121,121); INSERT INTO `mob_pools` VALUES (830,'Craver_PM','Craver',78,0x00006E0400000000000000000000000000000000,1,1,8,240,100,0,1,1,1,0,0,0,712,131,13,0,0,0,0,78,78); INSERT INTO `mob_pools` VALUES (831,'Crawler','Crawler',79,0x00008C0100000000000000000000000000000000,1,1,11,240,100,0,0,0,1,0,0,0,343,129,0,0,0,0,0,79,79); INSERT INTO `mob_pools` VALUES (832,'Crawler_Hunter','Crawler_Hunter',217,0x00001C0100000000000000000000000000000000,1,1,7,280,100,0,1,0,1,0,0,0,139,133,0,0,0,0,0,217,217); @@ -1124,7 +1124,7 @@ INSERT INTO `mob_pools` VALUES (1067,'DiDhas_Elite_Guard','DiDhas_Elite_Guard',2 INSERT INTO `mob_pools` VALUES (1068,'DiMho_Platekeeper','DiMho_Platekeeper',202,0x00009F0200000000000000000000000000000000,1,1,7,265,100,0,1,0,1,0,0,0,0,0,0,0,0,0,0,202,202); INSERT INTO `mob_pools` VALUES (1069,'DiZho_Spongeshell','DiZho_Spongeshell',202,0x00004C0800000000000000000000000000000000,8,8,2,265,100,0,1,1,1,2,0,32,653,157,0,0,5,0,0,202,202); INSERT INTO `mob_pools` VALUES (1070,'Djahama','Djahama',149,0x0500AB0700000000000000000000000000000000,16,16,3,240,100,0,0,0,0,0,0,0,0,3,0,0,8,0,0,149,149); -INSERT INTO `mob_pools` VALUES (1071,'Djigga','Djigga',64,0x0000D40600000000000000000000000000000000,6,6,2,150,100,0,1,1,1,16,0,0,0,3,0,0,0,0,1024,64,64); +INSERT INTO `mob_pools` VALUES (1071,'Djigga','Djigga',64,0x0000D40600000000000000000000000000000000,6,6,2,150,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,64,64); INSERT INTO `mob_pools` VALUES (1072,'Djinn','Djinn',82,0x0000C40800000000000000000000000000000000,1,1,11,240,100,0,1,0,0,0,0,0,397,129,0,0,0,0,0,82,82); INSERT INTO `mob_pools` VALUES (1073,'Dodomeki','Dodomeki',139,0x0000800100000000000000000000000000000000,4,4,12,280,100,0,1,0,0,0,0,0,238,131,0,0,10,0,0,139,139); INSERT INTO `mob_pools` VALUES (1074,'Doglix_Muttsnout','Doglix_Muttsnout',133,0x0000E40100000000000000000000000000000000,3,3,11,240,100,0,1,0,1,2,0,32,0,155,0,0,1,0,0,133,133); @@ -1240,8 +1240,8 @@ INSERT INTO `mob_pools` VALUES (1183,'Eight_of_Batons','Eight_of_Batons',61,0x00 INSERT INTO `mob_pools` VALUES (1184,'Eight_of_Coins','Eight_of_Coins',61,0x0000AF0100000000000000000000000000000000,5,5,11,240,100,0,1,0,1,0,0,0,245,1155,8,0,3,0,0,61,61); INSERT INTO `mob_pools` VALUES (1185,'Eight_of_Cups','Eight_of_Cups',61,0x0000AF0100000000000000000000000000000000,3,3,12,240,100,0,1,0,1,0,0,0,483,1155,8,0,1,0,0,61,61); INSERT INTO `mob_pools` VALUES (1186,'Eight_of_Swords','Eight_of_Swords',61,0x0000AF0100000000000000000000000000000000,7,7,12,240,100,0,1,0,1,0,0,0,1670,1155,8,0,4,0,0,61,61); -INSERT INTO `mob_pools` VALUES (1187,'Einherjar_Brei','Einherjar_Brei',229,0x0000240100000000000000000000000000000000,1,1,7,240,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,229,229); -INSERT INTO `mob_pools` VALUES (1188,'Einherjar_Eater','Einherjar_Eater',258,0x0000AA0100000000000000000000000000000000,4,5,7,240,100,0,1,1,1,16,0,0,0,3,0,0,9,0,64,258,258); +INSERT INTO `mob_pools` VALUES (1187,'Einherjar_Brei','Einherjar_Brei',229,0x0000240100000000000000000000000000000000,1,1,7,240,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,229,229); +INSERT INTO `mob_pools` VALUES (1188,'Einherjar_Eater','Einherjar_Eater',258,0x0000AA0100000000000000000000000000000000,4,5,7,240,100,0,1,1,1,0,0,0,0,3,0,0,9,0,64,258,258); INSERT INTO `mob_pools` VALUES (1189,'Ekimmu','Ekimmu',121,0x0000700100000000000000000000000000000000,4,4,12,240,100,0,1,0,0,0,0,0,562,131,0,0,28,0,0,121,121); INSERT INTO `mob_pools` VALUES (1190,'Eldertaur','Eldertaur',240,0x00004F0500000000000000000000000000000000,3,7,7,240,100,0,1,1,1,18,0,0,4255,1153,0,0,203,0,0,317,240); INSERT INTO `mob_pools` VALUES (1191,'Elder_Goobbue','Elder_Goobbue',136,0x0000280100000000000000000000000000000000,1,1,12,320,100,0,1,0,1,0,0,0,1,1157,0,0,0,0,0,136,136); @@ -1326,7 +1326,7 @@ INSERT INTO `mob_pools` VALUES (1269,'Executioner_Antlion','Executioner_Antlion' INSERT INTO `mob_pools` VALUES (1270,'Exoplates','Exoplates',236,0x0000090300000000000000000000000000000000,1,1,7,240,100,0,1,1,0,18,0,0,6951,1155,0,0,0,0,0,237,236); INSERT INTO `mob_pools` VALUES (1271,'Exoray','Exoray',116,0x0000780100000000000000000000000000000000,1,1,11,240,100,0,1,0,1,0,0,0,310,1157,0,0,0,0,0,116,116); INSERT INTO `mob_pools` VALUES (1272,'Experimental_Lamia','Experimental_Lamia',310,0x0000800600000000000000000000000000000000,17,17,11,240,100,0,1,1,1,2,6146,0,0,3,0,0,0,0,0,310,310); -INSERT INTO `mob_pools` VALUES (1273,'Experimental_Poroggo','Experimental_Poroggo',196,0x0000130700000000000000000000000000000000,4,4,5,150,100,0,1,1,1,16,0,0,0,3,0,0,2,0,0,196,196); +INSERT INTO `mob_pools` VALUES (1273,'Experimental_Poroggo','Experimental_Poroggo',196,0x0000130700000000000000000000000000000000,4,4,5,150,100,0,1,1,1,0,0,0,0,3,0,0,2,0,0,196,196); INSERT INTO `mob_pools` VALUES (1274,'Experimental_Undead_thf','Experimental_Undead_thf',115,0x0500520700000000000000000000000000000000,6,6,2,240,100,0,1,1,0,0,0,0,1,1155,0,0,0,0,0,115,115); INSERT INTO `mob_pools` VALUES (1275,'Explosure','Explosure',56,0x0000180100000000000000000000000000000000,1,1,11,240,100,0,1,0,0,0,0,0,451,1155,0,0,0,0,0,56,56); INSERT INTO `mob_pools` VALUES (1276,'Expunger','Expunger',86,0x0000400100000000000000000000000000000000,1,1,3,270,100,0,1,1,1,32,0,0,15,129,0,0,0,0,0,86,86); @@ -1409,7 +1409,7 @@ INSERT INTO `mob_pools` VALUES (1352,'Five_of_Cups','Five_of_Cups',61,0x0000AF01 INSERT INTO `mob_pools` VALUES (1353,'Five_of_Swords','Five_of_Swords',61,0x0000AF0100000000000000000000000000000000,7,7,12,240,100,0,1,0,1,0,0,0,99,131,8,0,4,0,0,61,61); INSERT INTO `mob_pools` VALUES (1354,'Flamecaller_Zoeqdoq','Flamecaller_Zoeqdoq',334,0x0000190400000000000000000000000000000000,4,4,12,240,100,0,1,0,1,2,0,32,0,159,0,0,2,0,0,334,334); INSERT INTO `mob_pools` VALUES (1355,'Flamedrake','Flamedrake',266,0x00008E0100000000000000000000000000000000,1,1,7,240,100,0,1,0,0,0,0,0,27,133,0,0,0,0,0,266,266); -INSERT INTO `mob_pools` VALUES (1356,'Flames_of_Muspelheim','Flames_of_Muspelheim',68,0x0000230100000000000000000000000000000000,1,1,5,240,100,0,1,1,1,18,0,0,0,0,0,0,0,0,0,68,68); +INSERT INTO `mob_pools` VALUES (1356,'Flames_of_Muspelheim','Flames_of_Muspelheim',68,0x0000230100000000000000000000000000000000,1,1,5,240,100,0,1,1,1,0,0,0,0,0,0,0,0,0,0,68,68); INSERT INTO `mob_pools` VALUES (1357,'Flame_Eruca','Flame_Eruca',107,0x0000960100000000000000000000000000000000,1,1,11,240,100,0,1,1,1,0,0,0,11,129,12,0,0,0,0,107,107); INSERT INTO `mob_pools` VALUES (1358,'Flame_Giant','Flame_Giant',38,0x0000120000000000000000000000000000000000,1,1,5,240,100,0,0,0,0,0,0,0,0,131,0,0,0,0,0,38,322); INSERT INTO `mob_pools` VALUES (1359,'Flame_Skimmer','Flame_Skimmer',113,0x0000C10100000000000000000000000000000000,6,6,3,240,100,0,0,0,0,0,0,0,0,133,0,0,0,0,0,997,113); @@ -1512,7 +1512,7 @@ INSERT INTO `mob_pools` VALUES (1455,'Gamayun','Gamayun',37,0x00001C030000000000 INSERT INTO `mob_pools` VALUES (1456,'Gambilox_Wanderling','Gambilox_Wanderling',133,0x0000FD0100000000000000000000000000000000,1,1,3,240,100,0,1,0,1,2,0,32,4662,155,0,0,0,0,0,133,133); INSERT INTO `mob_pools` VALUES (1457,'Gangly_Gean','Gangly_Gean',245,0x0000860100000000000000000000000000000000,4,4,12,240,100,0,0,0,0,2,0,0,1,137,0,0,169,0,0,799,245); INSERT INTO `mob_pools` VALUES (1458,'Ganmuul','Ganmuul',145,0x0500610700000000000000000000000000000000,1,1,8,240,100,0,0,0,0,0,0,0,1,155,0,0,0,0,0,145,145); -INSERT INTO `mob_pools` VALUES (1459,'Gardsvor','Gardsvor',235,0x0000380100000000000000000000000000000000,1,1,7,240,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,236,235); +INSERT INTO `mob_pools` VALUES (1459,'Gardsvor','Gardsvor',235,0x0000380100000000000000000000000000000000,1,1,7,240,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,236,235); INSERT INTO `mob_pools` VALUES (1460,'Garfurlar_the_Rabid','Garfurlar_the_Rabid',246,0x0600AC0600000000000000000000000000000000,5,5,4,230,100,0,1,1,1,2,0,32,0,153,4,0,3,0,0,246,246); INSERT INTO `mob_pools` VALUES (1461,'Gargantua','Gargantua',135,0x0000B00100000000000000000000000000000000,1,1,11,320,100,0,1,0,0,2,0,0,0,133,0,0,0,0,0,135,135); INSERT INTO `mob_pools` VALUES (1462,'Gargouille','Gargouille',118,0x0000B10800000000000000000000000000000000,1,6,3,240,100,0,0,0,1,0,0,0,471,643,4,0,0,0,0,118,118); @@ -1923,10 +1923,10 @@ INSERT INTO `mob_pools` VALUES (1866,'Habraheem','Habraheem',149,0x05005E0700000 INSERT INTO `mob_pools` VALUES (1867,'Hadal_Gigas','Hadal_Gigas',126,0x0000820200000000000000000000000000000000,2,2,1,480,100,0,1,0,1,0,0,0,0,131,0,0,0,0,0,126,126); INSERT INTO `mob_pools` VALUES (1868,'Hadal_Mirror','Hadal_Mirror',138,0x00006D0400000000000000000000000000000000,1,1,3,240,100,0,1,1,1,2,0,0,0,0,0,0,0,0,0,137,138); INSERT INTO `mob_pools` VALUES (1869,'Hadal_Satiator','Hadal_Satiator',138,0x00006D0400000000000000000000000000000000,4,5,12,240,100,0,0,0,0,2,0,0,0,0,0,0,2,0,0,137,138); -INSERT INTO `mob_pools` VALUES (1870,'Hadding_the_Elder','Hadding_the_Elder',358,0x0000EC0200000000000000000000000000000000,4,4,6,240,100,0,1,1,1,16,0,0,0,0,0,0,2,0,0,358,358); -INSERT INTO `mob_pools` VALUES (1871,'Hadding_the_Younger','Hadding_the_Younger',358,0x0000ED0200000000000000000000000000000000,8,8,7,240,100,0,1,1,1,16,0,0,0,0,0,0,5,0,0,358,358); +INSERT INTO `mob_pools` VALUES (1870,'Hadding_the_Elder','Hadding_the_Elder',358,0x0000EC0200000000000000000000000000000000,4,4,6,240,100,0,1,1,1,0,0,0,0,0,0,0,2,0,0,358,358); +INSERT INTO `mob_pools` VALUES (1871,'Hadding_the_Younger','Hadding_the_Younger',358,0x0000ED0200000000000000000000000000000000,8,8,7,240,100,0,1,1,1,0,0,0,0,0,0,0,5,0,0,358,358); INSERT INTO `mob_pools` VALUES (1872,'Hadhayosh','Hadhayosh',51,0x0000950100000000000000000000000000000000,1,1,6,240,100,0,0,0,0,2,0,0,0,0,0,0,0,0,0,817,51); -INSERT INTO `mob_pools` VALUES (1873,'Hafgygr','Hafgygr',217,0x00001C0100000000000000000000000000000000,1,1,7,280,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,217,217); +INSERT INTO `mob_pools` VALUES (1873,'Hafgygr','Hafgygr',217,0x00001C0100000000000000000000000000000000,1,1,7,280,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,217,217); INSERT INTO `mob_pools` VALUES (1874,'Hail_Gigas','Hail_Gigas',126,0x0000C70200000000000000000000000000000000,11,1,5,240,100,0,1,0,1,0,0,0,343,131,0,0,0,0,0,126,126); INSERT INTO `mob_pools` VALUES (1875,'Haja_Zhwan','Haja_Zhwan',151,0x01001A07001023203630DB400050716100703580,1,1,0,240,100,0,0,0,0,0,0,32,0,539,8,0,0,0,0,151,151); INSERT INTO `mob_pools` VALUES (1876,'Hakenmann','Hakenmann',191,0x0000C10600000000000000000000000000000000,1,1,7,240,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,191,191); @@ -1958,9 +1958,9 @@ INSERT INTO `mob_pools` VALUES (1901,'Hawker','Hawker',113,0x0000C00100000000000 INSERT INTO `mob_pools` VALUES (1902,'Hawkertrap_JFS','Hawkertrap',114,0x0000410500000000000000000000000000000000,1,1,8,200,100,0,0,0,0,0,0,0,284,129,8,0,0,0,0,114,114); INSERT INTO `mob_pools` VALUES (1903,'Hawkeyed_Dnatbat','Hawkeyed_Dnatbat',334,0x0000720200000000000000000000000000000000,11,11,5,240,100,0,1,0,1,2,0,32,0,1691,0,0,0,0,0,334,334); INSERT INTO `mob_pools` VALUES (1904,'Hazel_Sentinel','Hazel_Sentinel',29,0x0600C60700000000000000000000000000000000,11,11,5,400,100,0,0,0,1,0,0,0,10,133,0,0,0,0,0,29,29); -INSERT INTO `mob_pools` VALUES (1905,'Hazhalm_Bat','Hazhalm_Bat',46,0x0000000100000000000000000000000000000000,1,1,5,240,100,0,1,1,1,18,0,0,0,3,0,0,0,0,0,46,46); -INSERT INTO `mob_pools` VALUES (1906,'Hazhalm_Bats','Hazhalm_Bats',47,0x0000040100000000000000000000000000000000,1,1,5,240,100,0,1,1,1,18,0,0,0,3,0,0,0,0,0,47,47); -INSERT INTO `mob_pools` VALUES (1907,'Hazhalm_Leech','Hazhalm_Leech',172,0x0000140100000000000000000000000000000000,1,1,7,240,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,172,172); +INSERT INTO `mob_pools` VALUES (1905,'Hazhalm_Bat','Hazhalm_Bat',46,0x0000000100000000000000000000000000000000,1,1,5,240,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,46,46); +INSERT INTO `mob_pools` VALUES (1906,'Hazhalm_Bats','Hazhalm_Bats',47,0x0000040100000000000000000000000000000000,1,1,5,240,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,47,47); +INSERT INTO `mob_pools` VALUES (1907,'Hazhalm_Leech','Hazhalm_Leech',172,0x0000140100000000000000000000000000000000,1,1,7,240,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,172,172); INSERT INTO `mob_pools` VALUES (1908,'Hazhdiha','Hazhdiha',87,0x0000A50100000000000000000000000000000000,1,1,6,200,100,0,0,0,1,2,0,0,1,133,0,0,0,0,0,940,87); INSERT INTO `mob_pools` VALUES (1909,'Heavymail_Djidzbad','Heavymail_Djidzbad',334,0x0000180400000000000000000000000000000000,7,7,10,240,100,0,1,0,1,2,0,32,7,159,0,0,4,0,0,334,334); INSERT INTO `mob_pools` VALUES (1910,'Heavy_Metal_Crab','Heavy_Metal_Crab',77,0x0000640100000000000000000000000000000000,5,5,3,240,100,0,1,0,1,16,0,0,0,0,0,0,58,0,0,77,77); @@ -1969,7 +1969,7 @@ INSERT INTO `mob_pools` VALUES (1912,'Hecteyes_RP','Hecteyes_RP',139,0x000080010 INSERT INTO `mob_pools` VALUES (1913,'Hedjedjet','Hedjedjet',217,0x00001C0100000000000000000000000000000000,1,8,6,240,100,0,0,0,0,2,0,32,1,671,8,0,263,0,0,941,217); INSERT INTO `mob_pools` VALUES (1914,'Hee_Mida_the_Meticulous','Hee_Mida_the_Meticulous',360,0x00003B0400000000000000000000000000000000,11,11,2,240,100,0,1,0,1,2,0,32,0,159,0,0,7,0,0,360,360); INSERT INTO `mob_pools` VALUES (1915,'Heike_Crab','Heike_Crab',77,0x0000640100000000000000000000000000000000,7,7,4,240,100,0,0,0,0,2,0,0,51,1155,8,0,0,0,0,77,77); -INSERT INTO `mob_pools` VALUES (1916,'Heithrun','Heithrun',167,0x0000550100000000000000000000000000000000,1,1,7,280,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,167,167); +INSERT INTO `mob_pools` VALUES (1916,'Heithrun','Heithrun',167,0x0000550100000000000000000000000000000000,1,1,7,280,100,0,0,1,1,0,0,0,0,3,0,0,0,0,0,167,167); INSERT INTO `mob_pools` VALUES (1917,'Heliodor_Quadav','Heliodor_Quadav',202,0x00009A0200000000000000000000000000000000,4,4,5,265,100,0,1,0,1,0,0,0,518,1155,0,0,2,0,0,202,202); INSERT INTO `mob_pools` VALUES (1918,'Heliodromos','Heliodromos',141,0x0000550500000000000000000000000000000000,6,6,2,240,100,0,1,1,1,2,0,0,290,1157,0,0,0,0,0,141,141); INSERT INTO `mob_pools` VALUES (1919,'Helldiver','Helldiver',55,0x0000BD0100000000000000000000000000000000,1,1,5,240,100,0,0,0,1,2,0,0,0,133,0,0,0,0,0,55,55); @@ -1989,7 +1989,7 @@ INSERT INTO `mob_pools` VALUES (1932,'Heqet','Heqet',196,0x0000C0080000000000000 INSERT INTO `mob_pools` VALUES (1933,'Heraldic_Imp','Heraldic_Imp',165,0x0000BE0600000000000000000000000000000000,4,4,5,240,100,0,1,1,0,0,0,0,132,1155,4,0,2,0,0,165,165); INSERT INTO `mob_pools` VALUES (1934,'Hercules_Beetle','Hercules_Beetle',49,0x0000980100000000000000000000000000000000,8,8,3,240,100,0,1,0,1,2,0,0,0,3,0,0,0,0,0,49,49); INSERT INTO `mob_pools` VALUES (1935,'Hermitrix_Toothrot','Hermitrix_Toothrot',373,0x0000420400000000000000000000000000000000,4,4,11,240,100,0,1,0,1,2,0,32,0,159,0,0,2,0,0,373,373); -INSERT INTO `mob_pools` VALUES (1936,'Hervarth','Hervarth',358,0x0000EE0200000000000000000000000000000000,1,1,2,240,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,358,358); +INSERT INTO `mob_pools` VALUES (1936,'Hervarth','Hervarth',358,0x0000EE0200000000000000000000000000000000,1,1,2,240,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,358,358); INSERT INTO `mob_pools` VALUES (1937,'Hetairoi_Vuryargur','Hetairoi_Vuryargur',246,0x06009C0600000000000000000000000000000000,2,2,1,480,100,0,1,0,1,0,0,0,0,3,0,0,0,0,0,246,246); INSERT INTO `mob_pools` VALUES (1938,'Hetairoi_Zarwarkur','Hetairoi_Zarwarkur',246,0x0600950600000000000000000000000000000000,5,5,4,230,100,0,1,0,1,0,0,0,0,3,0,0,3,0,0,246,246); INSERT INTO `mob_pools` VALUES (1939,'Hexenpilz','Hexenpilz',116,0x0000C90800000000000000000000000000000000,1,8,6,240,100,0,0,0,1,2,0,0,0,0,0,0,0,0,0,800,116); @@ -2015,7 +2015,7 @@ INSERT INTO `mob_pools` VALUES (1958,'Hinge_Oil','Hinge_Oil',229,0x0000240100000 INSERT INTO `mob_pools` VALUES (1959,'Hippocentaur','Hippocentaur',140,0x0000C10800000000000000000000000000000000,6,6,2,240,100,0,1,0,1,2,0,0,0,1153,0,0,0,0,0,140,140); INSERT INTO `mob_pools` VALUES (1960,'Hippogryph','Hippogryph',140,0x0000550500000000000000000000000000000000,6,6,2,240,100,0,1,1,0,0,0,0,344,1155,0,0,0,0,0,140,140); INSERT INTO `mob_pools` VALUES (1961,'Hippolytos','Hippolytos',126,0x0000830200000000000000000000000000000000,2,2,1,480,100,0,1,0,1,2,0,32,971,1179,0,0,0,0,0,126,126); -INSERT INTO `mob_pools` VALUES (1962,'Hjorvarth','Hjorvarth',358,0x0000EF0200000000000000000000000000000000,4,4,6,240,100,0,1,1,1,16,0,0,0,3,0,0,2,0,0,358,358); +INSERT INTO `mob_pools` VALUES (1962,'Hjorvarth','Hjorvarth',358,0x0000EF0200000000000000000000000000000000,4,4,6,240,100,0,1,1,1,0,0,0,0,3,0,0,2,0,0,358,358); INSERT INTO `mob_pools` VALUES (1963,'Hkadouf','Hkadouf',149,0x05005E0700000000000000000000000000000000,16,16,3,240,100,0,1,1,1,8,0,0,1,155,0,0,8,0,0,149,149); INSERT INTO `mob_pools` VALUES (1964,'Hmzdei','Hmzdei',272,0x0000850400000000000000000000000000000000,1,1,7,240,100,0,1,1,0,0,0,0,0,0,0,0,0,0,0,272,272); INSERT INTO `mob_pools` VALUES (1965,'Hoarder_Hare','Hoarder_Hare',206,0x00000C0100000000000000000000000000000000,6,6,7,240,100,0,0,0,1,0,0,0,216,129,0,0,0,0,0,206,206); @@ -2050,14 +2050,14 @@ INSERT INTO `mob_pools` VALUES (1993,'Houndfly','Houndfly',374,0x0000C0010000000 INSERT INTO `mob_pools` VALUES (1994,'Houu_the_Shoalwader','Houu_the_Shoalwader',213,0x0000130500000000000000000000000000000000,2,2,1,480,100,0,1,1,0,0,0,32,0,155,0,0,0,0,0,213,213); INSERT INTO `mob_pools` VALUES (1995,'Hover_Tank','Hover_Tank',175,0x00009C0100000000000000000000000000000000,5,1,7,240,100,0,1,0,0,0,0,0,292,1155,0,0,36,0,0,175,175); INSERT INTO `mob_pools` VALUES (1996,'Hraesvelg','Hraesvelg',179,0x0000920100000000000000000000000000000000,1,1,7,360,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,179,179); -INSERT INTO `mob_pools` VALUES (1997,'Hrani','Hrani',358,0x0000F00200000000000000000000000000000000,8,8,1,240,100,0,1,1,1,16,0,0,0,3,0,0,5,0,0,358,358); +INSERT INTO `mob_pools` VALUES (1997,'Hrani','Hrani',358,0x0000F00200000000000000000000000000000000,8,8,1,240,100,0,1,1,1,0,0,0,0,3,0,0,5,0,0,358,358); INSERT INTO `mob_pools` VALUES (1998,'Hrosshvalur','Hrosshvalur',197,0x00005E0100000000000000000000000000000000,11,5,5,240,100,0,0,0,0,2,0,32,0,159,0,0,250,0,0,917,197); INSERT INTO `mob_pools` VALUES (1999,'Hrungnir','Hrungnir',135,0x0000B00100000000000000000000000000000000,1,1,11,320,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,135,135); INSERT INTO `mob_pools` VALUES (2000,'Huge_Hornet','Huge_Hornet',48,0x0000100100000000000000000000000000000000,1,1,2,240,100,0,0,0,0,0,0,0,187,129,8,0,0,0,0,48,48); INSERT INTO `mob_pools` VALUES (2001,'Huge_Leech','Huge_Leech',172,0x0000140100000000000000000000000000000000,1,1,7,240,100,0,1,0,0,4,0,0,0,3,0,0,0,0,0,172,172); INSERT INTO `mob_pools` VALUES (2002,'Huge_Spider','Huge_Spider',235,0x0000360100000000000000000000000000000000,1,1,7,240,100,0,0,0,1,0,0,0,1,643,0,0,0,0,0,236,235); INSERT INTO `mob_pools` VALUES (2003,'Huge_Wasp','Huge_Wasp',48,0x0000100100000000000000000000000000000000,1,1,2,240,100,0,0,0,0,0,0,0,502,643,8,0,0,0,0,48,48); -INSERT INTO `mob_pools` VALUES (2004,'Huginn','Huginn',55,0x0000BC0100000000000000000000000000000000,1,1,5,240,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,55,55); +INSERT INTO `mob_pools` VALUES (2004,'Huginn','Huginn',55,0x0000BC0100000000000000000000000000000000,1,1,5,240,100,0,0,1,1,0,0,0,0,3,0,0,0,0,0,55,55); INSERT INTO `mob_pools` VALUES (2005,'Humegutter_Adzjbadj','Humegutter_Adzjbadj',334,0x0000170400000000000000000000000000000000,1,1,2,240,100,0,1,0,1,2,0,32,0,159,0,0,0,0,0,334,334); INSERT INTO `mob_pools` VALUES (2006,'Hume_Automaton','Hume_Automaton',149,0x0500D40400000000000000000000000000000000,7,7,4,240,100,0,0,0,0,18,0,0,1749,1027,0,0,4,0,0,149,149); INSERT INTO `mob_pools` VALUES (2007,'Humnox_Drumbelly','Humnox_Drumbelly',373,0x0000410400000000000000000000000000000000,10,10,2,240,100,0,1,0,1,2,0,32,0,159,0,0,6,0,0,373,373); @@ -2090,7 +2090,7 @@ INSERT INTO `mob_pools` VALUES (2033,'Hydras_Wyvern','Hydras_Wyvern',193,0x0000F INSERT INTO `mob_pools` VALUES (2034,'Hydra_Thief','Hydra_Thief',359,0x05002A0200000000000000000000000000000000,6,6,2,240,100,0,1,0,1,0,0,0,0,1155,0,0,0,0,0,359,359); INSERT INTO `mob_pools` VALUES (2035,'Hydra_Warrior','Hydra_Warrior',359,0x0500000200000000000000000000000000000000,1,1,6,240,100,0,1,0,1,0,0,0,0,1155,0,0,0,0,0,359,359); INSERT INTO `mob_pools` VALUES (2036,'Hydra_White_Mage','Hydra_White_Mage',359,0x0500020200000000000000000000000000000000,3,3,11,240,100,0,1,0,1,0,0,0,0,1155,0,0,1,0,0,359,359); -INSERT INTO `mob_pools` VALUES (2037,'Hyndla','Hyndla',143,0x00006C0100000000000000000000000000000000,1,1,3,240,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,143,143); +INSERT INTO `mob_pools` VALUES (2037,'Hyndla','Hyndla',143,0x00006C0100000000000000000000000000000000,1,1,3,240,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,143,143); INSERT INTO `mob_pools` VALUES (2038,'Hyohh_the_Conchblower','Hyohh_the_Conchblower',213,0x0000390500000000000000000000000000000000,10,10,5,240,100,0,1,0,1,18,0,0,0,0,0,0,6,0,0,213,213); INSERT INTO `mob_pools` VALUES (2039,'Hyperion','Hyperion',130,0x0000800200000000000000000000000000000000,1,1,6,240,100,0,1,1,1,16,2048,0,693,131,0,0,0,0,0,130,130); INSERT INTO `mob_pools` VALUES (2040,'Iceberg_Murex','Iceberg_Murex',187,0x00005D0900000000000000000000000000000000,4,5,12,240,100,0,1,0,0,0,0,0,0,1155,0,0,2,0,0,187,187); @@ -2102,7 +2102,7 @@ INSERT INTO `mob_pools` VALUES (2045,'Ice_Pot','Ice_Pot',175,0x00009C01000000000 INSERT INTO `mob_pools` VALUES (2046,'Ichorous_Ire','Ichorous_Ire',229,0x0000240100000000000000000000000000000000,1,1,7,240,100,0,1,0,0,2,0,32,2899,1181,0,0,0,0,0,229,229); INSERT INTO `mob_pools` VALUES (2047,'Icon_Prototype','Icon_Prototype',95,0x0000240400000000000000000000000000000000,4,4,12,240,100,0,1,0,1,2,6800,0,0,1665,20,0,2,0,0,95,95); INSERT INTO `mob_pools` VALUES (2048,'Idle_Wanderer','Idle_Wanderer',255,0x0000570400000000000000000000000000000000,1,8,11,240,100,0,1,1,0,0,0,0,0,1155,5,0,0,0,0,255,255); -INSERT INTO `mob_pools` VALUES (2049,'Idun','Idun',52,0x0000710100000000000000000000000000000000,4,4,12,240,100,0,1,1,1,16,0,0,0,3,0,0,28,0,0,52,52); +INSERT INTO `mob_pools` VALUES (2049,'Idun','Idun',52,0x0000710100000000000000000000000000000000,4,4,12,240,100,0,1,1,1,0,0,0,0,3,0,0,28,0,0,52,52); INSERT INTO `mob_pools` VALUES (2050,'Ifrit_Prime_WTB','Ifrit_Prime',322,0x0000190300000000000000000000000000000000,8,4,5,240,100,0,1,1,0,18,0,0,0,3,0,0,0,0,0,2013,38); INSERT INTO `mob_pools` VALUES (2051,'Ignidrake','Ignidrake',266,0x00008E0100000000000000000000000000000000,1,1,7,240,100,0,1,0,0,0,0,0,185,1157,0,0,0,0,0,266,266); INSERT INTO `mob_pools` VALUES (2052,'Ignis_Djinn','Ignis_Djinn',82,0x0000C40800000000000000000000000000000000,1,1,11,240,100,0,1,0,0,0,0,0,238,1155,0,0,0,0,0,82,82); @@ -2129,7 +2129,7 @@ INSERT INTO `mob_pools` VALUES (2072,'Incendiary_Bombs','Incendiary_Bombs',68,0x INSERT INTO `mob_pools` VALUES (2073,'Incubus_Bats_BT','Incubus_Bats_BT',47,0x0000040100000000000000000000000000000000,1,1,11,240,100,0,1,0,1,0,0,64,504,1667,8,0,0,0,0,47,47); INSERT INTO `mob_pools` VALUES (2074,'Indich','Indich',115,0x05000F0400000000000000000000000000000000,10,7,3,240,100,0,1,0,0,2,0,32,390,1181,0,0,6,0,0,115,115); INSERT INTO `mob_pools` VALUES (2075,'Indrik','Indrik',39,0x0000B30800000000000000000000000000000000,6,6,2,240,100,0,0,0,0,2,0,32,1,1181,0,0,0,0,0,964,39); -INSERT INTO `mob_pools` VALUES (2076,'Infected_Wamoura','Infected_Wamoura',253,0x0000100700000000000000000000000000000000,1,1,7,240,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,253,253); +INSERT INTO `mob_pools` VALUES (2076,'Infected_Wamoura','Infected_Wamoura',253,0x0000100700000000000000000000000000000000,1,1,7,240,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,253,253); INSERT INTO `mob_pools` VALUES (2077,'Infernal_Weapon','Infernal_Weapon',110,0x0000C30100000000000000000000000000000000,5,5,3,240,100,0,1,0,0,0,0,0,219,1669,8,0,42,0,0,110,110); INSERT INTO `mob_pools` VALUES (2078,'Inferno_Demon','Inferno_Demon',169,0x0000AA0800000000000000000000000000000000,1,1,0,240,100,0,1,0,1,0,0,0,1,1155,0,0,0,0,0,169,169); INSERT INTO `mob_pools` VALUES (2079,'Ingaevon','Ingaevon',126,0x0000C70200000000000000000000000000000000,11,1,1,240,100,0,1,1,1,2,0,32,3306,1181,0,0,0,0,0,126,126); @@ -2475,7 +2475,7 @@ INSERT INTO `mob_pools` VALUES (2418,'Limestone_Hare','Limestone_Hare',206,0x000 INSERT INTO `mob_pools` VALUES (2419,'Limicoline_Crab','Limicoline_Crab',77,0x0000640100000000000000000000000000000000,7,7,4,240,100,0,1,0,0,4,0,0,1953,129,8,0,0,0,0,77,77); INSERT INTO `mob_pools` VALUES (2420,'Lindwurm','Lindwurm',210,0x00003D0100000000000000000000000000000000,6,6,7,200,100,0,1,0,0,2,0,0,0,3,0,0,0,0,0,210,210); INSERT INTO `mob_pools` VALUES (2421,'Lioumere','Lioumere',357,0x0000440500000000000000000000000000000000,1,1,7,240,100,512,1,0,1,2,0,32,161,2205,4,0,0,0,128,357,357); -INSERT INTO `mob_pools` VALUES (2422,'Liquified_Einherjar','Liquified_Einherjar',112,0x0000070700000000000000000000000000000000,4,4,12,240,100,0,1,1,1,18,0,0,0,3,0,0,2,0,0,112,112); +INSERT INTO `mob_pools` VALUES (2422,'Liquified_Einherjar','Liquified_Einherjar',112,0x0000070700000000000000000000000000000000,4,4,12,240,100,0,1,1,1,0,0,0,0,3,0,0,2,0,0,112,112); INSERT INTO `mob_pools` VALUES (2423,'Lividroot_Amooshah','Lividroot_Amooshah',296,0x00007E0100000000000000000000000000000000,1,1,7,200,100,0,1,0,0,2,0,32,0,671,4,0,0,0,0,296,296); INSERT INTO `mob_pools` VALUES (2424,'Living_Statue','Living_Statue',85,0x0000300100000000000000000000000000000000,1,1,12,240,100,0,1,0,0,0,0,0,396,643,12,0,0,0,0,85,85); INSERT INTO `mob_pools` VALUES (2425,'Living_Staves','Living_Staves',23,0x0000CE0100000000000000000000000000000000,4,4,12,240,100,0,1,1,0,2,0,0,1,131,0,0,2,0,0,23,23); @@ -2483,7 +2483,7 @@ INSERT INTO `mob_pools` VALUES (2426,'Llamhigyn_Y_Dwr','Llamhigyn_Y_Dwr',86,0x00 INSERT INTO `mob_pools` VALUES (2427,'Lobais','Lobais',115,0x0500030400000000000000000000000000000000,15,4,12,240,100,0,1,0,0,2,0,32,1426,157,0,0,34,0,0,115,115); INSERT INTO `mob_pools` VALUES (2428,'Lobison','Lobison',132,0x0000F10700000000000000000000000000000000,2,2,1,480,100,0,1,0,1,0,0,0,27,131,4,0,0,0,0,132,132); INSERT INTO `mob_pools` VALUES (2429,'Lockbuster_Zapdjipp','Lockbuster_Zapdjipp',334,0x0000160400000000000000000000000000000000,6,6,10,240,100,0,1,0,1,2,0,32,402,159,0,0,0,0,0,334,334); -INSERT INTO `mob_pools` VALUES (2430,'Logi','Logi',56,0x00001A0100000000000000000000000000000000,4,4,12,240,100,0,1,1,1,16,0,0,0,3,0,0,2,0,0,56,56); +INSERT INTO `mob_pools` VALUES (2430,'Logi','Logi',56,0x00001A0100000000000000000000000000000000,4,4,12,240,100,0,1,1,1,0,0,0,0,3,0,0,2,0,0,56,56); INSERT INTO `mob_pools` VALUES (2431,'Long-Armed_Chariot','Long-Armed_Chariot',63,0x0000210700000000000000000000000000000000,1,9,6,320,100,0,1,0,1,2,0,0,0,129,0,0,0,0,0,63,63); INSERT INTO `mob_pools` VALUES (2432,'Long-Barreled_Chariot','Long-Barreled_Chariot',63,0x00001F0700000000000000000000000000000000,1,1,6,240,100,0,0,0,1,2,0,0,1,133,0,0,0,0,0,943,63); INSERT INTO `mob_pools` VALUES (2433,'Long-Bowed_Chariot','Long-Bowed_Chariot',63,0x00001F0700000000000000000000000000000000,1,1,6,320,100,0,1,0,1,2,0,0,0,0,0,0,0,0,0,63,63); @@ -2608,15 +2608,15 @@ INSERT INTO `mob_pools` VALUES (2551,'Manigordo','Manigordo',242,0x0000C80800000 INSERT INTO `mob_pools` VALUES (2552,'Manipulator','Manipulator',85,0x0000300100000000000000000000000000000000,1,1,12,240,100,0,1,0,0,2,0,0,554,133,4,0,0,0,0,85,85); INSERT INTO `mob_pools` VALUES (2553,'Manohra','Manohra',55,0x0000BD0100000000000000000000000000000000,1,1,6,240,100,0,0,0,0,2,0,32,0,669,8,0,0,0,0,900,55); INSERT INTO `mob_pools` VALUES (2554,'Manticore','Manticore',179,0x0000920100000000000000000000000000000000,1,1,7,360,100,0,1,0,1,0,0,0,0,3,0,0,0,0,0,179,179); -INSERT INTO `mob_pools` VALUES (2555,'Manticore-X','Manticore-X',179,0x0000920100000000000000000000000000000000,1,1,7,360,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,179,179); +INSERT INTO `mob_pools` VALUES (2555,'Manticore-X','Manticore-X',179,0x0000920100000000000000000000000000000000,1,1,7,360,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,179,179); INSERT INTO `mob_pools` VALUES (2556,'Mantrap','Mantrap',114,0x0000410500000000000000000000000000000000,1,1,8,200,100,0,0,0,0,0,0,0,0,131,8,0,0,0,0,114,114); INSERT INTO `mob_pools` VALUES (2557,'Marauder_Dvogzog','Marauder_Dvogzog',334,0x0000700200000000000000000000000000000000,2,2,1,480,100,0,1,0,1,2,0,32,535,157,0,0,0,0,0,334,334); INSERT INTO `mob_pools` VALUES (2558,'Marchelute','Marchelute',221,0x00001F0200000000000000000000000000000000,11,1,9,360,100,0,1,0,1,2,0,32,4035,155,0,0,0,0,0,221,221); INSERT INTO `mob_pools` VALUES (2559,'Marchosias','Marchosias',143,0x00006C0100000000000000000000000000000000,1,1,3,240,100,0,1,0,0,0,0,0,27,129,0,0,0,0,0,143,143); INSERT INTO `mob_pools` VALUES (2560,'Mareyamad','Mareyamad',149,0x05005E0700000000000000000000000000000000,16,16,2,240,100,0,1,1,1,8,0,0,1,155,0,0,8,0,0,149,149); -INSERT INTO `mob_pools` VALUES (2561,'Margygr','Margygr',4,0x0000DC0700000000000000000000000000000000,4,4,12,240,100,0,1,1,1,16,0,0,0,3,0,0,11,0,0,4,4); +INSERT INTO `mob_pools` VALUES (2561,'Margygr','Margygr',4,0x0000080100000000000000000000000000000000,4,4,12,240,100,0,1,1,1,0,0,0,0,3,0,0,11,0,0,4,4); INSERT INTO `mob_pools` VALUES (2562,'Marid','Marid',180,0x0000CA0600000000000000000000000000000000,1,1,7,320,100,0,0,0,0,0,0,0,323,129,4,0,0,0,0,180,180); -INSERT INTO `mob_pools` VALUES (2563,'Marid-X','Marid-X',180,0x0000CA0600000000000000000000000000000000,1,1,7,320,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,180,180); +INSERT INTO `mob_pools` VALUES (2563,'Marid-X','Marid-X',180,0x0000CA0600000000000000000000000000000000,1,1,7,320,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,180,180); INSERT INTO `mob_pools` VALUES (2564,'Mariehene','Mariehene',170,0x0000E20700000000000000000000000000000000,1,1,7,220,100,0,1,0,0,0,0,0,126,643,0,0,0,0,0,170,170); INSERT INTO `mob_pools` VALUES (2565,'Marine_Dhalmel','Marine_Dhalmel',80,0x00004C0100000000000000000000000000000000,1,1,12,240,100,0,0,0,1,0,0,0,417,131,0,0,0,0,0,80,80); INSERT INTO `mob_pools` VALUES (2566,'Mariselles_Pupil','Mariselles_Pupil',121,0x0000700100000000000000000000000000000000,4,4,12,240,100,0,1,1,1,2,0,32,0,153,0,0,28,0,0,121,121); @@ -2824,7 +2824,7 @@ INSERT INTO `mob_pools` VALUES (2767,'Moxnix_Nightgoggle','Moxnix_Nightgoggle',1 INSERT INTO `mob_pools` VALUES (2768,'Mud_Pugil','Mud_Pugil',197,0x00005C0100000000000000000000000000000000,1,1,7,240,100,0,1,0,0,4,0,0,236,129,0,0,0,0,0,197,197); INSERT INTO `mob_pools` VALUES (2769,'Mugger_Crab','Mugger_Crab',77,0x0000640100000000000000000000000000000000,7,7,4,240,100,0,1,0,0,4,0,0,0,3,0,0,0,0,0,77,77); INSERT INTO `mob_pools` VALUES (2770,'Mummy','Mummy',227,0x00003C0200000000000000000000000000000000,1,1,5,240,100,0,1,0,0,0,0,0,525,643,8,0,0,0,0,227,227); -INSERT INTO `mob_pools` VALUES (2771,'Muninn','Muninn',55,0x0000BD0100000000000000000000000000000000,1,1,5,240,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,55,55); +INSERT INTO `mob_pools` VALUES (2771,'Muninn','Muninn',55,0x0000BD0100000000000000000000000000000000,1,1,5,240,100,0,0,1,1,0,0,0,0,3,0,0,0,0,0,55,55); INSERT INTO `mob_pools` VALUES (2772,'Muq_Shabeel','Muq_Shabeel',71,0x0000C60800000000000000000000000000000000,1,1,6,240,100,0,1,0,0,2,6150,0,0,131,16,0,0,0,0,466,71); INSERT INTO `mob_pools` VALUES (2773,'Murrain_Chigoe','Murrain_Chigoe',64,0x0000B70800000000000000000000000000000000,6,6,2,240,100,0,1,0,1,0,0,0,0,643,8,0,0,0,0,64,64); INSERT INTO `mob_pools` VALUES (2774,'Mush','Mush',229,0x0000240100000000000000000000000000000000,1,1,7,240,100,0,1,0,0,4,0,0,0,3,0,0,0,0,0,229,229); @@ -2891,7 +2891,7 @@ INSERT INTO `mob_pools` VALUES (2834,'Nepionic_Soulflayer','Nepionic_Soulflayer' INSERT INTO `mob_pools` VALUES (2835,'Nest_Beetle','Nest_Beetle',49,0x0000980100000000000000000000000000000000,7,7,8,240,100,0,0,0,1,0,0,0,344,129,0,0,0,0,0,49,49); INSERT INTO `mob_pools` VALUES (2836,'Nguruvilu','Nguruvilu',198,0x0000D00600000000000000000000000000000000,1,4,6,240,100,0,0,0,0,2,0,0,0,0,0,0,0,0,0,823,198); INSERT INTO `mob_pools` VALUES (2837,'Nickel_Quadav','Nickel_Quadav',202,0x00008B0200000000000000000000000000000000,7,7,3,265,100,0,1,0,1,0,0,0,1,131,0,0,4,0,0,202,202); -INSERT INTO `mob_pools` VALUES (2838,'Nickur','Nickur',86,0x0000400100000000000000000000000000000000,1,1,5,270,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,86,86); +INSERT INTO `mob_pools` VALUES (2838,'Nickur','Nickur',86,0x0000400100000000000000000000000000000000,1,1,5,270,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,86,86); INSERT INTO `mob_pools` VALUES (2839,'Nicolaus','Nicolaus',149,0x0100070100108320003083408350006000700000,20,20,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,149); INSERT INTO `mob_pools` VALUES (2840,'Nidhogg','Nidhogg',263,0x00000F0300000000000000000000000000000000,1,1,7,240,100,1040,1,1,0,2,0,32,46,155,6,0,0,0,0,263,263); INSERT INTO `mob_pools` VALUES (2841,'Feraloxs_Slime','Feraloxs_Slime',229,0x0000240100000000000000000000000000000000,4,4,7,240,100,0,1,0,1,8,0,32,0,155,0,0,54,0,0,229,229); @@ -2995,8 +2995,8 @@ INSERT INTO `mob_pools` VALUES (2938,'Ocean_Sahagin','Ocean_Sahagin',213,0x00001 INSERT INTO `mob_pools` VALUES (2939,'Ochre_Scorpion','Ochre_Scorpion',217,0x0000C30800000000000000000000000000000000,1,1,0,0,100,0,0,0,0,0,0,0,0,3,0,0,0,0,0,217,217); INSERT INTO `mob_pools` VALUES (2940,'Ochu','Ochu',186,0x00007C0100000000000000000000000000000000,1,1,7,200,100,0,1,0,0,0,0,0,671,1155,0,0,0,0,0,186,186); INSERT INTO `mob_pools` VALUES (2941,'Odin','Odin',41,0x0000250700000000000000000000000000000000,8,4,1,240,100,0,1,1,0,16,0,0,0,3,0,0,5,0,0,41,41); -INSERT INTO `mob_pools` VALUES (2942,'Odins_Fool','Odins_Fool',165,0x0000BE0600000000000000000000000000000000,4,4,7,240,100,0,1,1,1,16,0,0,0,0,0,0,2,0,0,165,165); -INSERT INTO `mob_pools` VALUES (2943,'Odins_Jester','Odins_Jester',165,0x0000BF0600000000000000000000000000000000,4,4,7,240,100,0,1,1,1,16,0,0,0,0,0,0,2,0,0,165,165); +INSERT INTO `mob_pools` VALUES (2942,'Odins_Fool','Odins_Fool',165,0x0000BE0600000000000000000000000000000000,4,4,7,240,100,0,1,1,1,0,0,0,0,0,0,0,2,0,0,165,165); +INSERT INTO `mob_pools` VALUES (2943,'Odins_Jester','Odins_Jester',165,0x0000BF0600000000000000000000000000000000,4,4,7,240,100,0,1,1,1,0,0,0,0,0,0,0,2,0,0,165,165); INSERT INTO `mob_pools` VALUES (2944,'Odontotyrannus','Odontotyrannus',197,0x00005C0100000000000000000000000000000000,1,1,7,220,100,0,1,0,0,6,0,0,0,1153,0,0,0,0,0,197,197); INSERT INTO `mob_pools` VALUES (2945,'Odqan','Odqan',68,0x0000220100000000000000000000000000000000,1,1,5,240,100,0,1,0,0,2,0,32,456,1181,4,0,0,0,0,68,68); INSERT INTO `mob_pools` VALUES (2946,'Odzmanouk','Odzmanouk',260,0x00000F0300000000000000000000000000000000,1,1,0,240,100,0,0,0,0,0,0,32,0,1177,4,0,0,0,0,260,260); @@ -3107,7 +3107,7 @@ INSERT INTO `mob_pools` VALUES (3050,'Ore_Eater','Ore_Eater',258,0x0000A80100000 INSERT INTO `mob_pools` VALUES (3051,'Ore_Golem','Ore_Golem',135,0x0000B00100000000000000000000000000000000,1,1,11,320,100,0,1,0,0,0,0,0,166,1153,0,0,0,0,0,135,135); INSERT INTO `mob_pools` VALUES (3052,'Orichalcum_Quadav','Orichalcum_Quadav',202,0x00009C0200000000000000000000000000000000,3,3,3,265,100,0,1,1,1,16,0,0,7,1159,0,0,1,0,256,202,202); INSERT INTO `mob_pools` VALUES (3053,'Oriri_Samariri','Oriri_Samariri',196,0x0000150700000000000000000000000000000000,4,4,5,150,100,0,1,1,1,0,0,0,0,3,0,0,2,0,0,196,196); -INSERT INTO `mob_pools` VALUES (3054,'Ormr','Ormr',87,0x0000A40100000000000000000000000000000000,1,1,12,240,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,87,87); +INSERT INTO `mob_pools` VALUES (3054,'Ormr','Ormr',87,0x0000A40100000000000000000000000000000000,1,1,12,240,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,87,87); INSERT INTO `mob_pools` VALUES (3055,'Orna','Orna',110,0x0000A60100000000000000000000000000000000,5,4,3,240,100,0,1,0,1,2,0,32,0,1695,8,0,3,0,0,110,110); INSERT INTO `mob_pools` VALUES (3056,'Ornamental_Weapon','Ornamental_Weapon',110,0x0000DD0100000000000000000000000000000000,1,1,5,240,100,0,1,0,0,0,0,0,238,1667,8,0,0,0,0,110,110); INSERT INTO `mob_pools` VALUES (3057,'Ornery_Orobon','Ornery_Orobon',191,0x0000C10600000000000000000000000000000000,1,1,7,240,100,0,1,0,0,0,0,0,0,3,0,0,0,0,0,191,191); @@ -3402,7 +3402,7 @@ INSERT INTO `mob_pools` VALUES (3345,'Red_Rose_Condottiere','Red_Rose_Condottier INSERT INTO `mob_pools` VALUES (3346,'Red_Smoocher','Red_Smoocher',172,0x0000140100000000000000000000000000000000,1,1,7,240,100,0,1,0,1,4,0,0,0,643,0,0,0,0,0,172,172); INSERT INTO `mob_pools` VALUES (3347,'Ree_Nata_the_Melomanic','Ree_Nata_the_Melomanic',360,0x00003D0400000000000000000000000000000000,10,10,11,240,100,0,1,0,1,2,0,32,0,159,0,0,6,0,0,360,360); INSERT INTO `mob_pools` VALUES (3348,'Refitted_Chariot','Refitted_Chariot',63,0x00001D0700000000000000000000000000000000,1,1,6,240,100,0,1,1,1,2,0,0,0,133,0,0,0,0,0,969,63); -INSERT INTO `mob_pools` VALUES (3349,'Reifnir','Reifnir',358,0x0000F10200000000000000000000000000000000,4,4,6,240,100,0,1,1,1,16,0,0,0,3,0,0,2,0,0,358,358); +INSERT INTO `mob_pools` VALUES (3349,'Reifnir','Reifnir',358,0x0000F10200000000000000000000000000000000,4,4,6,240,100,0,1,1,1,0,0,0,0,3,0,0,2,0,0,358,358); INSERT INTO `mob_pools` VALUES (3350,'Rencounter_Chariot','Rencounter_Chariot',63,0x00001D0700000000000000000000000000000000,8,4,6,240,100,0,1,0,1,2,0,0,0,133,0,0,289,0,0,63,63); INSERT INTO `mob_pools` VALUES (3351,'Repiner','Repiner',78,0x0000730400000000000000000000000000000000,1,1,8,240,100,0,1,1,0,16,0,0,441,129,0,0,0,0,0,707,78); INSERT INTO `mob_pools` VALUES (3352,'Republican_Infantry','Republican_Infantry',146,0x010000081A101A201A301A401A505C6000000000,7,1,3,240,100,0,0,0,0,0,0,0,0,0,0,0,4,0,0,146,146); @@ -3450,7 +3450,7 @@ INSERT INTO `mob_pools` VALUES (3393,'Rose_Garden','Rose_Garden',186,0x00007C010 INSERT INTO `mob_pools` VALUES (3394,'Rossweisse','Rossweisse',115,0x05006E0700000000000000000000000000000000,12,12,8,240,100,0,1,0,1,24,0,0,0,3,0,0,0,0,0,115,115); INSERT INTO `mob_pools` VALUES (3395,'Rotten_Jam','Rotten_Jam',229,0x0000240100000000000000000000000000000000,1,1,7,240,100,0,1,0,0,0,0,0,344,641,0,0,0,0,0,229,229); INSERT INTO `mob_pools` VALUES (3396,'Rotten_Sod','Rotten_Sod',86,0x0000400100000000000000000000000000000000,1,1,3,270,100,0,1,0,0,0,0,0,7067,131,0,0,0,0,0,86,86); -INSERT INTO `mob_pools` VALUES (3397,'Rotting_Huskarl','Rotting_Huskarl',227,0x00003C0200000000000000000000000000000000,1,1,4,240,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,227,227); +INSERT INTO `mob_pools` VALUES (3397,'Rotting_Huskarl_war','Rotting_Huskarl',227,0x00003C0200000000000000000000000000000000,1,1,5,240,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,227,227); INSERT INTO `mob_pools` VALUES (3398,'Rot_Prowler','Rot_Prowler',227,0x00003C0200000000000000000000000000000000,8,8,8,240,100,0,1,0,0,0,0,0,297,131,0,0,5,0,0,227,227); INSERT INTO `mob_pools` VALUES (3399,'Routsix_Rubbertendon','Routsix_Rubbertendon',373,0x0000400400000000000000000000000000000000,9,9,5,240,100,0,1,0,1,2,0,32,2190,159,0,0,0,0,0,373,373); INSERT INTO `mob_pools` VALUES (3400,'Royal_Banneret','Royal_Banneret',145,0x010007030C100C20DD30DD40DD50FB601B700080,7,1,3,240,100,0,0,0,0,0,0,0,0,131,0,0,4,0,0,145,145); @@ -3490,7 +3490,7 @@ INSERT INTO `mob_pools` VALUES (3432,'Sabotender_Mariachi','Sabotender_Mariachi' INSERT INTO `mob_pools` VALUES (3433,'Sabotender_Sediendo','Sabotender_Sediendo',212,0x0000740100000000000000000000000000000000,2,2,7,360,100,0,1,0,0,0,0,0,285,131,0,0,0,0,0,212,212); INSERT INTO `mob_pools` VALUES (3434,'Sacrificial_Goblet','Sacrificial_Goblet',175,0x00009C0100000000000000000000000000000000,4,4,7,240,100,0,1,0,0,2,0,0,0,3,0,0,36,0,0,175,175); INSERT INTO `mob_pools` VALUES (3435,'Sadfly','Sadfly',113,0x0000C00100000000000000000000000000000000,1,1,8,240,100,0,0,0,1,0,0,0,566,641,8,0,0,0,0,113,113); -INSERT INTO `mob_pools` VALUES (3436,'Saehrimnir','Saehrimnir',242,0x0000340100000000000000000000000000000000,1,1,7,240,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,242,242); +INSERT INTO `mob_pools` VALUES (3436,'Saehrimnir','Saehrimnir',242,0x0000340100000000000000000000000000000000,1,1,7,240,100,0,0,1,1,0,0,0,0,3,0,0,0,0,0,242,242); INSERT INTO `mob_pools` VALUES (3437,'Sagelord_Molaal_Ja_WW','Sagelord_Molaal_Ja',176,0x06005B0600000000000000000000000000000000,4,3,5,280,100,0,1,1,1,0,0,32,1,157,4,0,2,0,0,176,176); INSERT INTO `mob_pools` VALUES (3438,'Sagittarius_X-XIII','Sagittarius_X-XIII',25,0x0000FC0400000000000000000000000000000000,11,11,2,265,100,0,1,0,1,2,0,0,289,135,0,0,0,0,0,25,25); INSERT INTO `mob_pools` VALUES (3439,'Sagittarius_XIII-XXVI','Sagittarius_XIII-XXVI',25,0x0000F30400000000000000000000000000000000,11,11,2,265,100,0,1,0,1,0,0,0,0,131,0,0,0,0,0,25,25); @@ -3695,7 +3695,7 @@ INSERT INTO `mob_pools` VALUES (3637,'Six_of_Batons','Six_of_Batons',61,0x0000AF INSERT INTO `mob_pools` VALUES (3638,'Six_of_Coins','Six_of_Coins',61,0x0000AF0100000000000000000000000000000000,5,5,11,240,100,0,1,0,1,0,0,0,1207,131,8,0,3,0,0,61,61); INSERT INTO `mob_pools` VALUES (3639,'Six_of_Cups','Six_of_Cups',61,0x0000AF0100000000000000000000000000000000,3,3,12,240,100,0,1,0,1,0,0,0,2132,131,8,0,1,0,0,61,61); INSERT INTO `mob_pools` VALUES (3640,'Six_of_Swords','Six_of_Swords',61,0x0000AF0100000000000000000000000000000000,7,7,12,240,100,0,1,0,1,0,0,0,707,131,8,0,4,0,0,61,61); -INSERT INTO `mob_pools` VALUES (3641,'Sjokrakjen','Sjokrakjen',218,0x0000610100000000000000000000000000000000,2,2,7,360,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,218,218); +INSERT INTO `mob_pools` VALUES (3641,'Sjokrakjen','Sjokrakjen',218,0x0000610100000000000000000000000000000000,2,2,7,360,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,218,218); INSERT INTO `mob_pools` VALUES (3642,'Skadi','Skadi',126,0x0000C50200000000000000000000000000000000,9,1,5,240,100,0,1,1,1,16,0,32,7,669,8,0,0,0,256,126,126); INSERT INTO `mob_pools` VALUES (3643,'Skahnowa','Skahnowa',2,0x0000900100000000000000000000000000000000,1,1,0,0,100,0,0,0,0,0,0,32,6265,153,0,0,0,0,0,2,2); INSERT INTO `mob_pools` VALUES (3644,'Skeleton_Escort','Skeleton_Escort',227,0x00003C0200000000000000000000000000000000,1,1,0,0,100,0,0,0,0,0,0,0,0,129,0,0,0,0,0,227,227); @@ -3758,7 +3758,7 @@ INSERT INTO `mob_pools` VALUES (3700,'Sonia','Sonia',149,0x01000A02D310D320D330D INSERT INTO `mob_pools` VALUES (3701,'Son_of_Anansi','Son_of_Anansi',235,0x0000370100000000000000000000000000000000,1,1,7,240,100,0,1,1,1,16,0,0,4429,129,0,0,0,0,0,236,235); INSERT INTO `mob_pools` VALUES (3702,'Soo_Jopo_the_Fiendking','Soo_Jopo_the_Fiendking',360,0x0000390400000000000000000000000000000000,9,9,5,240,100,0,1,0,1,2,0,32,0,159,0,0,0,0,0,360,360); INSERT INTO `mob_pools` VALUES (3703,'Soo_Luma_the_Ascended','Soo_Luma_the_Ascended',360,0x0000410800000000000000000000000000000000,1,1,7,240,100,0,1,1,1,0,0,0,0,0,0,0,0,0,0,360,360); -INSERT INTO `mob_pools` VALUES (3704,'Soulflayer','Soulflayer',233,0x0000EF0600000000000000000000000000000000,4,4,5,240,100,0,1,1,1,16,0,0,404,129,4,0,28,0,0,233,233); +INSERT INTO `mob_pools` VALUES (3704,'Soulflayer','Soulflayer',233,0x0000EF0600000000000000000000000000000000,4,4,5,240,100,0,1,1,1,0,0,0,404,129,4,0,28,0,0,233,233); INSERT INTO `mob_pools` VALUES (3705,'Soulsender_Fugbrag','Soulsender_Fugbrag',334,0x0000190400000000000000000000000000000000,10,1,4,240,100,0,1,1,1,2,0,32,431,159,0,0,6,0,0,334,334); INSERT INTO `mob_pools` VALUES (3706,'Soulstealer_Skullnix','Soulstealer_Skullnix',133,0x0000F90100000000000000000000000000000000,6,6,2,240,100,0,1,0,1,2,0,32,0,157,0,0,0,0,0,133,133); INSERT INTO `mob_pools` VALUES (3707,'Soul_Stinger','Soul_Stinger',48,0x0000100100000000000000000000000000000000,1,1,2,240,100,0,1,0,1,0,0,0,238,131,0,0,0,0,0,48,48); @@ -3975,7 +3975,7 @@ INSERT INTO `mob_pools` VALUES (3917,'Ticktox_Beadyeyes','Ticktox_Beadyeyes',373 INSERT INTO `mob_pools` VALUES (3918,'Tieholtsodi','Tieholtsodi',219,0x0000600100000000000000000000000000000000,2,2,7,360,100,0,1,1,1,16,0,32,3662,159,0,0,0,0,256,219,219); INSERT INTO `mob_pools` VALUES (3919,'Tigerbane_Bakdak','Tigerbane_Bakdak',334,0x0000680200000000000000000000000000000000,8,8,5,240,100,0,1,0,1,2,0,32,1871,155,0,0,5,0,0,334,334); INSERT INTO `mob_pools` VALUES (3920,'Time_Bomb','Time_Bomb',56,0x0000180100000000000000000000000000000000,1,1,5,240,100,0,1,0,0,18,6190,0,0,3,0,0,0,0,0,56,56); -INSERT INTO `mob_pools` VALUES (3921,'Tind','Tind',358,0x0000F20200000000000000000000000000000000,8,8,1,240,100,0,1,1,1,16,0,0,0,3,0,0,5,0,0,358,358); +INSERT INTO `mob_pools` VALUES (3921,'Tind','Tind',358,0x0000F20200000000000000000000000000000000,8,8,1,240,100,0,1,1,1,0,0,0,0,3,0,0,5,0,0,358,358); INSERT INTO `mob_pools` VALUES (3922,'Tinnin','Tinnin',313,0x0000040700000000000000000000000000000000,1,1,7,240,100,1024,1,0,0,2,6152,32,0,3,2,0,0,0,0,313,313); INSERT INTO `mob_pools` VALUES (3923,'Tiny_Lycopodium','Tiny_Lycopodium',178,0x0000C70800000000000000000000000000000000,2,2,1,480,100,0,1,0,0,0,0,0,471,129,8,0,0,0,0,178,178); INSERT INTO `mob_pools` VALUES (3924,'Tiny_Mandragora','Tiny_Mandragora',178,0x00002C0100000000000000000000000000000000,2,2,1,480,100,0,0,0,0,0,0,0,290,641,8,0,0,0,0,178,178); @@ -4123,7 +4123,7 @@ INSERT INTO `mob_pools` VALUES (4065,'Typhoon_Wyvern','Typhoon_Wyvern',266,0x000 INSERT INTO `mob_pools` VALUES (4066,'Tyrannic_Tunnok','Tyrannic_Tunnok',217,0x00001C0100000000000000000000000000000000,1,1,7,280,100,0,1,0,0,2,0,0,0,3,0,0,0,0,0,217,217); INSERT INTO `mob_pools` VALUES (4067,'Tyrannobugard','Tyrannobugard',58,0x0000470500000000000000000000000000000000,1,1,3,300,100,0,1,0,0,8,0,0,21,131,0,0,0,0,0,58,58); INSERT INTO `mob_pools` VALUES (4068,'Tyrannotaur','Tyrannotaur',240,0x00004F0500000000000000000000000000000000,1,1,7,240,100,0,1,1,1,0,0,0,238,131,0,0,0,0,0,240,240); -INSERT INTO `mob_pools` VALUES (4069,'Tyrfing','Tyrfing',358,0x0000F30200000000000000000000000000000000,1,1,2,240,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,358,358); +INSERT INTO `mob_pools` VALUES (4069,'Tyrfing','Tyrfing',358,0x0000F30200000000000000000000000000000000,1,1,2,240,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,358,358); INSERT INTO `mob_pools` VALUES (4070,'Tzee_Xicu_Idol','Tzee_Xicu_Idol',95,0x0000250400000000000000000000000000000000,4,4,12,240,100,0,1,1,1,2,6800,0,0,0,0,0,50,0,0,95,95); INSERT INTO `mob_pools` VALUES (4071,'Tzee_Xicus_Elemental','Tzee_Xicus_Elemental',99,0x00000A0000000000000000000000000000000000,4,4,12,240,100,0,1,0,1,16,0,0,0,0,0,0,2,0,0,99,99); INSERT INTO `mob_pools` VALUES (4072,'Tzee_Xicu_the_Manifest','Tzee_Xicu_the_Manifest',360,0x00000D0300000000000000000000000000000000,15,15,12,265,125,0,1,1,1,2,0,32,290,157,0,0,30,0,0,360,360); @@ -4163,9 +4163,9 @@ INSERT INTO `mob_pools` VALUES (4105,'Upyri','Upyri',46,0x0000010100000000000000 INSERT INTO `mob_pools` VALUES (4106,'Uragnite','Uragnite',251,0x0000510500000000000000000000000000000000,1,1,7,290,100,0,1,0,0,0,0,0,396,1667,12,0,0,0,0,251,251); INSERT INTO `mob_pools` VALUES (4107,'Urayuli','Urayuli',136,0x0000280100000000000000000000000000000000,3,3,12,300,100,0,0,0,0,2,0,0,581,1157,0,0,1,0,0,136,136); INSERT INTO `mob_pools` VALUES (4108,'Uriri_Samariri','Uriri_Samariri',196,0x0000150700000000000000000000000000000000,4,4,5,150,100,0,1,1,1,0,0,0,0,3,0,0,2,0,0,196,196); -INSERT INTO `mob_pools` VALUES (4109,'Utgarth_Bat','Utgarth_Bat',46,0x0000010100000000000000000000000000000000,1,1,5,240,100,0,1,1,1,18,0,0,0,3,0,0,0,0,0,46,46); -INSERT INTO `mob_pools` VALUES (4110,'Utgarth_Bats','Utgarth_Bats',47,0x0000070100000000000000000000000000000000,1,1,5,240,100,0,1,1,1,18,0,0,0,3,0,0,0,0,0,47,47); -INSERT INTO `mob_pools` VALUES (4111,'Utgarth_Leech','Utgarth_Leech',172,0x0000150100000000000000000000000000000000,1,1,7,240,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,172,172); +INSERT INTO `mob_pools` VALUES (4109,'Utgarth_Bat','Utgarth_Bat',46,0x0000010100000000000000000000000000000000,1,1,5,240,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,46,46); +INSERT INTO `mob_pools` VALUES (4110,'Utgarth_Bats','Utgarth_Bats',47,0x0000070100000000000000000000000000000000,1,1,5,240,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,47,47); +INSERT INTO `mob_pools` VALUES (4111,'Utgarth_Leech','Utgarth_Leech',172,0x0000150100000000000000000000000000000000,1,1,7,240,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,172,172); INSERT INTO `mob_pools` VALUES (4112,'Utukku_S','Utukku_S',121,0x0000700100000000000000000000000000000000,4,4,12,240,100,0,1,0,0,0,0,0,0,1155,0,0,28,0,0,121,121); INSERT INTO `mob_pools` VALUES (4113,'Vaa_Huja_the_Erudite','Vaa_Huja_the_Erudite',360,0x0000480200000000000000000000000000000000,4,4,5,240,100,0,1,0,1,2,0,32,0,155,0,0,2,0,0,360,360); INSERT INTO `mob_pools` VALUES (4114,'Vaa_Oozus_Scolopendrid','Vaa_Oozus_Scolopendrid',217,0x0000C30800000000000000000000000000000000,1,1,7,280,100,0,1,1,1,0,0,32,0,155,0,0,0,0,0,217,217); @@ -4183,7 +4183,7 @@ INSERT INTO `mob_pools` VALUES (4125,'Valley_Manticore','Valley_Manticore',179,0 INSERT INTO `mob_pools` VALUES (4126,'Valor','Valor',218,0x0000600100000000000000000000000000000000,2,2,1,480,100,0,1,0,0,2,0,32,27,159,0,0,0,0,0,218,218); INSERT INTO `mob_pools` VALUES (4127,'Vampire_Bat','Vampire_Bat',46,0x0000000100000000000000000000000000000000,1,1,11,240,100,0,0,0,1,0,0,0,125,643,8,0,0,0,0,46,46); INSERT INTO `mob_pools` VALUES (4128,'Vampyr_Bats','Vampyr_Bats',47,0x0000040100000000000000000000000000000000,1,1,5,240,100,0,1,1,1,18,0,0,0,3,0,0,0,0,0,47,47); -INSERT INTO `mob_pools` VALUES (4129,'Vampyr_Dog','Vampyr_Dog',143,0x00006C0100000000000000000000000000000000,1,1,3,240,100,0,1,1,1,18,0,0,0,3,0,0,0,0,0,143,143); +INSERT INTO `mob_pools` VALUES (4129,'Vampyr_Dog','Vampyr_Dog',143,0x00006C0100000000000000000000000000000000,1,1,3,240,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,143,143); INSERT INTO `mob_pools` VALUES (4130,'Vampyr_Jarl','Vampyr_Jarl',252,0x0000350700000000000000000000000000000000,8,8,7,290,100,0,1,1,1,16,0,0,0,3,0,0,5,0,0,252,252); INSERT INTO `mob_pools` VALUES (4131,'Vampyr_Wolf','Vampyr_Wolf',143,0x00006C0100000000000000000000000000000000,1,1,3,240,100,0,1,1,1,18,0,0,0,3,0,0,0,0,0,143,143); INSERT INTO `mob_pools` VALUES (4132,'Vangknok_of_Clan_Death','Vangknok_of_Clan_Death',334,0x00007C0200000000000000000000000000000000,14,14,8,240,100,0,1,0,1,18,0,0,0,0,0,0,0,0,0,334,334); @@ -4255,7 +4255,7 @@ INSERT INTO `mob_pools` VALUES (4197,'Vanguard_Vindicator','Vanguard_Vindicator' INSERT INTO `mob_pools` VALUES (4198,'Vanguard_Visionary','Vanguard_Visionary',360,0x00003D0400000000000000000000000000000000,5,5,2,240,100,0,1,0,1,0,0,0,7,131,0,0,3,0,0,360,360); INSERT INTO `mob_pools` VALUES (4199,'Vanguard_Welldigger','Vanguard_Welldigger',327,0x00003E0400000000000000000000000000000000,6,6,2,240,100,0,1,0,1,0,0,0,1,131,0,0,0,0,0,327,327); INSERT INTO `mob_pools` VALUES (4200,'Vanilla_Custard','Vanilla_Custard',112,0x0000080700000000000000000000000000000000,4,4,12,240,100,0,1,0,0,2,0,0,0,3,0,0,2,0,0,112,112); -INSERT INTO `mob_pools` VALUES (4201,'Vanquished_Einherjar','Vanquished_Einherjar',88,0x0000D70600000000000000000000000000000000,4,4,2,240,100,0,1,1,1,18,0,0,0,3,0,0,2,0,0,88,88); +INSERT INTO `mob_pools` VALUES (4201,'Vanquished_Einherjar','Vanquished_Einherjar',88,0x0000D70600000000000000000000000000000000,4,4,2,240,100,0,1,1,1,0,0,0,0,3,0,0,2,0,0,88,88); INSERT INTO `mob_pools` VALUES (4202,'Varajahl','Varajahl',149,0x05005E0700000000000000000000000000000000,16,16,2,240,100,0,1,1,1,8,0,0,1,155,0,0,8,0,0,149,149); INSERT INTO `mob_pools` VALUES (4203,'Varanus','Varanus',237,0x00007F0800000000000000000000000000000000,1,1,0,32767,100,0,0,0,0,18,0,0,7,129,0,0,0,0,0,0,237); INSERT INTO `mob_pools` VALUES (4204,'Variable_Hare','Variable_Hare',404,0x00000E0100000000000000000000000000000000,6,6,7,240,100,0,0,0,0,0,0,0,290,131,0,0,0,0,0,405,404); @@ -4330,7 +4330,7 @@ INSERT INTO `mob_pools` VALUES (4272,'Wadi_Hare','Wadi_Hare',206,0x00000C0100000 INSERT INTO `mob_pools` VALUES (4273,'Wadi_Leech','Wadi_Leech',172,0x0000140100000000000000000000000000000000,1,1,7,240,100,0,0,0,1,0,0,0,0,643,0,0,0,0,0,172,172); INSERT INTO `mob_pools` VALUES (4274,'Wailer','Wailer',256,0x00005B0400000000000000000000000000000000,1,1,7,240,100,0,1,1,1,2,0,0,765,135,0,0,0,0,0,256,256); INSERT INTO `mob_pools` VALUES (4275,'Wajaom_Tiger','Wajaom_Tiger',242,0x0000340100000000000000000000000000000000,1,1,7,240,100,0,1,0,0,0,0,0,343,131,0,0,0,0,0,242,242); -INSERT INTO `mob_pools` VALUES (4276,'Waldgeist','Waldgeist',139,0x0000800100000000000000000000000000000000,4,4,12,280,100,0,1,1,1,16,0,0,0,3,0,0,10,0,0,139,139); +INSERT INTO `mob_pools` VALUES (4276,'Waldgeist','Waldgeist',139,0x0000800100000000000000000000000000000000,4,4,12,280,100,0,1,1,1,0,0,0,0,3,0,0,10,0,0,139,139); INSERT INTO `mob_pools` VALUES (4277,'Walking_Sapling','Walking_Sapling',216,0x0000880100000000000000000000000000000000,1,1,7,240,100,0,0,0,1,0,0,0,449,129,0,0,0,0,0,216,216); INSERT INTO `mob_pools` VALUES (4278,'Walking_Tree','Walking_Tree',245,0x0000840100000000000000000000000000000000,1,1,7,240,100,0,1,0,0,0,0,0,404,131,0,0,0,0,0,245,245); INSERT INTO `mob_pools` VALUES (4279,'Waltraute','Waltraute',115,0x0500510700000000000000000000000000000000,1,10,7,240,100,0,1,0,1,24,0,0,0,3,0,0,0,0,0,115,115); @@ -4406,11 +4406,11 @@ INSERT INTO `mob_pools` VALUES (4348,'Windjammer_Imp','Windjammer_Imp',165,0x000 INSERT INTO `mob_pools` VALUES (4349,'Wind_Bats','Wind_Bats',47,0x0000040100000000000000000000000000000000,1,1,11,240,100,0,0,0,0,0,0,64,243,641,8,0,0,0,0,47,47); INSERT INTO `mob_pools` VALUES (4350,'Wind_Golem','Wind_Golem',135,0x0000B00100000000000000000000000000000000,1,1,11,320,100,0,1,1,1,18,0,0,0,3,0,0,0,0,0,135,135); INSERT INTO `mob_pools` VALUES (4351,'Wind_Pukis','Wind_Pukis',87,0x0000A40100000000000000000000000000000000,1,1,12,240,100,0,1,1,1,2,6656,0,1611,135,0,0,0,0,0,87,87); -INSERT INTO `mob_pools` VALUES (4352,'Winebibber','Winebibber',66,0x0000260100000000000000000000000000000000,1,1,5,240,100,0,1,1,1,16,0,0,0,3,0,0,0,0,0,66,66); +INSERT INTO `mob_pools` VALUES (4352,'Winebibber','Winebibber',66,0x0000260100000000000000000000000000000000,1,1,5,240,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,66,66); INSERT INTO `mob_pools` VALUES (4353,'Wingrats','Wingrats',47,0x0000040100000000000000000000000000000000,1,1,11,240,100,0,0,0,1,0,0,64,290,131,8,0,0,0,0,47,47); INSERT INTO `mob_pools` VALUES (4354,'Witch_Hazel','Witch_Hazel',216,0x0000880100000000000000000000000000000000,1,1,7,240,100,0,0,0,1,0,0,0,267,645,0,0,0,0,0,216,216); INSERT INTO `mob_pools` VALUES (4355,'Locus_Wivre','Locus_Wivre',257,0x0000FB0600000000000000000000000000000000,1,1,5,240,100,1024,0,0,0,0,0,0,186,131,0,0,0,0,0,257,257); -INSERT INTO `mob_pools` VALUES (4356,'Wivre-X','Wivre-X',257,0x0000B90800000000000000000000000000000000,1,1,5,240,100,1024,1,0,1,16,0,0,0,3,0,0,0,0,0,257,257); +INSERT INTO `mob_pools` VALUES (4356,'Wivre-X','Wivre-X',257,0x0000B90800000000000000000000000000000000,1,1,5,240,100,1024,1,0,1,0,0,0,0,3,0,0,0,0,0,257,257); INSERT INTO `mob_pools` VALUES (4357,'Wolf_Bat','Wolf_Bat',46,0x0000000100000000000000000000000000000000,1,1,11,240,100,0,1,0,0,0,0,0,271,643,8,0,0,0,0,46,46); INSERT INTO `mob_pools` VALUES (4358,'Wolf_Clan_Warmachine','Wolf_Clan_Warmachine',190,0x0000AC0100000000000000000000000000000000,1,1,7,240,100,0,1,0,1,18,0,0,0,645,8,0,0,0,0,190,190); INSERT INTO `mob_pools` VALUES (4359,'Wolf_Zombie','Wolf_Zombie',143,0x00006C0100000000000000000000000000000000,1,1,3,240,100,0,1,0,0,0,0,0,665,131,0,0,0,0,0,143,143); @@ -7150,6 +7150,13 @@ INSERT INTO `mob_pools` VALUES (7072,'Magicked_Bones_dagger','Magicked_Bones_dag -- Missing NM mob_pools INSERT INTO `mob_pools` VALUES (7073,'Vasiliceratops','Vasiliceratops',257,0x0000B90800000000000000000000000000000000,1,1,5,240,100,1024,0,0,0,2,0,0,7,131,0,0,0,0,0,257,257); +-- Hazhalm Testing Grounds (Einherjar) +INSERT INTO `mob_pools` VALUES (7074,'Chigoe_einherjar','Chigoe',64,0x0000D30600000000000000000000000000000000,6,6,2,150,100,0,1,0,0,0,0,0,2593,641,8,0,0,0,0,64,64); +INSERT INTO `mob_pools` VALUES (7075,'Craven_Einherjar_bhoot','Craven_Einherjar',52,0x0000710100000000000000000000000000000000,4,4,12,240,100,0,1,1,1,0,0,0,0,3,0,0,28,0,0,121,121); +INSERT INTO `mob_pools` VALUES (7076,'Rotting_Huskarl_blm','Rotting_Huskarl',227,0x0000340200000000000000000000000000000000,4,4,5,240,100,0,1,1,1,0,0,0,0,3,0,0,28,0,0,227,227); +INSERT INTO `mob_pools` VALUES (7077,'Rotting_Huskarl_drk','Rotting_Huskarl',227,0x0000DE0600000000000000000000000000000000,8,8,3,240,100,0,1,1,1,0,0,0,0,3,0,0,5,0,0,227,227); +INSERT INTO `mob_pools` VALUES (7078,'Rotting_Huskarl_thf','Rotting_Huskarl',227,0x0000D70600000000000000000000000000000000,6,6,8,240,100,0,1,1,1,0,0,0,0,3,0,0,0,0,0,227,227); + -- ------------------------------------------------------------ -- Start of Ambuscade section -- NOTE: The mobs are changed every update in the DATs, so using out-of-date diff --git a/sql/mob_spawn_points.sql b/sql/mob_spawn_points.sql index fa4c2614bbc..f7d5b551a54 100644 --- a/sql/mob_spawn_points.sql +++ b/sql/mob_spawn_points.sql @@ -19799,7 +19799,7 @@ INSERT INTO `mob_spawn_points` VALUES (17096718,'Ariri_Samariri','Ariri Samariri INSERT INTO `mob_spawn_points` VALUES (17096719,'Balrahn','Balrahn',9,1.000,1.000,1.000,0); INSERT INTO `mob_spawn_points` VALUES (17096720,'Tanngrisnir','Tanngrisnir',10,1.000,1.000,1.000,0); INSERT INTO `mob_spawn_points` VALUES (17096721,'Hrungnir','Hrungnir',11,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096722,'Hrungnir','Hrungnir',11,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096722,'Hrungnir_clone','Hrungnir',11,1.000,1.000,1.000,0); INSERT INTO `mob_spawn_points` VALUES (17096723,'Andhrimnir','Andhrimnir',12,1.000,1.000,1.000,0); INSERT INTO `mob_spawn_points` VALUES (17096724,'Dendainsonne','Dendainsonne',13,1.000,1.000,1.000,0); INSERT INTO `mob_spawn_points` VALUES (17096725,'Gorgimera','Gorgimera',14,1.000,1.000,1.000,0); @@ -19819,30 +19819,30 @@ INSERT INTO `mob_spawn_points` VALUES (17096738,'Dark_Elemental','Dark Elemental INSERT INTO `mob_spawn_points` VALUES (17096739,'Dark_Elemental','Dark Elemental',19,1.000,1.000,1.000,0); INSERT INTO `mob_spawn_points` VALUES (17096740,'Dark_Elemental','Dark Elemental',19,1.000,1.000,1.000,0); INSERT INTO `mob_spawn_points` VALUES (17096741,'Dark_Elemental','Dark Elemental',19,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096742,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096743,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096744,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096745,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096746,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096747,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096748,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096749,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096750,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096751,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096752,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096753,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096754,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096755,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096756,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096757,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096758,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096759,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096760,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096761,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096762,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096763,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096764,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096765,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096742,'Rotting_Huskarl_war','Rotting Huskarl',20,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096743,'Rotting_Huskarl_war','Rotting Huskarl',20,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096744,'Rotting_Huskarl_war','Rotting Huskarl',20,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096745,'Rotting_Huskarl_war','Rotting Huskarl',20,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096746,'Rotting_Huskarl_war','Rotting Huskarl',20,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096747,'Rotting_Huskarl_war','Rotting Huskarl',20,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096748,'Rotting_Huskarl_war','Rotting Huskarl',20,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096749,'Rotting_Huskarl_war','Rotting Huskarl',20,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096750,'Rotting_Huskarl_war','Rotting Huskarl',20,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096751,'Rotting_Huskarl_war','Rotting Huskarl',20,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096752,'Rotting_Huskarl_war','Rotting Huskarl',20,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096753,'Rotting_Huskarl_war','Rotting Huskarl',20,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096754,'Rotting_Huskarl_blm','Rotting Huskarl',91,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096755,'Rotting_Huskarl_blm','Rotting Huskarl',91,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096756,'Rotting_Huskarl_blm','Rotting Huskarl',91,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096757,'Rotting_Huskarl_blm','Rotting Huskarl',91,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096758,'Rotting_Huskarl_blm','Rotting Huskarl',91,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096759,'Rotting_Huskarl_blm','Rotting Huskarl',91,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096760,'Rotting_Huskarl_blm','Rotting Huskarl',91,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096761,'Rotting_Huskarl_blm','Rotting Huskarl',91,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096762,'Rotting_Huskarl_blm','Rotting Huskarl',91,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096763,'Rotting_Huskarl_blm','Rotting Huskarl',91,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096764,'Rotting_Huskarl_blm','Rotting Huskarl',91,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096765,'Rotting_Huskarl_blm','Rotting Huskarl',91,1.000,1.000,1.000,0); INSERT INTO `mob_spawn_points` VALUES (17096766,'Craven_Einherjar','Craven Einherjar',21,1.000,1.000,1.000,0); INSERT INTO `mob_spawn_points` VALUES (17096767,'Craven_Einherjar','Craven Einherjar',21,1.000,1.000,1.000,0); INSERT INTO `mob_spawn_points` VALUES (17096768,'Craven_Einherjar','Craven Einherjar',21,1.000,1.000,1.000,0); @@ -19957,30 +19957,30 @@ INSERT INTO `mob_spawn_points` VALUES (17096876,'Waldgeist','Waldgeist',30,1.000 INSERT INTO `mob_spawn_points` VALUES (17096877,'Waldgeist','Waldgeist',30,1.000,1.000,1.000,0); INSERT INTO `mob_spawn_points` VALUES (17096878,'Waldgeist','Waldgeist',30,1.000,1.000,1.000,0); INSERT INTO `mob_spawn_points` VALUES (17096879,'Waldgeist','Waldgeist',30,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096880,'Craven_Einherjar','Craven Einherjar',21,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096881,'Craven_Einherjar','Craven Einherjar',21,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096882,'Craven_Einherjar','Craven Einherjar',21,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096883,'Craven_Einherjar','Craven Einherjar',21,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096884,'Craven_Einherjar','Craven Einherjar',21,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096885,'Craven_Einherjar','Craven Einherjar',21,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096886,'Craven_Einherjar','Craven Einherjar',21,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096887,'Craven_Einherjar','Craven Einherjar',21,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096888,'Craven_Einherjar','Craven Einherjar',21,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096889,'Craven_Einherjar','Craven Einherjar',21,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096890,'Craven_Einherjar','Craven Einherjar',21,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096891,'Craven_Einherjar','Craven Einherjar',21,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096892,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096893,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096894,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096895,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096896,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096897,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096898,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096899,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096900,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096901,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096902,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17096903,'Rotting_Huskarl','Rotting Huskarl',20,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096880,'Craven_Einherjar_bhoot','Craven Einherjar',90,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096881,'Craven_Einherjar_bhoot','Craven Einherjar',90,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096882,'Craven_Einherjar_bhoot','Craven Einherjar',90,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096883,'Craven_Einherjar_bhoot','Craven Einherjar',90,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096884,'Craven_Einherjar_bhoot','Craven Einherjar',90,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096885,'Craven_Einherjar_bhoot','Craven Einherjar',90,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096886,'Craven_Einherjar_bhoot','Craven Einherjar',90,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096887,'Craven_Einherjar_bhoot','Craven Einherjar',90,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096888,'Craven_Einherjar_bhoot','Craven Einherjar',90,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096889,'Craven_Einherjar_bhoot','Craven Einherjar',90,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096890,'Craven_Einherjar_bhoot','Craven Einherjar',90,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096891,'Craven_Einherjar_bhoot','Craven Einherjar',90,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096892,'Rotting_Huskarl_drk','Rotting Huskarl',92,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096893,'Rotting_Huskarl_thf','Rotting Huskarl',93,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096894,'Rotting_Huskarl_drk','Rotting Huskarl',92,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096895,'Rotting_Huskarl_thf','Rotting Huskarl',93,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096896,'Rotting_Huskarl_drk','Rotting Huskarl',92,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096897,'Rotting_Huskarl_thf','Rotting Huskarl',93,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096898,'Rotting_Huskarl_drk','Rotting Huskarl',92,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096899,'Rotting_Huskarl_thf','Rotting Huskarl',93,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096900,'Rotting_Huskarl_drk','Rotting Huskarl',92,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096901,'Rotting_Huskarl_thf','Rotting Huskarl',93,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096902,'Rotting_Huskarl_drk','Rotting Huskarl',92,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17096903,'Rotting_Huskarl_thf','Rotting Huskarl',93,1.000,1.000,1.000,0); INSERT INTO `mob_spawn_points` VALUES (17096904,'Odins_Fool','Odin\'s Fool',31,1.000,1.000,1.000,0); INSERT INTO `mob_spawn_points` VALUES (17096905,'Odins_Fool','Odin\'s Fool',31,1.000,1.000,1.000,0); INSERT INTO `mob_spawn_points` VALUES (17096906,'Odins_Fool','Odin\'s Fool',31,1.000,1.000,1.000,0); @@ -20293,12 +20293,12 @@ INSERT INTO `mob_spawn_points` VALUES (17097212,'Bugard-X','Bugard-X',71,1.000,1 INSERT INTO `mob_spawn_points` VALUES (17097213,'Bugard-X','Bugard-X',71,1.000,1.000,1.000,0); INSERT INTO `mob_spawn_points` VALUES (17097214,'Bugard-X','Bugard-X',71,1.000,1.000,1.000,0); INSERT INTO `mob_spawn_points` VALUES (17097215,'Bugard-X','Bugard-X',71,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17097216,'Djigga','Djigga',49,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17097217,'Djigga','Djigga',49,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17097218,'Djigga','Djigga',49,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17097219,'Djigga','Djigga',49,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17097220,'Djigga','Djigga',49,1.000,1.000,1.000,0); -INSERT INTO `mob_spawn_points` VALUES (17097221,'Djigga','Djigga',49,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17097216,'Djigga_Hildesvini','Djigga',94,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17097217,'Djigga_Hildesvini','Djigga',94,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17097218,'Djigga_Hildesvini','Djigga',94,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17097219,'Djigga_Hildesvini','Djigga',94,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17097220,'Djigga_Hildesvini','Djigga',94,1.000,1.000,1.000,0); +INSERT INTO `mob_spawn_points` VALUES (17097221,'Djigga_Hildesvini','Djigga',94,1.000,1.000,1.000,0); INSERT INTO `mob_spawn_points` VALUES (17097222,'Vampyr_Bats','Vampyr Bats',72,1.000,1.000,1.000,0); INSERT INTO `mob_spawn_points` VALUES (17097223,'Vampyr_Bats','Vampyr Bats',72,1.000,1.000,1.000,0); INSERT INTO `mob_spawn_points` VALUES (17097224,'Vampyr_Bats','Vampyr Bats',72,1.000,1.000,1.000,0); diff --git a/sql/npc_list.sql b/sql/npc_list.sql index 8ecb4710525..9c6135cbf20 100644 --- a/sql/npc_list.sql +++ b/sql/npc_list.sql @@ -7804,24 +7804,24 @@ INSERT INTO `npc_list` VALUES (17096710,'qm1','???',0,0.000,0.000,0.000,0,40,40, INSERT INTO `npc_list` VALUES (17097270,'Odin','Odin',0,0.000,0.000,0.000,0,40,40,0,0,0,6,27,0x0000250700000000000000000000000000000000,0,'TOAU',1); -INSERT INTO `npc_list` VALUES (17097280,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,0,0,6,3,0x0000320000000000000000000000000000000000,0,'TOAU',1); -- Einherjar: Reward crates -INSERT INTO `npc_list` VALUES (17097281,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,0,0,6,3,0x0000320000000000000000000000000000000000,0,'TOAU',1); -INSERT INTO `npc_list` VALUES (17097282,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,0,0,6,3,0x0000320000000000000000000000000000000000,0,'TOAU',1); -INSERT INTO `npc_list` VALUES (17097283,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,0,0,6,3,0x0000320000000000000000000000000000000000,0,'TOAU',1); -INSERT INTO `npc_list` VALUES (17097284,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,0,0,6,3,0x0000320000000000000000000000000000000000,0,'TOAU',1); -INSERT INTO `npc_list` VALUES (17097285,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,0,0,6,3,0x0000320000000000000000000000000000000000,0,'TOAU',1); -INSERT INTO `npc_list` VALUES (17097286,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,0,0,6,3,0x0000320000000000000000000000000000000000,0,'TOAU',1); -INSERT INTO `npc_list` VALUES (17097287,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,0,0,6,3,0x0000320000000000000000000000000000000000,0,'TOAU',1); -INSERT INTO `npc_list` VALUES (17097288,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,0,0,6,3,0x0000320000000000000000000000000000000000,0,'TOAU',1); -INSERT INTO `npc_list` VALUES (17097289,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,0,0,6,3,0x0000320000000000000000000000000000000000,0,'TOAU',1); -- Einherjar: Temporary items crates -INSERT INTO `npc_list` VALUES (17097290,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,0,0,6,3,0x0000320000000000000000000000000000000000,0,'TOAU',1); -INSERT INTO `npc_list` VALUES (17097291,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,0,0,6,3,0x0000320000000000000000000000000000000000,0,'TOAU',1); -INSERT INTO `npc_list` VALUES (17097292,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,0,0,6,3,0x0000320000000000000000000000000000000000,0,'TOAU',1); -INSERT INTO `npc_list` VALUES (17097293,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,0,0,6,3,0x0000320000000000000000000000000000000000,0,'TOAU',1); -INSERT INTO `npc_list` VALUES (17097294,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,0,0,6,3,0x0000320000000000000000000000000000000000,0,'TOAU',1); -INSERT INTO `npc_list` VALUES (17097295,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,0,0,6,3,0x0000320000000000000000000000000000000000,0,'TOAU',1); -INSERT INTO `npc_list` VALUES (17097296,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,0,0,6,3,0x0000320000000000000000000000000000000000,0,'TOAU',1); -INSERT INTO `npc_list` VALUES (17097297,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,0,0,6,3,0x0000320000000000000000000000000000000000,0,'TOAU',1); +INSERT INTO `npc_list` VALUES (17097280,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,8,0,6,1155,0x0000C10300000000000000000000000000000000,0,'TOAU',1); -- Einherjar: Reward crates +INSERT INTO `npc_list` VALUES (17097281,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,8,0,6,1155,0x0000C10300000000000000000000000000000000,0,'TOAU',1); +INSERT INTO `npc_list` VALUES (17097282,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,8,0,6,1155,0x0000C10300000000000000000000000000000000,0,'TOAU',1); +INSERT INTO `npc_list` VALUES (17097283,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,8,0,6,1155,0x0000C10300000000000000000000000000000000,0,'TOAU',1); +INSERT INTO `npc_list` VALUES (17097284,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,8,0,6,1155,0x0000C10300000000000000000000000000000000,0,'TOAU',1); +INSERT INTO `npc_list` VALUES (17097285,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,8,0,6,1155,0x0000C10300000000000000000000000000000000,0,'TOAU',1); +INSERT INTO `npc_list` VALUES (17097286,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,8,0,6,1155,0x0000C10300000000000000000000000000000000,0,'TOAU',1); +INSERT INTO `npc_list` VALUES (17097287,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,8,0,6,1155,0x0000C10300000000000000000000000000000000,0,'TOAU',1); +INSERT INTO `npc_list` VALUES (17097288,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,8,0,6,1155,0x0000C10300000000000000000000000000000000,0,'TOAU',1); +INSERT INTO `npc_list` VALUES (17097289,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,14,4,7,1155,0x0000C50300000000000000000000000000000000,0,'TOAU',1); -- Einherjar: Temporary items crates +INSERT INTO `npc_list` VALUES (17097290,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,14,4,7,1155,0x0000C50300000000000000000000000000000000,0,'TOAU',1); +INSERT INTO `npc_list` VALUES (17097291,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,14,4,7,1155,0x0000C50300000000000000000000000000000000,0,'TOAU',1); +INSERT INTO `npc_list` VALUES (17097292,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,14,4,7,1155,0x0000C50300000000000000000000000000000000,0,'TOAU',1); +INSERT INTO `npc_list` VALUES (17097293,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,14,4,7,1155,0x0000C50300000000000000000000000000000000,0,'TOAU',1); +INSERT INTO `npc_list` VALUES (17097294,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,14,4,7,1155,0x0000C50300000000000000000000000000000000,0,'TOAU',1); +INSERT INTO `npc_list` VALUES (17097295,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,14,4,7,1155,0x0000C50300000000000000000000000000000000,0,'TOAU',1); +INSERT INTO `npc_list` VALUES (17097296,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,14,4,7,1155,0x0000C50300000000000000000000000000000000,0,'TOAU',1); +INSERT INTO `npc_list` VALUES (17097297,'Armoury_Crate','Armoury Crate',0,0.000,0.000,0.000,0,40,40,0,14,4,7,1155,0x0000C50300000000000000000000000000000000,0,'TOAU',1); -- NC: INSERT INTO `npc_list` VALUES (17097298,'NOT_CAPTURED','Odin Prime',0,0.000,0.000,0.000,0,50,50,0,0,0,0,0,0x0000320000000000000000000000000000000000,0,NULL,0);