diff --git a/config.lua.dist b/config.lua.dist index aeed08347..b8494909f 100644 --- a/config.lua.dist +++ b/config.lua.dist @@ -43,8 +43,8 @@ maxItem = 2000 maxContainer = 100 --- Version -clientVersion = 1251 -clientVersionStr = "12.51" +clientVersion = 1260 +clientVersionStr = "12.60" -- Depot Limit freeDepotLimit = 2000 @@ -54,6 +54,9 @@ depotBoxes = 18 -- GameStore gamestoreByModules = true +-- NOTE: Access only for Premium Account +onlyPremiumAccount = false + -- Customs weatherRain = false thunderEffect = false diff --git a/data/XML/familiars.xml b/data/XML/familiars.xml new file mode 100644 index 000000000..3c446167b --- /dev/null +++ b/data/XML/familiars.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/XML/mounts.xml b/data/XML/mounts.xml index 3ad7a4807..399620d05 100644 --- a/data/XML/mounts.xml +++ b/data/XML/mounts.xml @@ -1,177 +1,181 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/XML/outfits.xml b/data/XML/outfits.xml index 2691e78df..546ac69bb 100644 --- a/data/XML/outfits.xml +++ b/data/XML/outfits.xml @@ -12,89 +12,91 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -108,87 +110,89 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/events/events.xml b/data/events/events.xml index ceff2b6cb..1664ade00 100644 --- a/data/events/events.xml +++ b/data/events/events.xml @@ -20,7 +20,7 @@ - + diff --git a/data/events/scripts/player.lua b/data/events/scripts/player.lua index c20d1b796..f03ada764 100644 --- a/data/events/scripts/player.lua +++ b/data/events/scripts/player.lua @@ -514,6 +514,10 @@ function Player:onItemMoved(item, count, fromPosition, toPosition, fromCylinder, end function Player:onMoveCreature(creature, fromPosition, toPosition) + if creature:isPlayer() and creature:getStorageValue(Storage.isTraining) == 1 and self:getGroup():hasFlag(PlayerFlag_CanPushAllCreatures) == false then + self:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE) + return false + end return true end diff --git a/data/items/items.otb b/data/items/items.otb index 950834c45..e4b58863d 100644 Binary files a/data/items/items.otb and b/data/items/items.otb differ diff --git a/data/items/items.xml b/data/items/items.xml index bf59b3b5a..18a71b26d 100644 --- a/data/items/items.xml +++ b/data/items/items.xml @@ -46731,9 +46731,10 @@ - - + + + @@ -46850,6 +46851,8 @@ + + @@ -46997,21 +47000,24 @@ - + - + + + + @@ -48315,9 +48321,7 @@ - - - + @@ -51009,7 +51013,7 @@ - + diff --git a/data/lib/core/player.lua b/data/lib/core/player.lua index f8437e6d0..0d79362bb 100644 --- a/data/lib/core/player.lua +++ b/data/lib/core/player.lua @@ -259,42 +259,6 @@ function Player.isMage(self) self:getVocation():getId()) end --- Impact Analyser -function Player.sendHealingImpact(self, healAmmount) - -- TODO: Migrate to protocolgame.cpp - local msg = NetworkMessage() - msg:addByte(0xCC) -- DEC: 204 - msg:addByte(0) -- 0 = healing / 1 = damage (boolean) - msg:addU32(healAmmount) -- unsigned int - msg:sendToPlayer(self) -end - -function Player.sendDamageImpact(self, damage) - -- TODO: Migrate to protocolgame.cpp - local msg = NetworkMessage() - msg:addByte(0xCC) -- DEC: 204 - msg:addByte(1) -- 0 = healing / 1 = damage (boolean) - msg:addU32(damage) -- unsigned int - msg:sendToPlayer(self) -end - --- Loot Analyser -function Player.sendLootStats(self, item) - local msg = NetworkMessage() - msg:addByte(0xCF) -- loot analyser bit - msg:addItem(item, self) -- item userdata - msg:addString(getItemName(item:getId())) - msg:sendToPlayer(self) -end - --- Supply Analyser -function Player.sendWaste(self, item) - local msg = NetworkMessage() - msg:addByte(0xCE) -- waste bit - msg:addItemId(item) -- itemId - msg:sendToPlayer(self) -end - local ACCOUNT_STORAGES = {} function Player.getAccountStorage(self, accountId, key, forceUpdate) local accountId = self:getAccountId() diff --git a/data/lib/core/quests.lua b/data/lib/core/quests.lua index 8fd131af5..31a51c43e 100644 --- a/data/lib/core/quests.lua +++ b/data/lib/core/quests.lua @@ -1842,27 +1842,27 @@ if not Quests then }, [86] = { name = "Turmoil of War", - storageId = 65049, + storageId = Storage.KillingInTheNameOf.BudrikMinos, missionId = 10166, startValue = 0, endValue = 5000, description = function(player) return string.format( "Budrik asked you to kill 5000 minotaurs for him. You already killed %d minotaurs.", - (math.max(player:getStorageValue(65049), 0)) + (math.max(player:getStorageValue(Storage.KillingInTheNameOf.BudrikMinosCount), 0)) ) end }, [87] = { name = "Paw and Fur: Necromancers and Priestess", - storageId = 65050, + storageId = Storage.KillingInTheNameOf.LugriNecromancers, missionId = 10167, startValue = 0, endValue = 4000, description = function(player) return string.format( "You already hunted %d/4000 necromancers and priestess.", - (math.max(player:getStorageValue(65050), 0)) + (math.max(player:getStorageValue(Storage.KillingInTheNameOf.LugriNecromancerCount), 0)) ) end } diff --git a/data/lib/core/storages.lua b/data/lib/core/storages.lua index 301f875e9..5f1eabad4 100644 --- a/data/lib/core/storages.lua +++ b/data/lib/core/storages.lua @@ -166,47 +166,51 @@ Storage = { Recovering = 50018 }, Fourth = { - Moe = 50019 + Moe = 50019, + MoeTimer = 50020 }, Fifth = { - Memories = 50020 + Memories = 50021, + MemoriesShards = 50022 }, Sixth = { - Favor = 50021 + Favor = 50023, + FourMasks = 50024, + BlessedStatues = 50025 }, Set = { - Ritual = 50022 + Ritual = 50026 }, Eighth = { - Yonan = 50023, - Narsai = 50024, - Shimun = 50025, - Tefrit = 50026 + Yonan = 50027, + Narsai = 50028, + Shimun = 50029, + Tefrit = 50030 }, Nine = { - Owl = 50027 + Owl = 50031 }, Tem = { - Bleeds = 50028 + Bleeds = 50032 }, Eleven = { - Basin = 50029 + Basin = 50033 }, Twelve = { - Boss = 50030, - Bragrumol = 50031, - Mozradek = 50032, - Xogixath = 50033 + Boss = 50034, + Bragrumol = 50035, + Mozradek = 50036, + Xogixath = 50037 }, Thirteen = { - Fafnar = 50034, - Lyre = 50035, - Presente = 50036 + Fafnar = 50038, + Lyre = 50039, + Presente = 50040 }, Fourteen = { - Remains = 50037 + Remains = 50041 }, - UrmahlulluTimer = 50038 + UrmahlulluTimer = 50042 }, TheSecretLibrary = { -- Reserved storage from 50050 - 50069 @@ -2185,7 +2189,7 @@ Storage = { -- update 12.20 GraveDanger = {}, HandOfTheInquisitionOutfits = {}, - Kilmaresh = {}, + -- Kilmaresh = {}, done earlier in the file GraveDanger = {}, -- update 12.30 FeasterOfSouls = {}, diff --git a/data/lib/others/daily_reward_lib.lua b/data/lib/others/daily_reward_lib.lua index b5e1bf404..dabd64917 100644 --- a/data/lib/others/daily_reward_lib.lua +++ b/data/lib/others/daily_reward_lib.lua @@ -49,6 +49,14 @@ function Player.getCollectionTokens(self) return math.max(self:getStorageValue(DailyReward.storages.collectionTokens), 0) end +function Player.getJokerTokens(self) + return math.max(self:getStorageValue(DailyReward.storages.jokerTokens), 0) +end + +function Player.setJokerTokens(self, value) + self:setStorageValue(DailyReward.storages.jokerTokens, value) +end + function Player.setCollectionTokens(self, value) self:setStorageValue(DailyReward.storages.collectionTokens, value) end diff --git a/data/migrations/10.lua b/data/migrations/10.lua new file mode 100644 index 000000000..2c7477d68 --- /dev/null +++ b/data/migrations/10.lua @@ -0,0 +1,3 @@ +function onUpdateDatabase() + return false -- true = There are others migrations file | false = this is the last migration file +end diff --git a/data/migrations/9.lua b/data/migrations/9.lua index 2c7477d68..ee47c62af 100644 --- a/data/migrations/9.lua +++ b/data/migrations/9.lua @@ -1,3 +1,9 @@ function onUpdateDatabase() - return false -- true = There are others migrations file | false = this is the last migration file + print("> Updating database to version 10 (Mount Colors and familiars)") + db.query("ALTER TABLE `players` ADD `lookmountbody` tinyint(3) unsigned NOT NULL DEFAULT '0'") + db.query("ALTER TABLE `players` ADD `lookmountfeet` tinyint(3) unsigned NOT NULL DEFAULT '0'") + db.query("ALTER TABLE `players` ADD `lookmounthead` tinyint(3) unsigned NOT NULL DEFAULT '0'") + db.query("ALTER TABLE `players` ADD `lookmountlegs` tinyint(3) unsigned NOT NULL DEFAULT '0'") + db.query("ALTER TABLE `players` ADD `lookfamiliarstype` int(11) unsigned NOT NULL DEFAULT '0'") + return true end diff --git a/data/modules/scripts/daily_reward/daily_reward.lua b/data/modules/scripts/daily_reward/daily_reward.lua index fe5e17af9..0286f66a2 100644 --- a/data/modules/scripts/daily_reward/daily_reward.lua +++ b/data/modules/scripts/daily_reward/daily_reward.lua @@ -1,7 +1,7 @@ DailyRewardSystem = { Developer = "Westwol, Marcosvf132", - Version = "1.2", - lastUpdate = "26/09/2020 - 02:00", + Version = "1.3", + lastUpdate = "12/10/2020 - 20:30", ToDo = "Move this system to CPP" } @@ -19,6 +19,8 @@ local ClientPackets = { OpenRewardWall = 0xD8, OpenRewardHistory = 0xD9, SelectReward = 0xDA, + CollectionResource = 0x14, + JokerResource = 0x15 } --[[-- Constants @@ -78,10 +80,12 @@ DailyReward = { nextRewardTime = 14899, collectionTokens = 14901, staminaBonus = 14902, + jokerTokens = 14903, -- Global lastServerSave = 14110, avoidDouble = 13412, - notifyReset = 13413 + notifyReset = 13413, + avoidDoubleJoker = 13414 }, strikeBonuses = { @@ -239,7 +243,8 @@ DailyReward.loadDailyReward = function(playerId, source) source = REWARD_FROM_PANEL end - player:sendCollectionResource(player:getCollectionTokens()) + player:sendCollectionResource(ClientPackets.JokerResource, player:getJokerTokens()) + player:sendCollectionResource(ClientPackets.CollectionResource, player:getCollectionTokens()) player:sendDailyReward() player:sendOpenRewardWall(source) player:sendDailyRewardCollectionState(0) @@ -308,15 +313,30 @@ DailyReward.init = function(playerId) if not player then return false end + + if player:getJokerTokens() < 3 and tonumber(os.date("%m")) ~= player:getStorageValue(DailyReward.storages.avoidDoubleJoker) then + player:setStorageValue(DailyReward.storages.avoidDoubleJoker, tonumber(os.date("%m"))) + player:setJokerTokens(player:getJokerTokens() + 1) + end + + local timeMath = Game.getLastServerSave() - player:getNextRewardTime() if player:getNextRewardTime() < Game.getLastServerSave() then if player:getStorageValue(DailyReward.storages.notifyReset) ~= Game.getLastServerSave() then - player:setStreakLevel(0) player:setStorageValue(DailyReward.storages.notifyReset, Game.getLastServerSave()) - if player:getLastLoginSaved() > 0 then -- message wont appear at first character login - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You just lost your daily reward streak.") + timeMath = math.ceil(timeMath/(DailyReward.serverTimeThreshold)) + if player:getJokerTokens() >= timeMath then + player:setJokerTokens(player:getJokerTokens() - timeMath) + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You lost " .. timeMath .. " joker tokens to prevent loosing your streak.") + else + player:setStreakLevel(0) + if player:getLastLoginSaved() > 0 then -- message wont appear at first character login + player:setJokerTokens(-(player:getJokerTokens())) + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You just lost your daily reward streak.") + end end end end + -- Daily reward golden icon if DailyReward.isRewardTaken(player:getId()) then player:sendDailyRewardCollectionState(0) @@ -349,21 +369,27 @@ function Player.sendOpenRewardWall(self, shrine) if DailyReward.isRewardTaken(self:getId()) then -- state (player already took reward? but just make sure noone wpe) msg:addByte(1) msg:addString("Sorry, you have already taken your daily reward or you are unable to collect it.") -- Unknown message - msg:addU32(0) --timeLeft to pickUp reward without loosing streak + if self:getJokerTokens() > 0 then + msg:addByte(1) + msg:addU16(self:getJokerTokens()) + else + msg:addByte(0) + end else msg:addByte(0) + msg:addByte(2) msg:addU32(Game.getLastServerSave() + DailyReward.serverTimeThreshold) --timeLeft to pickUp reward without loosing streak + msg:addU16(self:getJokerTokens()) end msg:addU16(self:getStreakLevel()) -- day strike - msg:addU16(24) -- unknown msg:sendToPlayer(self) end -function Player.sendCollectionResource(self, value) +function Player.sendCollectionResource(self, byte, value) -- TODO: Migrate to protocolgame.cpp local msg = NetworkMessage() msg:addByte(0xEE) -- resource byte - msg:addByte(0x14) + msg:addByte(byte) msg:addU64(value) msg:sendToPlayer(self) end diff --git a/data/monster/constructs/biting_book.lua b/data/monster/constructs/biting_book.lua index 18ba29295..f0f130162 100644 --- a/data/monster/constructs/biting_book.lua +++ b/data/monster/constructs/biting_book.lua @@ -59,9 +59,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/clay_guardian.lua b/data/monster/constructs/clay_guardian.lua index 06be95cf7..510a46b88 100644 --- a/data/monster/constructs/clay_guardian.lua +++ b/data/monster/constructs/clay_guardian.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/damaged_worker_golem.lua b/data/monster/constructs/damaged_worker_golem.lua index 778dc32f2..f2d837a95 100644 --- a/data/monster/constructs/damaged_worker_golem.lua +++ b/data/monster/constructs/damaged_worker_golem.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/diamond_servant.lua b/data/monster/constructs/diamond_servant.lua index 1e72a2eea..91a347ebc 100644 --- a/data/monster/constructs/diamond_servant.lua +++ b/data/monster/constructs/diamond_servant.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 100, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/diamond_servant_replica.lua b/data/monster/constructs/diamond_servant_replica.lua index 961601827..6a3a45605 100644 --- a/data/monster/constructs/diamond_servant_replica.lua +++ b/data/monster/constructs/diamond_servant_replica.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 100, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/enraged_crystal_golem.lua b/data/monster/constructs/enraged_crystal_golem.lua index f0c39755d..8cdbd6c64 100644 --- a/data/monster/constructs/enraged_crystal_golem.lua +++ b/data/monster/constructs/enraged_crystal_golem.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/eternal_guardian.lua b/data/monster/constructs/eternal_guardian.lua index 3ef012a63..0f22ce8cd 100644 --- a/data/monster/constructs/eternal_guardian.lua +++ b/data/monster/constructs/eternal_guardian.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/glooth_golem.lua b/data/monster/constructs/glooth_golem.lua index 4df939066..a1fe5e7ee 100644 --- a/data/monster/constructs/glooth_golem.lua +++ b/data/monster/constructs/glooth_golem.lua @@ -62,9 +62,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/golden_servant.lua b/data/monster/constructs/golden_servant.lua index 3ba188815..6c57ed05c 100644 --- a/data/monster/constructs/golden_servant.lua +++ b/data/monster/constructs/golden_servant.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 50, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/golden_servant_replica.lua b/data/monster/constructs/golden_servant_replica.lua index ee832030e..a11794ff9 100644 --- a/data/monster/constructs/golden_servant_replica.lua +++ b/data/monster/constructs/golden_servant_replica.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/ice_golem.lua b/data/monster/constructs/ice_golem.lua index d41d3196e..2e4f4a6cb 100644 --- a/data/monster/constructs/ice_golem.lua +++ b/data/monster/constructs/ice_golem.lua @@ -60,8 +60,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/infected_weeper.lua b/data/monster/constructs/infected_weeper.lua index a370f81c7..9ce599d43 100644 --- a/data/monster/constructs/infected_weeper.lua +++ b/data/monster/constructs/infected_weeper.lua @@ -60,8 +60,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/lava_golem.lua b/data/monster/constructs/lava_golem.lua index 3f3a0c260..1c79a64f8 100644 --- a/data/monster/constructs/lava_golem.lua +++ b/data/monster/constructs/lava_golem.lua @@ -60,8 +60,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/magma_crawler.lua b/data/monster/constructs/magma_crawler.lua index a467226ea..494c4d39c 100644 --- a/data/monster/constructs/magma_crawler.lua +++ b/data/monster/constructs/magma_crawler.lua @@ -60,8 +60,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/metal_gargoyle.lua b/data/monster/constructs/metal_gargoyle.lua index d7966b71b..5bfb02334 100644 --- a/data/monster/constructs/metal_gargoyle.lua +++ b/data/monster/constructs/metal_gargoyle.lua @@ -64,7 +64,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/orewalker.lua b/data/monster/constructs/orewalker.lua index 2afcfff58..dbadd9433 100644 --- a/data/monster/constructs/orewalker.lua +++ b/data/monster/constructs/orewalker.lua @@ -61,7 +61,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/rustheap_golem.lua b/data/monster/constructs/rustheap_golem.lua index 295bf8494..68709c292 100644 --- a/data/monster/constructs/rustheap_golem.lua +++ b/data/monster/constructs/rustheap_golem.lua @@ -62,9 +62,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/stone_devourer.lua b/data/monster/constructs/stone_devourer.lua index eb853d865..ba6984a7c 100644 --- a/data/monster/constructs/stone_devourer.lua +++ b/data/monster/constructs/stone_devourer.lua @@ -62,8 +62,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/stone_golem.lua b/data/monster/constructs/stone_golem.lua index 8f4e3058d..ba8ca2afd 100644 --- a/data/monster/constructs/stone_golem.lua +++ b/data/monster/constructs/stone_golem.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/war_golem.lua b/data/monster/constructs/war_golem.lua index 2ef68427e..002450f5d 100644 --- a/data/monster/constructs/war_golem.lua +++ b/data/monster/constructs/war_golem.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/weeper.lua b/data/monster/constructs/weeper.lua index 331645ed4..4f42a574c 100644 --- a/data/monster/constructs/weeper.lua +++ b/data/monster/constructs/weeper.lua @@ -60,8 +60,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/constructs/worker_golem.lua b/data/monster/constructs/worker_golem.lua index 9f130d87f..79913454e 100644 --- a/data/monster/constructs/worker_golem.lua +++ b/data/monster/constructs/worker_golem.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/dawnport/dawn_scorpion.lua b/data/monster/dawnport/dawn_scorpion.lua index c2c18ae5c..ed1e8cfc2 100644 --- a/data/monster/dawnport/dawn_scorpion.lua +++ b/data/monster/dawnport/dawn_scorpion.lua @@ -47,7 +47,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/dawnport/scar_tribe_shaman.lua b/data/monster/dawnport/scar_tribe_shaman.lua index 911751e04..e4b95824b 100644 --- a/data/monster/dawnport/scar_tribe_shaman.lua +++ b/data/monster/dawnport/scar_tribe_shaman.lua @@ -46,7 +46,7 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/dawnport/woodling.lua b/data/monster/dawnport/woodling.lua index 200ae3413..f79f77e4e 100644 --- a/data/monster/dawnport/woodling.lua +++ b/data/monster/dawnport/woodling.lua @@ -97,9 +97,9 @@ monster.elements = { } monster.immunities = { - {type = "paralyze", condition = false}, + {type = "paralyze", condition = true}, {type = "outfit", condition = false}, - {type = "invisible", condition = false}, + {type = "invisible", condition = true}, {type = "bleed", condition = false} } diff --git a/data/monster/demons/askarak_demon.lua b/data/monster/demons/askarak_demon.lua index 6c6633cb9..cca884461 100644 --- a/data/monster/demons/askarak_demon.lua +++ b/data/monster/demons/askarak_demon.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/demons/askarak_lord.lua b/data/monster/demons/askarak_lord.lua index cf52f5b5f..7ef6bda42 100644 --- a/data/monster/demons/askarak_lord.lua +++ b/data/monster/demons/askarak_lord.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/demons/askarak_prince.lua b/data/monster/demons/askarak_prince.lua index 90c409ab4..bf827448f 100644 --- a/data/monster/demons/askarak_prince.lua +++ b/data/monster/demons/askarak_prince.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/demons/dark_torturer.lua b/data/monster/demons/dark_torturer.lua index 0b6446cee..cd32cf7b8 100644 --- a/data/monster/demons/dark_torturer.lua +++ b/data/monster/demons/dark_torturer.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/demons/dawnfire_asura.lua b/data/monster/demons/dawnfire_asura.lua index 232ec7aef..e6d44d6a4 100644 --- a/data/monster/demons/dawnfire_asura.lua +++ b/data/monster/demons/dawnfire_asura.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/demons/demon.lua b/data/monster/demons/demon.lua index 30a49f37d..5993fb4be 100644 --- a/data/monster/demons/demon.lua +++ b/data/monster/demons/demon.lua @@ -64,9 +64,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/demons/demon_outcast.lua b/data/monster/demons/demon_outcast.lua index c4b971f07..24f3e06b1 100644 --- a/data/monster/demons/demon_outcast.lua +++ b/data/monster/demons/demon_outcast.lua @@ -62,8 +62,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/demons/destroyer.lua b/data/monster/demons/destroyer.lua index 732573679..53bde72fd 100644 --- a/data/monster/demons/destroyer.lua +++ b/data/monster/demons/destroyer.lua @@ -61,7 +61,7 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, canWalkOnPoison = false, pet = false diff --git a/data/monster/demons/diabolic_imp.lua b/data/monster/demons/diabolic_imp.lua index 7d0a67615..19d05d3df 100644 --- a/data/monster/demons/diabolic_imp.lua +++ b/data/monster/demons/diabolic_imp.lua @@ -63,8 +63,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/demons/fire_devil.lua b/data/monster/demons/fire_devil.lua index 8a100495b..539c6fc4e 100644 --- a/data/monster/demons/fire_devil.lua +++ b/data/monster/demons/fire_devil.lua @@ -60,7 +60,7 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/demons/floating_savant.lua b/data/monster/demons/floating_savant.lua index 7c842b77a..029b097d7 100644 --- a/data/monster/demons/floating_savant.lua +++ b/data/monster/demons/floating_savant.lua @@ -59,7 +59,7 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/demons/frost_flower_asura.lua b/data/monster/demons/frost_flower_asura.lua index 4d62709b6..bcff69080 100644 --- a/data/monster/demons/frost_flower_asura.lua +++ b/data/monster/demons/frost_flower_asura.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/demons/grimeleech.lua b/data/monster/demons/grimeleech.lua index 6fcf03bac..00dea2786 100644 --- a/data/monster/demons/grimeleech.lua +++ b/data/monster/demons/grimeleech.lua @@ -2,7 +2,7 @@ local mType = Game.createMonsterType("Grimeleech") local monster = {} monster.description = "a grimeleech" -monster.experience = 6560 +monster.experience = 7216 monster.outfit = { lookType = 855, lookHead = 0, @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/demons/hellfire_fighter.lua b/data/monster/demons/hellfire_fighter.lua index 3254c9530..f9acde9ff 100644 --- a/data/monster/demons/hellfire_fighter.lua +++ b/data/monster/demons/hellfire_fighter.lua @@ -60,7 +60,7 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/demons/hellflayer.lua b/data/monster/demons/hellflayer.lua index 80057e991..5e99075c1 100644 --- a/data/monster/demons/hellflayer.lua +++ b/data/monster/demons/hellflayer.lua @@ -2,7 +2,7 @@ local mType = Game.createMonsterType("Hellflayer") local monster = {} monster.description = "a hellflayer" -monster.experience = 4375 +monster.experience = 11000 monster.outfit = { lookType = 856, lookHead = 0, @@ -62,8 +62,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/demons/hellhound.lua b/data/monster/demons/hellhound.lua index aa21f0889..5a13ff41e 100644 --- a/data/monster/demons/hellhound.lua +++ b/data/monster/demons/hellhound.lua @@ -63,8 +63,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/demons/hellspawn.lua b/data/monster/demons/hellspawn.lua index 8782d8042..71524084b 100644 --- a/data/monster/demons/hellspawn.lua +++ b/data/monster/demons/hellspawn.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/demons/juggernaut.lua b/data/monster/demons/juggernaut.lua index 58df92ff9..2809fca81 100644 --- a/data/monster/demons/juggernaut.lua +++ b/data/monster/demons/juggernaut.lua @@ -2,7 +2,7 @@ local mType = Game.createMonsterType("Juggernaut") local monster = {} monster.description = "a juggernaut" -monster.experience = 4900 +monster.experience = 11200 monster.outfit = { lookType = 244, lookHead = 0, @@ -63,8 +63,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/demons/midnight_asura.lua b/data/monster/demons/midnight_asura.lua index 0eaeea1fe..5bb9842c2 100644 --- a/data/monster/demons/midnight_asura.lua +++ b/data/monster/demons/midnight_asura.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/demons/plaguesmith.lua b/data/monster/demons/plaguesmith.lua index eec2d9e64..60f6c0c7f 100644 --- a/data/monster/demons/plaguesmith.lua +++ b/data/monster/demons/plaguesmith.lua @@ -63,8 +63,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/demons/shaburak_demon.lua b/data/monster/demons/shaburak_demon.lua index 6cd4bf9ca..62824126d 100644 --- a/data/monster/demons/shaburak_demon.lua +++ b/data/monster/demons/shaburak_demon.lua @@ -61,8 +61,8 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnEnergy = true, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/demons/shaburak_lord.lua b/data/monster/demons/shaburak_lord.lua index 14854c7c4..86941351c 100644 --- a/data/monster/demons/shaburak_lord.lua +++ b/data/monster/demons/shaburak_lord.lua @@ -61,8 +61,8 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnEnergy = true, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/demons/shaburak_prince.lua b/data/monster/demons/shaburak_prince.lua index 30c860d0d..59c8408d2 100644 --- a/data/monster/demons/shaburak_prince.lua +++ b/data/monster/demons/shaburak_prince.lua @@ -61,8 +61,8 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnEnergy = true, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/demons/shadow_hound.lua b/data/monster/demons/shadow_hound.lua index daf177491..048cb72a0 100644 --- a/data/monster/demons/shadow_hound.lua +++ b/data/monster/demons/shadow_hound.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/demons/true_midnight_asura.lua b/data/monster/demons/true_midnight_asura.lua index b31209684..b62edf543 100644 --- a/data/monster/demons/true_midnight_asura.lua +++ b/data/monster/demons/true_midnight_asura.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/demons/vexclaw.lua b/data/monster/demons/vexclaw.lua index 634743dcf..bc5627d69 100644 --- a/data/monster/demons/vexclaw.lua +++ b/data/monster/demons/vexclaw.lua @@ -2,7 +2,7 @@ local mType = Game.createMonsterType("Vexclaw") local monster = {} monster.description = "a vexclaw" -monster.experience = 5680 +monster.experience = 6248 monster.outfit = { lookType = 854, lookHead = 0, @@ -62,8 +62,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/dragons/dragon_hatchling.lua b/data/monster/dragons/dragon_hatchling.lua index 88ebb84cc..4e5098396 100644 --- a/data/monster/dragons/dragon_hatchling.lua +++ b/data/monster/dragons/dragon_hatchling.lua @@ -62,9 +62,9 @@ monster.flags = { runHealth = 20, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/dragons/dragon_lord.lua b/data/monster/dragons/dragon_lord.lua index b1fdb5c98..7507c4b5a 100644 --- a/data/monster/dragons/dragon_lord.lua +++ b/data/monster/dragons/dragon_lord.lua @@ -36,7 +36,7 @@ monster.health = 1900 monster.maxHealth = 1900 monster.race = "blood" monster.corpse = 5984 -monster.speed = 200 +monster.speed = 100 monster.summonCost = 0 monster.maxSummons = 0 @@ -67,9 +67,9 @@ monster.flags = { runHealth = 300, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } @@ -112,14 +112,14 @@ monster.loot = { monster.attacks = { {name ="melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -230}, - {name ="combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -200, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true}, + {name ="combat", interval = 2000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -220, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true}, {name ="firefield", interval = 2000, chance = 10, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, target = true}, - {name ="combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -230, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false} + {name ="combat", interval = 2000, chance = 22, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -270, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false} } monster.defenses = { - defense = 35, - armor = 35, + defense = 34, + armor = 34, {name ="combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 57, maxDamage = 93, effect = CONST_ME_MAGIC_BLUE, target = false} } diff --git a/data/monster/dragons/dragon_lord_hatchling.lua b/data/monster/dragons/dragon_lord_hatchling.lua index f165b4286..61f1296f3 100644 --- a/data/monster/dragons/dragon_lord_hatchling.lua +++ b/data/monster/dragons/dragon_lord_hatchling.lua @@ -62,9 +62,9 @@ monster.flags = { runHealth = 30, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/dragons/draken_abomination.lua b/data/monster/dragons/draken_abomination.lua index 8d1e66806..9dc3e2178 100644 --- a/data/monster/dragons/draken_abomination.lua +++ b/data/monster/dragons/draken_abomination.lua @@ -59,8 +59,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/dragons/draken_elite.lua b/data/monster/dragons/draken_elite.lua index 0f22f6935..7ea6dd5d5 100644 --- a/data/monster/dragons/draken_elite.lua +++ b/data/monster/dragons/draken_elite.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/dragons/draken_spellweaver.lua b/data/monster/dragons/draken_spellweaver.lua index f8f8be841..3f5df3823 100644 --- a/data/monster/dragons/draken_spellweaver.lua +++ b/data/monster/dragons/draken_spellweaver.lua @@ -59,8 +59,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/dragons/draken_warmaster.lua b/data/monster/dragons/draken_warmaster.lua index 3825b055f..33e476399 100644 --- a/data/monster/dragons/draken_warmaster.lua +++ b/data/monster/dragons/draken_warmaster.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/dragons/elder_wyrm.lua b/data/monster/dragons/elder_wyrm.lua index 9249afec6..36707a295 100644 --- a/data/monster/dragons/elder_wyrm.lua +++ b/data/monster/dragons/elder_wyrm.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 250, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/dragons/frost_dragon.lua b/data/monster/dragons/frost_dragon.lua index 02d6bf0ed..9edd3464a 100644 --- a/data/monster/dragons/frost_dragon.lua +++ b/data/monster/dragons/frost_dragon.lua @@ -63,8 +63,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/dragons/frost_dragon_hatchling.lua b/data/monster/dragons/frost_dragon_hatchling.lua index 6eb1a02d3..4c6df36f5 100644 --- a/data/monster/dragons/frost_dragon_hatchling.lua +++ b/data/monster/dragons/frost_dragon_hatchling.lua @@ -62,9 +62,9 @@ monster.flags = { runHealth = 80, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/dragons/ghastly_dragon.lua b/data/monster/dragons/ghastly_dragon.lua index 2b9b09d8e..24d2f779e 100644 --- a/data/monster/dragons/ghastly_dragon.lua +++ b/data/monster/dragons/ghastly_dragon.lua @@ -64,7 +64,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/dragons/haunted_dragon.lua b/data/monster/dragons/haunted_dragon.lua index 2cc59fd34..64e480a0f 100644 --- a/data/monster/dragons/haunted_dragon.lua +++ b/data/monster/dragons/haunted_dragon.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/dragons/hydra.lua b/data/monster/dragons/hydra.lua index bc7ac767b..6add69343 100644 --- a/data/monster/dragons/hydra.lua +++ b/data/monster/dragons/hydra.lua @@ -66,9 +66,9 @@ monster.flags = { runHealth = 300, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/dragons/wyrm.lua b/data/monster/dragons/wyrm.lua index 2249fb6fa..0a9e0ca41 100644 --- a/data/monster/dragons/wyrm.lua +++ b/data/monster/dragons/wyrm.lua @@ -62,9 +62,9 @@ monster.flags = { runHealth = 1, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/elementals/cliff_strider.lua b/data/monster/elementals/cliff_strider.lua index 1ec864138..6f073b19e 100644 --- a/data/monster/elementals/cliff_strider.lua +++ b/data/monster/elementals/cliff_strider.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/elementals/earth_elemental.lua b/data/monster/elementals/earth_elemental.lua index 584b4de24..d2036da7c 100644 --- a/data/monster/elementals/earth_elemental.lua +++ b/data/monster/elementals/earth_elemental.lua @@ -62,9 +62,9 @@ monster.flags = { runHealth = 80, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/elementals/energy_elemental.lua b/data/monster/elementals/energy_elemental.lua index 86974daa5..6f4595b22 100644 --- a/data/monster/elementals/energy_elemental.lua +++ b/data/monster/elementals/energy_elemental.lua @@ -61,8 +61,8 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnEnergy = true, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/elementals/fire_elemental.lua b/data/monster/elementals/fire_elemental.lua index 875c5d6e6..a6106a57b 100644 --- a/data/monster/elementals/fire_elemental.lua +++ b/data/monster/elementals/fire_elemental.lua @@ -61,7 +61,7 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/elementals/high_voltage_elemental.lua b/data/monster/elementals/high_voltage_elemental.lua index f3e0d6e37..7b04a4702 100644 --- a/data/monster/elementals/high_voltage_elemental.lua +++ b/data/monster/elementals/high_voltage_elemental.lua @@ -61,8 +61,8 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnEnergy = true, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/elementals/ironblight.lua b/data/monster/elementals/ironblight.lua index 0ea2a685a..da52792e3 100644 --- a/data/monster/elementals/ironblight.lua +++ b/data/monster/elementals/ironblight.lua @@ -62,8 +62,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/elementals/knowledge_elemental.lua b/data/monster/elementals/knowledge_elemental.lua index f777855a3..866322e21 100644 --- a/data/monster/elementals/knowledge_elemental.lua +++ b/data/monster/elementals/knowledge_elemental.lua @@ -2,7 +2,7 @@ local mType = Game.createMonsterType("Knowledge Elemental") local monster = {} monster.description = "a knowledge elemental" -monster.experience = 10710 +monster.experience = 10603 monster.outfit = { lookType = 1065, lookHead = 0, @@ -58,9 +58,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/elementals/lava_lurker.lua b/data/monster/elementals/lava_lurker.lua index 5f6be3d6a..b18688302 100644 --- a/data/monster/elementals/lava_lurker.lua +++ b/data/monster/elementals/lava_lurker.lua @@ -62,7 +62,7 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/elementals/massive_earth_elemental.lua b/data/monster/elementals/massive_earth_elemental.lua index 2dcdff10c..108150c97 100644 --- a/data/monster/elementals/massive_earth_elemental.lua +++ b/data/monster/elementals/massive_earth_elemental.lua @@ -64,7 +64,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/elementals/massive_energy_elemental.lua b/data/monster/elementals/massive_energy_elemental.lua index be97e601b..ea5087d55 100644 --- a/data/monster/elementals/massive_energy_elemental.lua +++ b/data/monster/elementals/massive_energy_elemental.lua @@ -61,8 +61,8 @@ monster.flags = { runHealth = 1, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnEnergy = true, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/elementals/massive_fire_elemental.lua b/data/monster/elementals/massive_fire_elemental.lua index 94791a70f..700bc5d8c 100644 --- a/data/monster/elementals/massive_fire_elemental.lua +++ b/data/monster/elementals/massive_fire_elemental.lua @@ -60,7 +60,7 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/elementals/massive_water_elemental.lua b/data/monster/elementals/massive_water_elemental.lua index bf0d5e109..60c59d3d8 100644 --- a/data/monster/elementals/massive_water_elemental.lua +++ b/data/monster/elementals/massive_water_elemental.lua @@ -63,8 +63,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/elementals/raging_fire.lua b/data/monster/elementals/raging_fire.lua index ad9bdf163..4b3ccd4d3 100644 --- a/data/monster/elementals/raging_fire.lua +++ b/data/monster/elementals/raging_fire.lua @@ -60,7 +60,7 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/elementals/ravenous_lava_lurker.lua b/data/monster/elementals/ravenous_lava_lurker.lua index e73db890d..37e96396a 100644 --- a/data/monster/elementals/ravenous_lava_lurker.lua +++ b/data/monster/elementals/ravenous_lava_lurker.lua @@ -62,7 +62,7 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/elementals/water_elemental.lua b/data/monster/elementals/water_elemental.lua index 5ba67f1ec..14aa0956c 100644 --- a/data/monster/elementals/water_elemental.lua +++ b/data/monster/elementals/water_elemental.lua @@ -64,8 +64,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/extra_dimensional/breach_brood.lua b/data/monster/extra_dimensional/breach_brood.lua index 69b2e48a2..7d82d9f27 100644 --- a/data/monster/extra_dimensional/breach_brood.lua +++ b/data/monster/extra_dimensional/breach_brood.lua @@ -61,8 +61,8 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnEnergy = true, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/extra_dimensional/dread_intruder.lua b/data/monster/extra_dimensional/dread_intruder.lua index e5100289f..5dee73dd7 100644 --- a/data/monster/extra_dimensional/dread_intruder.lua +++ b/data/monster/extra_dimensional/dread_intruder.lua @@ -61,7 +61,7 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, canWalkOnPoison = false, pet = false diff --git a/data/monster/extra_dimensional/reality_reaver.lua b/data/monster/extra_dimensional/reality_reaver.lua index 96fdc904b..6e303c34f 100644 --- a/data/monster/extra_dimensional/reality_reaver.lua +++ b/data/monster/extra_dimensional/reality_reaver.lua @@ -61,8 +61,8 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnEnergy = true, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/extra_dimensional/stabilizing_dread_intruder.lua b/data/monster/extra_dimensional/stabilizing_dread_intruder.lua index fab636c51..07aaef1a8 100644 --- a/data/monster/extra_dimensional/stabilizing_dread_intruder.lua +++ b/data/monster/extra_dimensional/stabilizing_dread_intruder.lua @@ -61,7 +61,7 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, canWalkOnPoison = false, pet = false diff --git a/data/monster/extra_dimensional/yielothax.lua b/data/monster/extra_dimensional/yielothax.lua index 47667ed61..922dbb0b5 100644 --- a/data/monster/extra_dimensional/yielothax.lua +++ b/data/monster/extra_dimensional/yielothax.lua @@ -62,8 +62,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/giants/behemoth.lua b/data/monster/giants/behemoth.lua index 1cc3aa229..6a4d80081 100644 --- a/data/monster/giants/behemoth.lua +++ b/data/monster/giants/behemoth.lua @@ -62,8 +62,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/giants/ogre_rowdy.lua b/data/monster/giants/ogre_rowdy.lua index efde57df0..12625a424 100644 --- a/data/monster/giants/ogre_rowdy.lua +++ b/data/monster/giants/ogre_rowdy.lua @@ -60,8 +60,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/giants/ogre_ruffian.lua b/data/monster/giants/ogre_ruffian.lua index bf1b0600d..36deb66ff 100644 --- a/data/monster/giants/ogre_ruffian.lua +++ b/data/monster/giants/ogre_ruffian.lua @@ -59,9 +59,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/giants/ogre_sage.lua b/data/monster/giants/ogre_sage.lua index 7b8d7495d..e054a3a1c 100644 --- a/data/monster/giants/ogre_sage.lua +++ b/data/monster/giants/ogre_sage.lua @@ -60,8 +60,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humanoids/broken_shaper.lua b/data/monster/humanoids/broken_shaper.lua index 6fa8b9601..4a34db5dc 100644 --- a/data/monster/humanoids/broken_shaper.lua +++ b/data/monster/humanoids/broken_shaper.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humanoids/chakoya_toolshaper.lua b/data/monster/humanoids/chakoya_toolshaper.lua index 76edb5ca5..c049266da 100644 --- a/data/monster/humanoids/chakoya_toolshaper.lua +++ b/data/monster/humanoids/chakoya_toolshaper.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humanoids/chakoya_tribewarden.lua b/data/monster/humanoids/chakoya_tribewarden.lua index 09fd67b59..0cc3126d7 100644 --- a/data/monster/humanoids/chakoya_tribewarden.lua +++ b/data/monster/humanoids/chakoya_tribewarden.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humanoids/dworc_fleshhunter.lua b/data/monster/humanoids/dworc_fleshhunter.lua index 8be88a040..6b638991f 100644 --- a/data/monster/humanoids/dworc_fleshhunter.lua +++ b/data/monster/humanoids/dworc_fleshhunter.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humanoids/dworc_venomsniper.lua b/data/monster/humanoids/dworc_venomsniper.lua index 59bae4c70..cd787a484 100644 --- a/data/monster/humanoids/dworc_venomsniper.lua +++ b/data/monster/humanoids/dworc_venomsniper.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humanoids/dworc_voodoomaster.lua b/data/monster/humanoids/dworc_voodoomaster.lua index d3d8f4207..fafc77c9c 100644 --- a/data/monster/humanoids/dworc_voodoomaster.lua +++ b/data/monster/humanoids/dworc_voodoomaster.lua @@ -61,7 +61,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humanoids/enslaved_dwarf.lua b/data/monster/humanoids/enslaved_dwarf.lua index ccfa5c225..ccc47e78c 100644 --- a/data/monster/humanoids/enslaved_dwarf.lua +++ b/data/monster/humanoids/enslaved_dwarf.lua @@ -62,7 +62,7 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/humanoids/firestarter.lua b/data/monster/humanoids/firestarter.lua index 6401b9e85..58c4d6613 100644 --- a/data/monster/humanoids/firestarter.lua +++ b/data/monster/humanoids/firestarter.lua @@ -59,7 +59,7 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/humanoids/lost_berserker.lua b/data/monster/humanoids/lost_berserker.lua index dc6473c35..1f9d81c9d 100644 --- a/data/monster/humanoids/lost_berserker.lua +++ b/data/monster/humanoids/lost_berserker.lua @@ -62,8 +62,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humanoids/mooh'tah_warrior.lua b/data/monster/humanoids/mooh'tah_warrior.lua index 3e0796c75..2813f263a 100644 --- a/data/monster/humanoids/mooh'tah_warrior.lua +++ b/data/monster/humanoids/mooh'tah_warrior.lua @@ -59,9 +59,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humanoids/moohtant.lua b/data/monster/humanoids/moohtant.lua index 27b791535..6a192f44f 100644 --- a/data/monster/humanoids/moohtant.lua +++ b/data/monster/humanoids/moohtant.lua @@ -61,7 +61,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humanoids/orc_leader.lua b/data/monster/humanoids/orc_leader.lua index eb844d030..7de138ac9 100644 --- a/data/monster/humanoids/orc_leader.lua +++ b/data/monster/humanoids/orc_leader.lua @@ -61,7 +61,7 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/humanoids/orc_warlord.lua b/data/monster/humanoids/orc_warlord.lua index 01829ed13..1345b6441 100644 --- a/data/monster/humanoids/orc_warlord.lua +++ b/data/monster/humanoids/orc_warlord.lua @@ -61,7 +61,7 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/humanoids/shaper_matriarch.lua b/data/monster/humanoids/shaper_matriarch.lua index ebb7a1afe..3fcc453c3 100644 --- a/data/monster/humanoids/shaper_matriarch.lua +++ b/data/monster/humanoids/shaper_matriarch.lua @@ -61,8 +61,8 @@ monster.flags = { runHealth = 15, healthHidden = false, isBlockable = false, - canWalkOnEnergy = true, - canWalkOnFire = true, + canWalkOnEnergy = false, + canWalkOnFire = false, canWalkOnPoison = true, pet = false } diff --git a/data/monster/humanoids/soul-broken_harbinger.lua b/data/monster/humanoids/soul-broken_harbinger.lua index 7c8972718..9637fa8c2 100644 --- a/data/monster/humanoids/soul-broken_harbinger.lua +++ b/data/monster/humanoids/soul-broken_harbinger.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humans/acolyte_of_darkness.lua b/data/monster/humans/acolyte_of_darkness.lua index e135f6f59..2aa5894d2 100644 --- a/data/monster/humans/acolyte_of_darkness.lua +++ b/data/monster/humans/acolyte_of_darkness.lua @@ -59,8 +59,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humans/blood_hand.lua b/data/monster/humans/blood_hand.lua index 533d19ce3..f9992feb0 100644 --- a/data/monster/humans/blood_hand.lua +++ b/data/monster/humans/blood_hand.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humans/blood_priest.lua b/data/monster/humans/blood_priest.lua index e9934fca5..7c138d1a6 100644 --- a/data/monster/humans/blood_priest.lua +++ b/data/monster/humans/blood_priest.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humans/cobra_assassin.lua b/data/monster/humans/cobra_assassin.lua index d2821e517..fb5b1a0b4 100644 --- a/data/monster/humans/cobra_assassin.lua +++ b/data/monster/humans/cobra_assassin.lua @@ -2,7 +2,7 @@ local mType = Game.createMonsterType("Cobra Assassin") local monster = {} monster.description = "a cobra assassin" -monster.experience = 7560 +monster.experience = 8316 monster.outfit = { lookType = 1217, lookHead = 2, diff --git a/data/monster/humans/cobra_vizier.lua b/data/monster/humans/cobra_vizier.lua index acdd2336c..f312b00d8 100644 --- a/data/monster/humans/cobra_vizier.lua +++ b/data/monster/humans/cobra_vizier.lua @@ -2,7 +2,7 @@ local mType = Game.createMonsterType("Cobra Vizier") local monster = {} monster.description = "a cobra vizier" -monster.experience = 7920 +monster.experience = 9108 monster.outfit = { lookType = 1217, lookHead = 19, diff --git a/data/monster/humans/glooth_bandit.lua b/data/monster/humans/glooth_bandit.lua index e5c18f0d2..81f7cee70 100644 --- a/data/monster/humans/glooth_bandit.lua +++ b/data/monster/humans/glooth_bandit.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humans/glooth_brigand.lua b/data/monster/humans/glooth_brigand.lua index 0b547604c..5c0183626 100644 --- a/data/monster/humans/glooth_brigand.lua +++ b/data/monster/humans/glooth_brigand.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humans/hero.lua b/data/monster/humans/hero.lua index d6c60b7d8..4c30f3df4 100644 --- a/data/monster/humans/hero.lua +++ b/data/monster/humans/hero.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humans/infernalist.lua b/data/monster/humans/infernalist.lua index cab2d7ced..2a45c0368 100644 --- a/data/monster/humans/infernalist.lua +++ b/data/monster/humans/infernalist.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 900, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humans/mutated_human.lua b/data/monster/humans/mutated_human.lua index 7dd826bf7..196346432 100644 --- a/data/monster/humans/mutated_human.lua +++ b/data/monster/humans/mutated_human.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humans/necromancer.lua b/data/monster/humans/necromancer.lua index a2261a319..d246e124a 100644 --- a/data/monster/humans/necromancer.lua +++ b/data/monster/humans/necromancer.lua @@ -61,7 +61,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humans/pirate_cutthroat.lua b/data/monster/humans/pirate_cutthroat.lua index f3a5b0ad5..28c422f61 100644 --- a/data/monster/humans/pirate_cutthroat.lua +++ b/data/monster/humans/pirate_cutthroat.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humans/shadow_pupil.lua b/data/monster/humans/shadow_pupil.lua index 024170729..d026b19b0 100644 --- a/data/monster/humans/shadow_pupil.lua +++ b/data/monster/humans/shadow_pupil.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humans/vicious_squire.lua b/data/monster/humans/vicious_squire.lua index 7389a0168..343becc36 100644 --- a/data/monster/humans/vicious_squire.lua +++ b/data/monster/humans/vicious_squire.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humans/warlock.lua b/data/monster/humans/warlock.lua index db4b9dbf9..d0341e951 100644 --- a/data/monster/humans/warlock.lua +++ b/data/monster/humans/warlock.lua @@ -59,9 +59,9 @@ monster.flags = { runHealth = 900, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/humans/witch.lua b/data/monster/humans/witch.lua index d7025ba4a..94a43cd73 100644 --- a/data/monster/humans/witch.lua +++ b/data/monster/humans/witch.lua @@ -61,7 +61,7 @@ monster.flags = { runHealth = 30, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, canWalkOnPoison = false, pet = false diff --git a/data/monster/lycanthropes/werebadger.lua b/data/monster/lycanthropes/werebadger.lua index bf8b533d3..df6b13b19 100644 --- a/data/monster/lycanthropes/werebadger.lua +++ b/data/monster/lycanthropes/werebadger.lua @@ -62,9 +62,9 @@ monster.flags = { runHealth = 275, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/lycanthropes/werebear.lua b/data/monster/lycanthropes/werebear.lua index 01297cb3f..53af6fecc 100644 --- a/data/monster/lycanthropes/werebear.lua +++ b/data/monster/lycanthropes/werebear.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 275, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/lycanthropes/wereboar.lua b/data/monster/lycanthropes/wereboar.lua index d0bba1940..062fd067a 100644 --- a/data/monster/lycanthropes/wereboar.lua +++ b/data/monster/lycanthropes/wereboar.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 275, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/lycanthropes/werefox.lua b/data/monster/lycanthropes/werefox.lua index 58be6ca9d..782d2ebfa 100644 --- a/data/monster/lycanthropes/werefox.lua +++ b/data/monster/lycanthropes/werefox.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/lycanthropes/werehyaena.lua b/data/monster/lycanthropes/werehyaena.lua index cf8334a2e..b2f20288e 100644 --- a/data/monster/lycanthropes/werehyaena.lua +++ b/data/monster/lycanthropes/werehyaena.lua @@ -45,7 +45,7 @@ monster.flags = { runHealth = 30, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = true, canWalkOnPoison = true, pet = false diff --git a/data/monster/lycanthropes/werewolf.lua b/data/monster/lycanthropes/werewolf.lua index 78d0957cf..33df0ea04 100644 --- a/data/monster/lycanthropes/werewolf.lua +++ b/data/monster/lycanthropes/werewolf.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 300, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/armadile.lua b/data/monster/magicals/armadile.lua index 78b0c92d8..ddafc167c 100644 --- a/data/monster/magicals/armadile.lua +++ b/data/monster/magicals/armadile.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/brain_squid.lua b/data/monster/magicals/brain_squid.lua index e425f8c95..1b62d3901 100644 --- a/data/monster/magicals/brain_squid.lua +++ b/data/monster/magicals/brain_squid.lua @@ -2,7 +2,7 @@ local mType = Game.createMonsterType("Brain Squid") local monster = {} monster.description = "a brain squid" -monster.experience = 17850 +monster.experience = 17672 monster.outfit = { lookType = 1059, lookHead = 97, @@ -58,9 +58,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/braindeath.lua b/data/monster/magicals/braindeath.lua index 75de0645d..3a67a45c4 100644 --- a/data/monster/magicals/braindeath.lua +++ b/data/monster/magicals/braindeath.lua @@ -62,8 +62,8 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = true, - canWalkOnFire = true, + canWalkOnEnergy = false, + canWalkOnFire = false, canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/burning_book.lua b/data/monster/magicals/burning_book.lua index feed96986..04eb97434 100644 --- a/data/monster/magicals/burning_book.lua +++ b/data/monster/magicals/burning_book.lua @@ -59,8 +59,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/crypt_warden.lua b/data/monster/magicals/crypt_warden.lua index 97595ec9d..98caa4381 100644 --- a/data/monster/magicals/crypt_warden.lua +++ b/data/monster/magicals/crypt_warden.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/crystalcrusher.lua b/data/monster/magicals/crystalcrusher.lua index 6cd8f0a85..c1bf7a09f 100644 --- a/data/monster/magicals/crystalcrusher.lua +++ b/data/monster/magicals/crystalcrusher.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/cursed_book.lua b/data/monster/magicals/cursed_book.lua index 9705a1f0f..ca7897ac1 100644 --- a/data/monster/magicals/cursed_book.lua +++ b/data/monster/magicals/cursed_book.lua @@ -59,8 +59,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/dragonling.lua b/data/monster/magicals/dragonling.lua index 6e821fa3f..693c6db76 100644 --- a/data/monster/magicals/dragonling.lua +++ b/data/monster/magicals/dragonling.lua @@ -62,8 +62,8 @@ monster.flags = { runHealth = 900, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnEnergy = true, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/magicals/energetic_book.lua b/data/monster/magicals/energetic_book.lua index 9afb2ef72..dab7ecc83 100644 --- a/data/monster/magicals/energetic_book.lua +++ b/data/monster/magicals/energetic_book.lua @@ -2,7 +2,7 @@ local mType = Game.createMonsterType("Energetic Book") local monster = {} monster.description = "an energetic book" -monster.experience = 12155 +monster.experience = 12034 monster.outfit = { lookType = 1061, lookHead = 15, @@ -58,8 +58,8 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnEnergy = true, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/magicals/energuardian_of_tales.lua b/data/monster/magicals/energuardian_of_tales.lua index e58d295ce..546a78398 100644 --- a/data/monster/magicals/energuardian_of_tales.lua +++ b/data/monster/magicals/energuardian_of_tales.lua @@ -2,7 +2,7 @@ local mType = Game.createMonsterType("Energuardian of Tales") local monster = {} monster.description = "an energuardian of tales" -monster.experience = 11475 +monster.experience = 11361 monster.outfit = { lookType = 1063, lookHead = 66, @@ -58,8 +58,8 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnEnergy = true, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/magicals/feversleep.lua b/data/monster/magicals/feversleep.lua index c3f7cc8c6..b6d8b4050 100644 --- a/data/monster/magicals/feversleep.lua +++ b/data/monster/magicals/feversleep.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/flying_book.lua b/data/monster/magicals/flying_book.lua index ef7b19ca1..e31eedf4f 100644 --- a/data/monster/magicals/flying_book.lua +++ b/data/monster/magicals/flying_book.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/forest_fury.lua b/data/monster/magicals/forest_fury.lua index 885f2b68f..df94e5ea8 100644 --- a/data/monster/magicals/forest_fury.lua +++ b/data/monster/magicals/forest_fury.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/frazzlemaw.lua b/data/monster/magicals/frazzlemaw.lua index 557962416..a66d1d1c1 100644 --- a/data/monster/magicals/frazzlemaw.lua +++ b/data/monster/magicals/frazzlemaw.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/gargoyle.lua b/data/monster/magicals/gargoyle.lua index 40fa2f79f..bd5d91beb 100644 --- a/data/monster/magicals/gargoyle.lua +++ b/data/monster/magicals/gargoyle.lua @@ -62,7 +62,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/guardian_of_tales.lua b/data/monster/magicals/guardian_of_tales.lua index 9950b0e0e..6bd3bc836 100644 --- a/data/monster/magicals/guardian_of_tales.lua +++ b/data/monster/magicals/guardian_of_tales.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/guzzlemaw.lua b/data/monster/magicals/guzzlemaw.lua index 6bb7f0e91..f3b232ace 100644 --- a/data/monster/magicals/guzzlemaw.lua +++ b/data/monster/magicals/guzzlemaw.lua @@ -62,9 +62,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/icecold_book.lua b/data/monster/magicals/icecold_book.lua index db1e50cad..5c9c93137 100644 --- a/data/monster/magicals/icecold_book.lua +++ b/data/monster/magicals/icecold_book.lua @@ -59,7 +59,7 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = true, - canWalkOnFire = false, + canWalkOnFire = true, canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/lumbering_carnivor.lua b/data/monster/magicals/lumbering_carnivor.lua index d8cc72626..7e2ac4cf5 100644 --- a/data/monster/magicals/lumbering_carnivor.lua +++ b/data/monster/magicals/lumbering_carnivor.lua @@ -2,7 +2,7 @@ local mType = Game.createMonsterType("Lumbering Carnivor") local monster = {} monster.description = "a Lumbering Carnivor" -monster.experience = 1320 +monster.experience = 1452 monster.outfit = { lookType = 1139, lookHead = 79, @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/medusa.lua b/data/monster/magicals/medusa.lua index 6c4cfb45c..8f247b408 100644 --- a/data/monster/magicals/medusa.lua +++ b/data/monster/magicals/medusa.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/menacing_carnivor.lua b/data/monster/magicals/menacing_carnivor.lua index 83f86befd..40bae0d89 100644 --- a/data/monster/magicals/menacing_carnivor.lua +++ b/data/monster/magicals/menacing_carnivor.lua @@ -2,7 +2,7 @@ local mType = Game.createMonsterType("Menacing Carnivor") local monster = {} monster.description = "a Menacing Carnivor" -monster.experience = 1920 +monster.experience = 2112 monster.outfit = { lookType = 1139, lookHead = 128, diff --git a/data/monster/magicals/midnight_panther.lua b/data/monster/magicals/midnight_panther.lua index 012b49d4a..3bbccb00d 100644 --- a/data/monster/magicals/midnight_panther.lua +++ b/data/monster/magicals/midnight_panther.lua @@ -58,7 +58,7 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, canWalkOnPoison = false, pet = false diff --git a/data/monster/magicals/nightmare.lua b/data/monster/magicals/nightmare.lua index aefc97e41..c0d15e2ab 100644 --- a/data/monster/magicals/nightmare.lua +++ b/data/monster/magicals/nightmare.lua @@ -64,7 +64,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/nightmare_scion.lua b/data/monster/magicals/nightmare_scion.lua index 4b1945b15..d74937f90 100644 --- a/data/monster/magicals/nightmare_scion.lua +++ b/data/monster/magicals/nightmare_scion.lua @@ -64,7 +64,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/phantasm.lua b/data/monster/magicals/phantasm.lua index aabec56f2..b2235552b 100644 --- a/data/monster/magicals/phantasm.lua +++ b/data/monster/magicals/phantasm.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/phantasm_summon.lua b/data/monster/magicals/phantasm_summon.lua index 52c48a6ba..2f51c9dcf 100644 --- a/data/monster/magicals/phantasm_summon.lua +++ b/data/monster/magicals/phantasm_summon.lua @@ -47,7 +47,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/rage_squid.lua b/data/monster/magicals/rage_squid.lua index 9aa356c24..7491abc35 100644 --- a/data/monster/magicals/rage_squid.lua +++ b/data/monster/magicals/rage_squid.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/retching_horror.lua b/data/monster/magicals/retching_horror.lua index 03f495fad..aa6d582c0 100644 --- a/data/monster/magicals/retching_horror.lua +++ b/data/monster/magicals/retching_horror.lua @@ -2,7 +2,7 @@ local mType = Game.createMonsterType("Retching Horror") local monster = {} monster.description = "a retching horror" -monster.experience = 3900 +monster.experience = 4100 monster.outfit = { lookType = 588, lookHead = 0, @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/shiversleep.lua b/data/monster/magicals/shiversleep.lua index f944adcf1..06adefdfc 100644 --- a/data/monster/magicals/shiversleep.lua +++ b/data/monster/magicals/shiversleep.lua @@ -50,7 +50,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/shock_head.lua b/data/monster/magicals/shock_head.lua index a058141de..f73cfbfe0 100644 --- a/data/monster/magicals/shock_head.lua +++ b/data/monster/magicals/shock_head.lua @@ -62,8 +62,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/sight_of_surrender.lua b/data/monster/magicals/sight_of_surrender.lua index 24af2dbee..06579aa43 100644 --- a/data/monster/magicals/sight_of_surrender.lua +++ b/data/monster/magicals/sight_of_surrender.lua @@ -62,9 +62,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/silencer.lua b/data/monster/magicals/silencer.lua index 539943183..859d0d446 100644 --- a/data/monster/magicals/silencer.lua +++ b/data/monster/magicals/silencer.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/spiky_carnivor.lua b/data/monster/magicals/spiky_carnivor.lua index db148fdd8..0efd60ccc 100644 --- a/data/monster/magicals/spiky_carnivor.lua +++ b/data/monster/magicals/spiky_carnivor.lua @@ -2,7 +2,7 @@ local mType = Game.createMonsterType("Spiky Carnivor") local monster = {} monster.description = "a Spiky Carnivor" -monster.experience = 1500 +monster.experience = 1650 monster.outfit = { lookType = 1133, lookHead = 85, @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/terrorsleep.lua b/data/monster/magicals/terrorsleep.lua index 4856f7d28..4d0e9223d 100644 --- a/data/monster/magicals/terrorsleep.lua +++ b/data/monster/magicals/terrorsleep.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/magicals/thanatursus.lua b/data/monster/magicals/thanatursus.lua index d5b396176..f106a51ec 100644 --- a/data/monster/magicals/thanatursus.lua +++ b/data/monster/magicals/thanatursus.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = true, canWalkOnFire = true, - canWalkOnPoison = true, + canWalkOnPoison = false, pet = false } diff --git a/data/monster/magicals/weakened_frazzlemaw.lua b/data/monster/magicals/weakened_frazzlemaw.lua index abd71cf44..f3d07ceba 100644 --- a/data/monster/magicals/weakened_frazzlemaw.lua +++ b/data/monster/magicals/weakened_frazzlemaw.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/mammals/mammoth.lua b/data/monster/mammals/mammoth.lua index 506f2a565..286716ff6 100644 --- a/data/monster/mammals/mammoth.lua +++ b/data/monster/mammals/mammoth.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/mammals/merlkin.lua b/data/monster/mammals/merlkin.lua index a624fa978..31ab5037d 100644 --- a/data/monster/mammals/merlkin.lua +++ b/data/monster/mammals/merlkin.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/mammals/mutated_bat.lua b/data/monster/mammals/mutated_bat.lua index dd362aac4..58367eede 100644 --- a/data/monster/mammals/mutated_bat.lua +++ b/data/monster/mammals/mutated_bat.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/mammals/mutated_rat.lua b/data/monster/mammals/mutated_rat.lua index c179f4f51..48d7553a9 100644 --- a/data/monster/mammals/mutated_rat.lua +++ b/data/monster/mammals/mutated_rat.lua @@ -62,7 +62,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/mammals/mutated_tiger.lua b/data/monster/mammals/mutated_tiger.lua index 9478de028..17a81868e 100644 --- a/data/monster/mammals/mutated_tiger.lua +++ b/data/monster/mammals/mutated_tiger.lua @@ -61,7 +61,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/mammals/roaring_lion.lua b/data/monster/mammals/roaring_lion.lua index fa157a580..d886b6124 100644 --- a/data/monster/mammals/roaring_lion.lua +++ b/data/monster/mammals/roaring_lion.lua @@ -59,7 +59,7 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/mammals/sibang.lua b/data/monster/mammals/sibang.lua index 751c6aa80..6f01e19db 100644 --- a/data/monster/mammals/sibang.lua +++ b/data/monster/mammals/sibang.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/mammals/thornfire_wolf.lua b/data/monster/mammals/thornfire_wolf.lua index dbe5a390c..e929f9562 100644 --- a/data/monster/mammals/thornfire_wolf.lua +++ b/data/monster/mammals/thornfire_wolf.lua @@ -59,7 +59,7 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/mammals/vulcongra.lua b/data/monster/mammals/vulcongra.lua index f64fc922f..13115372a 100644 --- a/data/monster/mammals/vulcongra.lua +++ b/data/monster/mammals/vulcongra.lua @@ -62,8 +62,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/plants/carniphila.lua b/data/monster/plants/carniphila.lua index a657976fc..73d8dbd78 100644 --- a/data/monster/plants/carniphila.lua +++ b/data/monster/plants/carniphila.lua @@ -62,7 +62,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/plants/glooth_anemone.lua b/data/monster/plants/glooth_anemone.lua index bf4dfbc7f..177b8f49e 100644 --- a/data/monster/plants/glooth_anemone.lua +++ b/data/monster/plants/glooth_anemone.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/plants/humongous_fungus.lua b/data/monster/plants/humongous_fungus.lua index 0fe237e6a..db5862cf4 100644 --- a/data/monster/plants/humongous_fungus.lua +++ b/data/monster/plants/humongous_fungus.lua @@ -61,8 +61,8 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = true, - canWalkOnFire = true, + canWalkOnEnergy = false, + canWalkOnFire = false, canWalkOnPoison = true, pet = false } diff --git a/data/monster/plants/leaf_golem.lua b/data/monster/plants/leaf_golem.lua index 021ceb0eb..c763528df 100644 --- a/data/monster/plants/leaf_golem.lua +++ b/data/monster/plants/leaf_golem.lua @@ -64,7 +64,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/plants/omnivora.lua b/data/monster/plants/omnivora.lua index 52809701e..cd2bdf6e5 100644 --- a/data/monster/plants/omnivora.lua +++ b/data/monster/plants/omnivora.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/plants/wilting_leaf_golem.lua b/data/monster/plants/wilting_leaf_golem.lua index f7fb75715..dbf43ad13 100644 --- a/data/monster/plants/wilting_leaf_golem.lua +++ b/data/monster/plants/wilting_leaf_golem.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/quests/cults_of_tibia/goldhanded_cultist.lua b/data/monster/quests/cults_of_tibia/goldhanded_cultist.lua index 4a2efcf09..9f1b9f9a1 100644 --- a/data/monster/quests/cults_of_tibia/goldhanded_cultist.lua +++ b/data/monster/quests/cults_of_tibia/goldhanded_cultist.lua @@ -61,8 +61,8 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnEnergy = true, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/quests/cults_of_tibia/misguided_thief.lua b/data/monster/quests/cults_of_tibia/misguided_thief.lua index ebb5dd7e4..f614f2777 100644 --- a/data/monster/quests/cults_of_tibia/misguided_thief.lua +++ b/data/monster/quests/cults_of_tibia/misguided_thief.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/quests/cults_of_tibia/orc_cult_fanatic.lua b/data/monster/quests/cults_of_tibia/orc_cult_fanatic.lua index 9d888925f..cc9c65356 100644 --- a/data/monster/quests/cults_of_tibia/orc_cult_fanatic.lua +++ b/data/monster/quests/cults_of_tibia/orc_cult_fanatic.lua @@ -62,7 +62,7 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/quests/the_percht_queens_island/baleful_bunny.lua b/data/monster/quests/the_percht_queens_island/baleful_bunny.lua index 786b4db1e..480b7c388 100644 --- a/data/monster/quests/the_percht_queens_island/baleful_bunny.lua +++ b/data/monster/quests/the_percht_queens_island/baleful_bunny.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/reptiles/cobra.lua b/data/monster/reptiles/cobra.lua index 694b450ab..a5d82a92f 100644 --- a/data/monster/reptiles/cobra.lua +++ b/data/monster/reptiles/cobra.lua @@ -61,7 +61,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/reptiles/lizard_chosen.lua b/data/monster/reptiles/lizard_chosen.lua index a44329ebc..94386ffd5 100644 --- a/data/monster/reptiles/lizard_chosen.lua +++ b/data/monster/reptiles/lizard_chosen.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/reptiles/lizard_dragon_priest.lua b/data/monster/reptiles/lizard_dragon_priest.lua index 669e310a7..f8a9ff758 100644 --- a/data/monster/reptiles/lizard_dragon_priest.lua +++ b/data/monster/reptiles/lizard_dragon_priest.lua @@ -60,8 +60,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/reptiles/lizard_high_guard.lua b/data/monster/reptiles/lizard_high_guard.lua index 14c52093a..bc606845b 100644 --- a/data/monster/reptiles/lizard_high_guard.lua +++ b/data/monster/reptiles/lizard_high_guard.lua @@ -61,7 +61,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/reptiles/lizard_legionnaire.lua b/data/monster/reptiles/lizard_legionnaire.lua index 863e88013..aeeec2014 100644 --- a/data/monster/reptiles/lizard_legionnaire.lua +++ b/data/monster/reptiles/lizard_legionnaire.lua @@ -60,8 +60,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/reptiles/lizard_magistratus.lua b/data/monster/reptiles/lizard_magistratus.lua index 46b648850..a58f306a9 100644 --- a/data/monster/reptiles/lizard_magistratus.lua +++ b/data/monster/reptiles/lizard_magistratus.lua @@ -59,8 +59,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/reptiles/lizard_noble.lua b/data/monster/reptiles/lizard_noble.lua index f3764d8c3..4fc7e51cd 100644 --- a/data/monster/reptiles/lizard_noble.lua +++ b/data/monster/reptiles/lizard_noble.lua @@ -59,8 +59,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/reptiles/lizard_sentinel.lua b/data/monster/reptiles/lizard_sentinel.lua index 807acf551..5225cb3de 100644 --- a/data/monster/reptiles/lizard_sentinel.lua +++ b/data/monster/reptiles/lizard_sentinel.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/reptiles/lizard_snakecharmer.lua b/data/monster/reptiles/lizard_snakecharmer.lua index 4429435f7..9e929efad 100644 --- a/data/monster/reptiles/lizard_snakecharmer.lua +++ b/data/monster/reptiles/lizard_snakecharmer.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/reptiles/lizard_templar.lua b/data/monster/reptiles/lizard_templar.lua index b4f9fcc1e..920fa1c9d 100644 --- a/data/monster/reptiles/lizard_templar.lua +++ b/data/monster/reptiles/lizard_templar.lua @@ -61,7 +61,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/reptiles/lizard_zaogun.lua b/data/monster/reptiles/lizard_zaogun.lua index 1f5d37ec4..3e319aa74 100644 --- a/data/monster/reptiles/lizard_zaogun.lua +++ b/data/monster/reptiles/lizard_zaogun.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/reptiles/sea_serpent.lua b/data/monster/reptiles/sea_serpent.lua index 429bee09e..acf10441d 100644 --- a/data/monster/reptiles/sea_serpent.lua +++ b/data/monster/reptiles/sea_serpent.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/reptiles/seacrest_serpent.lua b/data/monster/reptiles/seacrest_serpent.lua index 13aab4339..3ee4c4842 100644 --- a/data/monster/reptiles/seacrest_serpent.lua +++ b/data/monster/reptiles/seacrest_serpent.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } @@ -114,7 +114,7 @@ monster.defenses = { defense = 31, armor = 22, {name ="combat", interval = 2000, chance = 15, type = COMBAT_HEALING, minDamage = 145, maxDamage = 200, effect = CONST_ME_SOUND_BLUE, target = false}, - {name ="melee", interval = 2000, chance = 10, minDamage = 0, maxDamage = 0, effect = CONST_ME_DRAWBLOOD} + {name ="melee", interval = 2000, chance = 10, minDamage = 0, maxDamage = 0} } monster.elements = { diff --git a/data/monster/reptiles/serpent_spawn.lua b/data/monster/reptiles/serpent_spawn.lua index 0137ad0ac..a0297d28d 100644 --- a/data/monster/reptiles/serpent_spawn.lua +++ b/data/monster/reptiles/serpent_spawn.lua @@ -62,7 +62,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/reptiles/stonerefiner.lua b/data/monster/reptiles/stonerefiner.lua index ee3d78e4c..8a9b1f760 100644 --- a/data/monster/reptiles/stonerefiner.lua +++ b/data/monster/reptiles/stonerefiner.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/reptiles/wyvern.lua b/data/monster/reptiles/wyvern.lua index 32bbd13a2..a0215bd24 100644 --- a/data/monster/reptiles/wyvern.lua +++ b/data/monster/reptiles/wyvern.lua @@ -64,7 +64,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/reptiles/young_sea_serpent.lua b/data/monster/reptiles/young_sea_serpent.lua index 48076cf50..39f915fed 100644 --- a/data/monster/reptiles/young_sea_serpent.lua +++ b/data/monster/reptiles/young_sea_serpent.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 400, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/slimes/defiler.lua b/data/monster/slimes/defiler.lua index a95da4e56..5fe7792fe 100644 --- a/data/monster/slimes/defiler.lua +++ b/data/monster/slimes/defiler.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/slimes/devourer.lua b/data/monster/slimes/devourer.lua index 8f2fd98dd..bf1acb4bb 100644 --- a/data/monster/slimes/devourer.lua +++ b/data/monster/slimes/devourer.lua @@ -64,7 +64,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/slimes/glooth_blob.lua b/data/monster/slimes/glooth_blob.lua index 8e2a9e892..b97d09a63 100644 --- a/data/monster/slimes/glooth_blob.lua +++ b/data/monster/slimes/glooth_blob.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/slimes/ink_blob.lua b/data/monster/slimes/ink_blob.lua index 79b7c5be2..11e92fb0f 100644 --- a/data/monster/slimes/ink_blob.lua +++ b/data/monster/slimes/ink_blob.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/slimes/slime.lua b/data/monster/slimes/slime.lua index 2aa3be1e6..e319a68d1 100644 --- a/data/monster/slimes/slime.lua +++ b/data/monster/slimes/slime.lua @@ -65,7 +65,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/slimes/squidgy_slime.lua b/data/monster/slimes/squidgy_slime.lua index 5550cad79..088cdeec7 100644 --- a/data/monster/slimes/squidgy_slime.lua +++ b/data/monster/slimes/squidgy_slime.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/bane_of_light.lua b/data/monster/undeads/bane_of_light.lua index e2193c5a0..cefa5b6f5 100644 --- a/data/monster/undeads/bane_of_light.lua +++ b/data/monster/undeads/bane_of_light.lua @@ -59,7 +59,7 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/undeads/banshee.lua b/data/monster/undeads/banshee.lua index a51df5d3b..4a7025719 100644 --- a/data/monster/undeads/banshee.lua +++ b/data/monster/undeads/banshee.lua @@ -64,8 +64,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/betrayed_wraith.lua b/data/monster/undeads/betrayed_wraith.lua index f6439b1fc..df918a8cd 100644 --- a/data/monster/undeads/betrayed_wraith.lua +++ b/data/monster/undeads/betrayed_wraith.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 300, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/blightwalker.lua b/data/monster/undeads/blightwalker.lua index 12a924082..9e91436be 100644 --- a/data/monster/undeads/blightwalker.lua +++ b/data/monster/undeads/blightwalker.lua @@ -61,8 +61,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/blood_beast.lua b/data/monster/undeads/blood_beast.lua index 035cb9df9..a53042072 100644 --- a/data/monster/undeads/blood_beast.lua +++ b/data/monster/undeads/blood_beast.lua @@ -62,9 +62,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/bonebeast.lua b/data/monster/undeads/bonebeast.lua index f1cb20f90..3b570b0df 100644 --- a/data/monster/undeads/bonebeast.lua +++ b/data/monster/undeads/bonebeast.lua @@ -61,7 +61,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/burster_spectre.lua b/data/monster/undeads/burster_spectre.lua index ee9fb54ba..94701f2f4 100644 --- a/data/monster/undeads/burster_spectre.lua +++ b/data/monster/undeads/burster_spectre.lua @@ -128,7 +128,7 @@ monster.elements = { {type = COMBAT_LIFEDRAIN, percent = 0}, {type = COMBAT_MANADRAIN, percent = 0}, {type = COMBAT_DROWNDAMAGE, percent = 0}, - {type = COMBAT_ICEDAMAGE, percent = 30}, + {type = COMBAT_ICEDAMAGE, percent = 70}, {type = COMBAT_HOLYDAMAGE , percent = 0}, {type = COMBAT_DEATHDAMAGE , percent = 0} } diff --git a/data/monster/undeads/crypt_shambler.lua b/data/monster/undeads/crypt_shambler.lua index d36da933b..5f78aa1b4 100644 --- a/data/monster/undeads/crypt_shambler.lua +++ b/data/monster/undeads/crypt_shambler.lua @@ -62,7 +62,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/cursed_prospector.lua b/data/monster/undeads/cursed_prospector.lua index 78242f374..ff4c77b4c 100644 --- a/data/monster/undeads/cursed_prospector.lua +++ b/data/monster/undeads/cursed_prospector.lua @@ -2,7 +2,7 @@ local mType = Game.createMonsterType("Cursed Prospector") local monster = {} monster.description = "Cursed Prospector" -monster.experience = 4200 +monster.experience = 5250 monster.outfit = { lookType = 1268, lookHead = 0, diff --git a/data/monster/undeads/demon_skeleton.lua b/data/monster/undeads/demon_skeleton.lua index 89f05fefe..503561313 100644 --- a/data/monster/undeads/demon_skeleton.lua +++ b/data/monster/undeads/demon_skeleton.lua @@ -63,8 +63,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/elder_mummy.lua b/data/monster/undeads/elder_mummy.lua index dc220c7d5..1ecf7559c 100644 --- a/data/monster/undeads/elder_mummy.lua +++ b/data/monster/undeads/elder_mummy.lua @@ -62,7 +62,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/falcon_knight.lua b/data/monster/undeads/falcon_knight.lua index 495fcb7c2..c43cc7dd7 100644 --- a/data/monster/undeads/falcon_knight.lua +++ b/data/monster/undeads/falcon_knight.lua @@ -2,7 +2,7 @@ local mType = Game.createMonsterType("Falcon Knight") local monster = {} monster.description = "a falcon knight" -monster.experience = 4500 +monster.experience = 5985 monster.outfit = { lookType = 1071, lookHead = 57, diff --git a/data/monster/undeads/falcon_paladin.lua b/data/monster/undeads/falcon_paladin.lua index 955244fec..7d7e90daa 100644 --- a/data/monster/undeads/falcon_paladin.lua +++ b/data/monster/undeads/falcon_paladin.lua @@ -2,7 +2,7 @@ local mType = Game.createMonsterType("Falcon Paladin") local monster = {} monster.description = "a falcon paladin" -monster.experience = 4920 +monster.experience = 6544 monster.outfit = { lookType = 1071, lookHead = 57, diff --git a/data/monster/undeads/ghost.lua b/data/monster/undeads/ghost.lua index 4f8ddd2a0..f329f5e3b 100644 --- a/data/monster/undeads/ghost.lua +++ b/data/monster/undeads/ghost.lua @@ -62,7 +62,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/grave_guard.lua b/data/monster/undeads/grave_guard.lua index 14e128094..c0db7b002 100644 --- a/data/monster/undeads/grave_guard.lua +++ b/data/monster/undeads/grave_guard.lua @@ -62,8 +62,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/gravedigger.lua b/data/monster/undeads/gravedigger.lua index a88470a12..fb38e8ed2 100644 --- a/data/monster/undeads/gravedigger.lua +++ b/data/monster/undeads/gravedigger.lua @@ -62,7 +62,7 @@ monster.flags = { runHealth = 200, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, canWalkOnPoison = false, pet = false diff --git a/data/monster/undeads/grim_reaper.lua b/data/monster/undeads/grim_reaper.lua index 09971521a..333f2d17b 100644 --- a/data/monster/undeads/grim_reaper.lua +++ b/data/monster/undeads/grim_reaper.lua @@ -64,7 +64,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/hand_of_cursed_fate.lua b/data/monster/undeads/hand_of_cursed_fate.lua index 97771a85b..6c0980ce5 100644 --- a/data/monster/undeads/hand_of_cursed_fate.lua +++ b/data/monster/undeads/hand_of_cursed_fate.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 3500, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/lich.lua b/data/monster/undeads/lich.lua index ddbcc9b73..68fdd3678 100644 --- a/data/monster/undeads/lich.lua +++ b/data/monster/undeads/lich.lua @@ -62,9 +62,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/lost_soul.lua b/data/monster/undeads/lost_soul.lua index 19e98982a..bc804f5b8 100644 --- a/data/monster/undeads/lost_soul.lua +++ b/data/monster/undeads/lost_soul.lua @@ -60,8 +60,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/mummy.lua b/data/monster/undeads/mummy.lua index 707b9880e..8da2be20f 100644 --- a/data/monster/undeads/mummy.lua +++ b/data/monster/undeads/mummy.lua @@ -61,7 +61,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/ripper_spectre.lua b/data/monster/undeads/ripper_spectre.lua index 7bd519333..6d96d76c5 100644 --- a/data/monster/undeads/ripper_spectre.lua +++ b/data/monster/undeads/ripper_spectre.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/rot_elemental.lua b/data/monster/undeads/rot_elemental.lua index 8873cf0a9..4ea90b5f6 100644 --- a/data/monster/undeads/rot_elemental.lua +++ b/data/monster/undeads/rot_elemental.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/spectre.lua b/data/monster/undeads/spectre.lua index 7ca778853..8d85c2022 100644 --- a/data/monster/undeads/spectre.lua +++ b/data/monster/undeads/spectre.lua @@ -61,7 +61,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/tarnished_spirit.lua b/data/monster/undeads/tarnished_spirit.lua index 043511e2f..9ca441852 100644 --- a/data/monster/undeads/tarnished_spirit.lua +++ b/data/monster/undeads/tarnished_spirit.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/undead_dragon.lua b/data/monster/undeads/undead_dragon.lua index 07a5543a1..b2cf338be 100644 --- a/data/monster/undeads/undead_dragon.lua +++ b/data/monster/undeads/undead_dragon.lua @@ -64,8 +64,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/undead_elite_gladiator.lua b/data/monster/undeads/undead_elite_gladiator.lua index 2592a013b..ac79ea1fc 100644 --- a/data/monster/undeads/undead_elite_gladiator.lua +++ b/data/monster/undeads/undead_elite_gladiator.lua @@ -58,8 +58,8 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnEnergy = true, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/undeads/undead_gladiator.lua b/data/monster/undeads/undead_gladiator.lua index cd2d85a6c..8e6de2f18 100644 --- a/data/monster/undeads/undead_gladiator.lua +++ b/data/monster/undeads/undead_gladiator.lua @@ -59,7 +59,7 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, + canWalkOnFire = true, canWalkOnPoison = false, pet = false } diff --git a/data/monster/undeads/vampire.lua b/data/monster/undeads/vampire.lua index 485bb41c6..56c013fac 100644 --- a/data/monster/undeads/vampire.lua +++ b/data/monster/undeads/vampire.lua @@ -64,7 +64,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/vampire_bride.lua b/data/monster/undeads/vampire_bride.lua index a8092cd82..25aef9e31 100644 --- a/data/monster/undeads/vampire_bride.lua +++ b/data/monster/undeads/vampire_bride.lua @@ -62,7 +62,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/vampire_viscount.lua b/data/monster/undeads/vampire_viscount.lua index db5b9e24e..2f55ddb9b 100644 --- a/data/monster/undeads/vampire_viscount.lua +++ b/data/monster/undeads/vampire_viscount.lua @@ -62,7 +62,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/vicious_manbat.lua b/data/monster/undeads/vicious_manbat.lua index 08a82c63b..63fea706c 100644 --- a/data/monster/undeads/vicious_manbat.lua +++ b/data/monster/undeads/vicious_manbat.lua @@ -62,7 +62,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/undeads/zombie.lua b/data/monster/undeads/zombie.lua index d1254a42c..6fe64bfcf 100644 --- a/data/monster/undeads/zombie.lua +++ b/data/monster/undeads/zombie.lua @@ -60,9 +60,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/ancient_scarab.lua b/data/monster/vermins/ancient_scarab.lua index 8f6dec6a7..0c76f290a 100644 --- a/data/monster/vermins/ancient_scarab.lua +++ b/data/monster/vermins/ancient_scarab.lua @@ -64,7 +64,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/brimstone_bug.lua b/data/monster/vermins/brimstone_bug.lua index 9369a00ec..4049df1e4 100644 --- a/data/monster/vermins/brimstone_bug.lua +++ b/data/monster/vermins/brimstone_bug.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/cave_devourer.lua b/data/monster/vermins/cave_devourer.lua index 84d3e04a4..1297587df 100644 --- a/data/monster/vermins/cave_devourer.lua +++ b/data/monster/vermins/cave_devourer.lua @@ -2,7 +2,7 @@ local mType = Game.createMonsterType("Cave Devourer") local monster = {} monster.description = "a cave devourer" -monster.experience = 2800 +monster.experience = 2380 monster.outfit = { lookType = 1036, lookHead = 0, @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/centipede.lua b/data/monster/vermins/centipede.lua index 651a18537..6e97e5c59 100644 --- a/data/monster/vermins/centipede.lua +++ b/data/monster/vermins/centipede.lua @@ -62,7 +62,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/chasm_spawn.lua b/data/monster/vermins/chasm_spawn.lua index c4a30064e..8994184ea 100644 --- a/data/monster/vermins/chasm_spawn.lua +++ b/data/monster/vermins/chasm_spawn.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/crawler.lua b/data/monster/vermins/crawler.lua index dd9596a55..32b544015 100644 --- a/data/monster/vermins/crawler.lua +++ b/data/monster/vermins/crawler.lua @@ -61,7 +61,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/deepworm.lua b/data/monster/vermins/deepworm.lua index e62f87e2d..8fa190e14 100644 --- a/data/monster/vermins/deepworm.lua +++ b/data/monster/vermins/deepworm.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, + canWalkOnEnergy = true, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/diremaw.lua b/data/monster/vermins/diremaw.lua index d8ea1a1e0..60be01e1f 100644 --- a/data/monster/vermins/diremaw.lua +++ b/data/monster/vermins/diremaw.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/drillworm.lua b/data/monster/vermins/drillworm.lua index f6c616e87..5035349b3 100644 --- a/data/monster/vermins/drillworm.lua +++ b/data/monster/vermins/drillworm.lua @@ -58,9 +58,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/hibernal_moth.lua b/data/monster/vermins/hibernal_moth.lua index 5bec261c1..49887a9bb 100644 --- a/data/monster/vermins/hibernal_moth.lua +++ b/data/monster/vermins/hibernal_moth.lua @@ -62,7 +62,7 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = true, - canWalkOnFire = true, + canWalkOnFire = false, canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/hive_overseer.lua b/data/monster/vermins/hive_overseer.lua index 9405085e6..8e65d9c76 100644 --- a/data/monster/vermins/hive_overseer.lua +++ b/data/monster/vermins/hive_overseer.lua @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/insectoid_worker.lua b/data/monster/vermins/insectoid_worker.lua index f61e2ba66..b01c6cc96 100644 --- a/data/monster/vermins/insectoid_worker.lua +++ b/data/monster/vermins/insectoid_worker.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/kollos.lua b/data/monster/vermins/kollos.lua index cb61b84fd..df068b3c6 100644 --- a/data/monster/vermins/kollos.lua +++ b/data/monster/vermins/kollos.lua @@ -59,8 +59,8 @@ monster.flags = { healthHidden = false, isBlockable = false, canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/lancer_beetle.lua b/data/monster/vermins/lancer_beetle.lua index b8f9d9b3d..cc0e586e9 100644 --- a/data/monster/vermins/lancer_beetle.lua +++ b/data/monster/vermins/lancer_beetle.lua @@ -61,7 +61,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/larva.lua b/data/monster/vermins/larva.lua index c5742b1da..acea0935f 100644 --- a/data/monster/vermins/larva.lua +++ b/data/monster/vermins/larva.lua @@ -62,7 +62,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/poison_spider.lua b/data/monster/vermins/poison_spider.lua index 1e86b719c..31cb41421 100644 --- a/data/monster/vermins/poison_spider.lua +++ b/data/monster/vermins/poison_spider.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/scarab.lua b/data/monster/vermins/scarab.lua index 6e7c6adfb..8a49c1b32 100644 --- a/data/monster/vermins/scarab.lua +++ b/data/monster/vermins/scarab.lua @@ -61,7 +61,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/scorpion.lua b/data/monster/vermins/scorpion.lua index 64115d116..b8969e5f8 100644 --- a/data/monster/vermins/scorpion.lua +++ b/data/monster/vermins/scorpion.lua @@ -65,7 +65,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/spidris.lua b/data/monster/vermins/spidris.lua index 9bc40e8b7..bf8e70315 100644 --- a/data/monster/vermins/spidris.lua +++ b/data/monster/vermins/spidris.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/spidris_elite.lua b/data/monster/vermins/spidris_elite.lua index 77c09c043..d6c0606ac 100644 --- a/data/monster/vermins/spidris_elite.lua +++ b/data/monster/vermins/spidris_elite.lua @@ -61,7 +61,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/spitter.lua b/data/monster/vermins/spitter.lua index 6980a8ab2..cc756fba5 100644 --- a/data/monster/vermins/spitter.lua +++ b/data/monster/vermins/spitter.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/swarmer.lua b/data/monster/vermins/swarmer.lua index 23ed62bdd..7ecdc5a55 100644 --- a/data/monster/vermins/swarmer.lua +++ b/data/monster/vermins/swarmer.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/tarantula.lua b/data/monster/vermins/tarantula.lua index fa3f71a2b..ac406bdcc 100644 --- a/data/monster/vermins/tarantula.lua +++ b/data/monster/vermins/tarantula.lua @@ -65,7 +65,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/tunnel_tyrant.lua b/data/monster/vermins/tunnel_tyrant.lua index ba926d9cf..18f7dd7b1 100644 --- a/data/monster/vermins/tunnel_tyrant.lua +++ b/data/monster/vermins/tunnel_tyrant.lua @@ -2,7 +2,7 @@ local mType = Game.createMonsterType("Tunnel Tyrant") local monster = {} monster.description = "a tunnel tyrant" -monster.experience = 4000 +monster.experience = 3400 monster.outfit = { lookType = 1035, lookHead = 0, @@ -61,9 +61,9 @@ monster.flags = { runHealth = 0, healthHidden = false, isBlockable = false, - canWalkOnEnergy = false, - canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/wasp.lua b/data/monster/vermins/wasp.lua index 137f40fae..93d5dff89 100644 --- a/data/monster/vermins/wasp.lua +++ b/data/monster/vermins/wasp.lua @@ -63,7 +63,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/waspoid.lua b/data/monster/vermins/waspoid.lua index 5c2942965..b8a187f7e 100644 --- a/data/monster/vermins/waspoid.lua +++ b/data/monster/vermins/waspoid.lua @@ -60,7 +60,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/monster/vermins/wiggler.lua b/data/monster/vermins/wiggler.lua index 2879d9e0f..c506b8af6 100644 --- a/data/monster/vermins/wiggler.lua +++ b/data/monster/vermins/wiggler.lua @@ -61,7 +61,7 @@ monster.flags = { isBlockable = false, canWalkOnEnergy = false, canWalkOnFire = false, - canWalkOnPoison = false, + canWalkOnPoison = true, pet = false } diff --git a/data/npc/Naji.xml b/data/npc/Naji.xml index 5cd9430a6..c4ba6fb12 100644 --- a/data/npc/Naji.xml +++ b/data/npc/Naji.xml @@ -1,5 +1,5 @@ - - - + + + diff --git a/data/npc/scripts/bank.lua b/data/npc/scripts/bank.lua index 1d3901f62..94c243ea1 100644 --- a/data/npc/scripts/bank.lua +++ b/data/npc/scripts/bank.lua @@ -514,7 +514,7 @@ local function creatureSayCallback(cid, type, msg) elseif npcHandler.topic[cid] == 13 then if msgcontains(msg, 'yes') then if not player:transferMoneyTo(transfer[cid], count[cid]) then - npcHandler:say('You cannot transfer money to this account.', cid) + npcHandler:say("I'm afraid this character only holds a junior account at our bank. Do not worry, though. Once he has chosen his vocation or is no longer on Dawnport, his account will be upgraded.", cid) else npcHandler:say('Very well. You have transferred ' .. count[cid] .. ' gold to ' .. transfer[cid] ..'.', cid) transfer[cid] = nil diff --git a/data/npc/scripts/default.lua b/data/npc/scripts/default.lua index 36d042db2..90c025f58 100644 --- a/data/npc/scripts/default.lua +++ b/data/npc/scripts/default.lua @@ -2,9 +2,17 @@ local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) -function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end -function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end -function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end -function onThink() npcHandler:onThink() end +function onCreatureAppear(cid) + npcHandler:onCreatureAppear(cid) +end +function onCreatureDisappear(cid) + npcHandler:onCreatureDisappear(cid) +end +function onCreatureSay(cid, type, msg) + npcHandler:onCreatureSay(cid, type, msg) +end +function onThink() + npcHandler:onThink() +end npcHandler:addModule(FocusModule:new()) diff --git a/data/scripts/creaturescripts/others/summon.lua b/data/scripts/creaturescripts/others/summon.lua index a481f82c2..505db1760 100644 --- a/data/scripts/creaturescripts/others/summon.lua +++ b/data/scripts/creaturescripts/others/summon.lua @@ -1,7 +1,11 @@ local summon = { + [VOCATION.ID.SORCERER] = {name = "thundergiant"}, [VOCATION.ID.MASTER_SORCERER] = {name = "thundergiant"}, + [VOCATION.ID.DRUID] = {name = "grovebeast"}, [VOCATION.ID.ELDER_DRUID] = {name = "grovebeast"}, + [VOCATION.ID.PALADIN] = {name = "emberwing"}, [VOCATION.ID.ROYAL_PALADIN] = {name = "emberwing"}, + [VOCATION.ID.KNIGHT] = {name = "skullfrost"}, [VOCATION.ID.ELITE_KNIGHT] = {name = "skullfrost"} } @@ -14,7 +18,7 @@ function summonLogin.onLogin(player) local petTimeLeft = player:getStorageValue(summonStorage) - player:getLastLogout() if petTimeLeft > 0 then - if vocation and vocation:getId() then + if vocation and vocation:getId() and isPremium(player) then summonName = vocation.name end end diff --git a/data/scripts/globalevents/others/check_mount.lua b/data/scripts/globalevents/others/check_mount.lua index f50dcee6c..a450784d9 100644 --- a/data/scripts/globalevents/others/check_mount.lua +++ b/data/scripts/globalevents/others/check_mount.lua @@ -1,4 +1,5 @@ local mountIds = {22, 25, 26} + local rentedMounts = GlobalEvent("rentedmounts") function rentedMounts.onThink(interval) local players = Game.getPlayers() diff --git a/data/scripts/lib/register_actions.lua b/data/scripts/lib/register_actions.lua index 19950002e..ad5122f6c 100644 --- a/data/scripts/lib/register_actions.lua +++ b/data/scripts/lib/register_actions.lua @@ -330,7 +330,41 @@ function onUsePick(player, item, fromPosition, target, toPosition, isHotkey) end target:getPosition():sendMagicEffect(CONST_ME_BLOCKHIT) target:remove(1) - end + elseif target.itemid == 11227 then + target:remove(1) + toPosition:sendMagicEffect(CONST_ME_POFF) + player:addItem(2152, 10) + elseif target.itemid == 7200 then + target:transform(7236) + target:decay() + toPosition:sendMagicEffect(CONST_ME_HITAREA) + elseif target.itemid == 468 then + target:transform(469) + target:decay() + toPosition:sendMagicEffect(CONST_ME_HITAREA) + elseif target.itemid == 6299 and target.actionid > 0 then + target:transform(482) + target:decay() + toPosition:sendMagicEffect(CONST_ME_HITAREA) + elseif target.itemid == 23712 then + target:transform(23713) + target:decay() + toPosition:sendMagicEffect(CONST_ME_HITAREA) + elseif target.itemid == 481 then + target:transform(482) + target:decay() + toPosition:sendMagicEffect(CONST_ME_HITAREA) + elseif target.itemid == 483 then + target:transform(484) + target:decay() + toPosition:sendMagicEffect(CONST_ME_HITAREA) + elseif target.itemid == 7932 then + target:transform(7933) + target:decay() + toPosition:sendMagicEffect(CONST_ME_HITAREA) + else + return false + end return true end @@ -374,8 +408,10 @@ function onUseScythe(player, item, fromPosition, target, toPosition, isHotkey) target:transform(2737) target:decay() Game.createItem(2694, 1, toPosition) + else + return false + end return onDestroyItem(player, item, fromPosition, target, toPosition, isHotkey) - end end function onUseKitchenKnife(player, item, fromPosition, target, toPosition, isHotkey) diff --git a/data/scripts/weapons/scripts/burst_arrow.lua b/data/scripts/weapons/scripts/burst_arrow.lua index 89bf3d214..a86b7f933 100644 --- a/data/scripts/weapons/scripts/burst_arrow.lua +++ b/data/scripts/weapons/scripts/burst_arrow.lua @@ -7,6 +7,7 @@ local area = createCombatArea({ local combat = Combat() combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA) +combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_BURSTARROW) combat:setParameter(COMBAT_PARAM_BLOCKARMOR, true) combat:setFormula(COMBAT_FORMULA_SKILL, 0, 0, 1, 0) combat:setArea(area) diff --git a/data/scripts/weapons/scripts/diamond_arrow.lua b/data/scripts/weapons/scripts/diamond_arrow.lua index d59371645..c88603af1 100644 --- a/data/scripts/weapons/scripts/diamond_arrow.lua +++ b/data/scripts/weapons/scripts/diamond_arrow.lua @@ -6,18 +6,19 @@ local area = createCombatArea({ {0, 1, 1, 1, 0}, }) - local combat = Combat() - combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) - combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT) - combat:setParameter(COMBAT_PARAM_BLOCKARMOR, true) - combat:setFormula(COMBAT_FORMULA_SKILL, 0, 0, 1, 0) - combat:setArea(area) +local combat = Combat() +combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) +combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT) +combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DIAMONDARROW) +combat:setParameter(COMBAT_PARAM_BLOCKARMOR, true) +combat:setFormula(COMBAT_FORMULA_SKILL, 0, 0, 1, 0) +combat:setArea(area) local diamondArrow = Weapon(WEAPON_AMMO) - function diamondArrow.onUseWeapon(player, variant) - return combat:execute(player, variant) - end +function diamondArrow.onUseWeapon(player, variant) + return combat:execute(player, variant) +end diamondArrow:id(29057) diamondArrow:level(150) diff --git a/data/scripts/weapons/scripts/viper_star.lua b/data/scripts/weapons/scripts/viper_star.lua index 810da4300..853aa12f3 100644 --- a/data/scripts/weapons/scripts/viper_star.lua +++ b/data/scripts/weapons/scripts/viper_star.lua @@ -1,5 +1,6 @@ local combat = Combat() combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) +combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_GREENSTAR) combat:setParameter(COMBAT_PARAM_BLOCKARMOR, true) combat:setFormula(COMBAT_FORMULA_SKILL, 0, 0, 1, 0) diff --git a/data/spells/scripts/summon/summons.lua b/data/spells/scripts/summon/summons.lua index 27ed401d0..0e4ad76bd 100644 --- a/data/spells/scripts/summon/summons.lua +++ b/data/spells/scripts/summon/summons.lua @@ -1,15 +1,17 @@ local setting = { - [VOCATION.ID.MASTER_SORCERER] = {name = "thundergiant"}, - [VOCATION.ID.ELDER_DRUID] = {name = "grovebeast"}, - [VOCATION.ID.ROYAL_PALADIN] = {name = "emberwing"}, - [VOCATION.ID.ELITE_KNIGHT] = {name = "skullfrost"} + [VOCATION.CLIENT_ID.SORCERER] = {name = "thundergiant"}, + [VOCATION.CLIENT_ID.DRUID] = {name = "grovebeast"}, + [VOCATION.CLIENT_ID.PALADIN] = {name = "emberwing"}, + [VOCATION.CLIENT_ID.KNIGHT] = {name = "skullfrost"} } function removePet(creatureId) - local c = Creature(creatureId) - if not c then return false end + local creature = Creature(creatureId) + if not creature then + return true + end - c:remove() + creature:remove() end local combat = createCombatObject() @@ -20,21 +22,27 @@ local area = createCombatArea(AREA_CIRCLE1X1) setCombatArea(combat, area) function onCastSpell(player, variant) - if not player then return false end + if not player or not isPremium(player) then + player:getPosition():sendMagicEffect(CONST_ME_POFF) + player:sendCancelMessage("You need a premium account.") + return false + end if #player:getSummons() >= 1 then player:sendCancelMessage("You can't have other summons.") player:getPosition():sendMagicEffect(CONST_ME_POFF) - return false + return false end - local vocationId = setting[player:getVocation():getId()] + local vocation = setting[player:getVocation():getClientId()] local summonName = nil - if vocationId then - summonName = vocationId.name + if vocation then + summonName = vocation.name end - if not summonName then return false end + if not summonName then + return true + end local mySummon = Game.createMonster(summonName, player:getPosition(), true, false) if not mySummon then diff --git a/data/startup/others/bitwise_flags.lua b/data/startup/others/bitwise_flags.lua new file mode 100644 index 000000000..c6e6b6c07 --- /dev/null +++ b/data/startup/others/bitwise_flags.lua @@ -0,0 +1,19 @@ +-- Lua 5.1 doesn't have support for bitwise operations + +function testFlag(set, flag) + return set % (2*flag) >= flag +end + +function setFlag(set, flag) + if set % (2*flag) >= flag then + return set + end + return set + flag +end + +function clearFlag(set, flag) + if set % (2*flag) >= flag then + return set - flag + end + return set +end \ No newline at end of file diff --git a/data/startup/others/hireling_lib.lua b/data/startup/others/hireling_lib.lua index 3e808cf4a..c46ecbffa 100644 --- a/data/startup/others/hireling_lib.lua +++ b/data/startup/others/hireling_lib.lua @@ -338,8 +338,7 @@ function Hireling:spawn() npc:setName(self:getName()) local creature = Creature(npc) creature:setOutfit(self:getOutfit()) - -- figure later the right SpeechBubble - npc:setSpeechBubble(SPEECHBUBBLE_NORMAL) + npc:setSpeechBubble(7) npc:place(self:getPosition()) creature:getPosition():sendMagicEffect(CONST_ME_TELEPORT) diff --git a/data/startup/others/others.lua b/data/startup/others/others.lua index 3d5b810aa..5bf063313 100644 --- a/data/startup/others/others.lua +++ b/data/startup/others/others.lua @@ -1,2 +1,3 @@ +dofile('data/startup/others/bitwise_flags.lua') dofile('data/startup/others/functions.lua') dofile('data/startup/others/hireling_lib.lua') diff --git a/data/startup/tables/item.lua b/data/startup/tables/item.lua index 6778c626c..a48b18d86 100644 --- a/data/startup/tables/item.lua +++ b/data/startup/tables/item.lua @@ -42,6 +42,18 @@ ItemAction = { {x = 33398, y = 32640, z = 6}, {x = 33395, y = 32667, z = 6} } + }, + -- Kilmaresh + -- First mission + -- data\scripts\quests\kilmaresh\1-fafnars-wrath\6-mind-travel.lua + [40004] = { + itemId = 1495, + itemPos = { + { x = 33915, y = 31635, z = 9 }, + { x = 33920, y = 31638, z = 9 }, + { x = 33909, y = 31642, z = 9 }, + { x = 33916, y = 31642, z = 9 } + } } } @@ -162,5 +174,60 @@ ItemUnique = { [40028] = { itemId = 36319, itemPos = {x = 33395, y = 32660, z = 6} + }, + + -- Kilmaresh + -- First mission + -- data\scripts\quests\kilmaresh\1-fafnars-wrath\2-ambassadors-treason.lua + [40029] = { + itemId = 36199, + itemPos = {x = 33955, y = 31502, z = 4} + }, + [40030] = { + itemId = 36200, + itemPos = {x = 33955, y = 31501, z = 3} + }, + [40031] = { + itemId = 7729, + itemPos = {x = 33956, y = 31504, z = 3} + }, + -- Four Masks + [40032] = { -- Ivory mask + itemId = 36104, + itemPos = {x = 33879, y = 31490, z = 6} + }, + + [40033] = { -- Gryphon mask + itemId = 36465, + itemPos = {x = 33841, y = 31682, z = 3} + }, + [40034] = { -- Silver mask + itemId = 36557, + itemPos = {x = 33780, y = 31664, z = 7} + }, + [40035] = { -- Mirror mask + itemId = 1417, + itemPos = {x = 33793, y = 31553, z = 8} + }, + -- Blessing the statues + [40036] = { + itemId = 35997, + itemPos = {x = 33854, y = 31521, z = 9} + }, + [40037] = { + itemId = 35997, + itemPos = {x = 33879, y = 31545, z = 9} + }, + [40038] = { + itemId = 35996, + itemPos = {x = 33891, y = 31504, z = 9} + }, + [40039] = { + itemId = 35997, + itemPos = {x = 33853, y = 31464, z = 9} + }, + [40040] = { + itemId = 35996, + itemPos = {x = 33874, y = 31433, z = 9} } } diff --git a/data/startup/tables/tile.lua b/data/startup/tables/tile.lua index 26f3afebf..a55c45a47 100644 --- a/data/startup/tables/tile.lua +++ b/data/startup/tables/tile.lua @@ -261,6 +261,17 @@ TileAction = { {x = 33250, y = 32268, z = 6} } }, + + -- Kilmaresh + -- First mission + -- + [50307] = { + itemId = false, + itemPos = { + { x = 33956, y = 31503, z = 2 }, + { x = 33957, y = 31503, z = 2 } + } + } } TileUnique = { diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 18af1a7fa..ac6fb5f2c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -21,6 +21,7 @@ set(otxserver_SRC ${CMAKE_CURRENT_LIST_DIR}/depotchest.cpp ${CMAKE_CURRENT_LIST_DIR}/depotlocker.cpp ${CMAKE_CURRENT_LIST_DIR}/events.cpp + ${CMAKE_CURRENT_LIST_DIR}/familiars.cpp ${CMAKE_CURRENT_LIST_DIR}/fileloader.cpp ${CMAKE_CURRENT_LIST_DIR}/game.cpp ${CMAKE_CURRENT_LIST_DIR}/gamestore.cpp diff --git a/src/configmanager.cpp b/src/configmanager.cpp index 43d5e6150..b3f0bfff6 100644 --- a/src/configmanager.cpp +++ b/src/configmanager.cpp @@ -173,6 +173,8 @@ bool ConfigManager::load() boolean[WEATHER_RAIN] = getGlobalBoolean(L, "weatherRain", false); boolean[WEATHER_THUNDER] = getGlobalBoolean(L, "thunderEffect", false); + boolean[ONLY_PREMIUM_ACCOUNT] = getGlobalBoolean(L, "onlyPremiumAccount", false); + string[DEFAULT_PRIORITY] = getGlobalString(L, "defaultPriority", "high"); string[SERVER_NAME] = getGlobalString(L, "serverName", ""); string[OWNER_NAME] = getGlobalString(L, "ownerName", ""); diff --git a/src/configmanager.h b/src/configmanager.h index 757bd718c..372ffa9bb 100644 --- a/src/configmanager.h +++ b/src/configmanager.h @@ -57,6 +57,7 @@ class ConfigManager ONLY_INVITED_CAN_MOVE_HOUSE_ITEMS, WEATHER_RAIN, WEATHER_THUNDER, + ONLY_PREMIUM_ACCOUNT, LAST_BOOLEAN_CONFIG /* this must be the last one */ }; diff --git a/src/const.h b/src/const.h index 9d0c8175a..be7836705 100644 --- a/src/const.h +++ b/src/const.h @@ -652,18 +652,20 @@ static constexpr int32_t STORAGEVALUE_PROMOTION = 30018; static constexpr int32_t STORAGEVALUE_EMOTE = 30019; static constexpr int32_t STORAGEVALUE_DAILYREWARD = 14898; static constexpr int32_t STORAGEVALUE_BESTIARYKILLCOUNT = 61305000; // Can get up to 2000 storages! -//Reserved player storage key ranges; -//[10000000 - 20000000]; +// Reserved player storage key ranges; +// [10000000 - 20000000]; static constexpr int32_t PSTRG_RESERVED_RANGE_START = 10000000; static constexpr int32_t PSTRG_RESERVED_RANGE_SIZE = 10000000; -//[1000 - 1500]; +// [1000 - 1500]; static constexpr int32_t PSTRG_OUTFITS_RANGE_START = (PSTRG_RESERVED_RANGE_START + 1000); static constexpr int32_t PSTRG_OUTFITS_RANGE_SIZE = 500; -//[2001 - 2011]; +// [2001 - 2011]; static constexpr int32_t PSTRG_MOUNTS_RANGE_START = (PSTRG_RESERVED_RANGE_START + 2001); static constexpr int32_t PSTRG_MOUNTS_RANGE_SIZE = 10; static constexpr int32_t PSTRG_MOUNTS_CURRENTMOUNT = (PSTRG_MOUNTS_RANGE_START + 10); - +// [3000 - 3500]; +static constexpr int32_t PSTRG_FAMILIARS_RANGE_START = (PSTRG_RESERVED_RANGE_START + 3000); +static constexpr int32_t PSTRG_FAMILIARS_RANGE_SIZE = 500; #define IS_IN_KEYRANGE(key, range) (key >= PSTRG_##range##_START && ((key - PSTRG_##range##_START) <= PSTRG_##range##_SIZE)) diff --git a/src/definitions.h b/src/definitions.h index facb45f6b..fdc7e67d3 100644 --- a/src/definitions.h +++ b/src/definitions.h @@ -24,8 +24,8 @@ static constexpr auto STATUS_SERVER_NAME = "OTX Server"; static constexpr auto STATUS_SERVER_VERSION = "5"; static constexpr auto STATUS_SERVER_DEVELOPERS = "OTServBR, Mark Samman, OTX Server Team and The Forgotten Server Developers"; -static constexpr auto CLIENT_VERSION = 1251; -static constexpr auto CLIENT_VERSION_STR = "12.51"; +static constexpr auto CLIENT_VERSION = 1260; +static constexpr auto CLIENT_VERSION_STR = "12.60"; static constexpr auto AUTHENTICATOR_DIGITS = 6U; static constexpr auto AUTHENTICATOR_PERIOD = 30U; diff --git a/src/enums.h b/src/enums.h index 1cce85856..8bf82b10c 100644 --- a/src/enums.h +++ b/src/enums.h @@ -146,6 +146,7 @@ enum OperatingSystem_t : uint8_t { CLIENTOS_LINUX = 1, CLIENTOS_WINDOWS = 2, CLIENTOS_FLASH = 3, + CLIENTOS_NEW_LINUX = 4, CLIENTOS_NEW_WINDOWS = 5, CLIENTOS_NEW_MAC = 6, @@ -466,7 +467,16 @@ enum PlayerSex_t : uint8_t { }; enum Vocation_t : uint16_t { - VOCATION_NONE = 0 + VOCATION_NONE = 0, + VOCATION_SORCERER = 1, + VOCATION_DRUID = 2, + VOCATION_PALADIN = 3, + VOCATION_KNIGHT = 4, + VOCATION_MASTER_SORCERER = 5, + VOCATION_ELDER_DRUID = 6, + VOCATION_ROYAL_PALADIN = 7, + VOCATION_ELITE_KNIGHT = 8, + VOCATION_LAST = VOCATION_ELITE_KNIGHT }; enum ReturnValue { @@ -655,6 +665,11 @@ struct Outfit_t { uint8_t lookLegs = 0; uint8_t lookFeet = 0; uint8_t lookAddons = 0; + uint8_t lookMountHead = 0; + uint8_t lookMountBody = 0; + uint8_t lookMountLegs = 0; + uint8_t lookMountFeet = 0; + uint16_t lookFamiliarsType = 0; }; enum LightState_t { @@ -846,6 +861,12 @@ enum InspectObjectTypes : uint8_t { INSPECT_CYCLOPEDIA = 3 }; +enum ImpactAnalyzerAndTracker_t : uint8_t { + ANALYZER_HEAL = 0, + ANALYZER_DAMAGE_DEALT = 1, + ANALYZER_DAMAGE_RECEIVED = 2 +}; + enum CyclopediaCharacterInfoType_t : uint8_t { CYCLOPEDIA_CHARACTERINFO_BASEINFORMATION = 0, CYCLOPEDIA_CHARACTERINFO_GENERALSTATS = 1, diff --git a/src/familiars.cpp b/src/familiars.cpp new file mode 100644 index 000000000..22d1b630e --- /dev/null +++ b/src/familiars.cpp @@ -0,0 +1,76 @@ +/** + * The Forgotten Server - a free and open-source MMORPG server emulator + * Copyright (C) 2019 Mark Samman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "otpch.h" +#include "familiars.h" +#include "pugicast.h" +#include "tools.h" + +bool Familiars::loadFromXml() { + pugi::xml_document doc; + pugi::xml_parse_result result = doc.load_file("data/XML/familiars.xml"); + if (!result) { + printXMLError("Error - Familiars::loadFromXml", "data/XML/familiars.xml", result); + return false; + } + + for (auto familiarsNode : doc.child("familiars").children()) { + pugi::xml_attribute attr; + if ((attr = familiarsNode.attribute("enabled")) && !attr.as_bool()) { + continue; + } + + if (!(attr = familiarsNode.attribute("vocation"))) { + std::cout << "[Warning - Familiars::loadFromXml] Missing familiar vocation." << std::endl; + continue; + } + + uint16_t vocation = pugi::cast(attr.value()); + if (vocation > VOCATION_LAST) { + std::cout << "[Warning - Familiars::loadFromXml] Invalid familiar vocation " << vocation << "." << std::endl; + continue; + } + + pugi::xml_attribute lookTypeAttribute = familiarsNode.attribute("lookType"); + if (!lookTypeAttribute) { + std::cout << "[Warning - Familiars::loadFromXml] Missing looktype on familiar." << std::endl; + continue; + } + + familiars[vocation].emplace_back( + familiarsNode.attribute("name").as_string(), + pugi::cast(lookTypeAttribute.value()), + familiarsNode.attribute("premium").as_bool(), + familiarsNode.attribute("unlocked").as_bool(true), + familiarsNode.attribute("type").as_string()); + } + for (uint16_t vocation = VOCATION_NONE; vocation <= VOCATION_LAST; ++vocation) { + familiars[vocation].shrink_to_fit(); + } + return true; +} + +const Familiar* Familiars::getFamiliarByLookType(uint16_t vocation, uint16_t lookType) const { + for (const Familiar& familiar : familiars[vocation]) { + if (familiar.lookType == lookType) { + return &familiar; + } + } + return nullptr; +} diff --git a/src/familiars.h b/src/familiars.h new file mode 100644 index 000000000..921c0fd6f --- /dev/null +++ b/src/familiars.h @@ -0,0 +1,64 @@ +/** + * The Forgotten Server - a free and open-source MMORPG server emulator + * Copyright (C) 2019 Mark Samman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef SRC_FAMILIARS_H_ +#define SRC_FAMILIARS_H_ + +#include +#include +#include + +#include "enums.h" + +struct Familiar { + Familiar(std::string initName, uint16_t initLookType, bool initPremium, bool initUnlocked, std::string initType) : + name(initName), lookType(initLookType), premium(initPremium), unlocked(initUnlocked), + type(initType) {} + + std::string name; + uint16_t lookType; + bool premium; + bool unlocked; + std::string type; +}; + +struct ProtocolFamiliars { + ProtocolFamiliars(const std::string& initName, uint16_t initLookType) : + name(initName), lookType(initLookType) {} + + const std::string& name; + uint16_t lookType; +}; + +class Familiars { + public: + static Familiars& getInstance() { + static Familiars instance; + return instance; + } + bool loadFromXml(); + const std::vector& getFamiliars(uint16_t vocation) const { + return familiars[vocation]; + } + const Familiar* getFamiliarByLookType(uint16_t vocation, uint16_t lookType) const; + private: + std::vector familiars[VOCATION_LAST + 1]; +}; + +#endif // SRC_FAMILIARS_H_ diff --git a/src/game.cpp b/src/game.cpp index 19c62a93c..97118a97a 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -538,6 +538,10 @@ void Game::saveGameState() IOLoginData::savePlayer(it.second); } + for (const auto& it : guilds) { + IOGuild::saveGuild(it.second); + } + Map::save(); g_databaseTasks.flush(); @@ -5437,7 +5441,7 @@ bool Game::combatChangeHealth(Creature* attacker, Creature* target, CombatDamage if (realHealthChange > 0 && !target->isInGhostMode()) { if (targetPlayer) { - targetPlayer->updateImpactTracker(realHealthChange, true); + targetPlayer->updateImpactTracker(COMBAT_HEALING, realHealthChange); } std::stringstream ss; @@ -5673,7 +5677,7 @@ bool Game::combatChangeHealth(Creature* attacker, Creature* target, CombatDamage if (realDamage > 0) { if (Monster* targetMonster = target->getMonster()) { if (attackerPlayer && attackerPlayer->getPlayer()) { - attackerPlayer->updateImpactTracker(realDamage, false); + attackerPlayer->updateImpactTracker(damage.secondary.type, damage.secondary.value); } if (targetMonster->israndomStepping()) { @@ -5784,6 +5788,22 @@ bool Game::combatChangeHealth(Creature* attacker, Creature* target, CombatDamage } if (message.primary.color != TEXTCOLOR_NONE || message.secondary.color != TEXTCOLOR_NONE) { + if (attackerPlayer) { + attackerPlayer->updateImpactTracker(damage.primary.type, damage.primary.value); + if (damage.secondary.type != COMBAT_NONE) { + attackerPlayer->updateImpactTracker(damage.secondary.type, damage.secondary.value); + } + } + if (targetPlayer) { + std::string cause = "(other)"; + if (attacker) { + cause = attacker->getName(); + } + targetPlayer->updateInputAnalyzer(damage.primary.type, damage.primary.value, cause); + if (damage.secondary.type != COMBAT_NONE) { + attackerPlayer->updateInputAnalyzer(damage.secondary.type, damage.secondary.value, cause); + } + } std::stringstream ss; ss << realDamage << (realDamage != 1 ? " hitpoints" : " hitpoint"); @@ -8182,6 +8202,10 @@ void Game::addGuild(Guild* guild) void Game::removeGuild(uint32_t guildId) { + auto it = guilds.find(guildId); + if (it != guilds.end()) { + IOGuild::saveGuild(it->second); + } guilds.erase(guildId); } diff --git a/src/groups.cpp b/src/groups.cpp index 0d86f2e9b..b02141b3f 100644 --- a/src/groups.cpp +++ b/src/groups.cpp @@ -116,6 +116,7 @@ bool Groups::load() groups.push_back(group); } + groups.shrink_to_fit(); return true; } diff --git a/src/guild.h b/src/guild.h index 63224d263..c9cac3f01 100644 --- a/src/guild.h +++ b/src/guild.h @@ -55,6 +55,12 @@ class Guild void setMemberCount(uint32_t count) { memberCount = count; } + uint64_t getBankBalance() const { + return bankBalance; + } + void setBankBalance(uint64_t balance) { + bankBalance = balance; + } const std::vector& getRanks() const { return ranks; @@ -76,6 +82,7 @@ class Guild std::list membersOnline; std::vector ranks; std::string name; + uint64_t bankBalance = 0; std::string motd; uint32_t id; uint32_t memberCount = 0; diff --git a/src/ioguild.cpp b/src/ioguild.cpp index ed48b1456..bc63bf2c3 100644 --- a/src/ioguild.cpp +++ b/src/ioguild.cpp @@ -27,10 +27,10 @@ Guild* IOGuild::loadGuild(uint32_t guildId) { Database& db = Database::getInstance(); std::ostringstream query; - query << "SELECT `name` FROM `guilds` WHERE `id` = " << guildId; + query << "SELECT `name`, `balance` FROM `guilds` WHERE `id` = " << guildId; if (DBResult_ptr result = db.storeQuery(query.str())) { Guild* guild = new Guild(guildId, result->getString("name")); - + guild->setBankBalance(result->getNumber("balance")); query.str(std::string()); query << "SELECT `id`, `name`, `level` FROM `guild_ranks` WHERE `guild_id` = " << guildId; @@ -44,6 +44,17 @@ Guild* IOGuild::loadGuild(uint32_t guildId) return nullptr; } +void IOGuild::saveGuild(Guild* guild) { + if (!guild) + return; + Database& db = Database::getInstance(); + std::ostringstream updateQuery; + updateQuery << "UPDATE `guilds` SET "; + updateQuery << "`balance` = " << guild->getBankBalance(); + updateQuery << " WHERE `id` = " << guild->getId(); + db.executeQuery(updateQuery.str()); +} + uint32_t IOGuild::getGuildIdByName(const std::string& name) { Database& db = Database::getInstance(); diff --git a/src/ioguild.h b/src/ioguild.h index 66e43392f..4d4c936a3 100644 --- a/src/ioguild.h +++ b/src/ioguild.h @@ -27,6 +27,7 @@ class IOGuild { public: static Guild* loadGuild(uint32_t guildId); + static void saveGuild(Guild* guild); static uint32_t getGuildIdByName(const std::string& name); static void getWarList(uint32_t guildId, GuildWarVector& guildWarVector); }; diff --git a/src/iologindata.cpp b/src/iologindata.cpp index 9383f5717..9475b7660 100644 --- a/src/iologindata.cpp +++ b/src/iologindata.cpp @@ -381,6 +381,11 @@ bool IOLoginData::loadPlayer(Player* player, DBResult_ptr result) player->defaultOutfit.lookLegs = result->getNumber("looklegs"); player->defaultOutfit.lookFeet = result->getNumber("lookfeet"); player->defaultOutfit.lookAddons = result->getNumber("lookaddons"); + player->defaultOutfit.lookMountHead = result->getNumber("lookmounthead"); + player->defaultOutfit.lookMountBody = result->getNumber("lookmountbody"); + player->defaultOutfit.lookMountLegs = result->getNumber("lookmountlegs"); + player->defaultOutfit.lookMountFeet = result->getNumber("lookmountfeet"); + player->defaultOutfit.lookFamiliarsType = result->getNumber("lookfamiliarstype"); player->currentOutfit = player->defaultOutfit; if (g_game.getWorldType() != WORLD_TYPE_PVP_ENFORCED) { @@ -882,6 +887,11 @@ bool IOLoginData::savePlayer(Player* player) query << "`looklegs` = " << static_cast(player->defaultOutfit.lookLegs) << ','; query << "`looktype` = " << player->defaultOutfit.lookType << ','; query << "`lookaddons` = " << static_cast(player->defaultOutfit.lookAddons) << ','; + query << "`lookmountbody` = " << static_cast(player->defaultOutfit.lookMountBody) << ','; + query << "`lookmountfeet` = " << static_cast(player->defaultOutfit.lookMountFeet) << ','; + query << "`lookmounthead` = " << static_cast(player->defaultOutfit.lookMountHead) << ','; + query << "`lookmountlegs` = " << static_cast(player->defaultOutfit.lookMountLegs) << ','; + query << "`lookfamiliarstype` = " << player->defaultOutfit.lookFamiliarsType << ','; query << "`maglevel` = " << player->magLevel << ','; query << "`mana` = " << player->mana << ','; query << "`manamax` = " << player->manaMax << ','; diff --git a/src/iomap.h b/src/iomap.h index a05d09e40..d9047429f 100644 --- a/src/iomap.h +++ b/src/iomap.h @@ -20,6 +20,8 @@ #ifndef FS_IOMAP_H_8085D4B1037A44288494A52FDBB775E4 #define FS_IOMAP_H_8085D4B1037A44288494A52FDBB775E4 +#include + #include "item.h" #include "map.h" #include "house.h" @@ -144,7 +146,7 @@ class IOMap } void setLastErrorString(std::string error) { - errorString = error; + errorString = std::move(error); } private: diff --git a/src/luascript.cpp b/src/luascript.cpp index 7821e8f4d..beb4469c3 100644 --- a/src/luascript.cpp +++ b/src/luascript.cpp @@ -785,6 +785,11 @@ Position LuaScriptInterface::getPosition(lua_State* L, int32_t arg) Outfit_t LuaScriptInterface::getOutfit(lua_State* L, int32_t arg) { Outfit_t outfit; + outfit.lookMountFeet = getField(L, arg, "lookMountFeet"); + outfit.lookMountLegs = getField(L, arg, "lookMountLegs"); + outfit.lookMountBody = getField(L, arg, "lookMountBody"); + outfit.lookMountHead = getField(L, arg, "lookMountHead"); + outfit.lookFamiliarsType = getField(L, arg, "lookFamiliarsType"); outfit.lookMount = getField(L, arg, "lookMount"); outfit.lookAddons = getField(L, arg, "lookAddons"); @@ -796,7 +801,7 @@ Outfit_t LuaScriptInterface::getOutfit(lua_State* L, int32_t arg) outfit.lookTypeEx = getField(L, arg, "lookTypeEx"); outfit.lookType = getField(L, arg, "lookType"); - lua_pop(L, 8); + lua_pop(L, 13); return outfit; } @@ -946,7 +951,7 @@ void LuaScriptInterface::pushPosition(lua_State* L, const Position& position, in void LuaScriptInterface::pushOutfit(lua_State* L, const Outfit_t& outfit) { - lua_createtable(L, 0, 8); + lua_createtable(L, 0, 13); setField(L, "lookType", outfit.lookType); setField(L, "lookTypeEx", outfit.lookTypeEx); setField(L, "lookHead", outfit.lookHead); @@ -955,6 +960,11 @@ void LuaScriptInterface::pushOutfit(lua_State* L, const Outfit_t& outfit) setField(L, "lookFeet", outfit.lookFeet); setField(L, "lookAddons", outfit.lookAddons); setField(L, "lookMount", outfit.lookMount); + setField(L, "lookMountHead", outfit.lookMountHead); + setField(L, "lookMountBody", outfit.lookMountBody); + setField(L, "lookMountLegs", outfit.lookMountLegs); + setField(L, "lookMountFeet", outfit.lookMountFeet); + setField(L, "lookFamiliarsType", outfit.lookFamiliarsType); } void LuaScriptInterface::pushLoot(lua_State* L, const std::vector& lootList) @@ -2627,6 +2637,10 @@ void LuaScriptInterface::registerFunctions() registerMethod("Player", "removeMount", LuaScriptInterface::luaPlayerRemoveMount); registerMethod("Player", "hasMount", LuaScriptInterface::luaPlayerHasMount); + registerMethod("Player", "addFamiliar", LuaScriptInterface::luaPlayerAddFamiliar); + registerMethod("Player", "removeFamiliar", LuaScriptInterface::luaPlayerRemoveFamiliar); + registerMethod("Player", "hasFamiliar", LuaScriptInterface::luaPlayerHasFamiliar); + registerMethod("Player", "getPremiumDays", LuaScriptInterface::luaPlayerGetPremiumDays); registerMethod("Player", "addPremiumDays", LuaScriptInterface::luaPlayerAddPremiumDays); registerMethod("Player", "removePremiumDays", LuaScriptInterface::luaPlayerRemovePremiumDays); @@ -2776,6 +2790,9 @@ void LuaScriptInterface::registerFunctions() registerMethod("Guild", "getName", LuaScriptInterface::luaGuildGetName); registerMethod("Guild", "getMembersOnline", LuaScriptInterface::luaGuildGetMembersOnline); + registerMethod("Guild", "getBankBalance", LuaScriptInterface::luaGuildGetBankBalance); + registerMethod("Guild", "setBankBalance", LuaScriptInterface::luaGuildSetBankBalance); + registerMethod("Guild", "addRank", LuaScriptInterface::luaGuildAddRank); registerMethod("Guild", "getRankById", LuaScriptInterface::luaGuildGetRankById); registerMethod("Guild", "getRankByLevel", LuaScriptInterface::luaGuildGetRankByLevel); @@ -10732,6 +10749,42 @@ int LuaScriptInterface::luaPlayerHasMount(lua_State* L) { return 1; } +int LuaScriptInterface::luaPlayerAddFamiliar(lua_State* L) { + // player:addFamiliar(lookType) + Player* player = getUserdata(L, 1); + if (player) { + player->addFamiliar(getNumber(L, 2)); + pushBoolean(L, true); + } else { + lua_pushnil(L); + } + return 1; +} + +int LuaScriptInterface::luaPlayerRemoveFamiliar(lua_State* L) { + // player:removeFamiliar(lookType) + Player* player = getUserdata(L, 1); + if (player) { + uint16_t lookType = getNumber(L, 2); + pushBoolean(L, player->removeFamiliar(lookType)); + } else { + lua_pushnil(L); + } + return 1; +} + +int LuaScriptInterface::luaPlayerHasFamiliar(lua_State* L) { + // player:hasFamiliar(lookType) + Player* player = getUserdata(L, 1); + if (player) { + uint16_t lookType = getNumber(L, 2); + pushBoolean(L, player->canFamiliar(lookType)); + } else { + lua_pushnil(L); + } + return 1; +} + int LuaScriptInterface::luaPlayerGetPremiumDays(lua_State* L) { // player:getPremiumDays() @@ -12386,6 +12439,37 @@ int LuaScriptInterface::luaGuildGetMembersOnline(lua_State* L) return 1; } +int LuaScriptInterface::luaGuildGetBankBalance(lua_State* L) { + // guild:getBankBalance() + Guild* guild = getUserdata(L, 1); + if (guild) { + lua_pushnumber(L, guild->getBankBalance()); + } else { + lua_pushnil(L); + } + return 1; +} + +int LuaScriptInterface::luaGuildSetBankBalance(lua_State* L) { + // guild:setBankBalance(bankBalance) + Guild* guild = getUserdata(L, 1); + if (!guild) { + lua_pushnil(L); + return 1; + } + + int64_t balance = getNumber(L, 2); + if (balance < 0) { + reportErrorFunc("Invalid bank balance value."); + lua_pushnil(L); + return 1; + } + + guild->setBankBalance(balance); + pushBoolean(L, true); + return 1; +} + int LuaScriptInterface::luaGuildAddRank(lua_State* L) { // guild:addRank(id, name, level) @@ -14324,14 +14408,19 @@ int LuaScriptInterface::luaConditionSetFormula(lua_State* L) return 1; } -int LuaScriptInterface::luaConditionSetOutfit(lua_State* L) -{ +int LuaScriptInterface::luaConditionSetOutfit(lua_State* L) { // condition:setOutfit(outfit) - // condition:setOutfit(lookTypeEx, lookType, lookHead, lookBody, lookLegs, lookFeet[, lookAddons[, lookMount]]) + // condition:setOutfit(lookTypeEx, lookType, lookHead, lookBody, lookLegs, lookFeet[, + // lookAddons[, lookMount[, lookMountHead[, lookMountBody[, lookMountLegs[, lookMountFeet[, lookFamiliarsType]]]]]]]) Outfit_t outfit; if (isTable(L, 2)) { outfit = getOutfit(L, 2); } else { + outfit.lookFamiliarsType = getNumber(L, 14, outfit.lookFamiliarsType); + outfit.lookMountFeet = getNumber(L, 13, outfit.lookMountFeet); + outfit.lookMountLegs = getNumber(L, 12, outfit.lookMountLegs); + outfit.lookMountBody = getNumber(L, 11, outfit.lookMountBody); + outfit.lookMountHead = getNumber(L, 10, outfit.lookMountHead); outfit.lookMount = getNumber(L, 9, outfit.lookMount); outfit.lookAddons = getNumber(L, 8, outfit.lookAddons); outfit.lookFeet = getNumber(L, 7); @@ -15474,8 +15563,8 @@ int LuaScriptInterface::luaMonsterTypeAddSummon(lua_State* L) if (monsterType) { summonBlock_t summon; summon.name = getString(L, 2); - summon.chance = getNumber(L, 3); - summon.speed = getNumber(L, 4); + summon.speed = getNumber(L, 3); + summon.chance = getNumber(L, 4); monsterType->info.summons.push_back(summon); pushBoolean(L, true); } else { diff --git a/src/luascript.h b/src/luascript.h index f6628e3a8..10e7e2fcf 100644 --- a/src/luascript.h +++ b/src/luascript.h @@ -1020,6 +1020,10 @@ class LuaScriptInterface static int luaPlayerRemoveMount(lua_State* L); static int luaPlayerHasMount(lua_State* L); + static int luaPlayerAddFamiliar(lua_State* L); + static int luaPlayerRemoveFamiliar(lua_State* L); + static int luaPlayerHasFamiliar(lua_State* L); + static int luaPlayerGetPremiumDays(lua_State* L); static int luaPlayerAddPremiumDays(lua_State* L); static int luaPlayerRemovePremiumDays(lua_State* L); @@ -1170,6 +1174,9 @@ class LuaScriptInterface static int luaGuildGetName(lua_State* L); static int luaGuildGetMembersOnline(lua_State* L); + static int luaGuildGetBankBalance(lua_State* L); + static int luaGuildSetBankBalance(lua_State* L); + static int luaGuildAddRank(lua_State* L); static int luaGuildGetRankById(lua_State* L); static int luaGuildGetRankByLevel(lua_State* L); diff --git a/src/mounts.cpp b/src/mounts.cpp index ce10d9710..3f69ef69d 100644 --- a/src/mounts.cpp +++ b/src/mounts.cpp @@ -16,6 +16,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include #include "otpch.h" @@ -45,7 +46,8 @@ bool Mounts::loadFromXml() pugi::cast(mountNode.attribute("clientid").value()), mountNode.attribute("name").as_string(), pugi::cast(mountNode.attribute("speed").value()), - mountNode.attribute("premium").as_bool() + mountNode.attribute("premium").as_bool(), + mountNode.attribute("type").as_string() ); } mounts.shrink_to_fit(); diff --git a/src/mounts.h b/src/mounts.h index 71bb4f735..2d6299086 100644 --- a/src/mounts.h +++ b/src/mounts.h @@ -20,16 +20,22 @@ #ifndef FS_MOUNTS_H_73716D11906A4C5C9F4A7B68D34C9BA6 #define FS_MOUNTS_H_73716D11906A4C5C9F4A7B68D34C9BA6 +#include +#include + struct Mount { - Mount(uint8_t initId, uint16_t initClientId, std::string initName, int32_t initSpeed, bool initPremium) : - name(std::move(initName)), speed(initSpeed), clientId(initClientId), id(initId), premium(initPremium) {} + Mount(uint8_t initId, uint16_t initClientId, std::string initName, int32_t initSpeed, bool initPremium, + std::string initType) : + name(initName), speed(initSpeed), clientId(initClientId), id(initId), premium(initPremium), + type(initType) {} std::string name; int32_t speed; uint16_t clientId; uint8_t id; bool premium; + std::string type; }; class Mounts diff --git a/src/otserv.cpp b/src/otserv.cpp index d2f5f1afd..1a0600052 100644 --- a/src/otserv.cpp +++ b/src/otserv.cpp @@ -268,6 +268,12 @@ void mainLoader(int, char*[], ServiceManager* services) { return; } + std::cout << ">> Loading familiars" << std::endl; + if (!Familiars::getInstance().loadFromXml()) { + startupErrorMessage("Unable to load familiars!"); + return; + } + g_game.loadBoostedCreature(); std::cout << ">> Checking world type... " << std::flush; diff --git a/src/outfit.cpp b/src/outfit.cpp index d63075384..232560410 100644 --- a/src/outfit.cpp +++ b/src/outfit.cpp @@ -60,7 +60,8 @@ bool Outfits::loadFromXml() outfitNode.attribute("name").as_string(), pugi::cast(lookTypeAttribute.value()), outfitNode.attribute("premium").as_bool(), - outfitNode.attribute("unlocked").as_bool(true) + outfitNode.attribute("unlocked").as_bool(true), + outfitNode.attribute("from").as_string() ); } for (uint8_t sex = PLAYERSEX_FEMALE; sex <= PLAYERSEX_LAST; ++sex) { diff --git a/src/outfit.h b/src/outfit.h index 4dc9744f4..ae680c545 100644 --- a/src/outfit.h +++ b/src/outfit.h @@ -20,16 +20,19 @@ #ifndef FS_OUTFIT_H_C56E7A707E3F422C8C93D9BE09916AA3 #define FS_OUTFIT_H_C56E7A707E3F422C8C93D9BE09916AA3 +#include + #include "enums.h" struct Outfit { - Outfit(std::string initName, uint16_t initLookType, bool initPremium, bool initUnlocked) : - name(std::move(initName)), lookType(initLookType), premium(initPremium), unlocked(initUnlocked) {} + Outfit(std::string initName, uint16_t initLookType, bool initPremium, bool initUnlocked, std::string initFrom) : + name(initName), lookType(initLookType), premium(initPremium), unlocked(initUnlocked), from(initFrom) {} std::string name; uint16_t lookType; bool premium; bool unlocked; + std::string from; }; struct ProtocolOutfit { diff --git a/src/player.cpp b/src/player.cpp index bacea705f..707fbbbef 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -665,6 +665,10 @@ void Player::addStorageValue(const uint32_t key, const int32_t value, const bool return; } else if (IS_IN_KEYRANGE(key, MOUNTS_RANGE)) { // do nothing + } else if (IS_IN_KEYRANGE(key, FAMILIARS_RANGE)) { + familiars.emplace_back( + value >> 16); + return; } else { std::cout << "Warning: unknown reserved key: " << key << " player: " << getName() << std::endl; return; @@ -4096,10 +4100,15 @@ bool Player::canLogout() void Player::genReservedStorageRange() { - //generate outfits range - uint32_t base_key = PSTRG_OUTFITS_RANGE_START; + // generate outfits range + uint32_t outfits_key = PSTRG_OUTFITS_RANGE_START; for (const OutfitEntry& entry : outfits) { - storageMap[++base_key] = (entry.lookType << 16) | entry.addons; + storageMap[++outfits_key] = (entry.lookType << 16) | entry.addons; + } + // generate familiars range + uint32_t familiar_key = PSTRG_FAMILIARS_RANGE_START; + for (const FamiliarEntry& entry : familiars) { + storageMap[++familiar_key] = (entry.lookType << 16); } } @@ -4165,6 +4174,76 @@ bool Player::getOutfitAddons(const Outfit& outfit, uint8_t& addons) const return true; } +bool Player::canFamiliar(uint32_t lookType) const { + if (group->access) { + return true; + } + + const Familiar* familiar = Familiars::getInstance().getFamiliarByLookType(getVocationId(), lookType); + if (!familiar) { + return false; + } + + if (familiar->premium && !isPremium()) { + return false; + } + + if (familiar->unlocked) { + return true; + } + + for (const FamiliarEntry& familiarEntry : familiars) { + if (familiarEntry.lookType != lookType) { + continue; + } + } + return false; +} + +void Player::addFamiliar(uint16_t lookType) { + for (FamiliarEntry& familiarEntry : familiars) { + if (familiarEntry.lookType == lookType) { + return; + } + } + familiars.emplace_back(lookType); +} + +bool Player::removeFamiliar(uint16_t lookType) { + for (auto it = familiars.begin(), end = familiars.end(); it != end; ++it) { + FamiliarEntry& entry = *it; + if (entry.lookType == lookType) { + familiars.erase(it); + return true; + } + } + return false; +} + +bool Player::getFamiliar(const Familiar& familiar) const { + if (group->access) { + return true; + } + + if (familiar.premium && !isPremium()) { + return false; + } + + for (const FamiliarEntry& familiarEntry : familiars) { + if (familiarEntry.lookType != familiar.lookType) { + continue; + } + + return true; + } + + if (!familiar.unlocked) { + return false; + } + + return true; +} + void Player::setSex(PlayerSex_t newSex) { sex = newSex; diff --git a/src/player.h b/src/player.h index 9214ca909..52529cce8 100644 --- a/src/player.h +++ b/src/player.h @@ -27,6 +27,7 @@ #include "depotchest.h" #include "depotlocker.h" #include "enums.h" +#include "familiars.h" #include "gamestore.h" #include "groups.h" #include "guild.h" @@ -109,6 +110,11 @@ struct OutfitEntry { uint8_t addons; }; +struct FamiliarEntry { + constexpr explicit FamiliarEntry(uint16_t initLookType) : lookType(initLookType) {} + uint16_t lookType; +}; + struct Skill { uint64_t tries = 0; uint16_t level = 10; @@ -870,6 +876,11 @@ class Player final : public Creature, public Cylinder bool removeOutfitAddon(uint16_t lookType, uint8_t addons); bool getOutfitAddons(const Outfit& outfit, uint8_t& addons) const; + bool canFamiliar(uint32_t lookType) const; + void addFamiliar(uint16_t lookType); + bool removeFamiliar(uint16_t lookType); + bool getFamiliar(const Familiar& familiar) const; + bool canLogout(); bool hasKilled(const Player* player) const; @@ -1629,19 +1640,22 @@ class Player final : public Creature, public Cylinder return false; } - void updateSupplyTracker(const Item* item) - { - if (client) { - client->sendUpdateSupplyTracker(item); - } - } + void updateSupplyTracker(const Item* item) { + if (client) { + client->sendUpdateSupplyTracker(item); + } + } - void updateImpactTracker(int32_t quantity, bool isHeal) - { - if (client) { - client->sendUpdateImpactTracker(quantity, isHeal); - } - } + void updateImpactTracker(CombatType_t type, int32_t amount) { + if (client) { + client->sendUpdateImpactTracker(type, amount); + } + } + void updateInputAnalyzer(CombatType_t type, int32_t amount, std::string target) { + if (client) { + client->sendUpdateInputAnalyzer(type, amount, target); + } + } void updateLootTracker(Item* item) { @@ -1835,6 +1849,8 @@ class Player final : public Creature, public Cylinder std::vector quickLootListClientIds; std::vector outfits; + std::vector familiars; + GuildWarVector guildWarVector; std::vector shopItemList; diff --git a/src/protocolgame.cpp b/src/protocolgame.cpp index 43ccbb046..13758f671 100644 --- a/src/protocolgame.cpp +++ b/src/protocolgame.cpp @@ -66,10 +66,7 @@ void ProtocolGame::AddItem(NetworkMessage& msg, uint16_t id, uint8_t count) msg.addByte(fluidMap[count & 7]); } else if (it.isContainer() && player->getOperatingSystem() <= CLIENTOS_NEW_MAC) { msg.addByte(0x00); - } - - if (it.isAnimation) { - msg.addByte(0xFE); // random phase (0xFF for async) + msg.addByte(0x00); } } @@ -106,10 +103,9 @@ void ProtocolGame::AddItem(NetworkMessage& msg, const Item* item) } else { msg.addByte(0x00); } - } - if (it.isAnimation) { - msg.addByte(0xFE); // random phase (0xFF for async) + // Quiver ammo count + msg.addByte(0x00); } } @@ -157,6 +153,13 @@ void ProtocolGame::login(const std::string& name, uint32_t accountId, OperatingS return; } + if (g_config.getBoolean(ConfigManager::ONLY_PREMIUM_ACCOUNT) + && !player->isPremium() + && (player->getGroup()->id < 4 || player->getAccountType() < account::ACCOUNT_TYPE_GAMEMASTER)) { + disconnectClient("Your premium time for this account is out.\n\nTo play please buy additional premium time from our website"); + return; + } + if (g_config.getBoolean(ConfigManager::ONE_PLAYER_ON_ACCOUNT) && player->getAccountType() < account::ACCOUNT_TYPE_GAMEMASTER && g_game.getPlayerByAccount(player->getAccount())) { @@ -361,6 +364,12 @@ void ProtocolGame::onRecvFirstMessage(NetworkMessage& msg) return; } + if (operatingSystem == CLIENTOS_NEW_LINUX) { + // TODO: check what new info for linux is send + msg.getString(); + msg.getString(); + } + std::string accountName = sessionKey.substr(0, pos); if (accountName.empty()) { disconnectClient("You must enter your account name."); @@ -377,6 +386,13 @@ void ProtocolGame::onRecvFirstMessage(NetworkMessage& msg) return; } + if (clientVersion != CLIENT_VERSION) { + std::ostringstream ss; + ss << "Only clients with protocol " << CLIENT_VERSION_STR << " allowed!"; + disconnectClient(ss.str()); + return; + } + if (g_game.getGameState() == GAME_STATE_STARTUP) { disconnectClient("Gameworld is starting up. Please wait."); return; @@ -882,13 +898,18 @@ void ProtocolGame::parseSetOutfit(NetworkMessage& msg) outfitType = msg.getByte(); Outfit_t newOutfit; newOutfit.lookType = msg.get(); - newOutfit.lookHead = msg.getByte(); - newOutfit.lookBody = msg.getByte(); - newOutfit.lookLegs = msg.getByte(); - newOutfit.lookFeet = msg.getByte(); + newOutfit.lookHead = std::min(132, msg.getByte()); + newOutfit.lookBody = std::min(132, msg.getByte()); + newOutfit.lookLegs = std::min(132, msg.getByte()); + newOutfit.lookFeet = std::min(132, msg.getByte()); newOutfit.lookAddons = msg.getByte(); if (outfitType == 0) { newOutfit.lookMount = msg.get(); + newOutfit.lookMountHead = std::min(132, msg.getByte()); + newOutfit.lookMountBody = std::min(132, msg.getByte()); + newOutfit.lookMountLegs = std::min(132, msg.getByte()); + newOutfit.lookMountFeet = std::min(132, msg.getByte()); + newOutfit.lookFamiliarsType = msg.get(); } else if (outfitType == 1) { //This value probably has something to do with try outfit variable inside outfit window dialog //if try outfit is set to 2 it expects uint32_t value after mounted and disable mounts from outfit window dialog @@ -1276,10 +1297,8 @@ void ProtocolGame::parseHighscores(NetworkMessage& msg) uint32_t vocation = msg.get(); uint16_t page = 1; const std::string worldName = msg.getString(); - #if CLIENT_VERSION >= 1260 - msg.getByte();//Game World Category - msg.getByte();//BattlEye World Type - #endif + msg.getByte(); // Game World Category + msg.getByte(); // BattlEye World Type if (type == HIGHSCORE_GETENTRIES) { page = std::max(1, msg.get()); } @@ -1305,10 +1324,8 @@ void ProtocolGame::sendHighscores(const std::vector& charact msg.addString(g_config.getString(ConfigManager::SERVER_NAME)); // First World msg.addString(g_config.getString(ConfigManager::SERVER_NAME)); // Selected World - #if CLIENT_VERSION >= 1260 - msg.addByte(0xFF);//Game World Category: 0xFF(-1) - Selected World - msg.addByte(0xFF);//BattlEye World Type - #endif + msg.addByte(0); // Game World Category: 0xFF(-1) - Selected World + msg.addByte(0); // BattlEye World Type auto vocationPosition = msg.getBufferPosition(); uint8_t vocations = 1; @@ -1939,6 +1956,12 @@ void ProtocolGame::sendCreatureOutfit(const Creature* creature, const Outfit_t& msg.addByte(0x8E); msg.add(creature->getID()); AddOutfit(msg, outfit); + if (outfit.lookMount != 0) { + msg.addByte(outfit.lookMountHead); + msg.addByte(outfit.lookMountBody); + msg.addByte(outfit.lookMountLegs); + msg.addByte(outfit.lookMountFeet); + } writeToOutputBuffer(msg); } @@ -2352,12 +2375,18 @@ void ProtocolGame::sendCyclopediaCharacterOutfitsMounts() { if (!player->getOutfitAddons(outfit, addons)) { continue; } - outfitSize++; + const std::string from = outfit.from; + ++outfitSize; msg.add(outfit.lookType); msg.addString(outfit.name); msg.addByte(addons); - msg.addByte(CYCLOPEDIA_CHARACTERINFO_OUTFITTYPE_NONE); + if (from == "store") + msg.addByte(CYCLOPEDIA_CHARACTERINFO_OUTFITTYPE_STORE); + else if (from == "quest") + msg.addByte(CYCLOPEDIA_CHARACTERINFO_OUTFITTYPE_QUEST); + else + msg.addByte(CYCLOPEDIA_CHARACTERINFO_OUTFITTYPE_NONE); if (outfit.lookType == currentOutfit.lookType) { msg.add(1000); } else { @@ -2375,20 +2404,53 @@ void ProtocolGame::sendCyclopediaCharacterOutfitsMounts() { auto startMounts = msg.getBufferPosition(); msg.skipBytes(2); for (const Mount& mount : g_game.mounts.getMounts()) { + const std::string type = mount.type; if (player->hasMount(&mount)) { - mountSize++; + ++mountSize; msg.add(mount.clientId); msg.addString(mount.name); - msg.addByte(CYCLOPEDIA_CHARACTERINFO_OUTFITTYPE_NONE); + if (type == "store") + msg.addByte(CYCLOPEDIA_CHARACTERINFO_OUTFITTYPE_STORE); + else if (type == "quest") + msg.addByte(CYCLOPEDIA_CHARACTERINFO_OUTFITTYPE_QUEST); + else + msg.addByte(CYCLOPEDIA_CHARACTERINFO_OUTFITTYPE_NONE); msg.add(1000); } } + if (mountSize > 0) { + msg.addByte(currentOutfit.lookMountHead); + msg.addByte(currentOutfit.lookMountBody); + msg.addByte(currentOutfit.lookMountLegs); + msg.addByte(currentOutfit.lookMountFeet); + } + + uint16_t familiarsSize = 0; + auto startFamiliars = msg.getBufferPosition(); + msg.skipBytes(2); + const auto& familiars = Familiars::getInstance().getFamiliars(player->getVocationId()); + for (const Familiar& familiar : familiars) { + const std::string type = familiar.type; + if (!player->getFamiliar(familiar)) { + continue; + } + ++familiarsSize; + msg.add(familiar.lookType); + msg.addString(familiar.name); + if (type == "quest") + msg.addByte(CYCLOPEDIA_CHARACTERINFO_OUTFITTYPE_QUEST); + else + msg.addByte(CYCLOPEDIA_CHARACTERINFO_OUTFITTYPE_NONE); + msg.add(0); + } msg.setBufferPosition(startOutfits); msg.add(outfitSize); msg.setBufferPosition(startMounts); msg.add(mountSize); + msg.setBufferPosition(startFamiliars); + msg.add(familiarsSize); writeToOutputBuffer(msg); } @@ -2526,9 +2588,10 @@ void ProtocolGame::sendBasicData() std::list spellsList = g_spells->getSpellsByVocation(player->getVocationId()); msg.add(spellsList.size()); - for (uint8_t sid : spellsList) { + for (uint16_t sid : spellsList) { msg.addByte(sid); } + msg.addByte(0); // bool - determine whether magic shield is active or not writeToOutputBuffer(msg); } @@ -4225,6 +4288,12 @@ void ProtocolGame::sendOutfitWindow() AddOutfit(msg, currentOutfit); + msg.addByte(currentOutfit.lookMountHead); + msg.addByte(currentOutfit.lookMountBody); + msg.addByte(currentOutfit.lookMountLegs); + msg.addByte(currentOutfit.lookMountFeet); + msg.add(currentOutfit.lookFamiliarsType); + std::vector protocolOutfits; if (player->isAccessPlayer()) { static const std::string gamemasterOutfitName = "Game Master"; @@ -4256,20 +4325,39 @@ void ProtocolGame::sendOutfitWindow() msg.addByte(0x00); } - std::vector mounts; - for (const Mount& mount : g_game.mounts.getMounts()) { + std::vector protocolMounts; + const auto& mounts = g_game.mounts.getMounts(); + protocolMounts.reserve(mounts.size()); + for (const Mount& mount : mounts) { if (player->hasMount(&mount)) { - mounts.push_back(&mount); + protocolMounts.push_back(&mount); } } - msg.add(mounts.size()); - for (const Mount* mount : mounts) { + msg.add(protocolMounts.size()); + for (const Mount* mount : protocolMounts) { msg.add(mount->clientId); msg.addString(mount->name); msg.addByte(0x00); } + std::vector protocolFamiliars; + const auto& familiars = Familiars::getInstance().getFamiliars(player->getVocationId()); + protocolFamiliars.reserve(familiars.size()); + for (const Familiar& familiar : familiars) { + if (!player->getFamiliar(familiar)) { + continue; + } + protocolFamiliars.emplace_back(familiar.name, familiar.lookType); + } + + msg.add(protocolFamiliars.size()); + for (const ProtocolFamiliars& familiar : protocolFamiliars) { + msg.add(familiar.lookType); + msg.addString(familiar.name); + msg.addByte(0x00); + } + msg.addByte(0x00); //Try outfit msg.addByte(mounted ? 0x01 : 0x00); @@ -4582,7 +4670,14 @@ void ProtocolGame::AddCreature(NetworkMessage& msg, const Creature* creature, bo msg.addByte(creature->getDirection()); if (!creature->isInGhostMode() && !creature->isInvisible()) { - AddOutfit(msg, creature->getCurrentOutfit()); + const Outfit_t& outfit = creature->getCurrentOutfit(); + AddOutfit(msg, outfit); + if (outfit.lookMount != 0) { + msg.addByte(outfit.lookMountHead); + msg.addByte(outfit.lookMountBody); + msg.addByte(outfit.lookMountLegs); + msg.addByte(outfit.lookMountFeet); + } } else { static Outfit_t outfit; AddOutfit(msg, outfit); @@ -4678,6 +4773,9 @@ void ProtocolGame::AddPlayerStats(NetworkMessage& msg) msg.add(player->getExpBoostStamina()); // xp boost time (seconds) msg.addByte(1); // enables exp boost in the store + + msg.add(0); // remaining mana shield + msg.add(0); // total mana shield } void ProtocolGame::AddPlayerSkills(NetworkMessage& msg) @@ -4903,19 +5001,28 @@ void ProtocolGame::sendUpdateSupplyTracker(const Item* item) writeToOutputBuffer(msg); } -void ProtocolGame::sendUpdateImpactTracker(int32_t quantity, bool isHeal) - { - if (!player) { - return; - } - - NetworkMessage msg; +void ProtocolGame::sendUpdateImpactTracker(CombatType_t type, int32_t amount) { + NetworkMessage msg; msg.addByte(0xCC); - msg.addByte(isHeal ? 0x0 : 0x01); - msg.add(quantity); - - writeToOutputBuffer(msg); - } + if (type == COMBAT_HEALING) { + msg.addByte(ANALYZER_HEAL); + msg.add(amount); + } else { + msg.addByte(ANALYZER_DAMAGE_DEALT); + msg.add(amount); + msg.addByte(getCipbiaElement(type)); + } + writeToOutputBuffer(msg); +} +void ProtocolGame::sendUpdateInputAnalyzer(CombatType_t type, int32_t amount, std::string target) { + NetworkMessage msg; + msg.addByte(0xCC); + msg.addByte(ANALYZER_DAMAGE_RECEIVED); + msg.add(amount); + msg.addByte(getCipbiaElement(type)); + msg.addString(target); + writeToOutputBuffer(msg); +} void ProtocolGame::sendUpdateLootTracker(Item* item) { diff --git a/src/protocolgame.h b/src/protocolgame.h index a437766ef..d03d95ec8 100644 --- a/src/protocolgame.h +++ b/src/protocolgame.h @@ -20,6 +20,8 @@ #ifndef FS_PROTOCOLGAME_H_FACA2A2D1A9348B78E8FD7E8003EBB87 #define FS_PROTOCOLGAME_H_FACA2A2D1A9348B78E8FD7E8003EBB87 +#include + #include "protocol.h" #include "chat.h" #include "creature.h" @@ -365,7 +367,8 @@ class ProtocolGame final : public Protocol //analyzers void sendKillTrackerUpdate(Container* corpse, const std::string& name, const Outfit_t creatureOutfit); void sendUpdateSupplyTracker(const Item* item); - void sendUpdateImpactTracker(int32_t quantity, bool isHeal); + void sendUpdateImpactTracker(CombatType_t type, int32_t amount); + void sendUpdateInputAnalyzer(CombatType_t type, int32_t amount, std::string target); void sendUpdateLootTracker(Item* item); // Hotkey equip/dequip item