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