From 8c23e97bd172d2186e4155edf52b81bd7291ec25 Mon Sep 17 00:00:00 2001 From: Frankie-hz <105882754+Frankie-hz@users.noreply.github.com> Date: Wed, 1 May 2024 20:34:25 -0400 Subject: [PATCH 01/13] Shift-proof West Ronfaure Shift-proof West Ronfaure --- scripts/zones/West_Ronfaure/IDs.lua | 14 ++++---------- scripts/zones/West_Ronfaure/mobs/Forest_Hare.lua | 7 ++++++- scripts/zones/West_Ronfaure/mobs/Scarab_Beetle.lua | 7 ++++++- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/scripts/zones/West_Ronfaure/IDs.lua b/scripts/zones/West_Ronfaure/IDs.lua index af1a3567ff5..8e6967eb1ff 100644 --- a/scripts/zones/West_Ronfaure/IDs.lua +++ b/scripts/zones/West_Ronfaure/IDs.lua @@ -54,19 +54,13 @@ zones[xi.zone.WEST_RONFAURE] = }, mob = { - FUNGUS_BEETLE_PH = - { - [17187026] = 17187047, -- -332.722 -21.032 -112.044 - }, - JAGGEDY_EARED_JACK_PH = - { - [17187110] = 17187111, -- -262.780 -22.384 -253.873 - }, - MARAUDER_DVOGZOG = 17187273, + FUNGUS_BEETLE = GetFirstID('Fungus_Beetle'), + JAGGEDY_EARED_JACK = GetFirstID('Jaggedy-Eared_Jack'), + MARAUDER_DVOGZOG = GetFirstID('Marauder_Dvogzog'), }, npc = { - SIGNPOST_OFFSET = 17187506, + SIGNPOST_OFFSET = GetFirstID('Signpost'), OVERSEER_BASE = GetFirstID('Doladepaiton_RK'), }, } diff --git a/scripts/zones/West_Ronfaure/mobs/Forest_Hare.lua b/scripts/zones/West_Ronfaure/mobs/Forest_Hare.lua index 3e8032a762e..ca6eaeacd6e 100644 --- a/scripts/zones/West_Ronfaure/mobs/Forest_Hare.lua +++ b/scripts/zones/West_Ronfaure/mobs/Forest_Hare.lua @@ -7,12 +7,17 @@ local ID = zones[xi.zone.WEST_RONFAURE] ----------------------------------- local entity = {} +local jaggedyPHTable = +{ + [ID.mob.JAGGEDY_EARED_JACK - 1] = ID.mob.JAGGEDY_EARED_JACK -- -262.780 -22.384 -253.873 +} + entity.onMobDeath = function(mob, player, optParams) xi.regime.checkRegime(player, mob, 2, 1, xi.regime.type.FIELDS) end entity.onMobDespawn = function(mob) - xi.mob.phOnDespawn(mob, ID.mob.JAGGEDY_EARED_JACK_PH, 9, 2400) -- 40 minute minimum + xi.mob.phOnDespawn(mob, jaggedyPHTable, 9, 2400) -- 40 minute minimum end return entity diff --git a/scripts/zones/West_Ronfaure/mobs/Scarab_Beetle.lua b/scripts/zones/West_Ronfaure/mobs/Scarab_Beetle.lua index 0fa9fd4685d..2371df265ac 100644 --- a/scripts/zones/West_Ronfaure/mobs/Scarab_Beetle.lua +++ b/scripts/zones/West_Ronfaure/mobs/Scarab_Beetle.lua @@ -7,13 +7,18 @@ local ID = zones[xi.zone.WEST_RONFAURE] ----------------------------------- local entity = {} +local fungusPHTable = +{ + [ID.mob.FUNGUS_BEETLE - 21] = ID.mob.FUNGUS_BEETLE, -- -332.722 -21.032 -112.044 +} + entity.onMobDeath = function(mob, player, optParams) xi.regime.checkRegime(player, mob, 3, 1, xi.regime.type.FIELDS) xi.regime.checkRegime(player, mob, 4, 2, xi.regime.type.FIELDS) end entity.onMobDespawn = function(mob) - xi.mob.phOnDespawn(mob, ID.mob.FUNGUS_BEETLE_PH, 10, 900) -- 15 minute minimum + xi.mob.phOnDespawn(mob, fungusPHTable, 10, 900) -- 15 minute minimum end return entity From a57f0dc9359e74c7b03284c54224158ae3746826 Mon Sep 17 00:00:00 2001 From: Frankie-hz <105882754+Frankie-hz@users.noreply.github.com> Date: Wed, 1 May 2024 20:35:41 -0400 Subject: [PATCH 02/13] Shift-proof Wajaom Woodlands Shift-proof Wajaom Woodlands --- scripts/zones/Wajaom_Woodlands/IDs.lua | 27 +++++-------------- .../Wajaom_Woodlands/mobs/Great_Ameretat.lua | 8 +++++- .../Wajaom_Woodlands/mobs/Lesser_Colibri.lua | 12 ++++++++- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/scripts/zones/Wajaom_Woodlands/IDs.lua b/scripts/zones/Wajaom_Woodlands/IDs.lua index 06e0d7cf8d3..b4f62e020b9 100644 --- a/scripts/zones/Wajaom_Woodlands/IDs.lua +++ b/scripts/zones/Wajaom_Woodlands/IDs.lua @@ -39,26 +39,13 @@ zones[xi.zone.WAJAOM_WOODLANDS] = { ['Marid'] = GetTableOfIDs('Chigoe', 5), }, - JADED_JODY_PH = - { - [16986376] = 16986378, -- -560 -8 -360 - [16986390] = 16986378, -- -565 -7 -324 - }, - ZORAAL_JA_S_PKUUCHA_PH = - { - [16986191] = 16986197, -- 181.000 -18.000 -63.000 - [16986192] = 16986197, -- 181.000 -19.000 -77.000 - [16986193] = 16986197, -- 195.000 -18.000 -95.000 - [16986194] = 16986197, -- 220.000 -19.000 -80.000 - [16986195] = 16986197, -- 219.000 -18.000 -59.000 - [16986196] = 16986197, -- 203.000 -16.000 -74.000 - }, - ZORAAL_JA_S_PKUUCHA = 16986197, - PERCIPIENT_ZORAAL_JA = 16986198, - VULPANGUE = 16986428, - IRIZ_IMA = 16986429, - GOTOH_ZHA_THE_REDOLENT = 16986430, - TINNIN = 16986431, + JADED_JODY = GetFirstID('Jaded_Jody'), + ZORAAL_JA_S_PKUUCHA = GetFirstID('Zoraal_Jas_Pkuucha'), + PERCIPIENT_ZORAAL_JA = GetFirstID('Percipient_Zoraal_Ja'), + VULPANGUE = GetFirstID('Vulpangue'), + IRIZ_IMA = GetFirstID('Iriz_Ima'), + GOTOH_ZHA_THE_REDOLENT = GetFirstID('Gotoh_Zha_the_Redolent'), + TINNIN = GetFirstID('Tinnin'), }, npc = { diff --git a/scripts/zones/Wajaom_Woodlands/mobs/Great_Ameretat.lua b/scripts/zones/Wajaom_Woodlands/mobs/Great_Ameretat.lua index 38cd4790736..b74cff62979 100644 --- a/scripts/zones/Wajaom_Woodlands/mobs/Great_Ameretat.lua +++ b/scripts/zones/Wajaom_Woodlands/mobs/Great_Ameretat.lua @@ -7,11 +7,17 @@ local ID = zones[xi.zone.WAJAOM_WOODLANDS] ----------------------------------- local entity = {} +local jodyPHTable = +{ + [ID.mob.JADED_JODY - 2] = ID.mob.JADED_JODY, -- -560 -8 -360 + [ID.mob.JADED_JODY + 12] = ID.mob.JADED_JODY, -- -565 -7 -324 +} + entity.onMobDeath = function(mob, player, optParams) end entity.onMobDespawn = function(mob) - xi.mob.phOnDespawn(mob, ID.mob.JADED_JODY_PH, 10, 7200) -- 2 hours + xi.mob.phOnDespawn(mob, jodyPHTable, 10, 7200) -- 2 hours end return entity diff --git a/scripts/zones/Wajaom_Woodlands/mobs/Lesser_Colibri.lua b/scripts/zones/Wajaom_Woodlands/mobs/Lesser_Colibri.lua index b6a71525a05..64821c17f97 100644 --- a/scripts/zones/Wajaom_Woodlands/mobs/Lesser_Colibri.lua +++ b/scripts/zones/Wajaom_Woodlands/mobs/Lesser_Colibri.lua @@ -7,11 +7,21 @@ local ID = zones[xi.zone.WAJAOM_WOODLANDS] ----------------------------------- local entity = {} +local zoraalPHTable = +{ + [ID.mob.ZORAAL_JA_S_PKUUCHA - 6] = ID.mob.ZORAAL_JA_S_PKUUCHA, -- 181.000 -18.000 -63.000 + [ID.mob.ZORAAL_JA_S_PKUUCHA - 5] = ID.mob.ZORAAL_JA_S_PKUUCHA, -- 181.000 -19.000 -77.000 + [ID.mob.ZORAAL_JA_S_PKUUCHA - 4] = ID.mob.ZORAAL_JA_S_PKUUCHA, -- 195.000 -18.000 -95.000 + [ID.mob.ZORAAL_JA_S_PKUUCHA - 3] = ID.mob.ZORAAL_JA_S_PKUUCHA, -- 220.000 -19.000 -80.000 + [ID.mob.ZORAAL_JA_S_PKUUCHA - 2] = ID.mob.ZORAAL_JA_S_PKUUCHA, -- 219.000 -18.000 -59.000 + [ID.mob.ZORAAL_JA_S_PKUUCHA - 1] = ID.mob.ZORAAL_JA_S_PKUUCHA, -- 203.000 -16.000 -74.000 +} + entity.onMobDeath = function(mob, player, optParams) end entity.onMobDespawn = function(mob) - xi.mob.phOnDespawn(mob, ID.mob.ZORAAL_JA_S_PKUUCHA_PH, 5, math.random(1800, 43200)) -- 30 minutes to 12 hours + xi.mob.phOnDespawn(mob, zoraalPHTable, 5, math.random(1800, 43200)) -- 30 minutes to 12 hours end return entity From 494dbd25c132d267c90b0859c77faf62f860292a Mon Sep 17 00:00:00 2001 From: Frankie-hz <105882754+Frankie-hz@users.noreply.github.com> Date: Wed, 1 May 2024 20:37:15 -0400 Subject: [PATCH 03/13] Shift-proof VeLugannon Palace Shift-proof VeLugannon Palace --- scripts/zones/VeLugannon_Palace/IDs.lua | 31 +++++-------------- .../zones/VeLugannon_Palace/mobs/Detector.lua | 15 ++++++++- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/scripts/zones/VeLugannon_Palace/IDs.lua b/scripts/zones/VeLugannon_Palace/IDs.lua index 1986bc02822..9e5b890bcbd 100644 --- a/scripts/zones/VeLugannon_Palace/IDs.lua +++ b/scripts/zones/VeLugannon_Palace/IDs.lua @@ -30,32 +30,17 @@ zones[xi.zone.VELUGANNON_PALACE] = }, mob = { - MIMIC = 17502567, - BRIGANDISH_BLADE = 17502568, - STEAM_CLEANER = 17502569, - STEAM_CLEANER_DETECTORS = - { - -- E Lower Chamber - 17502543, - 17502545, - -- W Lower Chamber - 17502547, - 17502549, - -- NE Lower Chamber - 17502551, - 17502553, - -- NW Lower Chamber - 17502555, - 17502557, - }, + MIMIC = GetFirstID('Mimic'), + BRIGANDISH_BLADE = GetFirstID('Brigandish_Blade'), + STEAM_CLEANER = GetFirstID('Steam_Cleaner'), }, npc = { - QM3 = 17502583, - Y_DOOR_OFFSET = 17502609, - B_DOOR_OFFSET = 17502617, - Y_LITH_OFFSET = 17502625, - B_LITH_OFFSET = 17502635, + QM3 = GetFirstID('qm3'), + Y_DOOR_OFFSET = GetFirstID('_4x0'), + B_DOOR_OFFSET = GetFirstID('_4x8'), + Y_LITH_OFFSET = GetTableOfIDs('Monolith')[1], + B_LITH_OFFSET = GetTableOfIDs('Monolith')[6], TREASURE_COFFER = GetFirstID('Treasure_Coffer'), }, } diff --git a/scripts/zones/VeLugannon_Palace/mobs/Detector.lua b/scripts/zones/VeLugannon_Palace/mobs/Detector.lua index 3d795b432b1..dcbaca3f976 100644 --- a/scripts/zones/VeLugannon_Palace/mobs/Detector.lua +++ b/scripts/zones/VeLugannon_Palace/mobs/Detector.lua @@ -6,13 +6,26 @@ local ID = zones[xi.zone.VELUGANNON_PALACE] ----------------------------------- local entity = {} +local detectorPHTable = +{ + + ID.mob.STEAM_CLEANER - 26, -- E Lower Chamber + ID.mob.STEAM_CLEANER - 24, -- E Lower Chamber + ID.mob.STEAM_CLEANER - 22, -- W Lower Chamber + ID.mob.STEAM_CLEANER - 20, -- W Lower Chamber + ID.mob.STEAM_CLEANER - 18, -- NE Lower Chamber + ID.mob.STEAM_CLEANER - 16, -- NE Lower Chamber + ID.mob.STEAM_CLEANER - 14, -- NW Lower Chamber + ID.mob.STEAM_CLEANER - 12, -- NW Lower Chamber +} + entity.onMobSpawn = function(mob) mob:setLocalVar('petCount', 1) end local getMobToSpawn = function(detector) local detectorID = detector:getID() - local canSpawnSteamCleaner = GetServerVariable('[POP]SteamCleaner') < os.time() and utils.contains(detectorID, ID.mob.STEAM_CLEANER_DETECTORS) + local canSpawnSteamCleaner = GetServerVariable('[POP]SteamCleaner') < os.time() and utils.contains(detectorID, detectorPHTable) local steamCleanerSpawnChance = 10 -- percent local steamCleaner = GetMobByID(ID.mob.STEAM_CLEANER) From 8c9f92d66b0f0c054c421c1c0567eaa348839a80 Mon Sep 17 00:00:00 2001 From: Frankie-hz <105882754+Frankie-hz@users.noreply.github.com> Date: Wed, 1 May 2024 20:37:29 -0400 Subject: [PATCH 04/13] Shift-proof Valley of Sorrows Shift-proof Valley of Sorrows --- scripts/zones/Valley_of_Sorrows/IDs.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/zones/Valley_of_Sorrows/IDs.lua b/scripts/zones/Valley_of_Sorrows/IDs.lua index ede217b0a71..59135837a49 100644 --- a/scripts/zones/Valley_of_Sorrows/IDs.lua +++ b/scripts/zones/Valley_of_Sorrows/IDs.lua @@ -33,12 +33,12 @@ zones[xi.zone.VALLEY_OF_SORROWS] = }, mob = { - ADAMANTOISE = 17301537, - ASPIDOCHELONE = 17301538, + ADAMANTOISE = GetFirstID('Adamantoise'), + ASPIDOCHELONE = GetFirstID('Aspidochelone'), }, npc = { - ADAMANTOISE_QM = 17301568, + ADAMANTOISE_QM = GetFirstID('qm1'), }, } From d67e895b0095ae7be5f90d7409aa3cb7f21c91b7 Mon Sep 17 00:00:00 2001 From: Frankie-hz <105882754+Frankie-hz@users.noreply.github.com> Date: Wed, 1 May 2024 20:37:52 -0400 Subject: [PATCH 05/13] Shift-proof Valkurm Dunes Shift-proof Valkurm Dunes --- scripts/zones/Valkurm_Dunes/IDs.lua | 20 ++++++------------- .../zones/Valkurm_Dunes/mobs/Damselfly.lua | 7 ++++++- .../zones/Valkurm_Dunes/mobs/Giant_Bat.lua | 9 ++++++++- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/scripts/zones/Valkurm_Dunes/IDs.lua b/scripts/zones/Valkurm_Dunes/IDs.lua index 21b911fdd19..ea08a462b91 100644 --- a/scripts/zones/Valkurm_Dunes/IDs.lua +++ b/scripts/zones/Valkurm_Dunes/IDs.lua @@ -49,23 +49,15 @@ zones[xi.zone.VALKURM_DUNES] = }, mob = { - VALKURM_EMPEROR_PH = - { - [17199434] = 17199438, -- -228.957 2.776 -101.226 - }, - GOLDEN_BAT_PH = - { - [17199562] = 17199564, -- -804.502 -8.567 22.082 - [17199563] = 17199564, -- -798.674 -8.672 19.204 - [17199461] = 17199564, -- -296.679 -0.510 -164.298 - }, - MARCHELUTE = 17199566, - DOMAN = 17199567, - ONRYO = 17199568, + VALKURM_EMPEROR = GetFirstID('Valkurm_Emperor'), + GOLDEN_BAT = GetFirstID('Golden_Bat'), + MARCHELUTE = GetFirstID('Marchelute'), + DOMAN = GetFirstID('Doman'), + ONRYO = GetFirstID('Onryo'), }, npc = { - SUNSAND_QM = 17199700, -- qm1 in npc_list + SUNSAND_QM = GetFirstID('qm1'), OVERSEER_BASE = GetFirstID('Quanteilleron_RK'), }, } diff --git a/scripts/zones/Valkurm_Dunes/mobs/Damselfly.lua b/scripts/zones/Valkurm_Dunes/mobs/Damselfly.lua index 7d7884db2d3..564039ae62e 100644 --- a/scripts/zones/Valkurm_Dunes/mobs/Damselfly.lua +++ b/scripts/zones/Valkurm_Dunes/mobs/Damselfly.lua @@ -7,13 +7,18 @@ local ID = zones[xi.zone.VALKURM_DUNES] ----------------------------------- local entity = {} +local emperorPHList = +{ + [ID.mob.VALKURM_EMPEROR - 4] = ID.mob.VALKURM_EMPEROR, -- -228.957 2.776 -101.226 +} + entity.onMobDeath = function(mob, player, optParams) xi.regime.checkRegime(player, mob, 9, 1, xi.regime.type.FIELDS) xi.regime.checkRegime(player, mob, 10, 2, xi.regime.type.FIELDS) end entity.onMobDespawn = function(mob) - xi.mob.phOnDespawn(mob, ID.mob.VALKURM_EMPEROR_PH, 10, 3600) -- 1 hour + xi.mob.phOnDespawn(mob, emperorPHList, 10, 3600) -- 1 hour end return entity diff --git a/scripts/zones/Valkurm_Dunes/mobs/Giant_Bat.lua b/scripts/zones/Valkurm_Dunes/mobs/Giant_Bat.lua index 90e87c21084..395a9213a71 100644 --- a/scripts/zones/Valkurm_Dunes/mobs/Giant_Bat.lua +++ b/scripts/zones/Valkurm_Dunes/mobs/Giant_Bat.lua @@ -7,11 +7,18 @@ local ID = zones[xi.zone.VALKURM_DUNES] ----------------------------------- local entity = {} +local goldenBatPHTable = +{ + [ID.mob.GOLDEN_BAT - 3] = ID.mob.GOLDEN_BAT, -- -296.679 -0.510 -164.298 + [ID.mob.GOLDEN_BAT - 2] = ID.mob.GOLDEN_BAT, -- -804.502 -8.567 22.082 + [ID.mob.GOLDEN_BAT - 1] = ID.mob.GOLDEN_BAT, -- -798.674 -8.672 19.204 +} + entity.onMobDeath = function(mob, player, optParams) end entity.onMobDespawn = function(mob) - xi.mob.phOnDespawn(mob, ID.mob.GOLDEN_BAT_PH, 5, 3600) -- 1 hour minimum + xi.mob.phOnDespawn(mob, goldenBatPHTable, 5, 3600) -- 1 hour minimum end return entity From df56f0dc90ea938da14fe6b38e2aaf34b55dbe9a Mon Sep 17 00:00:00 2001 From: Frankie-hz <105882754+Frankie-hz@users.noreply.github.com> Date: Wed, 1 May 2024 23:01:03 -0400 Subject: [PATCH 06/13] Shift-proof Upper Jeuno --- scripts/zones/Upper_Jeuno/IDs.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/zones/Upper_Jeuno/IDs.lua b/scripts/zones/Upper_Jeuno/IDs.lua index 8d9895383cd..719877ce0b9 100644 --- a/scripts/zones/Upper_Jeuno/IDs.lua +++ b/scripts/zones/Upper_Jeuno/IDs.lua @@ -43,7 +43,7 @@ zones[xi.zone.UPPER_JEUNO] = }, npc = { - MAPITOTO = 17776896, + MAPITOTO = GetFirstID('Mapitoto'), }, } From f4a39d562854f1dea1f58f6f3b52ad0c5304895e Mon Sep 17 00:00:00 2001 From: Frankie-hz <105882754+Frankie-hz@users.noreply.github.com> Date: Wed, 1 May 2024 23:03:09 -0400 Subject: [PATCH 07/13] Shift-proof Upper Delkfutts Tower --- scripts/zones/Upper_Delkfutts_Tower/IDs.lua | 20 ++++--------------- .../mobs/Gigas_Bonecutter.lua | 8 +++++++- .../Upper_Delkfutts_Tower/mobs/Phasma.lua | 13 +++++++++++- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/scripts/zones/Upper_Delkfutts_Tower/IDs.lua b/scripts/zones/Upper_Delkfutts_Tower/IDs.lua index cb6310f5d65..bf858fdc7f5 100644 --- a/scripts/zones/Upper_Delkfutts_Tower/IDs.lua +++ b/scripts/zones/Upper_Delkfutts_Tower/IDs.lua @@ -32,22 +32,10 @@ zones[xi.zone.UPPER_DELKFUTTS_TOWER] = }, mob = { - ENKELADOS_PH = - { - [17424388] = 17424385, -- -371.586 -144.367 28.244 - [17424426] = 17424423, -- -215.194 -144.099 19.528 - }, - IXTAB_PH = - { - [17424472] = 17424475, - [17424473] = 17424475, - [17424474] = 17424475, - [17424509] = 17424512, - [17424510] = 17424512, - [17424511] = 17424512, - }, - PALLAS = 17424444, - ALKYONEUS = 17424480, + ENKELADOS = GetTableOfIDs('Enkelados'), + IXTAB = GetTableOfIDs('Ixtab'), + PALLAS = GetFirstID('Pallas'), + ALKYONEUS = GetFirstID('Alkyoneus'), }, npc = { diff --git a/scripts/zones/Upper_Delkfutts_Tower/mobs/Gigas_Bonecutter.lua b/scripts/zones/Upper_Delkfutts_Tower/mobs/Gigas_Bonecutter.lua index 1dc51502edd..ea690ba4c2a 100644 --- a/scripts/zones/Upper_Delkfutts_Tower/mobs/Gigas_Bonecutter.lua +++ b/scripts/zones/Upper_Delkfutts_Tower/mobs/Gigas_Bonecutter.lua @@ -7,12 +7,18 @@ local ID = zones[xi.zone.UPPER_DELKFUTTS_TOWER] ----------------------------------- local entity = {} +local enkeladosPHTable = +{ + [ID.mob.ENKELADOS[1] + 3] = ID.mob.ENKELADOS[1], -- -371.586 -144.367 28.244 + [ID.mob.ENKELADOS[2] + 3] = ID.mob.ENKELADOS[2], -- -215.194 -144.099 19.528 +} + entity.onMobDeath = function(mob, player, optParams) xi.regime.checkRegime(player, mob, 785, 1, xi.regime.type.GROUNDS) end entity.onMobDespawn = function(mob) - xi.mob.phOnDespawn(mob, ID.mob.ENKELADOS_PH, 5, 1) -- no cooldown + xi.mob.phOnDespawn(mob, enkeladosPHTable, 5, 1) -- no cooldown end return entity diff --git a/scripts/zones/Upper_Delkfutts_Tower/mobs/Phasma.lua b/scripts/zones/Upper_Delkfutts_Tower/mobs/Phasma.lua index 49f1c34710f..98288df33d1 100644 --- a/scripts/zones/Upper_Delkfutts_Tower/mobs/Phasma.lua +++ b/scripts/zones/Upper_Delkfutts_Tower/mobs/Phasma.lua @@ -7,11 +7,22 @@ local ID = zones[xi.zone.UPPER_DELKFUTTS_TOWER] ----------------------------------- local entity = {} +local ixtabPHTable = +{ + [ID.mob.IXTAB[1] - 3] = ID.mob.IXTAB[1], + [ID.mob.IXTAB[1] - 2] = ID.mob.IXTAB[1], + [ID.mob.IXTAB[1] - 1] = ID.mob.IXTAB[1], + + [ID.mob.IXTAB[2] - 3] = ID.mob.IXTAB[2], + [ID.mob.IXTAB[2] - 2] = ID.mob.IXTAB[2], + [ID.mob.IXTAB[2] - 1] = ID.mob.IXTAB[2], +} + entity.onMobDeath = function(mob, player, optParams) end entity.onMobDespawn = function(mob) - xi.mob.phOnDespawn(mob, ID.mob.IXTAB_PH, 5, 3600) -- 1 hour + xi.mob.phOnDespawn(mob, ixtabPHTable, 5, 3600) -- 1 hour end return entity From 159dd9b392516e679f842f69230a46311bf52cc9 Mon Sep 17 00:00:00 2001 From: Frankie-hz <105882754+Frankie-hz@users.noreply.github.com> Date: Wed, 1 May 2024 23:07:19 -0400 Subject: [PATCH 08/13] Shift-proof Toraimarai Canal --- scripts/zones/Toraimarai_Canal/IDs.lua | 22 +++++-------------- .../Toraimarai_Canal/mobs/Bouncing_Ball.lua | 9 +++++++- .../zones/Toraimarai_Canal/mobs/Mousse.lua | 9 +++++++- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/scripts/zones/Toraimarai_Canal/IDs.lua b/scripts/zones/Toraimarai_Canal/IDs.lua index 774d93bf554..540c6559309 100644 --- a/scripts/zones/Toraimarai_Canal/IDs.lua +++ b/scripts/zones/Toraimarai_Canal/IDs.lua @@ -32,25 +32,15 @@ zones[xi.zone.TORAIMARAI_CANAL] = }, mob = { - CANAL_MOOCHER_PH = - { - [17469575] = 17469578, - [17469576] = 17469578, - [17469577] = 17469578, - }, - KONJAC_PH = - { - [17469629] = 17469632, - [17469630] = 17469632, - [17469631] = 17469632, - }, - MAGIC_SLUDGE = 17469516, - HINGE_OILS_OFFSET = 17469666, - MIMIC = 17469761, + CANAL_MOOCHER = GetFirstID('Canal_Moocher'), + KONJAC = GetFirstID('Konjac'), + MAGIC_SLUDGE = GetFirstID('Magic_Sludge'), + HINGE_OILS_OFFSET = GetFirstID('Hinge_Oil'), + MIMIC = GetFirstID('Mimic'), }, npc = { - TOME_OF_MAGIC_OFFSET = 17469829, + TOME_OF_MAGIC_OFFSET = GetFirstID('Tome_of_Magic'), TREASURE_COFFER = GetFirstID('Treasure_Coffer'), }, } diff --git a/scripts/zones/Toraimarai_Canal/mobs/Bouncing_Ball.lua b/scripts/zones/Toraimarai_Canal/mobs/Bouncing_Ball.lua index f5743549e2f..c13d5b5a5f7 100644 --- a/scripts/zones/Toraimarai_Canal/mobs/Bouncing_Ball.lua +++ b/scripts/zones/Toraimarai_Canal/mobs/Bouncing_Ball.lua @@ -7,11 +7,18 @@ local ID = zones[xi.zone.TORAIMARAI_CANAL] ----------------------------------- local entity = {} +local canalMoocherPHTable = +{ + [ID.mob.CANAL_MOOCHER - 3] = ID.mob.CANAL_MOOCHER, + [ID.mob.CANAL_MOOCHER - 2] = ID.mob.CANAL_MOOCHER, + [ID.mob.CANAL_MOOCHER - 1] = ID.mob.CANAL_MOOCHER, +} + entity.onMobDeath = function(mob, player, optParams) end entity.onMobDespawn = function(mob) - xi.mob.phOnDespawn(mob, ID.mob.CANAL_MOOCHER_PH, 10, 3600) -- 1 hour + xi.mob.phOnDespawn(mob, canalMoocherPHTable, 10, 3600) -- 1 hour end return entity diff --git a/scripts/zones/Toraimarai_Canal/mobs/Mousse.lua b/scripts/zones/Toraimarai_Canal/mobs/Mousse.lua index 49b984f7853..f061e7f720b 100644 --- a/scripts/zones/Toraimarai_Canal/mobs/Mousse.lua +++ b/scripts/zones/Toraimarai_Canal/mobs/Mousse.lua @@ -7,11 +7,18 @@ local ID = zones[xi.zone.TORAIMARAI_CANAL] ----------------------------------- local entity = {} +local konjacPHTable = +{ + [ID.mob.KONJAC - 3] = ID.mob.KONJAC, + [ID.mob.KONJAC - 2] = ID.mob.KONJAC, + [ID.mob.KONJAC - 1] = ID.mob.KONJAC, +} + entity.onMobDeath = function(mob, player, optParams) end entity.onMobDespawn = function(mob) - xi.mob.phOnDespawn(mob, ID.mob.KONJAC_PH, 10, 3600) -- 1 hour + xi.mob.phOnDespawn(mob, konjacPHTable, 10, 3600) -- 1 hour end return entity From 101817b44edf89f3b575e56d23791bc3dfa3abbd Mon Sep 17 00:00:00 2001 From: Frankie-hz <105882754+Frankie-hz@users.noreply.github.com> Date: Wed, 1 May 2024 23:07:47 -0400 Subject: [PATCH 09/13] Shift-proof Throne Room --- scripts/zones/Throne_Room/IDs.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/zones/Throne_Room/IDs.lua b/scripts/zones/Throne_Room/IDs.lua index 603292c0243..e9e8888a4af 100644 --- a/scripts/zones/Throne_Room/IDs.lua +++ b/scripts/zones/Throne_Room/IDs.lua @@ -38,9 +38,9 @@ zones[xi.zone.THRONE_ROOM] = }, mob = { - SHADOW_LORD_PHASE_1_OFFSET = 17453057, - SHADOW_LORD_PHASE_2_OFFSET = 17453060, - ZEID_BCNM_OFFSET = 17453063, + SHADOW_LORD_PHASE_1_OFFSET = GetTableOfIDs('Shadow_Lord')[1], + SHADOW_LORD_PHASE_2_OFFSET = GetTableOfIDs('Shadow_Lord')[4], + ZEID_BCNM_OFFSET = GetFirstID('Zeid'), }, npc = { From 0f4a4979ac262c26990a6044011b9e7d61dd5dd1 Mon Sep 17 00:00:00 2001 From: Frankie-hz <105882754+Frankie-hz@users.noreply.github.com> Date: Wed, 1 May 2024 23:08:11 -0400 Subject: [PATCH 10/13] Shift-proof The Shrouded Maw --- scripts/zones/The_Shrouded_Maw/IDs.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/zones/The_Shrouded_Maw/IDs.lua b/scripts/zones/The_Shrouded_Maw/IDs.lua index db5b4a33315..c3779aa6cc8 100644 --- a/scripts/zones/The_Shrouded_Maw/IDs.lua +++ b/scripts/zones/The_Shrouded_Maw/IDs.lua @@ -28,11 +28,11 @@ zones[xi.zone.THE_SHROUDED_MAW] = }, mob = { - DIABOLOS_OFFSET = 16818177, + DIABOLOS_OFFSET = GetFirstID('Diabolos'), }, npc = { - DARKNESS_NAMED_TILE_OFFSET = 16818260, -- _0a0 in npc_list + DARKNESS_NAMED_TILE_OFFSET = GetFirstID('_0a0'), }, } From c2a640758a59e226d8c5d4f7f1a26fb7f72bb302 Mon Sep 17 00:00:00 2001 From: Frankie-hz <105882754+Frankie-hz@users.noreply.github.com> Date: Wed, 1 May 2024 23:09:38 -0400 Subject: [PATCH 11/13] Shift-proof The Shrine of RuAvitau --- scripts/zones/The_Shrine_of_RuAvitau/IDs.lua | 41 ++++--------------- .../The_Shrine_of_RuAvitau/npcs/Monolith.lua | 35 ++++++++++++++-- 2 files changed, 39 insertions(+), 37 deletions(-) diff --git a/scripts/zones/The_Shrine_of_RuAvitau/IDs.lua b/scripts/zones/The_Shrine_of_RuAvitau/IDs.lua index 8d0a84fa2b1..f89a1f41ef6 100644 --- a/scripts/zones/The_Shrine_of_RuAvitau/IDs.lua +++ b/scripts/zones/The_Shrine_of_RuAvitau/IDs.lua @@ -30,43 +30,16 @@ zones[xi.zone.THE_SHRINE_OF_RUAVITAU] = }, mob = { - ULLIKUMMI = 17506418, - OLLAS_OFFSET = 17506667, - KIRIN = 17506670, - MOTHER_GLOBE = 17506396, + ULLIKUMMI = GetFirstID('Ullikummi'), + OLLAS_OFFSET = GetFirstID('Olla_Pequena'), + KIRIN = GetFirstID('Kirin'), + MOTHER_GLOBE = GetFirstID('Mother_Globe'), }, npc = { - DOORS = - { - [ 0] = 'y', [ 4] = 'b', - [ 1] = 'y', [ 5] = 'b', - [ 2] = 'y', [ 6] = 'b', - [ 3] = 'y', [ 7] = 'b', - [ 8] = 'y', [ 9] = 'b', - [12] = 'y', [10] = 'b', - [13] = 'y', [11] = 'b', - [14] = 'y', [16] = 'b', - [15] = 'y', [17] = 'b', - [19] = 'y', [18] = 'b', - [21] = 'y', [20] = 'b', - }, - MONOLITHS = - { - [ 0] = 'y', [ 4] = 'b', - [ 1] = 'y', [ 5] = 'b', - [ 2] = 'y', [ 6] = 'b', - [ 3] = 'y', [ 7] = 'b', - [ 9] = 'y', [ 8] = 'b', - [12] = 'y', [10] = 'b', - [13] = 'y', [11] = 'b', - [16] = 'y', [14] = 'b', - [17] = 'y', [15] = 'b', - [18] = 'y', [19] = 'b', - }, - OLLAS_QM = 17506692, - DOOR_OFFSET = 17506719, - MONOLITH_OFFSET = 17506742, + OLLAS_QM = GetFirstID('qm1'), + DOOR_OFFSET = GetFirstID('_4y0'), + MONOLITH_OFFSET = GetFirstID('Monolith'), }, } diff --git a/scripts/zones/The_Shrine_of_RuAvitau/npcs/Monolith.lua b/scripts/zones/The_Shrine_of_RuAvitau/npcs/Monolith.lua index 5f6cd561499..7613c662837 100644 --- a/scripts/zones/The_Shrine_of_RuAvitau/npcs/Monolith.lua +++ b/scripts/zones/The_Shrine_of_RuAvitau/npcs/Monolith.lua @@ -7,20 +7,49 @@ local ID = zones[xi.zone.THE_SHRINE_OF_RUAVITAU] ----------------------------------- local entity = {} +local doors = +{ + [ 0] = 'y', [ 4] = 'b', + [ 1] = 'y', [ 5] = 'b', + [ 2] = 'y', [ 6] = 'b', + [ 3] = 'y', [ 7] = 'b', + [ 8] = 'y', [ 9] = 'b', + [12] = 'y', [10] = 'b', + [13] = 'y', [11] = 'b', + [14] = 'y', [16] = 'b', + [15] = 'y', [17] = 'b', + [19] = 'y', [18] = 'b', + [21] = 'y', [20] = 'b', +} + +local monoliths = +{ + [ 0] = 'y', [ 4] = 'b', + [ 1] = 'y', [ 5] = 'b', + [ 2] = 'y', [ 6] = 'b', + [ 3] = 'y', [ 7] = 'b', + [ 9] = 'y', [ 8] = 'b', + [12] = 'y', [10] = 'b', + [13] = 'y', [11] = 'b', + [16] = 'y', [14] = 'b', + [17] = 'y', [15] = 'b', + [18] = 'y', [19] = 'b', +} + entity.onTrade = function(player, npc, trade) end entity.onTrigger = function(player, npc) local offset = npc:getID() - ID.npc.MONOLITH_OFFSET if offset >= 0 and offset <= 38 then - local colorTouched = ID.npc.MONOLITHS[offset / 2] + local colorTouched = monoliths[offset / 2] for i = 0, 21 do - local anim = ID.npc.DOORS[i] == colorTouched and xi.anim.OPEN_DOOR or xi.anim.CLOSE_DOOR + local anim = doors[i] == colorTouched and xi.anim.OPEN_DOOR or xi.anim.CLOSE_DOOR GetNPCByID(ID.npc.DOOR_OFFSET + i):setAnimation(anim) end for i = 0, 19 do - local anim = ID.npc.MONOLITHS[i] == colorTouched and xi.anim.OPEN_DOOR or xi.anim.CLOSE_DOOR + local anim = monoliths[i] == colorTouched and xi.anim.OPEN_DOOR or xi.anim.CLOSE_DOOR GetNPCByID(ID.npc.MONOLITH_OFFSET + (i * 2) - 1):setAnimation(anim) end end From b1e83d556fe6f232fcb7ea33e511a6d2d5080062 Mon Sep 17 00:00:00 2001 From: Frankie-hz <105882754+Frankie-hz@users.noreply.github.com> Date: Wed, 1 May 2024 23:10:41 -0400 Subject: [PATCH 12/13] Shift-proof The Sanctuary of ZiTah --- scripts/zones/The_Sanctuary_of_ZiTah/IDs.lua | 24 +++++++------------ .../mobs/Goobbue_Gardener.lua | 7 +++++- .../mobs/Myxomycete.lua | 8 ++++++- 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/scripts/zones/The_Sanctuary_of_ZiTah/IDs.lua b/scripts/zones/The_Sanctuary_of_ZiTah/IDs.lua index c2281ee5aa4..d380bf4bf59 100644 --- a/scripts/zones/The_Sanctuary_of_ZiTah/IDs.lua +++ b/scripts/zones/The_Sanctuary_of_ZiTah/IDs.lua @@ -56,25 +56,17 @@ zones[xi.zone.THE_SANCTUARY_OF_ZITAH] = }, mob = { - KEEPER_OF_HALIDOM_PH = - { - [17272977] = 17272978, -- 319.939 -0.037 187.231 - }, - NOBLE_MOLD_PH = - { - [17273276] = 17273278, -- -391.184 -0.269 -159.086 - [17273277] = 17273278, -- -378.456 0.425 -162.489 - }, - GUARDIAN_TREANT = 17272838, - DOOMED_PILGRIMS = 17272839, - NOBLE_MOLD = 17273278, - ISONADE = 17273285, - GREENMAN = 17273295, + KEEPER_OF_HALIDOM = GetFirstID('Keeper_of_Halidom'), + NOBLE_MOLD = GetFirstID('Noble_Mold'), + GUARDIAN_TREANT = GetFirstID('Guardian_Treant'), + DOOMED_PILGRIMS = GetFirstID('Doomed_Pilgrims'), + ISONADE = GetFirstID('Isonade'), + GREENMAN = GetFirstID('Greenman'), }, npc = { - OVERSEER_BASE = GetFirstID('Credaurion_RK'), - CERMET_HEADSTONE = 17273391, + OVERSEER_BASE = GetFirstID('Credaurion_RK'), + CERMET_HEADSTONE = GetFirstID('Cermet_Headstone'), }, } diff --git a/scripts/zones/The_Sanctuary_of_ZiTah/mobs/Goobbue_Gardener.lua b/scripts/zones/The_Sanctuary_of_ZiTah/mobs/Goobbue_Gardener.lua index feffa0cada8..020df8baa22 100644 --- a/scripts/zones/The_Sanctuary_of_ZiTah/mobs/Goobbue_Gardener.lua +++ b/scripts/zones/The_Sanctuary_of_ZiTah/mobs/Goobbue_Gardener.lua @@ -7,12 +7,17 @@ local ID = zones[xi.zone.THE_SANCTUARY_OF_ZITAH] ----------------------------------- local entity = {} +local keeperPHTable = +{ + [ID.mob.KEEPER_OF_HALIDOM - 1] = ID.mob.KEEPER_OF_HALIDOM, -- 319.939 -0.037 187.231 +} + entity.onMobDeath = function(mob, player, optParams) xi.regime.checkRegime(player, mob, 114, 2, xi.regime.type.FIELDS) end entity.onMobDespawn = function(mob) - xi.mob.phOnDespawn(mob, ID.mob.KEEPER_OF_HALIDOM_PH, 10, 7200) -- 2 hours + xi.mob.phOnDespawn(mob, keeperPHTable, 10, 7200) -- 2 hours end return entity diff --git a/scripts/zones/The_Sanctuary_of_ZiTah/mobs/Myxomycete.lua b/scripts/zones/The_Sanctuary_of_ZiTah/mobs/Myxomycete.lua index c3f93a8e12c..356efd16b1c 100644 --- a/scripts/zones/The_Sanctuary_of_ZiTah/mobs/Myxomycete.lua +++ b/scripts/zones/The_Sanctuary_of_ZiTah/mobs/Myxomycete.lua @@ -7,13 +7,19 @@ local ID = zones[xi.zone.THE_SANCTUARY_OF_ZITAH] ----------------------------------- local entity = {} +local nobleMoldPHTable = +{ + [ID.mob.NOBLE_MOLD - 2] = ID.mob.NOBLE_MOLD, -- -391.184 -0.269 -159.086 + [ID.mob.NOBLE_MOLD - 1] = ID.mob.NOBLE_MOLD, -- -378.456 0.425 -162.489 +} + entity.onMobRoam = function(mob) local weather = mob:getWeather() if weather == xi.weather.RAIN or weather == xi.weather.SQUALL then local params = {} params.immediate = true - if xi.mob.phOnDespawn(mob, ID.mob.NOBLE_MOLD_PH, 100, math.random(43200, 57600), params) then -- 12 to 16 hours + if xi.mob.phOnDespawn(mob, nobleMoldPHTable, 100, math.random(43200, 57600), params) then -- 12 to 16 hours local p = mob:getPos() GetMobByID(ID.mob.NOBLE_MOLD):setSpawn(p.x, p.y, p.z, p.rot) DespawnMob(mob:getID()) From 3fa7ac1db1bcd34cf3ecf920ddb5d56fd4f5caec Mon Sep 17 00:00:00 2001 From: Frankie-hz <105882754+Frankie-hz@users.noreply.github.com> Date: Wed, 1 May 2024 23:05:46 -0400 Subject: [PATCH 13/13] Shift-proof Ule Range --- scripts/zones/Uleguerand_Range/IDs.lua | 33 +++++-------------- .../zones/Uleguerand_Range/mobs/Buffalo.lua | 12 ++++++- .../zones/Uleguerand_Range/mobs/Molech.lua | 8 ++++- .../Uleguerand_Range/mobs/Polar_Hare.lua | 7 +++- 4 files changed, 33 insertions(+), 27 deletions(-) diff --git a/scripts/zones/Uleguerand_Range/IDs.lua b/scripts/zones/Uleguerand_Range/IDs.lua index e2658f98978..ad3ea06fc18 100644 --- a/scripts/zones/Uleguerand_Range/IDs.lua +++ b/scripts/zones/Uleguerand_Range/IDs.lua @@ -27,33 +27,18 @@ zones[xi.zone.ULEGUERAND_RANGE] = }, mob = { - SKVADER_PH = - { - [16797769] = 16797770, - }, - MAGNOTAUR_PH = - { - [16797966] = 16797968, - [16797967] = 16797968, - }, - BONNACON_PH = - { - [16798050] = 16798056, -- -623.154 -40.604 -51.621 - [16798051] = 16798056, -- -587.026 -40.994 -22.551 - [16798052] = 16798056, -- -513.416 -40.490 -43.706 - [16798053] = 16798056, -- -553.844 -38.958 -53.864 - [16798054] = 16798056, -- -631.268 -40.257 0.709 - [16798055] = 16798056, -- -513.999 -40.541 -34.928 - }, - JORMUNGAND = 16797969, - GEUSH_URVAN = 16798078, - WHITE_CONEY = 16798079, - BLACK_CONEY = 16798080, + SKVADER = GetFirstID('Skvader'), + MAGNOTAUR = GetFirstID('Magnotaur'), + BONNACON = GetFirstID('Bonnacon'), + JORMUNGAND = GetFirstID('Jormungand'), + GEUSH_URVAN = GetFirstID('Geush_Urvan'), + WHITE_CONEY = GetFirstID('White_Coney'), + BLACK_CONEY = GetFirstID('Black_Coney'), }, npc = { - WATERFALL = 16798113, - RABBIT_FOOTPRINT = 16798100, + WATERFALL = GetFirstID('_058'), + RABBIT_FOOTPRINT = GetFirstID('Rabbit_Footprint'), }, } diff --git a/scripts/zones/Uleguerand_Range/mobs/Buffalo.lua b/scripts/zones/Uleguerand_Range/mobs/Buffalo.lua index 55072e6fcd0..626074b489b 100644 --- a/scripts/zones/Uleguerand_Range/mobs/Buffalo.lua +++ b/scripts/zones/Uleguerand_Range/mobs/Buffalo.lua @@ -7,11 +7,21 @@ local ID = zones[xi.zone.ULEGUERAND_RANGE] ----------------------------------- local entity = {} +local bonnaconPHTable = +{ + [ID.mob.BONNACON - 6] = ID.mob.BONNACON, -- -623.154 -40.604 -51.621 + [ID.mob.BONNACON - 5] = ID.mob.BONNACON, -- -587.026 -40.994 -22.551 + [ID.mob.BONNACON - 4] = ID.mob.BONNACON, -- -513.416 -40.490 -43.706 + [ID.mob.BONNACON - 3] = ID.mob.BONNACON, -- -553.844 -38.958 -53.864 + [ID.mob.BONNACON - 2] = ID.mob.BONNACON, -- -631.268 -40.257 0.709 + [ID.mob.BONNACON - 1] = ID.mob.BONNACON, -- -513.999 -40.541 -34.928 +} + entity.onMobDeath = function(mob, player, optParams) end entity.onMobDespawn = function(mob) - xi.mob.phOnDespawn(mob, ID.mob.BONNACON_PH, 5, math.random(3600, 86400)) -- 1 to 24 hours + xi.mob.phOnDespawn(mob, bonnaconPHTable, 5, math.random(3600, 86400)) -- 1 to 24 hours end return entity diff --git a/scripts/zones/Uleguerand_Range/mobs/Molech.lua b/scripts/zones/Uleguerand_Range/mobs/Molech.lua index 840b65035f8..1978dbbadd0 100644 --- a/scripts/zones/Uleguerand_Range/mobs/Molech.lua +++ b/scripts/zones/Uleguerand_Range/mobs/Molech.lua @@ -7,11 +7,17 @@ local ID = zones[xi.zone.ULEGUERAND_RANGE] ----------------------------------- local entity = {} +local magnotaurPHTable = +{ + [ID.mob.MAGNOTAUR - 2] = ID.mob.MAGNOTAUR, + [ID.mob.MAGNOTAUR - 1] = ID.mob.MAGNOTAUR, +} + entity.onMobDeath = function(mob, player, optParams) end entity.onMobDespawn = function(mob) - xi.mob.phOnDespawn(mob, ID.mob.MAGNOTAUR_PH, 10, 3600) -- 1 hour + xi.mob.phOnDespawn(mob, magnotaurPHTable, 10, 3600) -- 1 hour end return entity diff --git a/scripts/zones/Uleguerand_Range/mobs/Polar_Hare.lua b/scripts/zones/Uleguerand_Range/mobs/Polar_Hare.lua index f6914aee234..bccd67b72d9 100644 --- a/scripts/zones/Uleguerand_Range/mobs/Polar_Hare.lua +++ b/scripts/zones/Uleguerand_Range/mobs/Polar_Hare.lua @@ -7,11 +7,16 @@ local ID = zones[xi.zone.ULEGUERAND_RANGE] ----------------------------------- local entity = {} +local ixtabPHTable = +{ + [ID.mob.SKVADER - 1] = ID.mob.SKVADER, +} + entity.onMobDeath = function(mob, player, optParams) end entity.onMobDespawn = function(mob) - xi.mob.phOnDespawn(mob, ID.mob.SKVADER_PH, 10, 3600) -- 1 hour + xi.mob.phOnDespawn(mob, ixtabPHTable, 10, 3600) -- 1 hour end return entity