diff --git a/data-otxserver/lib/compat/compat.lua b/data-otxserver/lib/compat/compat.lua index 1de91b5ab..f62945e6b 100644 --- a/data-otxserver/lib/compat/compat.lua +++ b/data-otxserver/lib/compat/compat.lua @@ -573,16 +573,6 @@ function getOnlinePlayers() return result end -function getPlayersByAccountNumber(accountNumber) - local result = {} - for _, player in ipairs(Game.getPlayers()) do - if player:getAccountId() == accountNumber then - result[#result + 1] = player:getId() - end - end - return result -end - function getPlayerGUIDByName(name) local player = Player(name) if player then @@ -788,18 +778,6 @@ function doSendAnimatedText() return true end -function doPlayerAddExp(cid, exp, useMult, ...) - local player = Player(cid) - if player == nil then - return false - end - - if useMult then - exp = exp * getRateFromTable(experienceStages, player:getLevel(), configManager.getNumber(configKeys.RATE_EXPERIENCE)) - end - return player:addExperience(exp, ...) -end - function doPlayerAddManaSpent(cid, mana) local p = Player(cid) return p and p:addManaSpent(mana) or false diff --git a/data-otxserver/lib/core/storages.lua b/data-otxserver/lib/core/storages.lua index 93e2bf936..12a7cdd33 100644 --- a/data-otxserver/lib/core/storages.lua +++ b/data-otxserver/lib/core/storages.lua @@ -2957,6 +2957,7 @@ GlobalStorage = { ZamuloshSummon = 60030, FerumbrasEssence = 60031, DesperateSoul = 60032, + FlowerPuzzleTimer = 60033, Crystals = { Crystal1 = 60040, Crystal2 = 60041, @@ -3069,6 +3070,10 @@ GlobalStorage = { TotalUsurperCommanders = 60171, -- Global }, }, + HeartOfDestruction = { + -- Reserved storage from 60172 - 60177 + ChargedAnomaly = 60172, + }, FuryGates = 65000, Yakchal = 65001, PitsOfInfernoLevers = 65002, diff --git a/data-otxserver/migrations/42.lua b/data-otxserver/migrations/42.lua index 86a6d8ffe..4d07b663d 100644 --- a/data-otxserver/migrations/42.lua +++ b/data-otxserver/migrations/42.lua @@ -1,3 +1,10 @@ function onUpdateDatabase() - return false -- true = There are others migrations file | false = this is the last migration file + logger.info("Updating database to version 43 (fix guildwar_kills_unique)") + + db.query([[ + ALTER TABLE `guildwar_kills` + DROP INDEX `guildwar_kills_unique` + ]]) + + return true end diff --git a/data-otxserver/migrations/43.lua b/data-otxserver/migrations/43.lua new file mode 100644 index 000000000..86a6d8ffe --- /dev/null +++ b/data-otxserver/migrations/43.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-otxserver/monster/aquatics/deathling_spellsinger.lua b/data-otxserver/monster/aquatics/deathling_spellsinger.lua index d28ad9e1d..68d5df39e 100644 --- a/data-otxserver/monster/aquatics/deathling_spellsinger.lua +++ b/data-otxserver/monster/aquatics/deathling_spellsinger.lua @@ -102,7 +102,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300, effect = CONST_ME_DRAWBLOOD }, { name = "combat", interval = 4000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -400, range = 5, shootEffect = CONST_ANI_HUNTINGSPEAR, target = false }, { name = "combat", interval = 4000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -150, maxDamage = -300, range = 5, shootEffect = CONST_ANI_LARGEROCK, target = false }, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -400, maxDamage = -700, length = 8, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, + { name = "combat", interval = 2000, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -400, maxDamage = -700, length = 8, spread = 0, effect = CONST_ME_HOLYAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/aquatics/manta_ray.lua b/data-otxserver/monster/aquatics/manta_ray.lua index 9dace51e4..d7d3e301b 100644 --- a/data-otxserver/monster/aquatics/manta_ray.lua +++ b/data-otxserver/monster/aquatics/manta_ray.lua @@ -80,7 +80,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -110, effect = CONST_ME_DRAWBLOOD, condition = { type = CONDITION_POISON, totalDamage = 120, interval = 4000 } }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -75, maxDamage = -90, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -50, maxDamage = -110, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -50, maxDamage = -110, length = 4, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/aquatics/quara_hydromancer.lua b/data-otxserver/monster/aquatics/quara_hydromancer.lua index 83d0b76ca..4129dcfe8 100644 --- a/data-otxserver/monster/aquatics/quara_hydromancer.lua +++ b/data-otxserver/monster/aquatics/quara_hydromancer.lua @@ -95,9 +95,9 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80, effect = CONST_ME_DRAWBLOOD, condition = { type = CONDITION_POISON, totalDamage = 100, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -180, length = 8, spread = 3, effect = CONST_ME_BUBBLES, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -180, length = 8, spread = 0, effect = CONST_ME_BUBBLES, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -90, maxDamage = -150, radius = 3, effect = CONST_ME_BUBBLES, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -170, maxDamage = -240, length = 8, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -170, maxDamage = -240, length = 8, spread = 0, effect = CONST_ME_HITBYPOISON, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -170, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, } diff --git a/data-otxserver/monster/aquatics/quara_hydromancer_scout.lua b/data-otxserver/monster/aquatics/quara_hydromancer_scout.lua index 7e67e0bab..ad5557155 100644 --- a/data-otxserver/monster/aquatics/quara_hydromancer_scout.lua +++ b/data-otxserver/monster/aquatics/quara_hydromancer_scout.lua @@ -96,9 +96,9 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80, effect = CONST_ME_DRAWBLOOD, condition = { type = CONDITION_POISON, totalDamage = 100, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -180, length = 8, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -180, length = 8, spread = 0, effect = CONST_ME_HITBYPOISON, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -90, maxDamage = -150, radius = 3, effect = CONST_ME_BUBBLES, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -170, maxDamage = -240, length = 8, spread = 3, effect = CONST_ME_BUBBLES, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -170, maxDamage = -240, length = 8, spread = 0, effect = CONST_ME_BUBBLES, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -170, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, } diff --git a/data-otxserver/monster/birds/demon_parrot.lua b/data-otxserver/monster/birds/demon_parrot.lua index a606e4efe..e11122947 100644 --- a/data-otxserver/monster/birds/demon_parrot.lua +++ b/data-otxserver/monster/birds/demon_parrot.lua @@ -83,7 +83,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 1200, chance = 100, minDamage = 0, maxDamage = -100 }, - { name = "drunk", interval = 1000, chance = 30, length = 5, spread = 3, effect = CONST_ME_SOUND_RED, target = false }, + { name = "drunk", interval = 1000, chance = 30, length = 5, spread = 0, effect = CONST_ME_SOUND_RED, target = false }, { name = "combat", interval = 1000, chance = 30, type = COMBAT_LIFEDRAIN, minDamage = -25, maxDamage = -45, range = 5, shootEffect = CONST_ANI_SUDDENDEATH, target = false }, { name = "combat", interval = 1000, chance = 30, type = COMBAT_LIFEDRAIN, minDamage = -15, maxDamage = -45, range = 1, target = false }, } diff --git a/data-otxserver/monster/bosses/apocalypse.lua b/data-otxserver/monster/bosses/apocalypse.lua index 77ad2d660..3e60fe75e 100644 --- a/data-otxserver/monster/bosses/apocalypse.lua +++ b/data-otxserver/monster/bosses/apocalypse.lua @@ -110,7 +110,7 @@ monster.attacks = { { name = "strength", interval = 1000, chance = 10, minDamage = -600, maxDamage = -1450, radius = 5, effect = CONST_ME_HITAREA, target = false }, { name = "combat", interval = 3000, chance = 13, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -800, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "combat", interval = 3000, chance = 8, type = COMBAT_MANADRAIN, minDamage = -600, maxDamage = -700, radius = 10, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 9, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -800, length = 8, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 5000, chance = 18, minDamage = -800, maxDamage = -1000, effect = CONST_ME_HITBYPOISON, target = false }, { name = "combat", interval = 2000, chance = 6, type = COMBAT_LIFEDRAIN, minDamage = -600, maxDamage = -1200, radius = 14, effect = CONST_ME_MAGIC_GREEN, target = false }, diff --git a/data-otxserver/monster/bosses/bazir.lua b/data-otxserver/monster/bosses/bazir.lua index 5fc46367c..e9abbed72 100644 --- a/data-otxserver/monster/bosses/bazir.lua +++ b/data-otxserver/monster/bosses/bazir.lua @@ -145,7 +145,7 @@ monster.attacks = { { name = "outfit", interval = 1000, chance = 2, radius = 8, effect = CONST_ME_LOSEENERGY, target = false, duration = 5000, outfitMonster = "demon" }, { name = "outfit", interval = 1000, chance = 2, radius = 8, effect = CONST_ME_LOSEENERGY, target = false, duration = 5000, outfitItem = 3058 }, { name = "combat", interval = 1000, chance = 34, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -900, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -500, maxDamage = -850, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -500, maxDamage = -850, length = 8, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/bosses/brain_head.lua b/data-otxserver/monster/bosses/brain_head.lua new file mode 100644 index 000000000..c67524c54 --- /dev/null +++ b/data-otxserver/monster/bosses/brain_head.lua @@ -0,0 +1,119 @@ +local mType = Game.createMonsterType("Brain Head") +local monster = {} + +monster.description = "Brain Head" +monster.experience = 0 +monster.outfit = { + lookTypeEx = 32418, +} + +monster.health = 75000 +monster.maxHealth = monster.health +monster.race = "undead" +monster.corpse = 32272 +monster.speed = 0 + +monster.changeTarget = { + interval = 4000, + chance = 10, +} + +monster.bosstiary = { + bossRaceId = 1862, + bossRace = RARITY_ARCHFOE, +} + +monster.flags = { + summonable = false, + attackable = true, + hostile = true, + convinceable = false, + pushable = false, + rewardBoss = true, + illusionable = false, + canPushItems = true, + canPushCreatures = true, + staticAttackChance = 90, + targetDistance = 1, + runHealth = 0, + healthHidden = false, + canWalkOnEnergy = true, + canWalkOnFire = true, + canWalkOnPoison = true, +} + +monster.loot = { + { name = "crystal coin", chance = 96300, maxCount = 3 }, + { name = "diamond", chance = 55560, maxCount = 2 }, + { name = "ultimate mana potion", chance = 51850, maxCount = 6 }, + { name = "white gem", chance = 51850, maxCount = 2 }, + { name = "supreme health potion", chance = 29630 }, + { name = "mastermind potion", chance = 22220 }, + { name = "cursed bone", chance = 22220 }, + { name = "berserk potion", chance = 18520 }, + { name = "death toll", chance = 18520, maxCount = 2 }, + { name = "ivory comb", chance = 18520 }, + { name = "bullseye potion", chance = 14810, maxCount = 10 }, + { name = "ultimate spirit potion", chance = 14810, maxCount = 6 }, + { name = "moonstone", chance = 14810 }, + { name = "spooky hood", chance = 8520 }, + { name = "silver hand mirror", chance = 7410 }, + { name = "amber with a dragonfly", chance = 7410 }, + { name = "phantasmal axe", chance = 3700 }, + { name = "ghost claw", chance = 3700 }, + { name = "giant amethyst", chance = 3700 }, + { id = 32621, chance = 3200 }, -- ring of souls +} + +monster.attacks = { + { name = "combat", type = COMBAT_DEATHDAMAGE, interval = 2000, chance = 80, minDamage = -700, maxDamage = -1200, effect = CONST_ME_MORTAREA, shootEffect = CONST_ANI_SUDDENDEATH, target = true, range = 7 }, + { name = "combat", type = COMBAT_LIFEDRAIN, interval = 2000, chance = 20, length = 8, spread = 0, minDamage = -900, maxDamage = -1300, effect = CONST_ME_ELECTRICALSPARK }, +} + +monster.defenses = { + defense = 78, + armor = 78, + mitigation = 3.27, +} + +monster.elements = { + { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, + { type = COMBAT_ENERGYDAMAGE, percent = 0 }, + { type = COMBAT_EARTHDAMAGE, percent = 0 }, + { type = COMBAT_FIREDAMAGE, percent = 0 }, + { type = COMBAT_LIFEDRAIN, percent = 0 }, + { type = COMBAT_MANADRAIN, percent = 0 }, + { type = COMBAT_DROWNDAMAGE, percent = 0 }, + { type = COMBAT_ICEDAMAGE, percent = -30 }, + { type = COMBAT_HOLYDAMAGE, percent = 0 }, + { type = COMBAT_DEATHDAMAGE, percent = 0 }, +} + +monster.immunities = { + { type = "paralyze", condition = true }, + { type = "invisible", condition = true }, +} + +monster.voices = { + interval = 5000, + chance = 10, + { text = "Feel the power of death unleashed!", yell = false }, + { text = "I will rule again and my realm of death will span the world!", yell = false }, + { text = "My lich-knights will conquer this world for me!", yell = false }, +} + +mType.onThink = function(monster, interval) end + +mType.onAppear = function(monster, creature) + if monster:getType():isRewardBoss() then + monster:setReward(true) + end +end + +mType.onDisappear = function(monster, creature) end + +mType.onMove = function(monster, creature, fromPosition, toPosition) end + +mType.onSay = function(monster, creature, type, message) end + +mType:register(monster) diff --git a/data-otxserver/monster/bosses/diseased_bill.lua b/data-otxserver/monster/bosses/diseased_bill.lua index c2524dd82..42df3b5c7 100644 --- a/data-otxserver/monster/bosses/diseased_bill.lua +++ b/data-otxserver/monster/bosses/diseased_bill.lua @@ -82,7 +82,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -207, condition = { type = CONDITION_POISON, totalDamage = 4, interval = 4000 } }, { name = "combat", interval = 2000, chance = 100, type = COMBAT_LIFEDRAIN, minDamage = -90, maxDamage = -140, effect = CONST_ME_MAGIC_RED, target = true }, - { name = "combat", interval = 1000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -175, radius = 2, shootEffect = CONST_ANI_SMALLEARTH, target = false }, + { name = "combat", interval = 1000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -175, radius = 2, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_HITBYPOISON, target = false }, { name = "speed", interval = 3000, chance = 40, speedChange = -900, effect = CONST_ME_MAGIC_RED, target = true, duration = 20000 }, } diff --git a/data-otxserver/monster/bosses/diseased_dan.lua b/data-otxserver/monster/bosses/diseased_dan.lua index 7ee84a080..c44f9bc97 100644 --- a/data-otxserver/monster/bosses/diseased_dan.lua +++ b/data-otxserver/monster/bosses/diseased_dan.lua @@ -82,7 +82,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -207, condition = { type = CONDITION_POISON, totalDamage = 4, interval = 4000 } }, { name = "combat", interval = 2000, chance = 100, type = COMBAT_LIFEDRAIN, minDamage = -90, maxDamage = -140, effect = CONST_ME_MAGIC_RED, target = true }, - { name = "combat", interval = 1000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -175, radius = 2, shootEffect = CONST_ANI_SMALLEARTH, target = false }, + { name = "combat", interval = 1000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -175, radius = 2, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_HITBYPOISON, target = false }, { name = "speed", interval = 3000, chance = 40, speedChange = -900, effect = CONST_ME_MAGIC_RED, target = true, duration = 20000 }, } diff --git a/data-otxserver/monster/bosses/diseased_fred.lua b/data-otxserver/monster/bosses/diseased_fred.lua index d2ab31a55..59304042e 100644 --- a/data-otxserver/monster/bosses/diseased_fred.lua +++ b/data-otxserver/monster/bosses/diseased_fred.lua @@ -82,7 +82,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -207, condition = { type = CONDITION_POISON, totalDamage = 4, interval = 4000 } }, { name = "combat", interval = 2000, chance = 100, type = COMBAT_LIFEDRAIN, minDamage = -90, maxDamage = -140, effect = CONST_ME_MAGIC_RED, target = true }, - { name = "combat", interval = 1000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -175, radius = 2, shootEffect = CONST_ANI_SMALLEARTH, target = false }, + { name = "combat", interval = 1000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -175, radius = 2, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_HITBYPOISON, target = false }, { name = "speed", interval = 3000, chance = 40, speedChange = -900, effect = CONST_ME_MAGIC_RED, target = true, duration = 20000 }, } diff --git a/data-otxserver/monster/bosses/gaffir.lua b/data-otxserver/monster/bosses/gaffir.lua index 3370cb9b0..a3e2feb16 100644 --- a/data-otxserver/monster/bosses/gaffir.lua +++ b/data-otxserver/monster/bosses/gaffir.lua @@ -109,7 +109,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -550 }, { name = "combat", interval = 2000, chance = 8, type = COMBAT_PHYSICALDAMAGE, minDamage = -450, maxDamage = -650, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -400, maxDamage = -580, length = 5, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -400, maxDamage = -580, length = 5, spread = 0, effect = CONST_ME_EXPLOSIONHIT, target = false }, { name = "combat", interval = 3000, chance = 14, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -750, shootEffect = CONST_ANI_FIRE, target = true }, { name = "combat", interval = 2000, chance = 16, type = COMBAT_EARTHDAMAGE, minDamage = -500, maxDamage = -620, radius = 4, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_GREEN_RINGS, target = true }, { name = "combat", interval = 3000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -320, maxDamage = -500, radius = 2, effect = CONST_ME_GREEN_RINGS, target = false }, diff --git a/data-otxserver/monster/bosses/gravelord_oshuran.lua b/data-otxserver/monster/bosses/gravelord_oshuran.lua index fd5abe25a..442c014dc 100644 --- a/data-otxserver/monster/bosses/gravelord_oshuran.lua +++ b/data-otxserver/monster/bosses/gravelord_oshuran.lua @@ -90,8 +90,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, { name = "speed", interval = 2000, chance = 25, speedChange = -300, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 30000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -180, maxDamage = -300, length = 7, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -350, length = 7, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -180, maxDamage = -300, length = 7, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -350, length = 7, spread = 0, effect = CONST_ME_HITBYPOISON, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -245, range = 1, effect = CONST_ME_MAGIC_RED, target = true }, } diff --git a/data-otxserver/monster/bosses/guard_captain_quaid.lua b/data-otxserver/monster/bosses/guard_captain_quaid.lua index e712117a7..479757ca6 100644 --- a/data-otxserver/monster/bosses/guard_captain_quaid.lua +++ b/data-otxserver/monster/bosses/guard_captain_quaid.lua @@ -94,9 +94,9 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -580 }, { name = "combat", interval = 2000, chance = 18, type = COMBAT_EARTHDAMAGE, minDamage = -500, maxDamage = -620, radius = 4, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_GREEN_RINGS, target = true }, { name = "combat", interval = 2000, chance = 22, type = COMBAT_PHYSICALDAMAGE, minDamage = -450, maxDamage = -700, shootEffect = CONST_ANI_THROWINGKNIFE, target = true }, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_PHYSICALDAMAGE, minDamage = -350, maxDamage = -550, length = 5, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "combat", interval = 2000, chance = 14, type = COMBAT_PHYSICALDAMAGE, minDamage = -350, maxDamage = -550, length = 5, spread = 0, effect = CONST_ME_EXPLOSIONHIT, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -400, maxDamage = -550, radius = 1, shootEffect = CONST_ANI_BURSTARROW, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -480, length = 5, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -480, length = 5, spread = 0, effect = CONST_ME_EXPLOSIONHIT, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -450, radius = 3, effect = CONST_ME_GREEN_RINGS, target = false }, } diff --git a/data-otxserver/monster/bosses/koshei_the_deathless.lua b/data-otxserver/monster/bosses/koshei_the_deathless.lua index 5ad88a01c..e0b1c5e1e 100644 --- a/data-otxserver/monster/bosses/koshei_the_deathless.lua +++ b/data-otxserver/monster/bosses/koshei_the_deathless.lua @@ -83,7 +83,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -170, condition = { type = CONDITION_POISON, totalDamage = 300, interval = 4000 } }, { name = "combat", interval = 3000, chance = 9, type = COMBAT_LIFEDRAIN, minDamage = -60, maxDamage = -250, range = 1, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "combat", interval = 1000, chance = 11, type = COMBAT_LIFEDRAIN, minDamage = -70, maxDamage = -135, radius = 3, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_DEATHDAMAGE, minDamage = -50, maxDamage = -140, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 9, type = COMBAT_DEATHDAMAGE, minDamage = -50, maxDamage = -140, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = false }, -- curse { name = "condition", type = CONDITION_CURSED, interval = 3000, chance = 15, minDamage = -54, maxDamage = -54, range = 1, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -900, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 30000 }, diff --git a/data-otxserver/monster/bosses/kroazur.lua b/data-otxserver/monster/bosses/kroazur.lua index 14740f8f5..1664c1434 100644 --- a/data-otxserver/monster/bosses/kroazur.lua +++ b/data-otxserver/monster/bosses/kroazur.lua @@ -95,7 +95,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 200, chance = 20, minDamage = 0, maxDamage = -650 }, { name = "combat", interval = 200, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -500, target = false }, - { name = "combat", interval = 500, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = true }, + { name = "combat", interval = 500, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -300, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = true }, { name = "combat", interval = 500, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -250, maxDamage = -300, radius = 8, effect = CONST_ME_MORTAREA, target = false }, } diff --git a/data-otxserver/monster/bosses/morshabaal.lua b/data-otxserver/monster/bosses/morshabaal.lua index b177e932c..4273977e2 100644 --- a/data-otxserver/monster/bosses/morshabaal.lua +++ b/data-otxserver/monster/bosses/morshabaal.lua @@ -97,7 +97,7 @@ monster.loot = { } monster.attacks = { - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -5500, length = 8, spread = 0, effect = CONST_ME_GREYCHAIN }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -5500, length = 8, spread = 0, effect = CONST_ME_WHITE_ENERGY_SPARK }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -4000, maxDamage = -30000, effect = CONST_ME_ICEATTACK }, { name = "melee", interval = 2000, chance = 100, skill = 200, attack = 250 }, { name = "combat", interval = 1000, chance = 7, type = COMBAT_MANADRAIN, minDamage = -100, maxDamage = -1000, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_POFF, target = false }, @@ -110,7 +110,7 @@ monster.attacks = { { name = "outfit", interval = 1000, chance = 2, radius = 8, effect = CONST_ME_LOSEENERGY, target = false, duration = 5000, outfitMonster = "demon" }, { name = "outfit", interval = 1000, chance = 2, radius = 8, effect = CONST_ME_LOSEENERGY, target = false, duration = 5000, outfitItem = 3058 }, { name = "combat", interval = 1000, chance = 34, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -900, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -500, maxDamage = -850, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -500, maxDamage = -850, length = 8, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/bosses/pythius_the_rotten.lua b/data-otxserver/monster/bosses/pythius_the_rotten.lua index b635ea691..80f694af6 100644 --- a/data-otxserver/monster/bosses/pythius_the_rotten.lua +++ b/data-otxserver/monster/bosses/pythius_the_rotten.lua @@ -81,10 +81,10 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -475 }, - { name = "combat", interval = 2000, chance = 16, type = COMBAT_PHYSICALDAMAGE, minDamage = -165, maxDamage = -200, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, target = true }, + { name = "combat", interval = 2000, chance = 16, type = COMBAT_PHYSICALDAMAGE, minDamage = -165, maxDamage = -200, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "combat", interval = 2000, chance = 17, type = COMBAT_EARTHDAMAGE, minDamage = -55, maxDamage = -155, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, { name = "combat", interval = 2500, chance = 14, type = COMBAT_EARTHDAMAGE, minDamage = -333, maxDamage = -413, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, - { name = "combat", interval = 2500, chance = 22, type = COMBAT_MANADRAIN, minDamage = -85, maxDamage = -110, range = 7, radius = 4, shootEffect = CONST_ANI_ICE, target = true }, + { name = "combat", interval = 2500, chance = 22, type = COMBAT_MANADRAIN, minDamage = -85, maxDamage = -110, range = 7, radius = 4, shootEffect = CONST_ANI_ICE, effect = CONST_ME_LOSEENERGY, target = true }, { name = "speed", interval = 2000, chance = 20, speedChange = -300, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true, duration = 30000 }, -- curse { name = "condition", type = CONDITION_CURSED, interval = 2000, chance = 15, range = 7, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = true }, diff --git a/data-otxserver/monster/bosses/splasher.lua b/data-otxserver/monster/bosses/splasher.lua index b579d9213..60b89710c 100644 --- a/data-otxserver/monster/bosses/splasher.lua +++ b/data-otxserver/monster/bosses/splasher.lua @@ -77,8 +77,8 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -109, condition = { type = CONDITION_POISON, totalDamage = 5, interval = 4000 } }, { name = "combat", interval = 2000, chance = 8, type = COMBAT_LIFEDRAIN, minDamage = -106, maxDamage = -169, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, - { name = "combat", interval = 2000, chance = 7, type = COMBAT_LIFEDRAIN, minDamage = -162, maxDamage = -228, length = 8, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_ICEDAMAGE, minDamage = -134, maxDamage = -148, length = 8, spread = 3, effect = CONST_ME_BUBBLES, target = false }, + { name = "combat", interval = 2000, chance = 7, type = COMBAT_LIFEDRAIN, minDamage = -162, maxDamage = -228, length = 8, spread = 0, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "combat", interval = 2000, chance = 9, type = COMBAT_ICEDAMAGE, minDamage = -134, maxDamage = -148, length = 8, spread = 0, effect = CONST_ME_BUBBLES, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -101, maxDamage = -149, radius = 3, effect = CONST_ME_BUBBLES, target = false }, { name = "speed", interval = 2000, chance = 20, speedChange = -300, range = 1, effect = CONST_ME_MAGIC_RED, target = false, duration = 3000 }, } diff --git a/data-otxserver/monster/bosses/the_abomination.lua b/data-otxserver/monster/bosses/the_abomination.lua index 54df29435..e6ba0b1ae 100644 --- a/data-otxserver/monster/bosses/the_abomination.lua +++ b/data-otxserver/monster/bosses/the_abomination.lua @@ -95,7 +95,7 @@ monster.attacks = { { name = "speed", interval = 1000, chance = 12, speedChange = -800, radius = 6, effect = CONST_ME_POISONAREA, target = false, duration = 10000 }, { name = "combat", interval = 1000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -650, radius = 4, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 1000, chance = 11, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -900, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_SOUND_GREEN, target = true }, - { name = "combat", interval = 2000, chance = 19, type = COMBAT_PHYSICALDAMAGE, minDamage = -350, maxDamage = -850, length = 7, spread = 3, shootEffect = CONST_ANI_POISON, target = false }, + { name = "combat", interval = 2000, chance = 19, type = COMBAT_PHYSICALDAMAGE, minDamage = -350, maxDamage = -850, length = 7, spread = 0, shootEffect = CONST_ANI_POISON, effect = CONST_ME_HITBYPOISON, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/bosses/the_astral_source.lua b/data-otxserver/monster/bosses/the_astral_source.lua index 6be4ef6fb..abc46bfc1 100644 --- a/data-otxserver/monster/bosses/the_astral_source.lua +++ b/data-otxserver/monster/bosses/the_astral_source.lua @@ -66,7 +66,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -330 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -500, range = 7, radius = 6, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_PURPLEENERGY, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -500, range = 7, radius = 6, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -400, length = 5, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -400, length = 5, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_MANADRAIN, minDamage = -200, maxDamage = -400, radius = 5, effect = CONST_ME_MAGIC_BLUE, target = false }, } diff --git a/data-otxserver/monster/bosses/the_book_of_death.lua b/data-otxserver/monster/bosses/the_book_of_death.lua index c6445b9f4..6cea3d844 100644 --- a/data-otxserver/monster/bosses/the_book_of_death.lua +++ b/data-otxserver/monster/bosses/the_book_of_death.lua @@ -67,7 +67,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/bosses/the_collector.lua b/data-otxserver/monster/bosses/the_collector.lua index 3dd239b3e..b3fa70f85 100644 --- a/data-otxserver/monster/bosses/the_collector.lua +++ b/data-otxserver/monster/bosses/the_collector.lua @@ -67,7 +67,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 100, attack = 40 }, - { name = "speed", interval = 1000, chance = 13, speedChange = -800, length = 8, spread = 3, effect = CONST_ME_ENERGYHIT, target = false, duration = 20000 }, + { name = "speed", interval = 1000, chance = 13, speedChange = -800, length = 8, spread = 0, effect = CONST_ME_ENERGYHIT, target = false, duration = 20000 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -85, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = false }, { name = "melee", interval = 2000, chance = 15, minDamage = -10, maxDamage = -80 }, } diff --git a/data-otxserver/monster/bosses/visco.lua b/data-otxserver/monster/bosses/visco.lua index 6b4d0adb1..96223ee28 100644 --- a/data-otxserver/monster/bosses/visco.lua +++ b/data-otxserver/monster/bosses/visco.lua @@ -92,7 +92,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 200, attack = 200 }, - { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -500, maxDamage = -1500, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -500, maxDamage = -1500, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -1300, radius = 3, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -130, range = 7, effect = CONST_ME_MAGIC_GREEN, target = true }, { name = "speed", interval = 2000, chance = 20, speedChange = -500, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, diff --git a/data-otxserver/monster/bosses/weakened_shlorg.lua b/data-otxserver/monster/bosses/weakened_shlorg.lua index af96e3d53..615bd45f1 100644 --- a/data-otxserver/monster/bosses/weakened_shlorg.lua +++ b/data-otxserver/monster/bosses/weakened_shlorg.lua @@ -89,7 +89,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 150, attack = 50, condition = { type = CONDITION_POISON, totalDamage = 180, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -90, maxDamage = -180, length = 4, spread = 3, effect = CONST_ME_MAGIC_GREEN, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -90, maxDamage = -180, length = 4, spread = 0, effect = CONST_ME_MAGIC_GREEN, target = false }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -150, radius = 5, effect = CONST_ME_GREEN_RINGS, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 13, minDamage = -360, maxDamage = -440, radius = 5, effect = CONST_ME_GREEN_RINGS, target = false }, diff --git a/data-otxserver/monster/bosses/zarabustor.lua b/data-otxserver/monster/bosses/zarabustor.lua index a9e7f9b3f..8bb36a5e9 100644 --- a/data-otxserver/monster/bosses/zarabustor.lua +++ b/data-otxserver/monster/bosses/zarabustor.lua @@ -95,7 +95,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -250, range = 7, radius = 3, shootEffect = CONST_ANI_BURSTARROW, effect = CONST_ME_FIREAREA, target = true }, { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, target = true }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -250, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -130, maxDamage = -350, length = 8, spread = 3, effect = CONST_ME_BIGCLOUDS, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -130, maxDamage = -350, length = 8, spread = 0, effect = CONST_ME_BIGCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -250, range = 7, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -330, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, { name = "warlock skill reducer", interval = 2000, chance = 5, range = 5, target = false }, diff --git a/data-otxserver/monster/bosses/zushuka.lua b/data-otxserver/monster/bosses/zushuka.lua index 968e0c3c2..2491261be 100644 --- a/data-otxserver/monster/bosses/zushuka.lua +++ b/data-otxserver/monster/bosses/zushuka.lua @@ -110,9 +110,9 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -560 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = 0, maxDamage = -100, length = 8, spread = 3, effect = CONST_ME_ICEATTACK, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = 0, maxDamage = -100, length = 8, spread = 0, effect = CONST_ME_ICEATTACK, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = 0, maxDamage = -110, range = 7, shootEffect = CONST_ANI_SNOWBALL, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -300, maxDamage = -750, length = 8, spread = 3, effect = CONST_ME_ICEAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -300, maxDamage = -750, length = 8, spread = 0, effect = CONST_ME_ICEAREA, target = false }, { name = "outfit", interval = 2000, chance = 10, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitItem = 7172 }, { name = "speed", interval = 2000, chance = 15, speedChange = -330, range = 7, effect = CONST_ME_ICETORNADO, target = false, duration = 20000 }, } diff --git a/data-otxserver/monster/constructs/golden_servant_replica.lua b/data-otxserver/monster/constructs/golden_servant_replica.lua index 4a93d0d96..c5539f6d2 100644 --- a/data-otxserver/monster/constructs/golden_servant_replica.lua +++ b/data-otxserver/monster/constructs/golden_servant_replica.lua @@ -93,7 +93,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 40, attack = 40 }, - { name = "combat", interval = 2000, chance = 11, type = COMBAT_FIREDAMAGE, minDamage = -80, maxDamage = -110, length = 5, spread = 1, effect = CONST_ME_YELLOWENERGY, target = false }, + { name = "combat", interval = 2000, chance = 11, type = COMBAT_FIREDAMAGE, minDamage = -80, maxDamage = -110, length = 5, spread = 0, effect = CONST_ME_YELLOWENERGY, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -70, maxDamage = -110, range = 7, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_PURPLEENERGY, target = true }, } diff --git a/data-otxserver/monster/constructs/ice_golem.lua b/data-otxserver/monster/constructs/ice_golem.lua index 7e7d42d06..e5c226bae 100644 --- a/data-otxserver/monster/constructs/ice_golem.lua +++ b/data-otxserver/monster/constructs/ice_golem.lua @@ -94,7 +94,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -220 }, - { name = "speed", interval = 1000, chance = 13, speedChange = -800, length = 8, spread = 3, effect = CONST_ME_ENERGYHIT, target = false, duration = 20000 }, + { name = "speed", interval = 1000, chance = 13, speedChange = -800, length = 8, spread = 0, effect = CONST_ME_ENERGYHIT, target = false, duration = 20000 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -50, maxDamage = -85, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = false }, { name = "ice golem skill reducer", interval = 2000, chance = 10, target = false }, } diff --git a/data-otxserver/monster/constructs/lava_golem.lua b/data-otxserver/monster/constructs/lava_golem.lua index 0aa054857..aed9ad864 100644 --- a/data-otxserver/monster/constructs/lava_golem.lua +++ b/data-otxserver/monster/constructs/lava_golem.lua @@ -108,7 +108,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -700, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -700, length = 8, spread = 0, effect = CONST_ME_FIREATTACK, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -600, maxDamage = -1300, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "lava golem soulfire", interval = 2000, chance = 15, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -220, maxDamage = -350, radius = 4, effect = CONST_ME_FIREAREA, target = true }, diff --git a/data-otxserver/monster/constructs/magma_crawler.lua b/data-otxserver/monster/constructs/magma_crawler.lua index d9c5c4408..39c58ab88 100644 --- a/data-otxserver/monster/constructs/magma_crawler.lua +++ b/data-otxserver/monster/constructs/magma_crawler.lua @@ -106,7 +106,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -203 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -1100, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -1100, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = false }, { name = "magma crawler wave", interval = 2000, chance = 15, minDamage = -290, maxDamage = -800, target = false }, { name = "magma crawler soulfire", interval = 2000, chance = 20, target = false }, { name = "soulfire rune", interval = 2000, chance = 10, target = false }, diff --git a/data-otxserver/monster/constructs/metal_gargoyle.lua b/data-otxserver/monster/constructs/metal_gargoyle.lua index 206346bf4..1cea2d7d8 100644 --- a/data-otxserver/monster/constructs/metal_gargoyle.lua +++ b/data-otxserver/monster/constructs/metal_gargoyle.lua @@ -97,7 +97,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 84, attack = 50 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -125, maxDamage = -230, length = 8, spread = 3, effect = CONST_ME_YELLOWENERGY, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -125, maxDamage = -230, length = 8, spread = 0, effect = CONST_ME_YELLOWENERGY, target = false }, { name = "combat", interval = 2000, chance = 9, type = COMBAT_LIFEDRAIN, minDamage = -85, maxDamage = -150, range = 7, radius = 3, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, { name = "metal gargoyle curse", interval = 2000, chance = 13, target = false }, } diff --git a/data-otxserver/monster/constructs/stone_devourer.lua b/data-otxserver/monster/constructs/stone_devourer.lua index 4af345b23..5a9174c31 100644 --- a/data-otxserver/monster/constructs/stone_devourer.lua +++ b/data-otxserver/monster/constructs/stone_devourer.lua @@ -105,7 +105,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -990 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -230, maxDamage = -460, range = 7, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_STONES, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -650, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -260, length = 5, spread = 3, effect = CONST_ME_STONES, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -260, length = 5, spread = 0, effect = CONST_ME_STONES, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/constructs/walker.lua b/data-otxserver/monster/constructs/walker.lua index 3ebcd2cc4..354f8fc2e 100644 --- a/data-otxserver/monster/constructs/walker.lua +++ b/data-otxserver/monster/constructs/walker.lua @@ -94,7 +94,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 70, attack = 50 }, { name = "walker skill reducer", interval = 2000, chance = 21, target = false }, - { name = "combat", interval = 2000, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -125, maxDamage = -245, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "combat", interval = 2000, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -125, maxDamage = -245, length = 8, spread = 0, effect = CONST_ME_EXPLOSIONHIT, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/constructs/weeper.lua b/data-otxserver/monster/constructs/weeper.lua index 29633af26..75a8d7ebb 100644 --- a/data-otxserver/monster/constructs/weeper.lua +++ b/data-otxserver/monster/constructs/weeper.lua @@ -99,9 +99,9 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -400, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -400, maxDamage = -1000, length = 8, spread = 0, effect = CONST_ME_FIREATTACK, target = false }, { name = "combat", interval = 3000, chance = 100, type = COMBAT_FIREDAMAGE, minDamage = -80, maxDamage = -250, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "speed", interval = 2000, chance = 10, speedChange = -800, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false, duration = 30000 }, + { name = "speed", interval = 2000, chance = 10, speedChange = -800, length = 5, spread = 0, effect = CONST_ME_BLOCKHIT, target = false, duration = 30000 }, } monster.defenses = { diff --git a/data-otxserver/monster/demons/dawnfire_asura.lua b/data-otxserver/monster/demons/dawnfire_asura.lua index 30fa645b9..ac6fb0d53 100644 --- a/data-otxserver/monster/demons/dawnfire_asura.lua +++ b/data-otxserver/monster/demons/dawnfire_asura.lua @@ -107,11 +107,10 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -269 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -70, range = 7, target = false }, - { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -200, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, - { name = "energy strike", interval = 2000, chance = 10, minDamage = -10, maxDamage = -100, range = 1, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -100, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, + { name = "combat", interval = 3700, chance = 17, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -300, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 3200, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = -100, maxDamage = -350, radius = 4, range = 5, target = true, effect = CONST_ME_MORTAREA }, + { name = "combat", interval = 2700, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -95, maxDamage = -180, range = 3, shootEffect = CONST_ANI_FIRE, target = true }, + { name = "speed", interval = 2000, chance = 20, speedChange = -800, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_SLEEP, target = true, duration = 15000 }, } monster.defenses = { diff --git a/data-otxserver/monster/demons/demon_outcast.lua b/data-otxserver/monster/demons/demon_outcast.lua index 10827c7d5..93c643d53 100644 --- a/data-otxserver/monster/demons/demon_outcast.lua +++ b/data-otxserver/monster/demons/demon_outcast.lua @@ -115,8 +115,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -450, length = 6, spread = 3, effect = CONST_ME_PURPLEENERGY, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -550, length = 8, spread = 3, effect = CONST_ME_YELLOWENERGY, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -450, length = 6, spread = 0, effect = CONST_ME_PURPLEENERGY, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -550, length = 8, spread = 0, effect = CONST_ME_YELLOWENERGY, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -250, radius = 3, effect = CONST_ME_ENERGYHIT, target = true }, { name = "demon outcast skill reducer", interval = 2000, chance = 10, range = 5, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -150, radius = 4, effect = CONST_ME_MAGIC_GREEN, target = false }, diff --git a/data-otxserver/monster/demons/duskbringer.lua b/data-otxserver/monster/demons/duskbringer.lua index 91a8230c8..4d7c435f5 100644 --- a/data-otxserver/monster/demons/duskbringer.lua +++ b/data-otxserver/monster/demons/duskbringer.lua @@ -82,9 +82,9 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -350 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -165, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -350, maxDamage = -720, length = 8, spread = 3, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 7, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -275, radius = 4, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -350, maxDamage = -720, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 7, spread = 0, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -275, radius = 4, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/demons/floating_savant.lua b/data-otxserver/monster/demons/floating_savant.lua index 0e63eb846..dbe874c9c 100644 --- a/data-otxserver/monster/demons/floating_savant.lua +++ b/data-otxserver/monster/demons/floating_savant.lua @@ -97,7 +97,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -390, maxDamage = -480, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_ENERGYDAMAGE, minDamage = -390, maxDamage = -480, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -400, radius = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -490, maxDamage = -630, length = 4, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -490, maxDamage = -630, length = 4, spread = 0, effect = CONST_ME_HITBYFIRE, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/demons/frost_flower_asura.lua b/data-otxserver/monster/demons/frost_flower_asura.lua index 6013179e9..0f73f178e 100644 --- a/data-otxserver/monster/demons/frost_flower_asura.lua +++ b/data-otxserver/monster/demons/frost_flower_asura.lua @@ -107,7 +107,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -110, maxDamage = -400 }, - { name = "combat", interval = 1300, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -185, maxDamage = -210, length = 8, spread = 3, effect = CONST_ME_ICETORNADO, target = false }, + { name = "combat", interval = 1300, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -185, maxDamage = -210, length = 8, spread = 0, effect = CONST_ME_ICETORNADO, target = false }, { name = "combat", interval = 1000, chance = 9, type = COMBAT_ICEDAMAGE, minDamage = -120, maxDamage = -200, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = true }, } diff --git a/data-otxserver/monster/demons/fury.lua b/data-otxserver/monster/demons/fury.lua index 7c990c16b..cdaad15cf 100644 --- a/data-otxserver/monster/demons/fury.lua +++ b/data-otxserver/monster/demons/fury.lua @@ -102,8 +102,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -510 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_DEATHDAMAGE, minDamage = -120, maxDamage = -700, length = 8, spread = 3, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -120, maxDamage = -300, radius = 4, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_DEATHDAMAGE, minDamage = -120, maxDamage = -700, length = 8, spread = 3, effect = CONST_ME_DRAWBLOOD, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -120, maxDamage = -300, radius = 4, effect = CONST_ME_DRAWBLOOD, target = false }, { name = "fury skill reducer", interval = 2000, chance = 5, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -120, maxDamage = -300, radius = 3, effect = CONST_ME_HITAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -125, maxDamage = -250, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, diff --git a/data-otxserver/monster/demons/grimeleech.lua b/data-otxserver/monster/demons/grimeleech.lua index 8ef43ffad..8db5e5d70 100644 --- a/data-otxserver/monster/demons/grimeleech.lua +++ b/data-otxserver/monster/demons/grimeleech.lua @@ -113,10 +113,10 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 70, attack = 80 }, { name = "melee", interval = 2000, chance = 2, skill = 153, attack = 100 }, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_PHYSICALDAMAGE, minDamage = 100, maxDamage = -565, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -220, length = 8, spread = 3, target = false }, - { name = "combat", interval = 2000, chance = 13, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -375, radius = 4, target = false }, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "combat", interval = 2000, chance = 14, type = COMBAT_LIFEDRAINDAMAGE, minDamage = 100, maxDamage = -565, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAINDAMAGE, minDamage = -150, maxDamage = -220, length = 8, spread = 0, effect = CONST_ME_MAGIC_GREEN, target = false }, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -375, radius = 4, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 9, type = COMBAT_MANADRAINDAMAGE, minDamage = 0, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/demons/hellfire_fighter.lua b/data-otxserver/monster/demons/hellfire_fighter.lua index 1d6610844..446234df5 100644 --- a/data-otxserver/monster/demons/hellfire_fighter.lua +++ b/data-otxserver/monster/demons/hellfire_fighter.lua @@ -98,7 +98,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -520 }, { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -392, maxDamage = -1500, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -392, maxDamage = -1500, length = 8, spread = 0, effect = CONST_ME_FIREATTACK, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -60, maxDamage = -330, range = 7, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, { name = "hellfire fighter soulfire", interval = 2000, chance = 15, target = false }, } diff --git a/data-otxserver/monster/demons/hellflayer.lua b/data-otxserver/monster/demons/hellflayer.lua index f0b8b29df..93e9db81e 100644 --- a/data-otxserver/monster/demons/hellflayer.lua +++ b/data-otxserver/monster/demons/hellflayer.lua @@ -114,7 +114,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -170, maxDamage = -300, range = 7, shootEffect = CONST_ANI_POISON, target = false }, { name = "choking fear drown", interval = 2000, chance = 20, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -250, maxDamage = -500, radius = 4, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -200, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -200, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -550, radius = 1, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREATTACK, target = true }, { name = "warlock skill reducer", interval = 2000, chance = 5, range = 5, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 300, maxDamage = -500, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_SLEEP, target = true }, diff --git a/data-otxserver/monster/demons/midnight_asura.lua b/data-otxserver/monster/demons/midnight_asura.lua index 6eb53ae84..c3b0b3791 100644 --- a/data-otxserver/monster/demons/midnight_asura.lua +++ b/data-otxserver/monster/demons/midnight_asura.lua @@ -112,12 +112,13 @@ monster.loot = { } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -269 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -70, range = 7, target = false }, - { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -200, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, - { name = "energy strike", interval = 2000, chance = 10, minDamage = -10, maxDamage = -100, range = 1, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -100, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -387 }, + { name = "combat", interval = 3300, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -70, range = 7, target = true }, + { name = "combat", interval = 3700, chance = 17, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -200, length = 5, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 4100, chance = 27, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -300, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2700, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -50, maxDamage = -200, range = 5, shootEffect = CONST_ANI_SUDDENDEATH, target = true }, + { name = "combat", interval = 3100, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -50, maxDamage = -100, range = 1, shootEffect = CONST_ANI_ENERGY, target = true }, + { name = "speed", interval = 2000, chance = 20, speedChange = -800, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_SLEEP, target = true, duration = 15000 }, } monster.defenses = { diff --git a/data-otxserver/monster/demons/true_frost_flower_asura.lua b/data-otxserver/monster/demons/true_frost_flower_asura.lua index 7a5a6998c..cd1b3bd8d 100644 --- a/data-otxserver/monster/demons/true_frost_flower_asura.lua +++ b/data-otxserver/monster/demons/true_frost_flower_asura.lua @@ -110,8 +110,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500, condition = { type = CONDITION_FREEZING, totalDamage = 400, interval = 4000 } }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -250, range = 7, target = false }, - { name = "combat", interval = 1000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -550, maxDamage = -780, length = 8, spread = 3, effect = CONST_ME_ICETORNADO, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 1000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -550, maxDamage = -780, length = 8, spread = 0, effect = CONST_ME_ICETORNADO, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -300, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -100, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, } diff --git a/data-otxserver/monster/demons/true_midnight_asura.lua b/data-otxserver/monster/demons/true_midnight_asura.lua index 1327b384f..ebdac293e 100644 --- a/data-otxserver/monster/demons/true_midnight_asura.lua +++ b/data-otxserver/monster/demons/true_midnight_asura.lua @@ -112,8 +112,8 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -500, maxDamage = -650, range = 5, effect = CONST_ME_MORTAREA, target = true }, --Death Missile { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -280, range = 7, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -240, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -500, maxDamage = -700, length = 8, spread = 3, effect = CONST_ME_BLACKSMOKE, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -240, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -500, maxDamage = -700, length = 8, spread = 0, effect = CONST_ME_BLACKSMOKE, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -100, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, } diff --git a/data-otxserver/monster/demons/vexclaw.lua b/data-otxserver/monster/demons/vexclaw.lua index d13f5a508..d31045eac 100644 --- a/data-otxserver/monster/demons/vexclaw.lua +++ b/data-otxserver/monster/demons/vexclaw.lua @@ -121,9 +121,9 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -250, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "choking fear drown", interval = 2000, chance = 20, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -400, radius = 4, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -200, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -200, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -490, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -490, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "energy strike", interval = 2000, chance = 10, minDamage = -210, maxDamage = -300, range = 1, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -300, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, } diff --git a/data-otxserver/monster/dragons/frost_dragon.lua b/data-otxserver/monster/dragons/frost_dragon.lua index 34814c4f5..045630732 100644 --- a/data-otxserver/monster/dragons/frost_dragon.lua +++ b/data-otxserver/monster/dragons/frost_dragon.lua @@ -107,7 +107,7 @@ monster.attacks = { { name = "speed", interval = 2000, chance = 15, speedChange = -850, length = 7, spread = 3, effect = CONST_ME_ICEATTACK, target = false, duration = 18000 }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_ICEDAMAGE, minDamage = -60, maxDamage = -120, radius = 3, effect = CONST_ME_ICETORNADO, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -240, radius = 4, effect = CONST_ME_ICEAREA, target = true }, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -220, length = 1, spread = 0, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -220, length = 1, spread = 3, effect = CONST_ME_POFF, target = false }, { name = "speed", interval = 2000, chance = 20, speedChange = -600, radius = 4, effect = CONST_ME_ICEAREA, target = true, duration = 12000 }, } diff --git a/data-otxserver/monster/elementals/cliff_strider.lua b/data-otxserver/monster/elementals/cliff_strider.lua index b03a7f259..2690f356f 100644 --- a/data-otxserver/monster/elementals/cliff_strider.lua +++ b/data-otxserver/monster/elementals/cliff_strider.lua @@ -118,7 +118,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -800, radius = 4, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_STONES, target = true }, { name = "cliff strider skill reducer", interval = 2000, chance = 10, target = false }, { name = "cliff strider electrify", interval = 2000, chance = 15, range = 1, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -1000, length = 6, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -1000, length = 6, spread = 0, effect = CONST_ME_GROUNDSHAKER, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -100, maxDamage = -300, radius = 4, effect = CONST_ME_YELLOWENERGY, target = false }, } diff --git a/data-otxserver/monster/elementals/earth_elemental.lua b/data-otxserver/monster/elementals/earth_elemental.lua index 84ab9418e..f71d6a796 100644 --- a/data-otxserver/monster/elementals/earth_elemental.lua +++ b/data-otxserver/monster/elementals/earth_elemental.lua @@ -96,7 +96,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -72, maxDamage = -105, range = 7, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_GREEN_RINGS, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, radius = 2, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_POFF, target = true }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 20, minDamage = -200, maxDamage = -260, length = 6, spread = 3, effect = CONST_ME_BIGPLANTS, target = false }, + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 20, minDamage = -200, maxDamage = -260, length = 6, spread = 0, effect = CONST_ME_BIGPLANTS, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -100, maxDamage = -140, radius = 5, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, { name = "speed", interval = 2000, chance = 10, speedChange = -330, range = 5, effect = CONST_ME_SMALLPLANTS, target = true, duration = 5000 }, diff --git a/data-otxserver/monster/elementals/ironblight.lua b/data-otxserver/monster/elementals/ironblight.lua index f6391182c..593069318 100644 --- a/data-otxserver/monster/elementals/ironblight.lua +++ b/data-otxserver/monster/elementals/ironblight.lua @@ -108,9 +108,9 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -460, maxDamage = -480, radius = 6, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -260, maxDamage = -350, length = 7, spread = 3, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -260, maxDamage = -350, length = 7, spread = 0, shootEffect = CONST_ANI_ICE, effect = CONST_ME_ICEATTACK, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -180, maxDamage = -250, radius = 2, shootEffect = CONST_ANI_GREENSTAR, effect = CONST_ME_BIGPLANTS, target = true }, - { name = "speed", interval = 2000, chance = 10, speedChange = -800, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false, duration = 30000 }, + { name = "speed", interval = 2000, chance = 10, speedChange = -800, length = 5, spread = 0, effect = CONST_ME_BLOCKHIT, target = false, duration = 30000 }, } monster.defenses = { diff --git a/data-otxserver/monster/elementals/lava_lurker.lua b/data-otxserver/monster/elementals/lava_lurker.lua index 675d807fa..6a6e236f8 100644 --- a/data-otxserver/monster/elementals/lava_lurker.lua +++ b/data-otxserver/monster/elementals/lava_lurker.lua @@ -81,8 +81,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -300, range = 7, length = 3, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -100, range = 7, length = 6, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "combat", interval = 1000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -300, range = 7, length = 3, spread = 0, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -100, range = 7, length = 6, spread = 0, effect = CONST_ME_HITBYFIRE, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/elementals/massive_earth_elemental.lua b/data-otxserver/monster/elementals/massive_earth_elemental.lua index 674a26d55..e894319b6 100644 --- a/data-otxserver/monster/elementals/massive_earth_elemental.lua +++ b/data-otxserver/monster/elementals/massive_earth_elemental.lua @@ -98,7 +98,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -99, maxDamage = -145, range = 7, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_GREEN_RINGS, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -95, maxDamage = -169, range = 7, radius = 2, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_POFF, target = true }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -300, maxDamage = -320, length = 6, spread = 3, effect = CONST_ME_BIGPLANTS, target = false }, + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -300, maxDamage = -320, length = 6, spread = 0, effect = CONST_ME_BIGPLANTS, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -200, maxDamage = -220, radius = 5, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = false }, { name = "speed", interval = 2000, chance = 20, speedChange = -330, range = 5, effect = CONST_ME_SMALLPLANTS, target = true, duration = 5000 }, diff --git a/data-otxserver/monster/elementals/massive_fire_elemental.lua b/data-otxserver/monster/elementals/massive_fire_elemental.lua index ab29c3212..e21cd8204 100644 --- a/data-otxserver/monster/elementals/massive_fire_elemental.lua +++ b/data-otxserver/monster/elementals/massive_fire_elemental.lua @@ -90,7 +90,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, target = false }, { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -700, length = 7, spread = 3, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -700, length = 7, spread = 0, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -60, maxDamage = -250, radius = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, { name = "massive fire elemental soulfire", interval = 2000, chance = 15, target = false }, } diff --git a/data-otxserver/monster/elementals/raging_fire.lua b/data-otxserver/monster/elementals/raging_fire.lua index a5da1da9f..d83a26c3f 100644 --- a/data-otxserver/monster/elementals/raging_fire.lua +++ b/data-otxserver/monster/elementals/raging_fire.lua @@ -77,7 +77,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 60, attack = 100 }, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_FIREDAMAGE, minDamage = -65, maxDamage = -605, length = 7, spread = 3, target = false }, + { name = "combat", interval = 2000, chance = 9, type = COMBAT_FIREDAMAGE, minDamage = -65, maxDamage = -605, length = 7, spread = 0, effect = CONST_ME_FIREAREA, target = false }, { name = "massive fire elemental soulfire", interval = 2000, chance = 12, target = false }, { name = "firefield", interval = 2000, chance = 11, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_EXPLOSIONHIT, target = true }, { name = "firefield", interval = 2000, chance = 11, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, diff --git a/data-otxserver/monster/event_creatures/memory_creatures/memory_of_a_frazzlemaw.lua b/data-otxserver/monster/event_creatures/memory_creatures/memory_of_a_frazzlemaw.lua index c8181abc4..2c10fd670 100644 --- a/data-otxserver/monster/event_creatures/memory_creatures/memory_of_a_frazzlemaw.lua +++ b/data-otxserver/monster/event_creatures/memory_creatures/memory_of_a_frazzlemaw.lua @@ -79,8 +79,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, -- bleed - { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 10, minDamage = -50, maxDamage = -120, radius = 3, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -110, length = 5, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 10, minDamage = -50, maxDamage = -120, radius = 3, effect = CONST_ME_DRAWBLOOD, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -110, length = 5, spread = 0, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, radius = 2, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_STONES, target = true }, { name = "speed", interval = 2000, chance = 15, speedChange = -600, radius = 5, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -150, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, diff --git a/data-otxserver/monster/event_creatures/memory_creatures/memory_of_a_fungus.lua b/data-otxserver/monster/event_creatures/memory_creatures/memory_of_a_fungus.lua index 781372f05..0860ca7a2 100644 --- a/data-otxserver/monster/event_creatures/memory_creatures/memory_of_a_fungus.lua +++ b/data-otxserver/monster/event_creatures/memory_creatures/memory_of_a_fungus.lua @@ -77,8 +77,8 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -150, range = 7, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_SMALLPLANTS, target = false }, { name = "poisonfield", interval = 2000, chance = 20, radius = 4, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -30, maxDamage = -150, length = 8, spread = 3, effect = CONST_ME_GREEN_RINGS, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -80, maxDamage = -130, length = 5, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -30, maxDamage = -150, length = 8, spread = 0, effect = CONST_ME_GREEN_RINGS, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -80, maxDamage = -130, length = 5, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -50, maxDamage = -180, range = 7, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, } diff --git a/data-otxserver/monster/event_creatures/memory_creatures/memory_of_a_manticore.lua b/data-otxserver/monster/event_creatures/memory_creatures/memory_of_a_manticore.lua index 83811f94d..15bd40073 100644 --- a/data-otxserver/monster/event_creatures/memory_creatures/memory_of_a_manticore.lua +++ b/data-otxserver/monster/event_creatures/memory_creatures/memory_of_a_manticore.lua @@ -70,7 +70,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, - { name = "combat", interval = 2000, chance = 13, type = COMBAT_FIREDAMAGE, minDamage = -50, maxDamage = -150, length = 8, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_FIREDAMAGE, minDamage = -50, maxDamage = -150, length = 8, spread = 0, effect = CONST_ME_HITBYFIRE, target = false }, { name = "combat", interval = 4000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -150, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_GREEN_RINGS, target = true }, { name = "combat", interval = 2000, chance = 22, type = COMBAT_FIREDAMAGE, minDamage = -10, maxDamage = -100, range = 4, shootEffect = CONST_ANI_BURSTARROW, target = true }, } diff --git a/data-otxserver/monster/event_creatures/memory_creatures/memory_of_a_shaper.lua b/data-otxserver/monster/event_creatures/memory_creatures/memory_of_a_shaper.lua index ba877ecbf..25ef89c48 100644 --- a/data-otxserver/monster/event_creatures/memory_creatures/memory_of_a_shaper.lua +++ b/data-otxserver/monster/event_creatures/memory_creatures/memory_of_a_shaper.lua @@ -76,7 +76,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -50, maxDamage = -100, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, - { name = "combat", interval = 2000, chance = 35, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -100, length = 5, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 35, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -100, length = 5, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -100, radius = 7, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 2000, chance = 9, speedChange = -440, effect = CONST_ME_GIANTICE, target = true, duration = 7000 }, } diff --git a/data-otxserver/monster/extra_dimensional/courage_leech.lua b/data-otxserver/monster/extra_dimensional/courage_leech.lua index 494274134..d8ad3147a 100644 --- a/data-otxserver/monster/extra_dimensional/courage_leech.lua +++ b/data-otxserver/monster/extra_dimensional/courage_leech.lua @@ -99,7 +99,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -700 }, { name = "combat", interval = 2000, chance = 17, type = COMBAT_ENERGYDAMAGE, minDamage = -1100, maxDamage = -1400, radius = 4, shootEffect = CONST_ANI_ETHEREALSPEAR, effect = CONST_ME_ENERGYAREA, target = true }, { name = "combat", interval = 3000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -1100, maxDamage = -1400, radius = 4, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 3000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -900, maxDamage = -1100, length = 7, spread = 1, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 3000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -900, maxDamage = -1100, length = 7, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HOLYDAMAGE, minDamage = -1100, maxDamage = -1300, range = 7, shootEffect = CONST_ANI_SMALLHOLY, effect = CONST_ME_HOLYDAMAGE, target = true }, { name = "energy chain", interval = 2000, chance = 20, minDamage = -900, maxDamage = -1000, range = 3, target = true }, } diff --git a/data-otxserver/monster/extra_dimensional/instable_sparkion.lua b/data-otxserver/monster/extra_dimensional/instable_sparkion.lua index 9ad49260b..f3e677200 100644 --- a/data-otxserver/monster/extra_dimensional/instable_sparkion.lua +++ b/data-otxserver/monster/extra_dimensional/instable_sparkion.lua @@ -95,7 +95,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -350, length = 6, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -350, length = 6, spread = 0, effect = CONST_ME_GROUNDSHAKER, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -200, range = 5, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYHIT, target = true }, -- energy damage { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -300, maxDamage = -600, range = 6, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_PURPLEENERGY, target = true }, diff --git a/data-otxserver/monster/extra_dimensional/sparkion.lua b/data-otxserver/monster/extra_dimensional/sparkion.lua index f11b76bce..94933e33f 100644 --- a/data-otxserver/monster/extra_dimensional/sparkion.lua +++ b/data-otxserver/monster/extra_dimensional/sparkion.lua @@ -105,7 +105,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -400, length = 6, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -400, length = 6, spread = 0, effect = CONST_ME_GROUNDSHAKER, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -400, range = 5, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYHIT, target = true }, -- energy damage { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -300, maxDamage = -600, range = 6, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_PURPLEENERGY, target = true }, diff --git a/data-otxserver/monster/extra_dimensional/yielothax.lua b/data-otxserver/monster/extra_dimensional/yielothax.lua index 487a8d5c3..bfde638d1 100644 --- a/data-otxserver/monster/extra_dimensional/yielothax.lua +++ b/data-otxserver/monster/extra_dimensional/yielothax.lua @@ -104,10 +104,10 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 1000, chance = 100, minDamage = 0, maxDamage = -203 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -130, length = 4, spread = 3, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -130, length = 4, spread = 0, effect = CONST_ME_ENERGYAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -250, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -70, maxDamage = -120, radius = 3, effect = CONST_ME_HITBYPOISON, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -150, length = 4, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -150, length = 4, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/familiars/sorcerer_familiar.lua b/data-otxserver/monster/familiars/sorcerer_familiar.lua index b4685c876..31d61dfbf 100644 --- a/data-otxserver/monster/familiars/sorcerer_familiar.lua +++ b/data-otxserver/monster/familiars/sorcerer_familiar.lua @@ -67,7 +67,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -280 }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -90, maxDamage = -150, length = 2, spread = 0, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -90, maxDamage = -150, length = 2, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -190, maxDamage = -210, length = 2, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, { name = "summon challenge", interval = 2000, chance = 40, target = false }, } diff --git a/data-otxserver/monster/fey/arctic_faun.lua b/data-otxserver/monster/fey/arctic_faun.lua index 89eb56773..d3ab41582 100644 --- a/data-otxserver/monster/fey/arctic_faun.lua +++ b/data-otxserver/monster/fey/arctic_faun.lua @@ -101,7 +101,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/fey/boogy.lua b/data-otxserver/monster/fey/boogy.lua index 997d476ac..681428a27 100644 --- a/data-otxserver/monster/fey/boogy.lua +++ b/data-otxserver/monster/fey/boogy.lua @@ -99,7 +99,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, -- bleed - { name = "condition", type = CONDITION_BLEEDING, interval = 3000, chance = 11, minDamage = -100, maxDamage = -300, radius = 6, shootEffect = CONST_ANI_WHIRLWINDCLUB, target = true }, + { name = "condition", type = CONDITION_BLEEDING, interval = 3000, chance = 11, minDamage = -100, maxDamage = -300, radius = 6, shootEffect = CONST_ANI_WHIRLWINDCLUB, effect = CONST_ME_DRAWBLOOD, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -60, maxDamage = -115, range = 7, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_EXPLOSIONAREA, target = true }, } diff --git a/data-otxserver/monster/giants/ogre_shaman.lua b/data-otxserver/monster/giants/ogre_shaman.lua index 332230e47..6e3dd2c25 100644 --- a/data-otxserver/monster/giants/ogre_shaman.lua +++ b/data-otxserver/monster/giants/ogre_shaman.lua @@ -114,7 +114,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -269, condition = { type = CONDITION_FIRE, totalDamage = 6, interval = 9000 } }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -70, maxDamage = -180, range = 7, shootEffect = CONST_ANI_POISON, target = false }, { name = "outfit", interval = 2000, chance = 8, range = 7, effect = CONST_ME_MAGIC_BLUE, target = false, duration = 4000, outfitMonster = "chicken" }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -15, maxDamage = -120, length = 8, spread = 3, effect = CONST_ME_CARNIPHILA, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -15, maxDamage = -120, length = 8, spread = 0, effect = CONST_ME_CARNIPHILA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/humanoids/broken_shaper.lua b/data-otxserver/monster/humanoids/broken_shaper.lua index a829ba029..9ed950bbc 100644 --- a/data-otxserver/monster/humanoids/broken_shaper.lua +++ b/data-otxserver/monster/humanoids/broken_shaper.lua @@ -105,7 +105,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -150, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = true }, - { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, length = 5, spread = 3, effect = CONST_ME_SOUND_RED, target = false }, + { name = "combat", interval = 2000, chance = 35, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, length = 5, spread = 0, effect = CONST_ME_SOUND_RED, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/humanoids/chakoya_toolshaper.lua b/data-otxserver/monster/humanoids/chakoya_toolshaper.lua index e7a68a152..010c4cf06 100644 --- a/data-otxserver/monster/humanoids/chakoya_toolshaper.lua +++ b/data-otxserver/monster/humanoids/chakoya_toolshaper.lua @@ -92,7 +92,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -35 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -45, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLSTONE, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -45, range = 7, radius = 1, shootEffect = CONST_ANI_SMALLSTONE, target = true }, } monster.defenses = { diff --git a/data-otxserver/monster/humanoids/crazed_summer_vanguard.lua b/data-otxserver/monster/humanoids/crazed_summer_vanguard.lua index 8c9e3f361..38fe860c6 100644 --- a/data-otxserver/monster/humanoids/crazed_summer_vanguard.lua +++ b/data-otxserver/monster/humanoids/crazed_summer_vanguard.lua @@ -96,11 +96,12 @@ monster.loot = { } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = -160, maxDamage = -530 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -270, maxDamage = -710, length = 3, spread = 0, effect = CONST_ME_FIREAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -300, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -380, radius = 5, effect = CONST_ME_EXPLOSIONHIT, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -350, radius = 5, effect = CONST_ME_EXPLOSIONAREA, target = true }, + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + { name = "combat", interval = 2500, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -300, length = 3, spread = 0, effect = CONST_ME_FIREAREA, target = false }, + { name = "combat", interval = 3000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -300, radius = 1, effect = CONST_ME_FIREAREA, target = false }, + { name = "combat", interval = 3500, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -300, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, + { name = "combat", interval = 4000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -300, radius = 3, effect = CONST_ME_EXPLOSIONHIT, target = true }, + { name = "sparks chain", interval = 4500, chance = 20, minDamage = -100, maxDamage = -250, range = 3, target = true }, } monster.defenses = { diff --git a/data-otxserver/monster/humanoids/crazed_winter_rearguard.lua b/data-otxserver/monster/humanoids/crazed_winter_rearguard.lua index 17fce82c9..d7d54c49c 100644 --- a/data-otxserver/monster/humanoids/crazed_winter_rearguard.lua +++ b/data-otxserver/monster/humanoids/crazed_winter_rearguard.lua @@ -99,9 +99,10 @@ monster.loot = { } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = -110, maxDamage = -400 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -300, radius = 3, effect = CONST_ME_ICEAREA, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -250, maxDamage = -300, range = 7, shootEffect = CONST_ANI_ICE, target = false }, + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "combat", interval = 2500, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -300, range = 5, radius = 1, effect = CONST_ME_ICEAREA, target = true }, + { name = "combat", interval = 3000, chance = 25, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -300, length = 4, spread = 0, effect = CONST_ME_GIANTICE, target = false }, + { name = "combat", interval = 3500, chance = 25, type = COMBAT_ICEDAMAGE, minDamage = -250, maxDamage = -300, radius = 3, effect = CONST_ME_ICEAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/humanoids/crazed_winter_vanguard.lua b/data-otxserver/monster/humanoids/crazed_winter_vanguard.lua index b324bd322..22cac33bc 100644 --- a/data-otxserver/monster/humanoids/crazed_winter_vanguard.lua +++ b/data-otxserver/monster/humanoids/crazed_winter_vanguard.lua @@ -95,10 +95,10 @@ monster.loot = { } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = -150, maxDamage = -400 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -200, maxDamage = -300, radius = 5, effect = CONST_ME_ICEAREA, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -240, maxDamage = -300, length = 4, spread = 3, effect = CONST_ME_GIANTICE, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -250, maxDamage = -300, range = 7, shootEffect = CONST_ANI_ICE, target = false }, + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "combat", interval = 2500, chance = 30, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -300, range = 5, radius = 1, effect = CONST_ME_ICEAREA, target = true }, + { name = "combat", interval = 3000, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -300, length = 4, spread = 0, effect = CONST_ME_GIANTICE, target = false }, + { name = "combat", interval = 3500, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -250, maxDamage = -300, radius = 3, effect = CONST_ME_ICEAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/humanoids/execowtioner.lua b/data-otxserver/monster/humanoids/execowtioner.lua index 77b37dcd9..7de794d5c 100644 --- a/data-otxserver/monster/humanoids/execowtioner.lua +++ b/data-otxserver/monster/humanoids/execowtioner.lua @@ -102,7 +102,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 80 }, - { name = "combat", interval = 2000, chance = 8, type = COMBAT_LIFEDRAIN, minDamage = -135, maxDamage = -280, range = 7, radius = 5, shootEffect = CONST_ANI_WHIRLWINDAXE, target = true }, + { name = "combat", interval = 2000, chance = 8, type = COMBAT_LIFEDRAIN, minDamage = -135, maxDamage = -280, range = 7, radius = 5, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_DRAWBLOOD, target = true }, { name = "combat", interval = 2000, chance = 8, type = COMBAT_PHYSICALDAMAGE, minDamage = -90, maxDamage = -200, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_EXPLOSIONAREA, target = true }, } diff --git a/data-otxserver/monster/humanoids/insane_siren.lua b/data-otxserver/monster/humanoids/insane_siren.lua index 1ded28143..b5a6d3acd 100644 --- a/data-otxserver/monster/humanoids/insane_siren.lua +++ b/data-otxserver/monster/humanoids/insane_siren.lua @@ -94,11 +94,14 @@ monster.loot = { } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -530 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -270, maxDamage = -710, length = 3, spread = 0, effect = CONST_ME_FIREAREA, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -300, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -380, radius = 5, effect = CONST_ME_EXPLOSIONHIT, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -350, radius = 5, effect = CONST_ME_EXPLOSIONAREA, target = true }, + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, + { name = "combat", interval = 2300, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -300, length = 3, spread = 0, effect = CONST_ME_FIREAREA, target = false }, + { name = "combat", interval = 2600, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -300, radius = 1, effect = CONST_ME_FIREAREA, target = false }, + { name = "combat", interval = 2900, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -300, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, + { name = "combat", interval = 3200, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -300, radius = 3, effect = CONST_ME_EXPLOSIONHIT, target = true }, + { name = "combat", interval = 3500, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -300, range = 6, effect = CONST_ME_FIREATTACK, target = true }, + { name = "combat", interval = 3800, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -300, range = 6, radius = 2, effect = CONST_ME_FIREAREA, target = true }, + { name = "sparks chain", interval = 4100, chance = 17, minDamage = -100, maxDamage = -200, range = 3, target = true }, } monster.defenses = { diff --git a/data-otxserver/monster/humanoids/lost_exile.lua b/data-otxserver/monster/humanoids/lost_exile.lua index d1bb52aaa..0acd58780 100644 --- a/data-otxserver/monster/humanoids/lost_exile.lua +++ b/data-otxserver/monster/humanoids/lost_exile.lua @@ -114,7 +114,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -120 }, - { name = "sudden death rune", interval = 2000, chance = 15, minDamage = -150, maxDamage = -350, range = 3, length = 6, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "sudden death rune", interval = 2000, chance = 15, minDamage = -150, maxDamage = -350, range = 3, length = 6, spread = 0, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -150, maxDamage = -250, range = 3, length = 5, spread = 5, effect = CONST_ME_SMOKE, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -290, range = 3, length = 5, spread = 5, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_POISONAREA, target = false }, { name = "sudden death rune", interval = 2000, chance = 15, minDamage = -70, maxDamage = -250, range = 7, target = false }, diff --git a/data-otxserver/monster/humanoids/lost_husher.lua b/data-otxserver/monster/humanoids/lost_husher.lua index 6961a18cd..d8167f971 100644 --- a/data-otxserver/monster/humanoids/lost_husher.lua +++ b/data-otxserver/monster/humanoids/lost_husher.lua @@ -102,7 +102,7 @@ monster.loot = { } monster.attacks = { - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -300, length = 6, spread = 3, effect = CONST_ME_BLACKSMOKE, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -300, length = 6, spread = 0, effect = CONST_ME_BLACKSMOKE, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -150, maxDamage = -250, radius = 5, effect = CONST_ME_BLACKSMOKE, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -200, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -250, range = 7, radius = 2, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_MAGIC_GREEN, target = true }, diff --git a/data-otxserver/monster/humanoids/minotaur_amazon.lua b/data-otxserver/monster/humanoids/minotaur_amazon.lua index 2eb804316..7139b2bc7 100644 --- a/data-otxserver/monster/humanoids/minotaur_amazon.lua +++ b/data-otxserver/monster/humanoids/minotaur_amazon.lua @@ -104,11 +104,11 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 50 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -305, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -305, length = 8, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 16, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -150, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 22, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -150, range = 7, shootEffect = CONST_ANI_HUNTINGSPEAR, effect = CONST_ME_EXPLOSIONAREA, target = false }, -- bleed - { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 40, minDamage = -300, maxDamage = -400, radius = 4, shootEffect = CONST_ANI_THROWINGKNIFE, target = true }, + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 40, minDamage = -300, maxDamage = -400, radius = 4, effect = CONST_ME_DRAWBLOOD, shootEffect = CONST_ANI_THROWINGKNIFE, target = true }, { name = "minotaur amazon paralyze", interval = 2000, chance = 15, target = false }, } diff --git a/data-otxserver/monster/humanoids/mooh'tah_warrior.lua b/data-otxserver/monster/humanoids/mooh'tah_warrior.lua index ada61e262..d163ac881 100644 --- a/data-otxserver/monster/humanoids/mooh'tah_warrior.lua +++ b/data-otxserver/monster/humanoids/mooh'tah_warrior.lua @@ -99,7 +99,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 45, attack = 80 }, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -200, length = 4, spread = 3, effect = CONST_ME_YELLOWENERGY, target = false }, + { name = "combat", interval = 2000, chance = 14, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -200, length = 4, spread = 0, effect = CONST_ME_YELLOWENERGY, target = false }, { name = "combat", interval = 2000, chance = 11, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -135, range = 7, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -50, maxDamage = -150, radius = 3, effect = CONST_ME_HITAREA, target = false }, { name = "mooh'tah master skill reducer", interval = 2000, chance = 19, range = 7, target = false }, diff --git a/data-otxserver/monster/humanoids/soul-broken_harbinger.lua b/data-otxserver/monster/humanoids/soul-broken_harbinger.lua index d07eae7ff..d4d36d473 100644 --- a/data-otxserver/monster/humanoids/soul-broken_harbinger.lua +++ b/data-otxserver/monster/humanoids/soul-broken_harbinger.lua @@ -93,8 +93,10 @@ monster.loot = { } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -240 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -120, range = 7, shootEffect = CONST_ANI_ARROW, target = false }, + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, + { name = "combat", interval = 2100, chance = 40, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -300, range = 5, radius = 1, effect = CONST_ME_ICEAREA, target = true }, + { name = "combat", interval = 2600, chance = 30, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -300, length = 4, spread = 0, effect = CONST_ME_GIANTICE, target = false }, + { name = "combat", interval = 3100, chance = 20, type = COMBAT_ICEDAMAGE, minDamage = -250, maxDamage = -300, radius = 3, effect = CONST_ME_ICEAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/humanoids/twisted_shaper.lua b/data-otxserver/monster/humanoids/twisted_shaper.lua index 635402620..564d71cb0 100644 --- a/data-otxserver/monster/humanoids/twisted_shaper.lua +++ b/data-otxserver/monster/humanoids/twisted_shaper.lua @@ -98,7 +98,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = -50, maxDamage = -100, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, - { name = "combat", interval = 2000, chance = 35, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -100, length = 5, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 35, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -100, length = 5, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -100, radius = 7, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 2000, chance = 9, speedChange = -440, effect = CONST_ME_GIANTICE, target = true, duration = 7000 }, } diff --git a/data-otxserver/monster/humans/blood_priest.lua b/data-otxserver/monster/humans/blood_priest.lua index 26aec7fac..ecf8642d4 100644 --- a/data-otxserver/monster/humans/blood_priest.lua +++ b/data-otxserver/monster/humans/blood_priest.lua @@ -100,7 +100,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -80, condition = { type = CONDITION_POISON, totalDamage = 100, interval = 4000 } }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -60, maxDamage = -100, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -40, maxDamage = -60, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 3000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -130, range = 1, length = 7, spread = 3, effect = CONST_ME_HITAREA, target = true }, + { name = "combat", interval = 3000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -130, range = 1, length = 7, spread = 0, effect = CONST_ME_HITAREA, target = true }, -- bleed { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 5, minDamage = -160, maxDamage = -290, range = 1, radius = 1, target = true }, } diff --git a/data-otxserver/monster/humans/cobra_assassin.lua b/data-otxserver/monster/humans/cobra_assassin.lua index d5616e5e0..a2206a77a 100644 --- a/data-otxserver/monster/humans/cobra_assassin.lua +++ b/data-otxserver/monster/humans/cobra_assassin.lua @@ -91,8 +91,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, { name = "wave t", interval = 2000, chance = 10, minDamage = -300, maxDamage = -380, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -280, maxDamage = -400, radius = 4, effect = CONST_ME_EXPLOSIONHIT, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -400, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -500, radius = 4, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -500, length = 5, spread = 0, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/humans/cobra_vizier.lua b/data-otxserver/monster/humans/cobra_vizier.lua index c510c4f43..c6052ab78 100644 --- a/data-otxserver/monster/humans/cobra_vizier.lua +++ b/data-otxserver/monster/humans/cobra_vizier.lua @@ -99,6 +99,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -480 }, { name = "explosion wave", interval = 2000, chance = 15, minDamage = -280, maxDamage = -400, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -350, maxDamage = -520, radius = 4, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_GREEN_RINGS, target = true }, + { name = "death chain", interval = 4000, chance = 30, minDamage = -550, maxDamage = -800, range = 3, target = true }, } monster.defenses = { diff --git a/data-otxserver/monster/humans/infernalist.lua b/data-otxserver/monster/humans/infernalist.lua index d662f5fa2..7a7931e86 100644 --- a/data-otxserver/monster/humans/infernalist.lua +++ b/data-otxserver/monster/humans/infernalist.lua @@ -110,7 +110,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -90, maxDamage = -180, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -53, maxDamage = -120, range = 7, radius = 3, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_TELEPORT, target = true }, { name = "firefield", interval = 2000, chance = 15, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -250, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -250, length = 8, spread = 0, effect = CONST_ME_FIREATTACK, target = false }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -150, radius = 2, effect = CONST_ME_EXPLOSIONAREA, target = false }, } diff --git a/data-otxserver/monster/humans/vile_grandmaster.lua b/data-otxserver/monster/humans/vile_grandmaster.lua index f04f5361b..8fe458410 100644 --- a/data-otxserver/monster/humans/vile_grandmaster.lua +++ b/data-otxserver/monster/humans/vile_grandmaster.lua @@ -108,7 +108,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 10, maxDamage = -260 }, -- bleed - { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -150, maxDamage = -225, radius = 4, shootEffect = CONST_ANI_THROWINGKNIFE, target = true }, + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -150, maxDamage = -225, radius = 4, shootEffect = CONST_ANI_THROWINGKNIFE, effect = CONST_ME_DRAWBLOOD, target = true }, } monster.defenses = { diff --git a/data-otxserver/monster/humans/warlock.lua b/data-otxserver/monster/humans/warlock.lua index 6e0918429..027399c07 100644 --- a/data-otxserver/monster/humans/warlock.lua +++ b/data-otxserver/monster/humans/warlock.lua @@ -118,7 +118,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -120, range = 7, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -50, maxDamage = -180, range = 7, radius = 3, shootEffect = CONST_ANI_BURSTARROW, effect = CONST_ME_FIREAREA, target = true }, { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 2, shootEffect = CONST_ANI_FIRE, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -230, length = 8, spread = 3, effect = CONST_ME_BIGCLOUDS, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -230, length = 8, spread = 0, effect = CONST_ME_BIGCLOUDS, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, } diff --git a/data-otxserver/monster/lycanthropes/werebadger.lua b/data-otxserver/monster/lycanthropes/werebadger.lua index 1f8243b95..3ae7a6b8c 100644 --- a/data-otxserver/monster/lycanthropes/werebadger.lua +++ b/data-otxserver/monster/lycanthropes/werebadger.lua @@ -101,7 +101,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 60, condition = { type = CONDITION_POISON, totalDamage = 140, interval = 4000 } }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -21, maxDamage = -150, range = 7, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_CARNIPHILA, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -10, maxDamage = -100, length = 8, spread = 3, effect = CONST_ME_CARNIPHILA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -10, maxDamage = -100, length = 8, spread = 0, effect = CONST_ME_CARNIPHILA, target = false }, { name = "speed", interval = 4000, chance = 20, radius = 7, effect = CONST_ME_POFF, target = true }, } diff --git a/data-otxserver/monster/lycanthropes/werefox.lua b/data-otxserver/monster/lycanthropes/werefox.lua index 81905188e..5a6f1f256 100644 --- a/data-otxserver/monster/lycanthropes/werefox.lua +++ b/data-otxserver/monster/lycanthropes/werefox.lua @@ -107,7 +107,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -290 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -200, shootEffect = CONST_ANI_GREENSTAR, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -225, range = 7, radius = 4, effect = CONST_ME_MAGIC_RED, target = true }, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -100, maxDamage = -700, length = 5, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -100, maxDamage = -700, length = 5, spread = 0, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/lycanthropes/werelioness.lua b/data-otxserver/monster/lycanthropes/werelioness.lua index 302ecc81a..d7cf7fac4 100644 --- a/data-otxserver/monster/lycanthropes/werelioness.lua +++ b/data-otxserver/monster/lycanthropes/werelioness.lua @@ -96,7 +96,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -300, maxDamage = -410, range = 3, effect = CONST_ME_HOLYAREA, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -170, maxDamage = -350, range = 3, shootEffect = CONST_ANI_HOLY, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -300, length = 4, spread = 1, effect = CONST_ME_FIREAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -300, length = 4, spread = 0, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/magicals/burning_book.lua b/data-otxserver/monster/magicals/burning_book.lua index ce7ceac08..f12bbab7a 100644 --- a/data-otxserver/monster/magicals/burning_book.lua +++ b/data-otxserver/monster/magicals/burning_book.lua @@ -94,7 +94,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -200, maxDamage = -700 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -780, range = 7, shootEffect = CONST_ANI_FLAMMINGARROW, effect = CONST_ME_HITBYFIRE, target = false }, { name = "combat", interval = 1500, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = -500, maxDamage = -900, radius = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -850, length = 5, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -850, length = 5, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -400, maxDamage = -775, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, } diff --git a/data-otxserver/monster/magicals/choking_fear.lua b/data-otxserver/monster/magicals/choking_fear.lua index 4cfa9bb0b..16361bab0 100644 --- a/data-otxserver/monster/magicals/choking_fear.lua +++ b/data-otxserver/monster/magicals/choking_fear.lua @@ -107,7 +107,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -499, condition = { type = CONDITION_POISON, totalDamage = 600, interval = 4000 } }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -700, maxDamage = -900, length = 5, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -700, maxDamage = -900, length = 5, spread = 0, effect = CONST_ME_HITBYPOISON, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_SLEEP, target = true }, { name = "speed", interval = 2000, chance = 20, speedChange = -800, radius = 1, shootEffect = CONST_ANI_EXPLOSION, effect = CONST_ME_SLEEP, target = true, duration = 15000 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -130, maxDamage = -300, radius = 4, effect = CONST_ME_SOUND_RED, target = false }, diff --git a/data-otxserver/monster/magicals/crypt_warden.lua b/data-otxserver/monster/magicals/crypt_warden.lua index 1b5fd2a9a..e5a2db7ec 100644 --- a/data-otxserver/monster/magicals/crypt_warden.lua +++ b/data-otxserver/monster/magicals/crypt_warden.lua @@ -95,7 +95,7 @@ monster.attacks = { { name = "warden x", interval = 2000, chance = 15, minDamage = -250, maxDamage = -430, target = false }, { name = "warden ring", interval = 2000, chance = 8, minDamage = -250, maxDamage = -380, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -480, radius = 2, effect = CONST_ME_GROUNDSHAKER, target = false }, - { name = "combat", interval = 2000, chance = 13, type = COMBAT_HOLYDAMAGE, minDamage = -300, maxDamage = -450, length = 5, spread = 3, effect = CONST_ME_HOLYAREA, target = false }, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_HOLYDAMAGE, minDamage = -300, maxDamage = -450, length = 5, spread = 0, effect = CONST_ME_HOLYAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/magicals/cursed_book.lua b/data-otxserver/monster/magicals/cursed_book.lua index 3066f09a9..329a841b7 100644 --- a/data-otxserver/monster/magicals/cursed_book.lua +++ b/data-otxserver/monster/magicals/cursed_book.lua @@ -95,7 +95,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -400, maxDamage = -680, range = 7, shootEffect = CONST_ANI_EARTHARROW, target = false }, - { name = "combat", interval = 1000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -575, length = 5, spread = 3, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 1000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -575, length = 5, spread = 0, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 1000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = -230, maxDamage = -880, range = 7, radius = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, } diff --git a/data-otxserver/monster/magicals/energetic_book.lua b/data-otxserver/monster/magicals/energetic_book.lua index 1412e998b..70270f968 100644 --- a/data-otxserver/monster/magicals/energetic_book.lua +++ b/data-otxserver/monster/magicals/energetic_book.lua @@ -96,7 +96,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -680, range = 7, shootEffect = CONST_ANI_ENERGY, target = false }, { name = "combat", interval = 2000, chance = 40, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -505, radius = 3, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "combat", interval = 1500, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -700, length = 8, spread = 3, effect = CONST_ME_STUN, target = false }, + { name = "combat", interval = 1500, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -700, length = 8, spread = 0, effect = CONST_ME_STUN, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/magicals/feral_sphinx.lua b/data-otxserver/monster/magicals/feral_sphinx.lua index bbcafcf1d..481057d56 100644 --- a/data-otxserver/monster/magicals/feral_sphinx.lua +++ b/data-otxserver/monster/magicals/feral_sphinx.lua @@ -89,10 +89,10 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, - { name = "fire wave", interval = 2000, chance = 15, minDamage = -350, maxDamage = -500, length = 1, spread = 0, target = true }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -500, radius = 4, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -550, range = 1, shootEffect = CONST_ANI_FIRE, target = false }, - { name = "combat", interval = 2000, chance = 8, type = COMBAT_HOLYDAMAGE, minDamage = -400, maxDamage = -580, length = 6, spread = 3, effect = CONST_ME_HOLYAREA, target = false }, + { name = "fire wave", interval = 2000, chance = 15, minDamage = -350, maxDamage = -500, length = 1, spread = 1, effect = CONST_ME_FIREAREA, target = true }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -500, radius = 4, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -550, range = 1, shootEffect = CONST_ANI_FIRE, target = false }, + { name = "combat", interval = 2000, chance = 18, type = COMBAT_HOLYDAMAGE, minDamage = -400, maxDamage = -580, length = 6, spread = 3, effect = CONST_ME_HOLYAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/magicals/feversleep.lua b/data-otxserver/monster/magicals/feversleep.lua index c99daf923..dae681d08 100644 --- a/data-otxserver/monster/magicals/feversleep.lua +++ b/data-otxserver/monster/magicals/feversleep.lua @@ -97,7 +97,7 @@ monster.attacks = { { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 20, minDamage = -800, maxDamage = -1000, radius = 7, effect = CONST_ME_YELLOW_RINGS, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -70, maxDamage = -100, radius = 5, effect = CONST_ME_MAGIC_RED, target = false }, { name = "feversleep skill reducer", interval = 2000, chance = 10, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -250, maxDamage = -300, length = 6, spread = 3, effect = CONST_ME_YELLOWENERGY, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -250, maxDamage = -300, length = 6, spread = 0, effect = CONST_ME_YELLOWENERGY, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -300, radius = 1, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, } diff --git a/data-otxserver/monster/magicals/frazzlemaw.lua b/data-otxserver/monster/magicals/frazzlemaw.lua index 32a053b1d..09df1f130 100644 --- a/data-otxserver/monster/magicals/frazzlemaw.lua +++ b/data-otxserver/monster/magicals/frazzlemaw.lua @@ -118,8 +118,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, -- bleed - { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 10, minDamage = -300, maxDamage = -400, radius = 3, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -700, length = 5, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 10, minDamage = -300, maxDamage = -400, radius = 3, effect = CONST_ME_DRAWBLOOD, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -700, length = 5, spread = 0, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -400, radius = 2, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_STONES, target = true }, { name = "speed", interval = 2000, chance = 15, speedChange = -600, radius = 5, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -150, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, diff --git a/data-otxserver/monster/magicals/guardian_of_tales.lua b/data-otxserver/monster/magicals/guardian_of_tales.lua index e34153ea7..01ee4a297 100644 --- a/data-otxserver/monster/magicals/guardian_of_tales.lua +++ b/data-otxserver/monster/magicals/guardian_of_tales.lua @@ -92,7 +92,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -200, maxDamage = -550 }, { name = "combat", interval = 2000, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -605, radius = 3, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -375, maxDamage = -500, length = 5, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -375, maxDamage = -500, length = 5, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -400, maxDamage = -775, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, } diff --git a/data-otxserver/monster/magicals/guzzlemaw.lua b/data-otxserver/monster/magicals/guzzlemaw.lua index 5f5aad15c..d402a6921 100644 --- a/data-otxserver/monster/magicals/guzzlemaw.lua +++ b/data-otxserver/monster/magicals/guzzlemaw.lua @@ -110,11 +110,11 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -499 }, -- bleed - { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 10, minDamage = -500, maxDamage = -1000, radius = 3, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -900, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 10, minDamage = -500, maxDamage = -1000, radius = 3, effect = CONST_ME_DRAWBLOOD, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -900, length = 8, spread = 0, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, radius = 2, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_STONES, target = true }, { name = "speed", interval = 2000, chance = 15, speedChange = -800, radius = 6, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -800, length = 8, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/magicals/icecold_book.lua b/data-otxserver/monster/magicals/icecold_book.lua index 789cc58b3..42c058a8a 100644 --- a/data-otxserver/monster/magicals/icecold_book.lua +++ b/data-otxserver/monster/magicals/icecold_book.lua @@ -100,7 +100,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -700, maxDamage = -850, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = false }, { name = "combat", interval = 1000, chance = 10, type = COMBAT_ICEDAMAGE, minDamage = -100, maxDamage = -380, range = 7, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -350, maxDamage = -980, length = 5, spread = 3, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -350, maxDamage = -980, length = 5, spread = 0, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEATTACK, target = false }, { name = "combat", interval = 1000, chance = 12, type = COMBAT_ICEDAMAGE, minDamage = -230, maxDamage = -880, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICETORNADO, target = false }, } diff --git a/data-otxserver/monster/magicals/manticore.lua b/data-otxserver/monster/magicals/manticore.lua index 97eba9ff1..fba35b631 100644 --- a/data-otxserver/monster/magicals/manticore.lua +++ b/data-otxserver/monster/magicals/manticore.lua @@ -75,17 +75,22 @@ monster.voices = { monster.loot = { { name = "platinum coin", chance = 100000, maxCount = 3 }, - { name = "flaming arrow", chance = 4090, maxCount = 11 }, - { name = "royal star", chance = 1120, maxCount = 4 }, - { name = "manticore tail", chance = 8550 }, - { name = "manticore ear", chance = 6690 }, - { name = "magma legs", chance = 740 }, - { name = "magma monocle", chance = 1860 }, - { name = "magma boots", chance = 370 }, - { name = "magma coat", chance = 2970 }, - { name = "wand of everblazing", chance = 1120 }, - { name = "wand of dragonbreath", chance = 740 }, - { name = "wand of draconia", chance = 370 }, + { name = "manticore tail", chance = 10250 }, + { name = "manticore ear", chance = 7390 }, + { name = "small emerald", chance = 5880 }, + { name = "green crystal fragment", chance = 5710 }, + { name = "flaming arrow", chance = 4870, maxCount = 9 }, + { name = "prismatic quartz", chance = 4370 }, + { name = "rainbow quartz", chance = 3700, maxCount = 3 }, + { name = "magma coat", chance = 3190 }, + { name = "violet gem", chance = 3030 }, + { name = "magma boots", chance = 2860 }, + { name = "magma monocle", chance = 2020 }, + { name = "wand of dragonbreath", chance = 1680 }, + { name = "wand of draconia", chance = 1180 }, + { name = "royal star", chance = 1010, maxCount = 3 }, + { name = "wand of everblazing", chance = 1010 }, + { name = "magma legs", chance = 340 }, } monster.attacks = { diff --git a/data-otxserver/monster/magicals/medusa.lua b/data-otxserver/monster/magicals/medusa.lua index a828ace46..e945b600f 100644 --- a/data-otxserver/monster/magicals/medusa.lua +++ b/data-otxserver/monster/magicals/medusa.lua @@ -99,7 +99,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450, condition = { type = CONDITION_POISON, totalDamage = 840, interval = 4000 } }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -21, maxDamage = -350, range = 7, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_CARNIPHILA, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -500, length = 8, spread = 3, effect = CONST_ME_CARNIPHILA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -500, length = 8, spread = 0, effect = CONST_ME_CARNIPHILA, target = false }, { name = "speed", interval = 2000, chance = 25, radius = 7, effect = CONST_ME_POFF, target = true }, { name = "outfit", interval = 2000, chance = 1, range = 7, target = true, duration = 3000, outfitMonster = "clay guardian" }, } diff --git a/data-otxserver/monster/magicals/menacing_carnivor.lua b/data-otxserver/monster/magicals/menacing_carnivor.lua index 91a1772c4..fa314084b 100644 --- a/data-otxserver/monster/magicals/menacing_carnivor.lua +++ b/data-otxserver/monster/magicals/menacing_carnivor.lua @@ -102,8 +102,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -300, maxDamage = -450 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -180, length = 4, spread = 3, effect = CONST_ME_SMOKE, target = false }, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -200, length = 4, spread = 3, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -180, length = 4, spread = 0, effect = CONST_ME_SMOKE, target = false }, + { name = "combat", interval = 2000, chance = 14, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -200, length = 4, spread = 0, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -150, maxDamage = -330, radius = 4, effect = CONST_ME_GROUNDSHAKER, target = false }, } diff --git a/data-otxserver/monster/magicals/rage_squid.lua b/data-otxserver/monster/magicals/rage_squid.lua index 8fcba91d5..0bbd087da 100644 --- a/data-otxserver/monster/magicals/rage_squid.lua +++ b/data-otxserver/monster/magicals/rage_squid.lua @@ -107,7 +107,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -280, range = 7, shootEffect = CONST_ANI_FLAMMINGARROW, effect = CONST_ME_HITBYFIRE, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -380, range = 7, shootEffect = CONST_ANI_FIRE, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -175, maxDamage = -200, length = 5, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -175, maxDamage = -200, length = 5, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -475, radius = 3, effect = CONST_ME_HITBYFIRE, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -475, radius = 2, effect = CONST_ME_FIREAREA, target = false }, } diff --git a/data-otxserver/monster/magicals/retching_horror.lua b/data-otxserver/monster/magicals/retching_horror.lua index 7646ddfa8..a6814343e 100644 --- a/data-otxserver/monster/magicals/retching_horror.lua +++ b/data-otxserver/monster/magicals/retching_horror.lua @@ -99,7 +99,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, - { name = "drunk", interval = 2000, chance = 10, length = 4, spread = 3, effect = CONST_ME_MAGIC_GREEN, target = true, duration = 5000 }, + { name = "drunk", interval = 2000, chance = 10, length = 4, spread = 0, effect = CONST_ME_MAGIC_GREEN, target = true, duration = 5000 }, { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 4, shootEffect = CONST_ANI_WHIRLWINDCLUB, effect = CONST_ME_STUN, target = true, duration = 15000 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -110, radius = 4, effect = CONST_ME_HITAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, radius = 1, shootEffect = CONST_ANI_SNIPERARROW, target = true }, diff --git a/data-otxserver/monster/magicals/shiversleep.lua b/data-otxserver/monster/magicals/shiversleep.lua index dbfb49428..c81c741ed 100644 --- a/data-otxserver/monster/magicals/shiversleep.lua +++ b/data-otxserver/monster/magicals/shiversleep.lua @@ -66,7 +66,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, - { name = "combat", interval = 1800, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -685, length = 7, spread = 3, effect = CONST_ME_STONES, target = false }, + { name = "combat", interval = 1800, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -685, length = 7, spread = 0, effect = CONST_ME_STONES, target = false }, { name = "combat", interval = 2000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -590, radius = 6, effect = CONST_ME_BIGPLANTS, target = false }, } diff --git a/data-otxserver/monster/magicals/shock_head.lua b/data-otxserver/monster/magicals/shock_head.lua index 8b621dd6f..22c1e3089 100644 --- a/data-otxserver/monster/magicals/shock_head.lua +++ b/data-otxserver/monster/magicals/shock_head.lua @@ -86,7 +86,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -798 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -300, length = 5, spread = 2, effect = CONST_ME_BLACKSMOKE, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -800, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false, duration = 7500 }, + { name = "speed", interval = 2000, chance = 15, speedChange = -800, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false, duration = 7500 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -350, radius = 4, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_STONES, target = true }, { name = "shock head skill reducer 1", interval = 2000, chance = 5, range = 5, target = false }, { name = "shock head skill reducer 2", interval = 2000, chance = 5, target = false }, diff --git a/data-otxserver/monster/magicals/sight_of_surrender.lua b/data-otxserver/monster/magicals/sight_of_surrender.lua index 2db33a6e8..d98c86153 100644 --- a/data-otxserver/monster/magicals/sight_of_surrender.lua +++ b/data-otxserver/monster/magicals/sight_of_surrender.lua @@ -110,7 +110,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1100 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -500, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_YELLOWENERGY, target = true }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -500, maxDamage = -800, length = 8, spread = 0, effect = CONST_ME_YELLOWENERGY, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, radius = 1, shootEffect = CONST_ANI_LARGEROCK, target = true }, } diff --git a/data-otxserver/monster/magicals/sphinx.lua b/data-otxserver/monster/magicals/sphinx.lua index f6d42943e..2ca6c8f4d 100644 --- a/data-otxserver/monster/magicals/sphinx.lua +++ b/data-otxserver/monster/magicals/sphinx.lua @@ -91,9 +91,9 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -500, length = 6, spread = 3, effect = CONST_ME_FIREAREA, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_HOLYDAMAGE, minDamage = -100, maxDamage = -350, range = 5, radius = 3, shootEffect = CONST_ANI_SMALLHOLY, effect = CONST_ME_HOLYAREA, target = true }, - { name = "combat", interval = 2000, chance = 18, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -400, radius = 3, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -500, length = 6, spread = 0, effect = CONST_ME_FIREAREA, target = false }, + { name = "combat", interval = 2000, chance = 35, type = COMBAT_HOLYDAMAGE, minDamage = -100, maxDamage = -350, range = 5, radius = 3, shootEffect = CONST_ANI_SMALLHOLY, effect = CONST_ME_HOLYAREA, target = true }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -400, radius = 3, effect = CONST_ME_ENERGYAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/magicals/terrorsleep.lua b/data-otxserver/monster/magicals/terrorsleep.lua index f4bca2b03..531081d1c 100644 --- a/data-otxserver/monster/magicals/terrorsleep.lua +++ b/data-otxserver/monster/magicals/terrorsleep.lua @@ -106,7 +106,7 @@ monster.attacks = { { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 20, minDamage = -1000, maxDamage = -1500, radius = 7, effect = CONST_ME_YELLOW_RINGS, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -100, maxDamage = -300, radius = 5, effect = CONST_ME_MAGIC_RED, target = false }, { name = "feversleep skill reducer", interval = 2000, chance = 10, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -350, maxDamage = -500, length = 6, spread = 3, effect = CONST_ME_YELLOWENERGY, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -350, maxDamage = -500, length = 6, spread = 0, effect = CONST_ME_YELLOWENERGY, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -450, radius = 1, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, } diff --git a/data-otxserver/monster/magicals/thanatursus.lua b/data-otxserver/monster/magicals/thanatursus.lua index cda3e1ed7..eb4217bc4 100644 --- a/data-otxserver/monster/magicals/thanatursus.lua +++ b/data-otxserver/monster/magicals/thanatursus.lua @@ -103,7 +103,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -200, maxDamage = -450 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_HOLYDAMAGE, minDamage = -250, maxDamage = -400, radius = 3, effect = CONST_ME_HOLYAREA, target = true }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -280, maxDamage = -450, length = 4, spread = 3, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -280, maxDamage = -450, length = 4, spread = 0, effect = CONST_ME_ENERGYAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -400, radius = 6, effect = CONST_ME_BLOCKHIT, target = true }, } diff --git a/data-otxserver/monster/magicals/venerable_girtablilu.lua b/data-otxserver/monster/magicals/venerable_girtablilu.lua index 558aaffee..00da4d932 100644 --- a/data-otxserver/monster/magicals/venerable_girtablilu.lua +++ b/data-otxserver/monster/magicals/venerable_girtablilu.lua @@ -103,7 +103,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -550, effect = CONST_ME_DRAWBLOOD }, { name = "combat", interval = 2750, chance = 30, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -500, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -400, length = 4, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -400, length = 4, spread = 0, effect = CONST_ME_HITBYPOISON, target = false }, { name = "combat", interval = 2000, chance = 40, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -400, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, { name = "girtablilu poison wave", interval = 2000, chance = 30, minDamage = -200, maxDamage = -400 }, } diff --git a/data-otxserver/monster/magicals/weakened_frazzlemaw.lua b/data-otxserver/monster/magicals/weakened_frazzlemaw.lua index d7e8eba09..b496e0173 100644 --- a/data-otxserver/monster/magicals/weakened_frazzlemaw.lua +++ b/data-otxserver/monster/magicals/weakened_frazzlemaw.lua @@ -107,8 +107,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 80 }, -- bleed - { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 10, minDamage = -80, maxDamage = -200, radius = 3, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, length = 5, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 10, minDamage = -80, maxDamage = -200, radius = 3, effect = CONST_ME_DRAWBLOOD, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -200, length = 5, spread = 0, effect = CONST_ME_EXPLOSIONAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, radius = 2, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_STONES, target = true }, { name = "speed", interval = 2000, chance = 15, speedChange = -600, radius = 5, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -50, radius = 4, effect = CONST_ME_MAGIC_RED, target = false }, diff --git a/data-otxserver/monster/mammals/doom_deer.lua b/data-otxserver/monster/mammals/doom_deer.lua index 02dfda0bc..126f18cda 100644 --- a/data-otxserver/monster/mammals/doom_deer.lua +++ b/data-otxserver/monster/mammals/doom_deer.lua @@ -79,7 +79,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100 }, - { name = "combat", interval = 4000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -35, maxDamage = -55, length = 5, spread = 3, effect = CONST_ME_BIGCLOUDS, target = false }, + { name = "combat", interval = 4000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -35, maxDamage = -55, length = 5, spread = 0, effect = CONST_ME_BIGCLOUDS, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/mammals/vulcongra.lua b/data-otxserver/monster/mammals/vulcongra.lua index 04218b3e4..3c728dd8d 100644 --- a/data-otxserver/monster/mammals/vulcongra.lua +++ b/data-otxserver/monster/mammals/vulcongra.lua @@ -100,7 +100,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -235 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -195, maxDamage = -340, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -195, maxDamage = -340, length = 8, spread = 0, effect = CONST_ME_EXPLOSIONHIT, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -200, range = 7, shootEffect = CONST_ANI_FIRE, target = true }, { name = "vulcongra soulfire", interval = 3000, chance = 100, target = false }, } diff --git a/data-otxserver/monster/mammals/yeti.lua b/data-otxserver/monster/mammals/yeti.lua index 33447765d..7ef601194 100644 --- a/data-otxserver/monster/mammals/yeti.lua +++ b/data-otxserver/monster/mammals/yeti.lua @@ -87,7 +87,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/plants/haunted_treeling.lua b/data-otxserver/monster/plants/haunted_treeling.lua index 15bf394b1..c8b13f615 100644 --- a/data-otxserver/monster/plants/haunted_treeling.lua +++ b/data-otxserver/monster/plants/haunted_treeling.lua @@ -96,7 +96,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_MANADRAIN, minDamage = -30, maxDamage = -100, radius = 4, effect = CONST_ME_GREEN_RINGS, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -700, length = 5, spread = 3, effect = CONST_ME_SMALLPLANTS, target = false, duration = 15000 }, + { name = "speed", interval = 2000, chance = 15, speedChange = -700, length = 5, spread = 0, effect = CONST_ME_SMALLPLANTS, target = false, duration = 15000 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, radius = 1, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_CARNIPHILA, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -55, maxDamage = -100, radius = 4, effect = CONST_ME_HITBYPOISON, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, radius = 1, effect = CONST_ME_POISONAREA, target = false }, diff --git a/data-otxserver/monster/plants/hideous_fungus.lua b/data-otxserver/monster/plants/hideous_fungus.lua index a4938bcf7..a80ba080f 100644 --- a/data-otxserver/monster/plants/hideous_fungus.lua +++ b/data-otxserver/monster/plants/hideous_fungus.lua @@ -109,7 +109,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -430, range = 7, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_SMALLPLANTS, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -250, maxDamage = -550, length = 8, spread = 3, shootEffect = CONST_ANI_SNOWBALL, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ICEDAMAGE, minDamage = -250, maxDamage = -550, length = 8, spread = 0, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_ICEAREA, target = false }, { name = "speed", interval = 2000, chance = 10, speedChange = -600, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 60000 }, { name = "drunk", interval = 2000, chance = 10, range = 7, radius = 5, shootEffect = CONST_ANI_SMALLSTONE, effect = CONST_ME_STUN, target = true, duration = 4000 }, -- poison diff --git a/data-otxserver/monster/plants/humongous_fungus.lua b/data-otxserver/monster/plants/humongous_fungus.lua index e80d2c162..942684e73 100644 --- a/data-otxserver/monster/plants/humongous_fungus.lua +++ b/data-otxserver/monster/plants/humongous_fungus.lua @@ -106,8 +106,8 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -180, maxDamage = -350, range = 7, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_SMALLPLANTS, target = false }, { name = "poisonfield", interval = 2000, chance = 20, radius = 4, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -500, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_GREEN_RINGS, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -130, maxDamage = -260, length = 5, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -500, maxDamage = -1000, length = 8, spread = 0, effect = CONST_ME_GREEN_RINGS, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -130, maxDamage = -260, length = 5, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -400, maxDamage = -640, range = 7, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, } diff --git a/data-otxserver/monster/plants/omnivora.lua b/data-otxserver/monster/plants/omnivora.lua index 7bd18d7d9..0136d014a 100644 --- a/data-otxserver/monster/plants/omnivora.lua +++ b/data-otxserver/monster/plants/omnivora.lua @@ -96,7 +96,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, { name = "speed", interval = 4000, chance = 20, speedChange = -350, range = 7, shootEffect = CONST_ANI_POISON, target = true, duration = 12000 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -80, maxDamage = -100, range = 7, shootEffect = CONST_ANI_POISON, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -100, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -100, length = 8, spread = 0, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/ancient_feud/yirkas_blue_scales.lua b/data-otxserver/monster/quests/ancient_feud/yirkas_blue_scales.lua index 588610e04..e469fa369 100644 --- a/data-otxserver/monster/quests/ancient_feud/yirkas_blue_scales.lua +++ b/data-otxserver/monster/quests/ancient_feud/yirkas_blue_scales.lua @@ -96,7 +96,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -100, condition = { type = CONDITION_POISON, totalDamage = 15, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -400, maxDamage = -500, length = 3, spread = 1, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -400, maxDamage = -500, length = 3, spread = 0, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -350, range = 3, radius = 3, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -500, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = true }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -300, radius = 4, effect = CONST_ME_ENERGYAREA, target = false }, diff --git a/data-otxserver/monster/quests/ancient_tombs/horestis.lua b/data-otxserver/monster/quests/ancient_tombs/horestis.lua index 10a677505..1fb41b7b2 100644 --- a/data-otxserver/monster/quests/ancient_tombs/horestis.lua +++ b/data-otxserver/monster/quests/ancient_tombs/horestis.lua @@ -98,7 +98,7 @@ monster.attacks = { { name = "drunk", interval = 3000, chance = 11, radius = 6, effect = CONST_ME_POISONAREA, target = false, duration = 25000 }, { name = "speed", interval = 1000, chance = 25, speedChange = -350, length = 7, spread = 3, effect = CONST_ME_POISONAREA, target = false, duration = 30000 }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 30, minDamage = -35, maxDamage = -35, radius = 5, target = false }, + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 30, minDamage = -35, maxDamage = -35, radius = 5, effect = CONST_ME_HITBYPOISON, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/annihilator/angry_demon.lua b/data-otxserver/monster/quests/annihilator/angry_demon.lua index 3d9d9a4fe..043bd12af 100644 --- a/data-otxserver/monster/quests/annihilator/angry_demon.lua +++ b/data-otxserver/monster/quests/annihilator/angry_demon.lua @@ -108,12 +108,19 @@ monster.loot = { } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -520 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -120, range = 7, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -250, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, + -- {name ="melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -520}, + -- {name ="combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -120, range = 7, target = false}, + -- {name ="combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -250, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true}, + -- {name ="firefield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true}, + -- {name ="combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -490, length = 8,spread = 03, effect = CONST_ME_PURPLEENERGY, target = false}, + -- {name ="combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -210, maxDamage = -300, range = 1, shootEffect = CONST_ANI_ENERGY, target = false}, + -- {name ="speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000} + { name = "melee", interval = 2000, chance = 500, minDamage = 0, maxDamage = -1940 }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -150, range = 7, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -650, maxDamage = -900, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "firefield", interval = 2000, chance = 10, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -490, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -210, maxDamage = -300, range = 1, shootEffect = CONST_ANI_ENERGY, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -800, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -1050, maxDamage = -1500, range = 1, shootEffect = CONST_ANI_ENERGY, target = true }, { name = "speed", interval = 2000, chance = 15, speedChange = -700, radius = 1, effect = CONST_ME_MAGIC_RED, target = true, duration = 30000 }, } diff --git a/data-otxserver/monster/quests/bigfoots_burden/minion_of_versperoth.lua b/data-otxserver/monster/quests/bigfoots_burden/minion_of_versperoth.lua index 380939429..bc1cb2539 100644 --- a/data-otxserver/monster/quests/bigfoots_burden/minion_of_versperoth.lua +++ b/data-otxserver/monster/quests/bigfoots_burden/minion_of_versperoth.lua @@ -65,8 +65,8 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -390 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -700, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -600, maxDamage = -1300, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -700, length = 8, spread = 0, effect = CONST_ME_FIREATTACK, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -600, maxDamage = -1300, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = false }, { name = "lava golem soulfire", interval = 2000, chance = 15, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -220, maxDamage = -350, radius = 4, effect = CONST_ME_FIREAREA, target = true }, { name = "speed", interval = 2000, chance = 10, speedChange = -300, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false, duration = 10000 }, diff --git a/data-otxserver/monster/quests/cults_of_tibia/animated_guzzlemaw.lua b/data-otxserver/monster/quests/cults_of_tibia/animated_guzzlemaw.lua index 66088ce9f..009f8a832 100644 --- a/data-otxserver/monster/quests/cults_of_tibia/animated_guzzlemaw.lua +++ b/data-otxserver/monster/quests/cults_of_tibia/animated_guzzlemaw.lua @@ -96,11 +96,11 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -499 }, -- bleed - { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 10, minDamage = -500, maxDamage = -1000, radius = 3, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -900, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = true }, + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 10, minDamage = -500, maxDamage = -1000, radius = 3, effect = CONST_ME_DRAWBLOOD, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -900, length = 8, spread = 0, effect = CONST_ME_EXPLOSIONAREA, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, radius = 2, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_STONES, target = true }, { name = "speed", interval = 2000, chance = 15, speedChange = -800, radius = 6, effect = CONST_ME_MAGIC_RED, target = false, duration = 15000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -800, length = 8, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/cults_of_tibia/bosses/eliz_the_unyielding.lua b/data-otxserver/monster/quests/cults_of_tibia/bosses/eliz_the_unyielding.lua index 41c7815e7..27e60f956 100644 --- a/data-otxserver/monster/quests/cults_of_tibia/bosses/eliz_the_unyielding.lua +++ b/data-otxserver/monster/quests/cults_of_tibia/bosses/eliz_the_unyielding.lua @@ -76,7 +76,7 @@ monster.defenses = { defense = 50, armor = 35, -- mitigation = ???, - { name = "cults of tibia armor buff", interval = 2000, chance = 40, radius = 8, target = false }, + { name = "cults of tibia armor buff", interval = 2000, chance = 40, radius = 8, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { diff --git a/data-otxserver/monster/quests/cults_of_tibia/bosses/eliz_the_unyielding_stop.lua b/data-otxserver/monster/quests/cults_of_tibia/bosses/eliz_the_unyielding_stop.lua index d740224c4..68fbd7431 100644 --- a/data-otxserver/monster/quests/cults_of_tibia/bosses/eliz_the_unyielding_stop.lua +++ b/data-otxserver/monster/quests/cults_of_tibia/bosses/eliz_the_unyielding_stop.lua @@ -72,7 +72,7 @@ monster.attacks = { monster.defenses = { defense = 50, armor = 35, - { name = "cults of tibia armor buff", interval = 2000, chance = 40, radius = 9, target = false }, + { name = "cults of tibia armor buff", interval = 2000, chance = 40, radius = 9, effect = CONST_ME_MAGIC_GREEN, target = false }, } monster.elements = { diff --git a/data-otxserver/monster/quests/cults_of_tibia/bosses/essence_of_malice.lua b/data-otxserver/monster/quests/cults_of_tibia/bosses/essence_of_malice.lua index ef4913137..26aceb320 100644 --- a/data-otxserver/monster/quests/cults_of_tibia/bosses/essence_of_malice.lua +++ b/data-otxserver/monster/quests/cults_of_tibia/bosses/essence_of_malice.lua @@ -99,7 +99,7 @@ monster.attacks = { -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -520, maxDamage = -780, range = 5, effect = CONST_ME_SMALLCLOUDS, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -80, maxDamage = -230, range = 7, effect = CONST_ME_MAGIC_RED, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -120, maxDamage = -250, length = 8, spread = 3, effect = CONST_ME_LOSEENERGY, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -120, maxDamage = -250, length = 8, spread = 0, effect = CONST_ME_LOSEENERGY, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -110, maxDamage = -180, radius = 4, effect = CONST_ME_MORTAREA, target = false }, { name = "speed", interval = 2000, chance = 20, speedChange = -800, range = 7, effect = CONST_ME_SMALLCLOUDS, target = true, duration = 30000 }, } diff --git a/data-otxserver/monster/quests/cults_of_tibia/bosses/the_armored_voidborn.lua b/data-otxserver/monster/quests/cults_of_tibia/bosses/the_armored_voidborn.lua index d9996962a..ca74cf1da 100644 --- a/data-otxserver/monster/quests/cults_of_tibia/bosses/the_armored_voidborn.lua +++ b/data-otxserver/monster/quests/cults_of_tibia/bosses/the_armored_voidborn.lua @@ -73,7 +73,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -550 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -400, length = 7, spread = 5, effect = CONST_ME_SMALLCLOUDS, target = false }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -440, radius = 5, target = false }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -440, radius = 5, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/cults_of_tibia/bosses/the_corruptor_of_souls.lua b/data-otxserver/monster/quests/cults_of_tibia/bosses/the_corruptor_of_souls.lua index adc1b89d3..97191072a 100644 --- a/data-otxserver/monster/quests/cults_of_tibia/bosses/the_corruptor_of_souls.lua +++ b/data-otxserver/monster/quests/cults_of_tibia/bosses/the_corruptor_of_souls.lua @@ -73,8 +73,8 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -500, length = 9, spread = 7, effect = CONST_ME_SMALLCLOUDS, target = false }, { name = "remorseless wave", interval = 2000, chance = 25, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, radius = 7, effect = CONST_ME_HITAREA, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, length = 9, spread = 3, effect = CONST_ME_STUN, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -500, length = 9, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, length = 9, spread = 0, effect = CONST_ME_STUN, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -500, length = 9, spread = 0, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/cults_of_tibia/bosses/the_remorseless_corruptor.lua b/data-otxserver/monster/quests/cults_of_tibia/bosses/the_remorseless_corruptor.lua index ed10d5467..76087b32c 100644 --- a/data-otxserver/monster/quests/cults_of_tibia/bosses/the_remorseless_corruptor.lua +++ b/data-otxserver/monster/quests/cults_of_tibia/bosses/the_remorseless_corruptor.lua @@ -66,11 +66,11 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -150, maxDamage = -500 }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -500, length = 9, spread = 3, effect = CONST_ME_LOSEENERGY, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -500, length = 9, spread = 0, effect = CONST_ME_LOSEENERGY, target = false }, { name = "remorseless wave", interval = 2000, chance = 25, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, radius = 7, effect = CONST_ME_HITAREA, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, length = 9, spread = 3, effect = CONST_ME_STUN, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -500, length = 9, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -500, length = 9, spread = 0, effect = CONST_ME_STUN, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -500, length = 9, spread = 0, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/cults_of_tibia/bosses/the_souldespoiler.lua b/data-otxserver/monster/quests/cults_of_tibia/bosses/the_souldespoiler.lua index 35878eae9..976fe5fe3 100644 --- a/data-otxserver/monster/quests/cults_of_tibia/bosses/the_souldespoiler.lua +++ b/data-otxserver/monster/quests/cults_of_tibia/bosses/the_souldespoiler.lua @@ -125,7 +125,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -783 }, { name = "combat", interval = 2000, chance = 60, type = COMBAT_DEATHDAMAGE, minDamage = -30, maxDamage = -181, range = 7, radius = 3, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, { name = "combat", interval = 2000, chance = 50, type = COMBAT_ENERGYDAMAGE, minDamage = -210, maxDamage = -538, length = 7, spread = 2, effect = CONST_ME_PURPLEENERGY, target = false }, - { name = "combat", interval = 3000, chance = 30, type = COMBAT_DROWNDAMAGE, minDamage = -125, maxDamage = -640, length = 9, spread = 3, effect = CONST_ME_LOSEENERGY, target = false }, + { name = "combat", interval = 3000, chance = 30, type = COMBAT_DROWNDAMAGE, minDamage = -125, maxDamage = -640, length = 9, spread = 0, effect = CONST_ME_LOSEENERGY, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/cults_of_tibia/bosses/the_unarmored_voidborn.lua b/data-otxserver/monster/quests/cults_of_tibia/bosses/the_unarmored_voidborn.lua index 0dbf6743e..04df78685 100644 --- a/data-otxserver/monster/quests/cults_of_tibia/bosses/the_unarmored_voidborn.lua +++ b/data-otxserver/monster/quests/cults_of_tibia/bosses/the_unarmored_voidborn.lua @@ -107,7 +107,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -550 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -400, length = 7, spread = 5, effect = CONST_ME_SMALLCLOUDS, target = false }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -440, radius = 5, target = false }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -440, radius = 5, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/cults_of_tibia/goldhanded_cultist.lua b/data-otxserver/monster/quests/cults_of_tibia/goldhanded_cultist.lua index 285d72caa..428924ad1 100644 --- a/data-otxserver/monster/quests/cults_of_tibia/goldhanded_cultist.lua +++ b/data-otxserver/monster/quests/cults_of_tibia/goldhanded_cultist.lua @@ -91,9 +91,9 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -250 }, - { name = "combat", interval = 3000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -150, radius = 5, target = false }, + { name = "combat", interval = 3000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -150, radius = 5, effect = CONST_ME_DRAWBLOOD, target = false }, { name = "combat", interval = 3000, chance = 10, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -200, effect = CONST_ME_LOSEENERGY, target = true }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -250, range = 5, radius = 2, target = true }, + { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -250, range = 5, radius = 2, effect = CONST_ME_DRAWBLOOD, target = true }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/dangerous_depth/aggressive_matter.lua b/data-otxserver/monster/quests/dangerous_depth/aggressive_matter.lua index 2ac350a7e..8d97c0d01 100644 --- a/data-otxserver/monster/quests/dangerous_depth/aggressive_matter.lua +++ b/data-otxserver/monster/quests/dangerous_depth/aggressive_matter.lua @@ -67,7 +67,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 58, attack = 50, condition = { type = CONDITION_POISON, totalDamage = 280, interval = 4000 } }, { name = "combat", interval = 2000, chance = 13, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -250, range = 7, radius = 3, shootEffect = CONST_ANI_GLOOTHSPEAR, effect = CONST_ME_POISONAREA, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -230, length = 6, spread = 3, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -230, length = 6, spread = 0, effect = CONST_ME_POISONAREA, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -200, maxDamage = -300, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, { name = "rot elemental paralyze", interval = 2000, chance = 11, target = false }, diff --git a/data-otxserver/monster/quests/dangerous_depth/bosses/ancient_spawn_of_morgathla.lua b/data-otxserver/monster/quests/dangerous_depth/bosses/ancient_spawn_of_morgathla.lua index 5d5053178..07b4e4381 100644 --- a/data-otxserver/monster/quests/dangerous_depth/bosses/ancient_spawn_of_morgathla.lua +++ b/data-otxserver/monster/quests/dangerous_depth/bosses/ancient_spawn_of_morgathla.lua @@ -90,7 +90,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 80 }, - { name = "combat", interval = 2000, chance = 8, type = COMBAT_LIFEDRAIN, minDamage = -135, maxDamage = -280, range = 7, radius = 5, shootEffect = CONST_ANI_WHIRLWINDAXE, target = true }, + { name = "combat", interval = 2000, chance = 8, type = COMBAT_LIFEDRAIN, minDamage = -135, maxDamage = -280, range = 7, radius = 5, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_HITAREA, target = true }, { name = "combat", interval = 2000, chance = 8, type = COMBAT_PHYSICALDAMAGE, minDamage = -90, maxDamage = -200, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_EXPLOSIONAREA, target = true }, } diff --git a/data-otxserver/monster/quests/dangerous_depth/bosses/the_count_of_the_core.lua b/data-otxserver/monster/quests/dangerous_depth/bosses/the_count_of_the_core.lua index 80878aaa3..d611e78d8 100644 --- a/data-otxserver/monster/quests/dangerous_depth/bosses/the_count_of_the_core.lua +++ b/data-otxserver/monster/quests/dangerous_depth/bosses/the_count_of_the_core.lua @@ -119,11 +119,11 @@ monster.loot = { } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1500 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -1500, range = 3, length = 9, spread = 3, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -1500, range = 3, length = 9, spread = 4, effect = CONST_ME_SMALLCLOUDS, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -1500, radius = 8, effect = CONST_ME_HITAREA, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -1500, radius = 8, effect = CONST_ME_BLACKSMOKE, target = false }, + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -900 }, + { name = "combat", interval = 6000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -1500, range = 3, length = 9, spread = 0, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 4000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -1500, range = 3, length = 9, spread = 4, effect = CONST_ME_SMALLCLOUDS, target = false }, + { name = "combat", interval = 4000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -1500, radius = 8, effect = CONST_ME_HITAREA, target = false }, + { name = "combat", interval = 4000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -1500, radius = 8, effect = CONST_ME_BLACKSMOKE, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/feaster_of_souls/irgix_the_flimsy.lua b/data-otxserver/monster/quests/feaster_of_souls/irgix_the_flimsy.lua index ff5de3425..307f1b273 100644 --- a/data-otxserver/monster/quests/feaster_of_souls/irgix_the_flimsy.lua +++ b/data-otxserver/monster/quests/feaster_of_souls/irgix_the_flimsy.lua @@ -82,8 +82,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -500 }, - { name = "combat", interval = 1500, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -500, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, target = true }, - { name = "combat", interval = 1500, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -650, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 1500, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -500, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 1500, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -650, length = 4, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1500, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -650, radius = 4, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 1500, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -650, radius = 4, effect = CONST_ME_ENERGYAREA, target = false }, } diff --git a/data-otxserver/monster/quests/feaster_of_souls/the_fear_feaster.lua b/data-otxserver/monster/quests/feaster_of_souls/the_fear_feaster.lua index b5f69b05e..85a644408 100644 --- a/data-otxserver/monster/quests/feaster_of_souls/the_fear_feaster.lua +++ b/data-otxserver/monster/quests/feaster_of_souls/the_fear_feaster.lua @@ -100,7 +100,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 600, maxDamage = -1050, condition = { type = CONDITION_POISON, totalDamage = 4, interval = 4000 } }, { name = "combat", interval = 2000, chance = 100, type = COMBAT_LIFEDRAIN, minDamage = -900, maxDamage = -1400, effect = CONST_ME_MAGIC_RED, target = true }, - { name = "combat", interval = 1000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -1000, maxDamage = -1750, radius = 2, shootEffect = CONST_ANI_SMALLEARTH, target = false }, + { name = "combat", interval = 1000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -1000, maxDamage = -1750, radius = 2, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_HITBYPOISON, target = false }, { name = "drunk", interval = 1000, chance = 70, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false }, { name = "strength", interval = 1000, chance = 60, range = 7, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_ENERGYAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -900, length = 5, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, diff --git a/data-otxserver/monster/quests/feaster_of_souls/the_pale_worm.lua b/data-otxserver/monster/quests/feaster_of_souls/the_pale_worm.lua index a2d99ab1f..ab309d2f5 100644 --- a/data-otxserver/monster/quests/feaster_of_souls/the_pale_worm.lua +++ b/data-otxserver/monster/quests/feaster_of_souls/the_pale_worm.lua @@ -108,7 +108,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 600, maxDamage = -1050, condition = { type = CONDITION_POISON, totalDamage = 4, interval = 4000 } }, { name = "combat", interval = 2000, chance = 100, type = COMBAT_LIFEDRAIN, minDamage = -900, maxDamage = -1400, effect = CONST_ME_MAGIC_RED, target = true }, - { name = "combat", interval = 1000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -1000, maxDamage = -1750, radius = 2, shootEffect = CONST_ANI_SMALLEARTH, target = false }, + { name = "combat", interval = 1000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -1000, maxDamage = -1750, radius = 2, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_HITBYPOISON, target = false }, { name = "drunk", interval = 1000, chance = 70, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false }, { name = "strength", interval = 1000, chance = 60, range = 7, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_ENERGYAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -900, length = 5, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, diff --git a/data-otxserver/monster/quests/feaster_of_souls/the_unwelcome.lua b/data-otxserver/monster/quests/feaster_of_souls/the_unwelcome.lua index 7c0cd0529..e4abf230b 100644 --- a/data-otxserver/monster/quests/feaster_of_souls/the_unwelcome.lua +++ b/data-otxserver/monster/quests/feaster_of_souls/the_unwelcome.lua @@ -102,7 +102,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 600, maxDamage = -1050, condition = { type = CONDITION_POISON, totalDamage = 4, interval = 4000 } }, { name = "combat", interval = 2000, chance = 100, type = COMBAT_LIFEDRAIN, minDamage = -900, maxDamage = -1400, effect = CONST_ME_MAGIC_RED, target = true }, - { name = "combat", interval = 1000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -1000, maxDamage = -1750, radius = 2, shootEffect = CONST_ANI_SMALLEARTH, target = false }, + { name = "combat", interval = 1000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -1000, maxDamage = -1750, radius = 2, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_HITBYPOISON, target = false }, { name = "drunk", interval = 1000, chance = 70, range = 7, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = false }, { name = "strength", interval = 1000, chance = 60, range = 7, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_ENERGYAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -900, length = 5, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, diff --git a/data-otxserver/monster/quests/feaster_of_souls/unaz_the_mean.lua b/data-otxserver/monster/quests/feaster_of_souls/unaz_the_mean.lua index 3788bd287..fb871252b 100644 --- a/data-otxserver/monster/quests/feaster_of_souls/unaz_the_mean.lua +++ b/data-otxserver/monster/quests/feaster_of_souls/unaz_the_mean.lua @@ -81,8 +81,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -500 }, - { name = "combat", interval = 1500, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -500, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, target = true }, - { name = "combat", interval = 1500, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -650, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 1500, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -500, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 1500, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -650, length = 4, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1500, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -650, radius = 4, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 1500, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -650, radius = 4, effect = CONST_ME_ENERGYAREA, target = false }, } diff --git a/data-otxserver/monster/quests/feaster_of_souls/vok_the_freakish.lua b/data-otxserver/monster/quests/feaster_of_souls/vok_the_freakish.lua index b6790c3f4..4efff07d2 100644 --- a/data-otxserver/monster/quests/feaster_of_souls/vok_the_freakish.lua +++ b/data-otxserver/monster/quests/feaster_of_souls/vok_the_freakish.lua @@ -79,8 +79,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -500 }, - { name = "combat", interval = 1500, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -500, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, target = true }, - { name = "combat", interval = 1500, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -650, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 1500, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -500, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 1500, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -650, length = 4, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1500, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -650, radius = 4, effect = CONST_ME_MORTAREA, target = true }, { name = "combat", interval = 1500, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -650, radius = 4, effect = CONST_ME_GREEN_RINGS, target = true }, } diff --git a/data-otxserver/monster/quests/ferumbras_ascendant/bosses/death_dragon.lua b/data-otxserver/monster/quests/ferumbras_ascendant/bosses/death_dragon.lua index 9d96b8a28..09c0bd382 100644 --- a/data-otxserver/monster/quests/ferumbras_ascendant/bosses/death_dragon.lua +++ b/data-otxserver/monster/quests/ferumbras_ascendant/bosses/death_dragon.lua @@ -96,7 +96,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 150, attack = 60 }, { name = "combat", interval = 2000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -400, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -400, range = 7, radius = 4, shootEffect = CONST_ANI_DEATH, target = true }, + { name = "combat", interval = 2000, chance = 9, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -400, range = 7, radius = 4, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true }, { name = "combat", interval = 2000, chance = 11, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -615, range = 7, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "undead dragon curse", interval = 2000, chance = 9, target = false }, { name = "combat", interval = 2000, chance = 9, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -700, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, diff --git a/data-otxserver/monster/quests/ferumbras_ascendant/bosses/destabilized_ferumbras.lua b/data-otxserver/monster/quests/ferumbras_ascendant/bosses/destabilized_ferumbras.lua index 83b60ad84..2f67c54e6 100644 --- a/data-otxserver/monster/quests/ferumbras_ascendant/bosses/destabilized_ferumbras.lua +++ b/data-otxserver/monster/quests/ferumbras_ascendant/bosses/destabilized_ferumbras.lua @@ -83,7 +83,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 16, type = COMBAT_MANADRAIN, minDamage = -225, maxDamage = -410, radius = 6, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 21, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -450, radius = 6, effect = CONST_ME_POFF, target = false }, { name = "ferumbras soulfire", interval = 2000, chance = 20, range = 7, target = false }, - { name = "combat", interval = 2000, chance = 17, type = COMBAT_LIFEDRAIN, minDamage = -590, maxDamage = -1050, length = 8, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "combat", interval = 2000, chance = 17, type = COMBAT_LIFEDRAIN, minDamage = -590, maxDamage = -1050, length = 8, spread = 0, effect = CONST_ME_HITBYPOISON, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/ferumbras_ascendant/bosses/ferumbras_mortal_shell.lua b/data-otxserver/monster/quests/ferumbras_ascendant/bosses/ferumbras_mortal_shell.lua index 271601095..ca11ccb54 100644 --- a/data-otxserver/monster/quests/ferumbras_ascendant/bosses/ferumbras_mortal_shell.lua +++ b/data-otxserver/monster/quests/ferumbras_ascendant/bosses/ferumbras_mortal_shell.lua @@ -153,7 +153,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 21, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -650, radius = 9, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 2000, chance = 21, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -450, radius = 6, effect = CONST_ME_POFF, target = false }, { name = "ferumbras soulfire", interval = 2000, chance = 20, range = 7, target = false }, - { name = "combat", interval = 2000, chance = 17, type = COMBAT_LIFEDRAIN, minDamage = -590, maxDamage = -1050, length = 8, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "combat", interval = 2000, chance = 17, type = COMBAT_LIFEDRAIN, minDamage = -590, maxDamage = -1050, length = 8, spread = 0, effect = CONST_ME_HITBYPOISON, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/ferumbras_ascendant/bosses/ferumbras_soul_splinter.lua b/data-otxserver/monster/quests/ferumbras_ascendant/bosses/ferumbras_soul_splinter.lua index 91b329140..c712c8743 100644 --- a/data-otxserver/monster/quests/ferumbras_ascendant/bosses/ferumbras_soul_splinter.lua +++ b/data-otxserver/monster/quests/ferumbras_ascendant/bosses/ferumbras_soul_splinter.lua @@ -83,7 +83,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 16, type = COMBAT_MANADRAIN, minDamage = -225, maxDamage = -410, radius = 6, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 21, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -450, radius = 6, effect = CONST_ME_POFF, target = false }, { name = "ferumbras soulfire", interval = 2000, chance = 20, range = 7, target = false }, - { name = "combat", interval = 2000, chance = 17, type = COMBAT_LIFEDRAIN, minDamage = -590, maxDamage = -1050, length = 8, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "combat", interval = 2000, chance = 17, type = COMBAT_LIFEDRAIN, minDamage = -590, maxDamage = -1050, length = 8, spread = 0, effect = CONST_ME_HITBYPOISON, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/ferumbras_ascendant/disgusting_ooze.lua b/data-otxserver/monster/quests/ferumbras_ascendant/disgusting_ooze.lua index cd72c70e9..1f3ab4fe5 100644 --- a/data-otxserver/monster/quests/ferumbras_ascendant/disgusting_ooze.lua +++ b/data-otxserver/monster/quests/ferumbras_ascendant/disgusting_ooze.lua @@ -93,7 +93,7 @@ monster.attacks = { -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -300, maxDamage = -500, radius = 8, effect = CONST_ME_HITBYPOISON, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -400, maxDamage = -725, length = 8, spread = 3, effect = CONST_ME_SMALLPLANTS, target = false }, + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -400, maxDamage = -725, length = 8, spread = 0, effect = CONST_ME_SMALLPLANTS, target = false }, { name = "combat", interval = 2000, chance = 14, type = COMBAT_EARTHDAMAGE, minDamage = -120, maxDamage = -170, radius = 3, effect = CONST_ME_POISONAREA, target = false }, } diff --git a/data-otxserver/monster/quests/ferumbras_ascendant/lovely/lovely_frazzlemaw.lua b/data-otxserver/monster/quests/ferumbras_ascendant/lovely/lovely_frazzlemaw.lua index 769b06959..41745ffb9 100644 --- a/data-otxserver/monster/quests/ferumbras_ascendant/lovely/lovely_frazzlemaw.lua +++ b/data-otxserver/monster/quests/ferumbras_ascendant/lovely/lovely_frazzlemaw.lua @@ -100,8 +100,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 80 }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -400, radius = 3, target = false }, - { name = "combat", interval = 2000, chance = 13, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -700, length = 5, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = true }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -400, radius = 3, effect = CONST_ME_HITAREA, target = false }, + { name = "combat", interval = 2000, chance = 13, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -700, length = 5, spread = 0, effect = CONST_ME_EXPLOSIONAREA, target = true }, -- bleed { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 16, minDamage = -400, maxDamage = -600, radius = 2, shootEffect = CONST_ANI_LARGEROCK, effect = CONST_ME_STONES, target = true }, { name = "frazzlemaw paralyze", interval = 2000, chance = 15, target = false }, diff --git a/data-otxserver/monster/quests/ferumbras_ascendant/lovely/lovely_yielothax.lua b/data-otxserver/monster/quests/ferumbras_ascendant/lovely/lovely_yielothax.lua index 7e3b599fb..58eb5cac0 100644 --- a/data-otxserver/monster/quests/ferumbras_ascendant/lovely/lovely_yielothax.lua +++ b/data-otxserver/monster/quests/ferumbras_ascendant/lovely/lovely_yielothax.lua @@ -86,8 +86,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 70, attack = 50 }, - { name = "combat", interval = 2000, chance = 18, type = COMBAT_LIFEDRAIN, minDamage = -70, maxDamage = -130, length = 4, spread = 3, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -150, length = 5, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 18, type = COMBAT_LIFEDRAIN, minDamage = -70, maxDamage = -130, length = 4, spread = 0, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -150, length = 5, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -75, maxDamage = -120, radius = 3, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_HITBYPOISON, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -120, maxDamage = -215, radius = 3, effect = CONST_ME_HITBYPOISON, target = false }, -- poison diff --git a/data-otxserver/monster/quests/ferumbras_ascendant/summons/enthralled_demon.lua b/data-otxserver/monster/quests/ferumbras_ascendant/summons/enthralled_demon.lua index e170b7f0b..bc6f84607 100644 --- a/data-otxserver/monster/quests/ferumbras_ascendant/summons/enthralled_demon.lua +++ b/data-otxserver/monster/quests/ferumbras_ascendant/summons/enthralled_demon.lua @@ -68,11 +68,11 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 70, attack = 130 }, { name = "combat", interval = 2000, chance = 13, type = COMBAT_MANADRAIN, minDamage = -60, maxDamage = -120, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 33, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -250, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_DROWNDAMAGE, minDamage = -350, maxDamage = -450, radius = 7, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_DROWNDAMAGE, minDamage = -350, maxDamage = -450, radius = 7, effect = CONST_ME_LOSEENERGY, target = false }, { name = "combat", interval = 2000, chance = 7, type = COMBAT_ENERGYDAMAGE, minDamage = -210, maxDamage = -300, range = 1, radius = 1, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, { name = "firefield", interval = 2000, chance = 14, range = 7, radius = 1, shootEffect = CONST_ANI_FIRE, target = true }, { name = "demon paralyze", interval = 2000, chance = 10, range = 7, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -480, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -480, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/forgotten_knowledge/animated_sword.lua b/data-otxserver/monster/quests/forgotten_knowledge/animated_sword.lua index 60c60ee20..3c5063742 100644 --- a/data-otxserver/monster/quests/forgotten_knowledge/animated_sword.lua +++ b/data-otxserver/monster/quests/forgotten_knowledge/animated_sword.lua @@ -62,7 +62,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 50, attack = 50 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -40, maxDamage = -160, radius = 6, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "berserk", interval = 2000, chance = 15, minDamage = -40, maxDamage = -160, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -40, maxDamage = -100, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -40, maxDamage = -100, length = 4, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/forgotten_knowledge/bosses/lady_tenebris.lua b/data-otxserver/monster/quests/forgotten_knowledge/bosses/lady_tenebris.lua index c7087a421..17d68ca69 100644 --- a/data-otxserver/monster/quests/forgotten_knowledge/bosses/lady_tenebris.lua +++ b/data-otxserver/monster/quests/forgotten_knowledge/bosses/lady_tenebris.lua @@ -115,7 +115,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -800, maxDamage = -1800 }, - { name = "combat", interval = 6000, chance = 13, type = COMBAT_DEATHDAMAGE, minDamage = -1200, maxDamage = -1500, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 6000, chance = 13, type = COMBAT_DEATHDAMAGE, minDamage = -1200, maxDamage = -1500, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 13, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -600, radius = 4, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, { name = "tenebris summon", interval = 2000, chance = 14, target = false }, { name = "tenebris ultimate", interval = 15000, chance = 30, target = false }, diff --git a/data-otxserver/monster/quests/forgotten_knowledge/bosses/lloyd.lua b/data-otxserver/monster/quests/forgotten_knowledge/bosses/lloyd.lua index 2cd9bdcd5..5d5f729e7 100644 --- a/data-otxserver/monster/quests/forgotten_knowledge/bosses/lloyd.lua +++ b/data-otxserver/monster/quests/forgotten_knowledge/bosses/lloyd.lua @@ -113,7 +113,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -200, maxDamage = -1400 }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = -330, maxDamage = -660, length = 6, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = -330, maxDamage = -660, length = 6, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "lloyd wave", interval = 2000, chance = 12, minDamage = -430, maxDamage = -560, target = false }, { name = "lloyd wave2", interval = 2000, chance = 12, minDamage = -230, maxDamage = -460, target = false }, { name = "lloyd wave3", interval = 2000, chance = 12, minDamage = -430, maxDamage = -660, target = false }, diff --git a/data-otxserver/monster/quests/forgotten_knowledge/bosses/mounted_thorn_knight.lua b/data-otxserver/monster/quests/forgotten_knowledge/bosses/mounted_thorn_knight.lua index f46efa303..8d68b77c1 100644 --- a/data-otxserver/monster/quests/forgotten_knowledge/bosses/mounted_thorn_knight.lua +++ b/data-otxserver/monster/quests/forgotten_knowledge/bosses/mounted_thorn_knight.lua @@ -72,9 +72,9 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -600, maxDamage = -1000 }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -700, length = 4, spread = 3, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_MANADRAIN, minDamage = -1400, maxDamage = -1700, length = 9, spread = 3, effect = CONST_ME_CARNIPHILA, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -700, length = 9, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -700, length = 4, spread = 0, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_MANADRAIN, minDamage = -1400, maxDamage = -1700, length = 9, spread = 0, effect = CONST_ME_CARNIPHILA, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -700, length = 9, spread = 0, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -250, radius = 10, effect = CONST_ME_BLOCKHIT, target = false }, } diff --git a/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_blazing_time_guardian.lua b/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_blazing_time_guardian.lua index dd4144c4a..fef77ab81 100644 --- a/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_blazing_time_guardian.lua +++ b/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_blazing_time_guardian.lua @@ -92,12 +92,12 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 190, attack = 300 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -600, maxDamage = -780, range = 7, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -600, maxDamage = -780, length = 9, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -600, maxDamage = -780, length = 9, spread = 3, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -600, maxDamage = -780, length = 9, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -600, maxDamage = -780, length = 9, spread = 0, effect = CONST_ME_ENERGYAREA, target = false }, -- energy damage { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -2000, maxDamage = -2000, radius = 7, effect = CONST_ME_BLOCKHIT, target = false }, -- bleed - { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -2000, maxDamage = -2000, length = 9, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -2000, maxDamage = -2000, length = 9, spread = 0, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_enraged_thorn_knight.lua b/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_enraged_thorn_knight.lua index 38d27e009..c664a5e21 100644 --- a/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_enraged_thorn_knight.lua +++ b/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_enraged_thorn_knight.lua @@ -114,9 +114,9 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -600, maxDamage = -1000 }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -700, length = 4, spread = 3, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_MANADRAIN, minDamage = -1400, maxDamage = -1700, length = 9, spread = 3, effect = CONST_ME_CARNIPHILA, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -700, length = 9, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -700, length = 4, spread = 0, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_MANADRAIN, minDamage = -1400, maxDamage = -1700, length = 9, spread = 0, effect = CONST_ME_CARNIPHILA, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -700, length = 9, spread = 0, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -250, radius = 10, effect = CONST_ME_BLOCKHIT, target = false }, } diff --git a/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_freezing_time_guardian.lua b/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_freezing_time_guardian.lua index ec4aac0f9..8fcbd1ddb 100644 --- a/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_freezing_time_guardian.lua +++ b/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_freezing_time_guardian.lua @@ -93,12 +93,12 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 190, attack = 300 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -600, maxDamage = -780, range = 7, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -600, maxDamage = -780, length = 9, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -600, maxDamage = -780, length = 9, spread = 3, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -600, maxDamage = -780, length = 9, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -600, maxDamage = -780, length = 9, spread = 0, effect = CONST_ME_ENERGYAREA, target = false }, -- energy damage { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -2000, maxDamage = -2000, radius = 7, effect = CONST_ME_BLOCKHIT, target = false }, -- bleed - { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -2000, maxDamage = -2000, length = 9, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -2000, maxDamage = -2000, length = 9, spread = 0, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_last_lore_keeper.lua b/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_last_lore_keeper.lua index a875379d5..f1d96fe25 100644 --- a/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_last_lore_keeper.lua +++ b/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_last_lore_keeper.lua @@ -130,10 +130,10 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 140, attack = 80 }, - { name = "combat", interval = 2000, chance = 7, type = COMBAT_PHYSICALDAMAGE, minDamage = -650, maxDamage = -900, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -850, maxDamage = -2260, length = 10, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 7, type = COMBAT_PHYSICALDAMAGE, minDamage = -650, maxDamage = -900, length = 8, spread = 0, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -850, maxDamage = -2260, length = 10, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -640, maxDamage = -800, radius = 5, effect = CONST_ME_SMALLCLOUDS, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -420, maxDamage = -954, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -420, maxDamage = -954, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -640, maxDamage = -800, radius = 5, effect = CONST_ME_STONES, target = true }, { name = "medusa paralyze", interval = 2000, chance = 20, target = false }, } diff --git a/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_shielded_thorn_knight.lua b/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_shielded_thorn_knight.lua index f35394768..161f21506 100644 --- a/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_shielded_thorn_knight.lua +++ b/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_shielded_thorn_knight.lua @@ -73,9 +73,9 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -600, maxDamage = -1000 }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -700, length = 4, spread = 3, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_MANADRAIN, minDamage = -1400, maxDamage = -1700, length = 9, spread = 3, effect = CONST_ME_CARNIPHILA, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -700, length = 9, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -700, length = 4, spread = 0, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_MANADRAIN, minDamage = -1400, maxDamage = -1700, length = 9, spread = 0, effect = CONST_ME_CARNIPHILA, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -700, length = 9, spread = 0, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -250, radius = 10, effect = CONST_ME_BLOCKHIT, target = false }, } diff --git a/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_time_guardian.lua b/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_time_guardian.lua index 53d7eee51..7bf8e0c82 100644 --- a/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_time_guardian.lua +++ b/data-otxserver/monster/quests/forgotten_knowledge/bosses/the_time_guardian.lua @@ -114,12 +114,12 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 190, attack = 300 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -600, maxDamage = -780, range = 7, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -600, maxDamage = -780, length = 9, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -600, maxDamage = -780, length = 9, spread = 3, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -600, maxDamage = -780, length = 9, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -600, maxDamage = -780, length = 9, spread = 0, effect = CONST_ME_ENERGYAREA, target = false }, -- energy damage { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 20, minDamage = -2000, maxDamage = -2000, radius = 7, effect = CONST_ME_BLOCKHIT, target = false }, -- bleed - { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -2000, maxDamage = -2000, length = 9, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -2000, maxDamage = -2000, length = 9, spread = 0, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/forgotten_knowledge/icicle.lua b/data-otxserver/monster/quests/forgotten_knowledge/icicle.lua index 4f154635a..7b795b7d3 100644 --- a/data-otxserver/monster/quests/forgotten_knowledge/icicle.lua +++ b/data-otxserver/monster/quests/forgotten_knowledge/icicle.lua @@ -70,20 +70,20 @@ monster.defenses = { defense = 199, armor = 199, mitigation = 0.50, - { name = "icicle heal", interval = 2000, chance = 25, target = false }, + { name = "icicle heal", interval = 2000, chance = 60, target = false }, } monster.elements = { - { type = COMBAT_PHYSICALDAMAGE, percent = 0 }, - { type = COMBAT_ENERGYDAMAGE, percent = 0 }, - { type = COMBAT_EARTHDAMAGE, percent = 0 }, - { type = COMBAT_FIREDAMAGE, percent = 0 }, - { type = COMBAT_LIFEDRAIN, percent = 0 }, - { type = COMBAT_MANADRAIN, percent = 0 }, - { type = COMBAT_DROWNDAMAGE, percent = 0 }, - { type = COMBAT_ICEDAMAGE, percent = 0 }, - { type = COMBAT_HOLYDAMAGE, percent = 0 }, - { type = COMBAT_DEATHDAMAGE, percent = 0 }, + { type = COMBAT_PHYSICALDAMAGE, percent = 100 }, + { type = COMBAT_ENERGYDAMAGE, percent = 100 }, + { type = COMBAT_EARTHDAMAGE, percent = 100 }, + { type = COMBAT_FIREDAMAGE, percent = 100 }, + { type = COMBAT_LIFEDRAIN, percent = 100 }, + { type = COMBAT_MANADRAIN, percent = 100 }, + { type = COMBAT_DROWNDAMAGE, percent = 100 }, + { type = COMBAT_ICEDAMAGE, percent = 100 }, + { type = COMBAT_HOLYDAMAGE, percent = 100 }, + { type = COMBAT_DEATHDAMAGE, percent = 100 }, } monster.immunities = { diff --git a/data-otxserver/monster/quests/forgotten_knowledge/sword_of_vengeance.lua b/data-otxserver/monster/quests/forgotten_knowledge/sword_of_vengeance.lua index 4bcd71b87..e46c2d9bb 100644 --- a/data-otxserver/monster/quests/forgotten_knowledge/sword_of_vengeance.lua +++ b/data-otxserver/monster/quests/forgotten_knowledge/sword_of_vengeance.lua @@ -62,7 +62,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -242 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -40, maxDamage = -160, radius = 6, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "berserk", interval = 2000, chance = 15, minDamage = -40, maxDamage = -160, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -40, maxDamage = -100, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -40, maxDamage = -100, length = 4, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/forgotten_knowledge/the_distorted_astral_source.lua b/data-otxserver/monster/quests/forgotten_knowledge/the_distorted_astral_source.lua index bf4cd7960..6c094f6b0 100644 --- a/data-otxserver/monster/quests/forgotten_knowledge/the_distorted_astral_source.lua +++ b/data-otxserver/monster/quests/forgotten_knowledge/the_distorted_astral_source.lua @@ -66,7 +66,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -330 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -500, range = 7, radius = 6, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_PURPLEENERGY, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -500, range = 7, radius = 6, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYHIT, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -400, length = 5, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -400, length = 5, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_MANADRAIN, minDamage = -200, maxDamage = -400, radius = 5, effect = CONST_ME_MAGIC_BLUE, target = false }, } diff --git a/data-otxserver/monster/quests/forgotten_knowledge/thorn_minion.lua b/data-otxserver/monster/quests/forgotten_knowledge/thorn_minion.lua index 84c22d0ce..8d4bebd66 100644 --- a/data-otxserver/monster/quests/forgotten_knowledge/thorn_minion.lua +++ b/data-otxserver/monster/quests/forgotten_knowledge/thorn_minion.lua @@ -69,7 +69,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -195, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -800, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = false, duration = 30000 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -280, radius = 4, effect = CONST_ME_GROUNDSHAKER, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -400, length = 4, spread = 3, effect = CONST_ME_CARNIPHILA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -400, length = 4, spread = 0, effect = CONST_ME_CARNIPHILA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/forgotten_knowledge/unbound_demon_outcast.lua b/data-otxserver/monster/quests/forgotten_knowledge/unbound_demon_outcast.lua index 3bd48a8d0..5900c593b 100644 --- a/data-otxserver/monster/quests/forgotten_knowledge/unbound_demon_outcast.lua +++ b/data-otxserver/monster/quests/forgotten_knowledge/unbound_demon_outcast.lua @@ -70,8 +70,8 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -450, length = 6, spread = 3, effect = CONST_ME_PURPLEENERGY, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -550, length = 8, spread = 3, effect = CONST_ME_YELLOWENERGY, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -450, length = 6, spread = 0, effect = CONST_ME_PURPLEENERGY, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -550, length = 8, spread = 0, effect = CONST_ME_YELLOWENERGY, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -250, radius = 3, effect = CONST_ME_ENERGYHIT, target = true }, { name = "demon outcast skill reducer", interval = 2000, chance = 10, range = 5, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -80, maxDamage = -150, radius = 4, effect = CONST_ME_MAGIC_GREEN, target = false }, diff --git a/data-otxserver/monster/quests/grave_danger/bosses/count_vlarkorth.lua b/data-otxserver/monster/quests/grave_danger/bosses/count_vlarkorth.lua index ebe04c8ec..ced550fbc 100644 --- a/data-otxserver/monster/quests/grave_danger/bosses/count_vlarkorth.lua +++ b/data-otxserver/monster/quests/grave_danger/bosses/count_vlarkorth.lua @@ -111,7 +111,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -800, effect = CONST_ME_DRAWBLOOD }, { name = "combat", interval = 2300, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -250, maxDamage = -350, range = 1, effect = CONST_ME_MAGIC_RED, target = true }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -1, maxDamage = -250, length = 7, spread = 3, effect = CONST_ME_SMALLCLOUDS, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -1, maxDamage = -250, length = 7, spread = 0, effect = CONST_ME_SMALLCLOUDS, target = false }, { name = "combat", interval = 2500, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -500, maxDamage = -1500, length = 7, spread = 0, effect = CONST_ME_HITBYFIRE, target = false }, } diff --git a/data-otxserver/monster/quests/grave_danger/bosses/duke_krule.lua b/data-otxserver/monster/quests/grave_danger/bosses/duke_krule.lua index 0760491d1..518eda46a 100644 --- a/data-otxserver/monster/quests/grave_danger/bosses/duke_krule.lua +++ b/data-otxserver/monster/quests/grave_danger/bosses/duke_krule.lua @@ -103,7 +103,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -900 }, - { name = "combat", interval = 3500, chance = 37, type = COMBAT_PHYSICALDAMAGE, minDamage = -700, maxDamage = -1200, length = 7, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, + { name = "combat", interval = 3500, chance = 37, type = COMBAT_PHYSICALDAMAGE, minDamage = -700, maxDamage = -1200, length = 7, spread = 0, effect = CONST_ME_BLOCKHIT, target = false }, { name = "combat", interval = 2500, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -400, maxDamage = -1000, length = 7, spread = 0, effect = CONST_ME_BLOCKHIT, target = false }, { name = "combat", interval = 4200, chance = 40, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -500, radius = 9, effect = CONST_ME_HITBYFIRE, target = false }, } diff --git a/data-otxserver/monster/quests/grave_danger/bosses/king_zelos.lua b/data-otxserver/monster/quests/grave_danger/bosses/king_zelos.lua index 0201e8214..cafd09f34 100644 --- a/data-otxserver/monster/quests/grave_danger/bosses/king_zelos.lua +++ b/data-otxserver/monster/quests/grave_danger/bosses/king_zelos.lua @@ -85,7 +85,7 @@ monster.loot = { monster.attacks = { { name = "melee", type = COMBAT_PHYSICALDAMAGE, interval = 2000, minDamage = -900, maxDamage = -2700 }, { name = "combat", type = COMBAT_FIREDAMAGE, interval = 2000, chance = 15, length = 8, spread = 0, minDamage = -1200, maxDamage = -3200, effect = CONST_ME_HITBYFIRE }, - { name = "combat", type = COMBAT_LIFEDRAIN, interval = 2000, chance = 10, length = 8, spread = 3, minDamage = -600, maxDamage = -1600, effect = CONST_ME_SMALLCLOUDS }, + { name = "combat", type = COMBAT_LIFEDRAIN, interval = 2000, chance = 10, length = 8, spread = 0, minDamage = -600, maxDamage = -1600, effect = CONST_ME_SMALLCLOUDS }, { name = "combat", type = COMBAT_DEATHDAMAGE, interval = 2000, chance = 30, radius = 6, minDamage = -1200, maxDamage = -1500, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", type = COMBAT_DEATHDAMAGE, interval = 2000, chance = 20, length = 8, minDamage = -1700, maxDamage = -2000, effect = CONST_ME_MORTAREA, target = false }, } diff --git a/data-otxserver/monster/quests/grave_danger/shard_of_magnor.lua b/data-otxserver/monster/quests/grave_danger/shard_of_magnor.lua index fb284fb52..8f0671ebe 100644 --- a/data-otxserver/monster/quests/grave_danger/shard_of_magnor.lua +++ b/data-otxserver/monster/quests/grave_danger/shard_of_magnor.lua @@ -63,8 +63,8 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -200, maxDamage = -600 }, - { name = "combat", interval = 2000, chance = 50, type = COMBAT_MANADRAIN, minDamage = -400, maxDamage = -1000, length = 7, spread = 3, effect = CONST_ME_STONES, target = false }, - { name = "combat", interval = 2000, chance = 70, type = COMBAT_PHYSICALDAMAGE, minDamage = -400, maxDamage = -1000, length = 7, spread = 3, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 2000, chance = 50, type = COMBAT_MANADRAIN, minDamage = -400, maxDamage = -1000, length = 7, spread = 0, effect = CONST_ME_STONES, target = false }, + { name = "combat", interval = 2000, chance = 70, type = COMBAT_PHYSICALDAMAGE, minDamage = -400, maxDamage = -1000, length = 7, spread = 0, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 0, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -650, radius = 3, effect = CONST_ME_GREEN_ENERGY_SPARK, target = true }, } diff --git a/data-otxserver/monster/quests/grave_danger/vampiric_blood.lua b/data-otxserver/monster/quests/grave_danger/vampiric_blood.lua index 72c91a71c..bcae0d3c7 100644 --- a/data-otxserver/monster/quests/grave_danger/vampiric_blood.lua +++ b/data-otxserver/monster/quests/grave_danger/vampiric_blood.lua @@ -63,8 +63,8 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -300, range = 7, length = 3, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -100, range = 7, length = 6, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "combat", interval = 1000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -300, range = 7, length = 3, spread = 0, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_FIREDAMAGE, minDamage = 0, maxDamage = -100, range = 7, length = 6, spread = 0, effect = CONST_ME_HITBYFIRE, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/heart_of_destruction/aftershock.lua b/data-otxserver/monster/quests/heart_of_destruction/aftershock.lua index 2a23f77dc..04c1b3a25 100644 --- a/data-otxserver/monster/quests/heart_of_destruction/aftershock.lua +++ b/data-otxserver/monster/quests/heart_of_destruction/aftershock.lua @@ -70,7 +70,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -800 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -900, length = 10, spread = 3, effect = CONST_ME_BIGCLOUDS, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -900, length = 10, spread = 0, effect = CONST_ME_BIGCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -250, maxDamage = -500, radius = 4, effect = CONST_ME_SMALLCLOUDS, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -750, radius = 8, effect = CONST_ME_BLOCKHIT, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -150, maxDamage = -400, radius = 5, effect = CONST_ME_MAGIC_BLUE, target = true }, diff --git a/data-otxserver/monster/quests/heart_of_destruction/anomaly.lua b/data-otxserver/monster/quests/heart_of_destruction/anomaly.lua index 0eb67d63f..2d6c0e444 100644 --- a/data-otxserver/monster/quests/heart_of_destruction/anomaly.lua +++ b/data-otxserver/monster/quests/heart_of_destruction/anomaly.lua @@ -113,8 +113,8 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -300, maxDamage = -1400 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -600, radius = 4, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, { name = "anomaly wave", interval = 2000, chance = 25, minDamage = -500, maxDamage = -900, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -600, maxDamage = -1000, length = 9, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -600, length = 9, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -600, maxDamage = -1000, length = 9, spread = 0, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -600, length = 9, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, { name = "anomaly break", interval = 2000, chance = 40, target = false }, } diff --git a/data-otxserver/monster/quests/heart_of_destruction/charged_anomaly.lua b/data-otxserver/monster/quests/heart_of_destruction/charged_anomaly.lua index 7b36447eb..075c308d7 100644 --- a/data-otxserver/monster/quests/heart_of_destruction/charged_anomaly.lua +++ b/data-otxserver/monster/quests/heart_of_destruction/charged_anomaly.lua @@ -70,8 +70,8 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -900, maxDamage = -2100 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -500, maxDamage = -900, radius = 3, effect = CONST_ME_BIGCLOUDS, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -700, length = 7, spread = 3, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -500, maxDamage = -800, length = 7, spread = 3, effect = CONST_ME_YELLOWENERGY, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -700, length = 7, spread = 0, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -500, maxDamage = -800, length = 7, spread = 0, effect = CONST_ME_YELLOWENERGY, target = false }, { name = "anomaly break", interval = 2000, chance = 40, target = false }, { name = "charge vortex", interval = 9000, chance = 100, target = false }, } diff --git a/data-otxserver/monster/quests/heart_of_destruction/charging_outburst.lua b/data-otxserver/monster/quests/heart_of_destruction/charging_outburst.lua index f003c7545..273ab8f57 100644 --- a/data-otxserver/monster/quests/heart_of_destruction/charging_outburst.lua +++ b/data-otxserver/monster/quests/heart_of_destruction/charging_outburst.lua @@ -72,7 +72,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -300, maxDamage = -1800 }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -500, radius = 3, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -450, maxDamage = -900, radius = 8, effect = CONST_ME_BLOCKHIT, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -600, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -600, maxDamage = -1000, length = 8, spread = 0, effect = CONST_ME_BLOCKHIT, target = false }, { name = "anomaly break", interval = 2000, chance = 40, target = false }, { name = "outburst explode", interval = 10000, chance = 100, minDamage = -1500, maxDamage = -2000, target = false }, } diff --git a/data-otxserver/monster/quests/heart_of_destruction/depolarized_crackler.lua b/data-otxserver/monster/quests/heart_of_destruction/depolarized_crackler.lua index 2387233e8..e99796bbb 100644 --- a/data-otxserver/monster/quests/heart_of_destruction/depolarized_crackler.lua +++ b/data-otxserver/monster/quests/heart_of_destruction/depolarized_crackler.lua @@ -72,7 +72,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -400 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -180, maxDamage = -500, radius = 6, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_LOSEENERGY, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -700, length = 10, spread = 3, effect = CONST_ME_TELEPORT, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -700, length = 10, spread = 0, effect = CONST_ME_TELEPORT, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -180, maxDamage = -350, radius = 8, effect = CONST_ME_POFF, target = false }, } diff --git a/data-otxserver/monster/quests/heart_of_destruction/eradicator.lua b/data-otxserver/monster/quests/heart_of_destruction/eradicator.lua index e6d203eac..d81c9b4fa 100644 --- a/data-otxserver/monster/quests/heart_of_destruction/eradicator.lua +++ b/data-otxserver/monster/quests/heart_of_destruction/eradicator.lua @@ -103,8 +103,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -300, maxDamage = -1800 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -600, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -600, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -600, maxDamage = -1000, length = 8, spread = 0, effect = CONST_ME_BLOCKHIT, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -600, maxDamage = -1000, length = 8, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -450, maxDamage = -900, radius = 8, effect = CONST_ME_BLOCKHIT, target = false }, { name = "big energy wave", interval = 2000, chance = 20, minDamage = -700, maxDamage = -1000, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -600, radius = 4, effect = CONST_ME_ENERGYHIT, target = true }, diff --git a/data-otxserver/monster/quests/heart_of_destruction/eradicator2.lua b/data-otxserver/monster/quests/heart_of_destruction/eradicator2.lua index ed8e9279e..14b92badf 100644 --- a/data-otxserver/monster/quests/heart_of_destruction/eradicator2.lua +++ b/data-otxserver/monster/quests/heart_of_destruction/eradicator2.lua @@ -103,7 +103,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -300, maxDamage = -1800 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -600, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -600, maxDamage = -1000, length = 8, spread = 0, effect = CONST_ME_BLOCKHIT, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -450, maxDamage = -900, radius = 8, effect = CONST_ME_BLOCKHIT, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_HOLYDAMAGE, minDamage = -300, maxDamage = -600, radius = 4, shootEffect = CONST_ANI_SMALLHOLY, effect = CONST_ME_HOLYDAMAGE, target = true }, { name = "big lifedrain wave", interval = 2000, chance = 20, minDamage = -700, maxDamage = -1000, target = false }, diff --git a/data-otxserver/monster/quests/heart_of_destruction/foreshock.lua b/data-otxserver/monster/quests/heart_of_destruction/foreshock.lua index 65283626c..99f5be41e 100644 --- a/data-otxserver/monster/quests/heart_of_destruction/foreshock.lua +++ b/data-otxserver/monster/quests/heart_of_destruction/foreshock.lua @@ -71,9 +71,9 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -400, maxDamage = -1000 }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -800, length = 10, spread = 3, effect = CONST_ME_LOSEENERGY, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -800, length = 10, spread = 0, effect = CONST_ME_LOSEENERGY, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -400, maxDamage = -1000, radius = 8, effect = CONST_ME_HITAREA, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -350, maxDamage = -600, length = 10, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -350, maxDamage = -600, length = 10, spread = 0, effect = CONST_ME_BLOCKHIT, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_HOLYDAMAGE, minDamage = -350, maxDamage = -800, radius = 4, effect = CONST_ME_HOLYDAMAGE, target = true }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -150, maxDamage = -300, length = 2, spread = 0, effect = CONST_ME_HITAREA, target = false }, { name = "anomaly break", interval = 2000, chance = 40, target = false }, diff --git a/data-otxserver/monster/quests/heart_of_destruction/greed.lua b/data-otxserver/monster/quests/heart_of_destruction/greed.lua index 5dce33bf0..31d99df68 100644 --- a/data-otxserver/monster/quests/heart_of_destruction/greed.lua +++ b/data-otxserver/monster/quests/heart_of_destruction/greed.lua @@ -67,7 +67,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -940 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -600, radius = 6, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_LOSEENERGY, target = true }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -700, length = 9, spread = 3, effect = CONST_ME_TELEPORT, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -700, length = 9, spread = 0, effect = CONST_ME_TELEPORT, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, radius = 7, effect = CONST_ME_POFF, target = false }, { name = "anomaly break", interval = 2000, chance = 40, target = false }, } diff --git a/data-otxserver/monster/quests/heart_of_destruction/outburst.lua b/data-otxserver/monster/quests/heart_of_destruction/outburst.lua index 936f58ad1..c40159545 100644 --- a/data-otxserver/monster/quests/heart_of_destruction/outburst.lua +++ b/data-otxserver/monster/quests/heart_of_destruction/outburst.lua @@ -96,8 +96,8 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -300, maxDamage = -1800 }, { name = "big energy purple wave", interval = 2000, chance = 25, minDamage = -700, maxDamage = -1300, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -600, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_ENERGYAREA, target = true }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -800, maxDamage = -1300, length = 8, spread = 3, effect = CONST_ME_HITAREA, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -600, maxDamage = -900, length = 8, spread = 3, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -800, maxDamage = -1300, length = 8, spread = 0, effect = CONST_ME_HITAREA, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -600, maxDamage = -900, length = 8, spread = 0, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "big skill reducer", interval = 2000, chance = 25, target = false }, { name = "anomaly break", interval = 2000, chance = 40, target = false }, } diff --git a/data-otxserver/monster/quests/heart_of_destruction/overcharge.lua b/data-otxserver/monster/quests/heart_of_destruction/overcharge.lua index dc29e8945..0a22923ae 100644 --- a/data-otxserver/monster/quests/heart_of_destruction/overcharge.lua +++ b/data-otxserver/monster/quests/heart_of_destruction/overcharge.lua @@ -72,7 +72,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -500 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -500, radius = 5, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_LOSEENERGY, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -400, radius = 7, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -670, length = 9, spread = 3, effect = CONST_ME_TELEPORT, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -670, length = 9, spread = 0, effect = CONST_ME_TELEPORT, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/heart_of_destruction/realityquake.lua b/data-otxserver/monster/quests/heart_of_destruction/realityquake.lua index afd022642..c9d760158 100644 --- a/data-otxserver/monster/quests/heart_of_destruction/realityquake.lua +++ b/data-otxserver/monster/quests/heart_of_destruction/realityquake.lua @@ -91,8 +91,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -400, maxDamage = -1000 }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -800, length = 10, spread = 3, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -350, maxDamage = -800, length = 10, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -800, length = 10, spread = 0, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -350, maxDamage = -800, length = 10, spread = 0, effect = CONST_ME_BLOCKHIT, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -240, maxDamage = -600, radius = 5, effect = CONST_ME_POFF, target = true }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_HOLYDAMAGE, minDamage = -240, maxDamage = -600, radius = 5, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYDAMAGE, target = true }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -200, maxDamage = -450, length = 4, spread = 2, effect = CONST_ME_MAGIC_RED, target = false }, diff --git a/data-otxserver/monster/quests/heart_of_destruction/rupture.lua b/data-otxserver/monster/quests/heart_of_destruction/rupture.lua index c49d49d5d..5d68108bb 100644 --- a/data-otxserver/monster/quests/heart_of_destruction/rupture.lua +++ b/data-otxserver/monster/quests/heart_of_destruction/rupture.lua @@ -97,10 +97,10 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -250, maxDamage = -1000 }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -800, length = 10, spread = 3, effect = CONST_ME_LOSEENERGY, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -800, length = 10, spread = 0, effect = CONST_ME_LOSEENERGY, target = false }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -300, radius = 4, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = true }, { name = "rupture wave", interval = 2000, chance = 20, minDamage = -700, maxDamage = -1100, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -600, length = 9, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -600, length = 9, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, { name = "anomaly break", interval = 2000, chance = 40, target = false }, } diff --git a/data-otxserver/monster/quests/heart_of_destruction/the_destruction.lua b/data-otxserver/monster/quests/heart_of_destruction/the_destruction.lua index 9695be760..b80789846 100644 --- a/data-otxserver/monster/quests/heart_of_destruction/the_destruction.lua +++ b/data-otxserver/monster/quests/heart_of_destruction/the_destruction.lua @@ -72,10 +72,10 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1393 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -600, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_YELLOWENERGY, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -400, maxDamage = -800, radius = 4, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_EXPLOSIONAREA, target = true }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -400, length = 10, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -400, length = 10, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, radius = 8, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -500, maxDamage = -900, length = 10, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -500, maxDamage = -900, length = 10, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -500, maxDamage = -900, length = 10, spread = 0, effect = CONST_ME_BLOCKHIT, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -500, maxDamage = -900, length = 10, spread = 0, effect = CONST_ME_EXPLOSIONHIT, target = false }, { name = "anomaly break", interval = 2000, chance = 40, target = false }, { name = "destruction summon", interval = 2000, chance = 20, target = false }, } diff --git a/data-otxserver/monster/quests/heart_of_destruction/the_hunger.lua b/data-otxserver/monster/quests/heart_of_destruction/the_hunger.lua index 2a8db03fc..e796dbcd2 100644 --- a/data-otxserver/monster/quests/heart_of_destruction/the_hunger.lua +++ b/data-otxserver/monster/quests/heart_of_destruction/the_hunger.lua @@ -72,8 +72,8 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -962 }, { name = "practise fire wave", interval = 2000, chance = 20, minDamage = -600, maxDamage = -900, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, radius = 8, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -700, maxDamage = -1100, length = 10, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -400, length = 10, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -700, maxDamage = -1100, length = 10, spread = 0, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -400, length = 10, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, { name = "anomaly break", interval = 2000, chance = 40, target = false }, { name = "hunger summon", interval = 2000, chance = 20, target = false }, } diff --git a/data-otxserver/monster/quests/heart_of_destruction/the_rage.lua b/data-otxserver/monster/quests/heart_of_destruction/the_rage.lua index f648df139..9a5c3dc11 100644 --- a/data-otxserver/monster/quests/heart_of_destruction/the_rage.lua +++ b/data-otxserver/monster/quests/heart_of_destruction/the_rage.lua @@ -71,11 +71,11 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -740 }, { name = "big death wave", interval = 2000, chance = 20, minDamage = -600, maxDamage = -900, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -400, length = 10, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -400, length = 10, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -600, radius = 4, effect = CONST_ME_SMALLCLOUDS, target = true }, { name = "big explosion wave", interval = 2000, chance = 20, minDamage = -600, maxDamage = -900, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, radius = 8, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -600, length = 10, spread = 3, effect = CONST_ME_YELLOW_RINGS, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -600, length = 10, spread = 0, effect = CONST_ME_YELLOW_RINGS, target = false }, { name = "anomaly break", interval = 2000, chance = 40, target = false }, { name = "rage summon", interval = 2000, chance = 20, target = false }, } diff --git a/data-otxserver/monster/quests/heart_of_destruction/unstable_spark.lua b/data-otxserver/monster/quests/heart_of_destruction/unstable_spark.lua index bbfb1938a..4896767a0 100644 --- a/data-otxserver/monster/quests/heart_of_destruction/unstable_spark.lua +++ b/data-otxserver/monster/quests/heart_of_destruction/unstable_spark.lua @@ -71,7 +71,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -500 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -180, maxDamage = -500, radius = 6, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_LOSEENERGY, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -700, length = 10, spread = 3, effect = CONST_ME_TELEPORT, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -700, length = 10, spread = 0, effect = CONST_ME_TELEPORT, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -180, maxDamage = -350, radius = 8, effect = CONST_ME_POFF, target = false }, } diff --git a/data-otxserver/monster/quests/heart_of_destruction/world_devourer.lua b/data-otxserver/monster/quests/heart_of_destruction/world_devourer.lua index 5718a22de..c8e7198a2 100644 --- a/data-otxserver/monster/quests/heart_of_destruction/world_devourer.lua +++ b/data-otxserver/monster/quests/heart_of_destruction/world_devourer.lua @@ -100,10 +100,10 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1600 }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -800, length = 10, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -400, maxDamage = -800, length = 10, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -800, radius = 4, effect = CONST_ME_SMALLCLOUDS, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -800, radius = 4, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_YELLOWENERGY, target = true }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -600, maxDamage = -1200, length = 10, spread = 3, effect = CONST_ME_LOSEENERGY, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -600, maxDamage = -1200, length = 10, spread = 0, effect = CONST_ME_LOSEENERGY, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_LIFEDRAIN, radius = 8, effect = CONST_ME_MAGIC_RED, target = false }, { name = "anomaly break", interval = 2000, chance = 40, target = false }, { name = "devourer summon", interval = 2000, chance = 25, target = false }, diff --git a/data-otxserver/monster/quests/hero_of_rathleton/deep_terror.lua b/data-otxserver/monster/quests/hero_of_rathleton/deep_terror.lua index 534175a88..debd09c9b 100644 --- a/data-otxserver/monster/quests/hero_of_rathleton/deep_terror.lua +++ b/data-otxserver/monster/quests/hero_of_rathleton/deep_terror.lua @@ -79,7 +79,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 130, attack = 100 }, { name = "combat", interval = 2000, chance = 32, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -400, radius = 8, effect = CONST_ME_CARNIPHILA, target = false }, { name = "combat", interval = 2000, chance = 19, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -700, range = 7, radius = 3, shootEffect = CONST_ANI_POISON, effect = CONST_ME_CARNIPHILA, target = true }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -500, maxDamage = -1000, length = 7, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_PHYSICALDAMAGE, minDamage = -500, maxDamage = -1000, length = 7, spread = 0, effect = CONST_ME_GROUNDSHAKER, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/hero_of_rathleton/glooth_horror.lua b/data-otxserver/monster/quests/hero_of_rathleton/glooth_horror.lua index eec613297..caee3d062 100644 --- a/data-otxserver/monster/quests/hero_of_rathleton/glooth_horror.lua +++ b/data-otxserver/monster/quests/hero_of_rathleton/glooth_horror.lua @@ -70,7 +70,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 110, attack = 100 }, - { name = "combat", interval = 2000, chance = 9, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -700, length = 8, spread = 3, target = false }, + { name = "combat", interval = 2000, chance = 9, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -700, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = false }, { name = "drunk", interval = 2000, chance = 8, radius = 8, effect = CONST_ME_HITBYPOISON, target = false, duration = 15000 }, } diff --git a/data-otxserver/monster/quests/hero_of_rathleton/professor_maxxen.lua b/data-otxserver/monster/quests/hero_of_rathleton/professor_maxxen.lua index 8a1ec35e9..947a56a01 100644 --- a/data-otxserver/monster/quests/hero_of_rathleton/professor_maxxen.lua +++ b/data-otxserver/monster/quests/hero_of_rathleton/professor_maxxen.lua @@ -89,8 +89,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 180, attack = 200 }, { name = "combat", interval = 2000, chance = 11, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -500, radius = 8, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -450, maxDamage = -1500, length = 8, spread = 3, effect = CONST_ME_TELEPORT, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -450, maxDamage = -500, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -450, maxDamage = -1500, length = 8, spread = 0, effect = CONST_ME_TELEPORT, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -450, maxDamage = -500, length = 8, spread = 0, effect = CONST_ME_FIREATTACK, target = false }, { name = "war golem skill reducer", interval = 2000, chance = 22, target = false }, { name = "war golem electrify", interval = 2000, chance = 16, range = 2, target = false }, { name = "glooth fairy skill reducer", interval = 2000, chance = 20, target = false }, diff --git a/data-otxserver/monster/quests/hero_of_rathleton/weakened_glooth_horror.lua b/data-otxserver/monster/quests/hero_of_rathleton/weakened_glooth_horror.lua index b3df6a578..511ea483b 100644 --- a/data-otxserver/monster/quests/hero_of_rathleton/weakened_glooth_horror.lua +++ b/data-otxserver/monster/quests/hero_of_rathleton/weakened_glooth_horror.lua @@ -70,7 +70,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 100 }, - { name = "combat", interval = 2000, chance = 17, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -600, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 17, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -600, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 11, type = COMBAT_DEATHDAMAGE, minDamage = -200, maxDamage = -400, range = 1, shootEffect = CONST_ANI_POISON, target = true }, } diff --git a/data-otxserver/monster/quests/in_service_of_yalahar/azerus.lua b/data-otxserver/monster/quests/in_service_of_yalahar/azerus.lua index 87329f077..19dc3668a 100644 --- a/data-otxserver/monster/quests/in_service_of_yalahar/azerus.lua +++ b/data-otxserver/monster/quests/in_service_of_yalahar/azerus.lua @@ -97,7 +97,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -900 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -3800, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_BIGCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -524, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -1050, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -1050, length = 8, spread = 0, effect = CONST_ME_FIREATTACK, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/in_service_of_yalahar/azerus2.lua b/data-otxserver/monster/quests/in_service_of_yalahar/azerus2.lua index 19f074c17..e5c88468c 100644 --- a/data-otxserver/monster/quests/in_service_of_yalahar/azerus2.lua +++ b/data-otxserver/monster/quests/in_service_of_yalahar/azerus2.lua @@ -93,7 +93,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -900 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -3800, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_BIGCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -524, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -1050, length = 8, spread = 3, effect = CONST_ME_FIREATTACK, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -1050, length = 8, spread = 0, effect = CONST_ME_FIREATTACK, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/in_service_of_yalahar/inky.lua b/data-otxserver/monster/quests/in_service_of_yalahar/inky.lua index bcb266254..49025f4c6 100644 --- a/data-otxserver/monster/quests/in_service_of_yalahar/inky.lua +++ b/data-otxserver/monster/quests/in_service_of_yalahar/inky.lua @@ -77,7 +77,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -156, condition = { type = CONDITION_POISON, totalDamage = 2, interval = 4000 } }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -87, radius = 3, effect = CONST_ME_HITAREA, target = false }, - { name = "combat", interval = 2000, chance = 19, type = COMBAT_ICEDAMAGE, minDamage = 0, maxDamage = -80, radius = 3, shootEffect = CONST_ANI_POISON, target = false }, + { name = "combat", interval = 2000, chance = 19, type = COMBAT_ICEDAMAGE, minDamage = 0, maxDamage = -80, radius = 3, shootEffect = CONST_ANI_POISON, effect = CONST_ME_ICEAREA, target = false }, { name = "combat", interval = 2000, chance = 7, type = COMBAT_ICEDAMAGE, minDamage = -56, maxDamage = -87, radius = 4, effect = CONST_ME_ICEAREA, target = false }, { name = "quara constrictor electrify", interval = 2000, chance = 10, range = 1, target = false }, } diff --git a/data-otxserver/monster/quests/in_service_of_yalahar/rift_scythe.lua b/data-otxserver/monster/quests/in_service_of_yalahar/rift_scythe.lua index 25246da0e..ede090ca2 100644 --- a/data-otxserver/monster/quests/in_service_of_yalahar/rift_scythe.lua +++ b/data-otxserver/monster/quests/in_service_of_yalahar/rift_scythe.lua @@ -67,9 +67,9 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -979 }, { name = "combat", interval = 2000, chance = 60, type = COMBAT_DEATHDAMAGE, minDamage = 0, maxDamage = -200, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, - { name = "combat", interval = 2000, chance = 50, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -600, length = 7, spread = 3, target = false }, - { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -395, radius = 4, target = false }, - { name = "combat", interval = 3000, chance = 60, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 7, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "combat", interval = 2000, chance = 50, type = COMBAT_LIFEDRAIN, minDamage = 0, maxDamage = -600, length = 7, spread = 0, effect = CONST_ME_DRAWBLOOD, target = false }, + { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -395, radius = 4, effect = CONST_ME_DRAWBLOOD, target = false }, + { name = "combat", interval = 3000, chance = 60, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 7, spread = 0, effect = CONST_ME_EXPLOSIONAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/isle_of_evil/boogey.lua b/data-otxserver/monster/quests/isle_of_evil/boogey.lua index 56fa3d794..fcb5a0238 100644 --- a/data-otxserver/monster/quests/isle_of_evil/boogey.lua +++ b/data-otxserver/monster/quests/isle_of_evil/boogey.lua @@ -89,7 +89,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 1200, chance = 100, minDamage = 0, maxDamage = -120 }, { name = "combat", interval = 1500, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -30, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 1500, chance = 30, type = COMBAT_DEATHDAMAGE, minDamage = -12, maxDamage = -20, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, target = true }, + { name = "combat", interval = 1500, chance = 30, type = COMBAT_DEATHDAMAGE, minDamage = -12, maxDamage = -20, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "combat", interval = 1500, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -20, maxDamage = -30, effect = CONST_ME_MORTAREA, target = false }, } diff --git a/data-otxserver/monster/quests/killing_in_the_name_of/bruise_payne.lua b/data-otxserver/monster/quests/killing_in_the_name_of/bruise_payne.lua index b86b5a758..4c1a30052 100644 --- a/data-otxserver/monster/quests/killing_in_the_name_of/bruise_payne.lua +++ b/data-otxserver/monster/quests/killing_in_the_name_of/bruise_payne.lua @@ -81,7 +81,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 15, type = COMBAT_DROWNDAMAGE, minDamage = -130, maxDamage = -237, radius = 6, effect = CONST_ME_SOUND_WHITE, target = false }, { name = "mutated bat curse", interval = 2000, chance = 10, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -12, maxDamage = -12, length = 4, spread = 3, effect = CONST_ME_POISONAREA, target = false }, + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -12, maxDamage = -12, length = 4, spread = 0, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/killing_in_the_name_of/zanakeph.lua b/data-otxserver/monster/quests/killing_in_the_name_of/zanakeph.lua index 35354843a..3c05a33fc 100644 --- a/data-otxserver/monster/quests/killing_in_the_name_of/zanakeph.lua +++ b/data-otxserver/monster/quests/killing_in_the_name_of/zanakeph.lua @@ -92,7 +92,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -0, maxDamage = -480 }, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -400, range = 7, radius = 4, target = true }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -400, range = 7, radius = 4, effect = CONST_ME_HITAREA, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -125, maxDamage = -600, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -390, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, diff --git a/data-otxserver/monster/quests/mysterious_ornate_chest/reflection_of_mawhawk.lua b/data-otxserver/monster/quests/mysterious_ornate_chest/reflection_of_mawhawk.lua index a2806343a..707cb6cb5 100644 --- a/data-otxserver/monster/quests/mysterious_ornate_chest/reflection_of_mawhawk.lua +++ b/data-otxserver/monster/quests/mysterious_ornate_chest/reflection_of_mawhawk.lua @@ -86,9 +86,9 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1000 }, { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 80 }, - { name = "combat", interval = 2000, chance = 8, type = COMBAT_LIFEDRAIN, minDamage = -135, maxDamage = -280, range = 7, radius = 5, shootEffect = CONST_ANI_WHIRLWINDAXE, target = true }, + { name = "combat", interval = 2000, chance = 8, type = COMBAT_LIFEDRAIN, minDamage = -135, maxDamage = -280, range = 7, radius = 5, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_DRAWBLOOD, target = true }, { name = "combat", interval = 2000, chance = 8, type = COMBAT_PHYSICALDAMAGE, minDamage = -90, maxDamage = -500, range = 7, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_EXPLOSIONAREA, target = true }, - { name = "combat", interval = 1800, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -685, length = 7, spread = 3, effect = CONST_ME_STONES, target = false }, + { name = "combat", interval = 1800, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -685, length = 7, spread = 0, effect = CONST_ME_STONES, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/pits_of_inferno/dracola.lua b/data-otxserver/monster/quests/pits_of_inferno/dracola.lua index 44a5b3872..c33ea29f3 100644 --- a/data-otxserver/monster/quests/pits_of_inferno/dracola.lua +++ b/data-otxserver/monster/quests/pits_of_inferno/dracola.lua @@ -94,7 +94,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 20, type = COMBAT_EARTHDAMAGE, minDamage = -120, maxDamage = -750, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, -- drown { name = "condition", type = CONDITION_DROWN, interval = 1000, chance = 20, length = 8, spread = 3, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -870, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, target = true }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -870, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_HITAREA, target = true }, { name = "combat", interval = 3000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -750, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 1000, chance = 23, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -175, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -100, maxDamage = -200, range = 7, target = false }, diff --git a/data-otxserver/monster/quests/roshamuul/horadron.lua b/data-otxserver/monster/quests/roshamuul/horadron.lua index 17f6a3652..b25a8891c 100644 --- a/data-otxserver/monster/quests/roshamuul/horadron.lua +++ b/data-otxserver/monster/quests/roshamuul/horadron.lua @@ -108,8 +108,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 110, attack = 100 }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -600, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -600, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -600, maxDamage = -1000, length = 8, spread = 0, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -600, maxDamage = -1000, length = 8, spread = 0, effect = CONST_ME_HITBYPOISON, target = false }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -235, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_HITBYPOISON, target = true }, { name = "combat", interval = 2000, chance = 25, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -250, radius = 3, effect = CONST_ME_POISONAREA, target = false }, -- poison diff --git a/data-otxserver/monster/quests/roshamuul/terofar.lua b/data-otxserver/monster/quests/roshamuul/terofar.lua index 0f26e7697..efd6a2486 100644 --- a/data-otxserver/monster/quests/roshamuul/terofar.lua +++ b/data-otxserver/monster/quests/roshamuul/terofar.lua @@ -104,7 +104,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 180, attack = 100 }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -1500, length = 8, spread = 3, effect = CONST_ME_SMALLCLOUDS, target = false }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -1500, length = 8, spread = 0, effect = CONST_ME_SMALLCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 18, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -750, range = 7, radius = 1, shootEffect = CONST_ANI_WHIRLWINDAXE, target = true }, } @@ -112,7 +112,7 @@ monster.defenses = { defense = 65, armor = 55, -- mitigation = ???, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 300, maxDamage = 500, radius = 8, target = false }, + { name = "combat", interval = 2000, chance = 30, type = COMBAT_HEALING, minDamage = 300, maxDamage = 500, radius = 8, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "speed", interval = 2000, chance = 18, speedChange = 784, effect = CONST_ME_MAGIC_GREEN, target = false, duration = 7000 }, } diff --git a/data-otxserver/monster/quests/soul_war/aspect_of_power.lua b/data-otxserver/monster/quests/soul_war/aspect_of_power.lua index dfc6049e3..8ff012c96 100644 --- a/data-otxserver/monster/quests/soul_war/aspect_of_power.lua +++ b/data-otxserver/monster/quests/soul_war/aspect_of_power.lua @@ -61,8 +61,8 @@ monster.voices = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -800 }, - { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -400, maxDamage = -950, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, target = true }, - { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -850, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -400, maxDamage = -950, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -850, length = 4, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -1550, radius = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "outfit", interval = 1000, chance = 5, radius = 8, effect = CONST_ME_LOSEENERGY, target = false, duration = 5000, outfitMonster = "goshnar's hatred" }, { name = "outfit", interval = 1000, chance = 5, radius = 8, effect = CONST_ME_LOSEENERGY, target = false, duration = 5000, outfitMonster = "goshnar's greed" }, diff --git a/data-otxserver/monster/quests/soul_war/dreadful_harvester.lua b/data-otxserver/monster/quests/soul_war/dreadful_harvester.lua index 6a6108cf5..64bd8a980 100644 --- a/data-otxserver/monster/quests/soul_war/dreadful_harvester.lua +++ b/data-otxserver/monster/quests/soul_war/dreadful_harvester.lua @@ -67,9 +67,9 @@ monster.voices = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -320 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -165, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -350, maxDamage = -720, length = 8, spread = 3, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 7, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -275, radius = 4, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -350, maxDamage = -720, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 7, spread = 0, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -275, radius = 4, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/soul_war/goshnars_greed.lua b/data-otxserver/monster/quests/soul_war/goshnars_greed.lua index 0c8ddbbac..171f963f5 100644 --- a/data-otxserver/monster/quests/soul_war/goshnars_greed.lua +++ b/data-otxserver/monster/quests/soul_war/goshnars_greed.lua @@ -107,7 +107,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5000 }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_DEATHDAMAGE, minDamage = -1500, maxDamage = -2000, range = 7, radius = 5, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_GROUNDSHAKER, target = true }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -1200, maxDamage = -2200, length = 8, spread = 1, effect = CONST_ME_FIREAREA, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -1200, maxDamage = -2200, length = 8, spread = 0, effect = CONST_ME_FIREAREA, target = false }, { name = "singlecloudchain", interval = 6000, chance = 40, minDamage = -1300, maxDamage = -1700, range = 6, effect = CONST_ME_ENERGYHIT, target = true }, } diff --git a/data-otxserver/monster/quests/soul_war/goshnars_hatred.lua b/data-otxserver/monster/quests/soul_war/goshnars_hatred.lua index 2dcfed2e9..fa5ccf369 100644 --- a/data-otxserver/monster/quests/soul_war/goshnars_hatred.lua +++ b/data-otxserver/monster/quests/soul_war/goshnars_hatred.lua @@ -109,7 +109,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5000 }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_DEATHDAMAGE, minDamage = -1350, maxDamage = -1700, range = 7, radius = 5, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_GROUNDSHAKER, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -1400, maxDamage = -2200, length = 8, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -1400, maxDamage = -2200, length = 8, spread = 0, effect = CONST_ME_GROUNDSHAKER, target = false }, { name = "singlecloudchain", interval = 6000, chance = 40, minDamage = -1700, maxDamage = -2500, range = 6, effect = CONST_ME_ENERGYHIT, target = true }, } diff --git a/data-otxserver/monster/quests/soul_war/goshnars_megalomania.lua b/data-otxserver/monster/quests/soul_war/goshnars_megalomania.lua index 18cfdeacd..7346e628c 100644 --- a/data-otxserver/monster/quests/soul_war/goshnars_megalomania.lua +++ b/data-otxserver/monster/quests/soul_war/goshnars_megalomania.lua @@ -112,7 +112,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -8000 }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_PHYSICALDAMAGE, minDamage = -2950, maxDamage = -4400, range = 7, radius = 3, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -3000, maxDamage = -5500, length = 8, spread = 3, effect = CONST_ME_INSECTS, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -3000, maxDamage = -5500, length = 8, spread = 0, effect = CONST_ME_INSECTS, target = false }, { name = "singlecloudchain", interval = 6000, chance = 40, minDamage = -3300, maxDamage = -5500, range = 6, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -3300, maxDamage = -5200, length = 10, spread = 0, effect = CONST_ME_BLUE_GHOST, target = false }, } diff --git a/data-otxserver/monster/quests/soul_war/goshnars_spite.lua b/data-otxserver/monster/quests/soul_war/goshnars_spite.lua index cf46b89a7..19d35cd1a 100644 --- a/data-otxserver/monster/quests/soul_war/goshnars_spite.lua +++ b/data-otxserver/monster/quests/soul_war/goshnars_spite.lua @@ -107,7 +107,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -5000 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -1400, maxDamage = -2200, length = 8, spread = 3, effect = CONST_ME_GREEN_RINGS, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -1400, maxDamage = -2200, length = 8, spread = 0, effect = CONST_ME_GREEN_RINGS, target = false }, { name = "singlecloudchain", interval = 6000, chance = 40, minDamage = -1700, maxDamage = -1900, range = 6, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 2000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -1200, maxDamage = -3500, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_GREEN_RINGS, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -1400, maxDamage = -2200, length = 8, spread = 0, effect = CONST_ME_GREEN_RINGS, target = false }, diff --git a/data-otxserver/monster/quests/soul_war/hateful_soul.lua b/data-otxserver/monster/quests/soul_war/hateful_soul.lua index 08ea90eec..4aad05f3f 100644 --- a/data-otxserver/monster/quests/soul_war/hateful_soul.lua +++ b/data-otxserver/monster/quests/soul_war/hateful_soul.lua @@ -61,8 +61,8 @@ monster.voices = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -800 }, - { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -400, maxDamage = -950, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, target = true }, - { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -850, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -400, maxDamage = -950, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -850, length = 4, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -1550, radius = 3, effect = CONST_ME_MORTAREA, target = false }, } diff --git a/data-otxserver/monster/quests/soul_war/malicious_soul.lua b/data-otxserver/monster/quests/soul_war/malicious_soul.lua index c540bb4b0..c07b8106c 100644 --- a/data-otxserver/monster/quests/soul_war/malicious_soul.lua +++ b/data-otxserver/monster/quests/soul_war/malicious_soul.lua @@ -61,8 +61,8 @@ monster.voices = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -500 }, - { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, target = true }, - { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -550, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -550, length = 4, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -550, radius = 3, effect = CONST_ME_MORTAREA, target = false }, } diff --git a/data-otxserver/monster/quests/svargrond_arena/warlord/deathbringer.lua b/data-otxserver/monster/quests/svargrond_arena/warlord/deathbringer.lua index b6fa6be83..c99f27f48 100644 --- a/data-otxserver/monster/quests/svargrond_arena/warlord/deathbringer.lua +++ b/data-otxserver/monster/quests/svargrond_arena/warlord/deathbringer.lua @@ -70,7 +70,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -465 }, - { name = "combat", interval = 1000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -80, maxDamage = -120, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, target = true }, + { name = "combat", interval = 1000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -80, maxDamage = -120, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "combat", interval = 3000, chance = 17, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -450, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -450, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -80, maxDamage = -100, radius = 6, effect = CONST_ME_POFF, target = false }, diff --git a/data-otxserver/monster/quests/svargrond_arena/warlord/fallen_mooh'tah_master_ghar.lua b/data-otxserver/monster/quests/svargrond_arena/warlord/fallen_mooh'tah_master_ghar.lua index 676dda2ea..3544b13da 100644 --- a/data-otxserver/monster/quests/svargrond_arena/warlord/fallen_mooh'tah_master_ghar.lua +++ b/data-otxserver/monster/quests/svargrond_arena/warlord/fallen_mooh'tah_master_ghar.lua @@ -69,12 +69,12 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -525, condition = { type = CONDITION_POISON, totalDamage = 18, interval = 4000 } }, - { name = "combat", interval = 6000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -80, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, - { name = "combat", interval = 3000, chance = 45, type = COMBAT_FIREDAMAGE, minDamage = -80, maxDamage = -400, radius = 5, shootEffect = CONST_ANI_FIRE, target = true }, + { name = "combat", interval = 6000, chance = 30, type = COMBAT_FIREDAMAGE, minDamage = -80, maxDamage = -300, length = 8, spread = 0, effect = CONST_ME_FIREAREA, target = false }, + { name = "combat", interval = 3000, chance = 45, type = COMBAT_FIREDAMAGE, minDamage = -80, maxDamage = -400, radius = 5, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "combat", interval = 4000, chance = 30, type = COMBAT_DEATHDAMAGE, minDamage = -80, maxDamage = -270, shootEffect = CONST_ANI_DEATH, effect = CONST_ME_MORTAREA, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 4500, chance = 40, minDamage = -10, maxDamage = -200, range = 10, shootEffect = CONST_ANI_POISON, target = false }, - { name = "combat", interval = 5000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 5000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -60, maxDamage = -300, length = 8, spread = 0, effect = CONST_ME_POISONAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/svargrond_arena/warlord/the_obliverator.lua b/data-otxserver/monster/quests/svargrond_arena/warlord/the_obliverator.lua index ad6f8fa8d..d154022d3 100644 --- a/data-otxserver/monster/quests/svargrond_arena/warlord/the_obliverator.lua +++ b/data-otxserver/monster/quests/svargrond_arena/warlord/the_obliverator.lua @@ -76,7 +76,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -700 }, { name = "combat", interval = 1000, chance = 20, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -250, range = 5, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 3000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -500, length = 8, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 3000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -500, length = 8, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_curse_spreads/black_vixen.lua b/data-otxserver/monster/quests/the_curse_spreads/black_vixen.lua index 3f676c6e9..214b8c6f2 100644 --- a/data-otxserver/monster/quests/the_curse_spreads/black_vixen.lua +++ b/data-otxserver/monster/quests/the_curse_spreads/black_vixen.lua @@ -107,7 +107,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -290 }, { name = "combat", interval = 1000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 100, maxDamage = 720, range = 7, shootEffect = CONST_ANI_THROWINGSTAR, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, - { name = "combat", interval = 1000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -100, maxDamage = -700, length = 5, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 1000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -100, maxDamage = -700, length = 5, spread = 0, effect = CONST_ME_MORTAREA, target = false }, { name = "outfit", interval = 1000, chance = 1, radius = 1, target = true, duration = 2000, outfitMonster = "werewolf" }, } diff --git a/data-otxserver/monster/quests/the_curse_spreads/bloodback.lua b/data-otxserver/monster/quests/the_curse_spreads/bloodback.lua index 7f8c4a86c..3b9dd8e0e 100644 --- a/data-otxserver/monster/quests/the_curse_spreads/bloodback.lua +++ b/data-otxserver/monster/quests/the_curse_spreads/bloodback.lua @@ -101,7 +101,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -290 }, { name = "combat", interval = 1000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -420, range = 7, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, - { name = "combat", interval = 1000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -100, maxDamage = -200, length = 5, spread = 3, target = false }, + { name = "combat", interval = 1000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -100, maxDamage = -200, length = 5, spread = 0, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_curse_spreads/feroxa2.lua b/data-otxserver/monster/quests/the_curse_spreads/feroxa2.lua index a40b80356..4c66688db 100644 --- a/data-otxserver/monster/quests/the_curse_spreads/feroxa2.lua +++ b/data-otxserver/monster/quests/the_curse_spreads/feroxa2.lua @@ -72,7 +72,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -1400, maxDamage = -1800 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -1050, radius = 6, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -700, maxDamage = -1250, length = 9, spread = 1, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -700, maxDamage = -1250, length = 9, spread = 0, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -450, maxDamage = -700, radius = 7, effect = CONST_ME_BLOCKHIT, target = false }, } diff --git a/data-otxserver/monster/quests/the_curse_spreads/feroxa3.lua b/data-otxserver/monster/quests/the_curse_spreads/feroxa3.lua index f702b9376..8020a2664 100644 --- a/data-otxserver/monster/quests/the_curse_spreads/feroxa3.lua +++ b/data-otxserver/monster/quests/the_curse_spreads/feroxa3.lua @@ -72,7 +72,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -1400, maxDamage = -1800 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -1250, radius = 6, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -700, maxDamage = -1250, length = 9, spread = 1, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -700, maxDamage = -1250, length = 9, spread = 0, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -700, maxDamage = -1250, range = 6, shootEffect = CONST_ANI_ARROW, effect = CONST_ME_EXPLOSIONAREA, target = true }, } diff --git a/data-otxserver/monster/quests/the_curse_spreads/feroxa4.lua b/data-otxserver/monster/quests/the_curse_spreads/feroxa4.lua index 3f2ac9891..478aa779d 100644 --- a/data-otxserver/monster/quests/the_curse_spreads/feroxa4.lua +++ b/data-otxserver/monster/quests/the_curse_spreads/feroxa4.lua @@ -72,7 +72,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -1400, maxDamage = -1800 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -1250, radius = 6, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -700, maxDamage = -1250, length = 9, spread = 1, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -700, maxDamage = -1250, length = 9, spread = 0, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -700, maxDamage = -1250, range = 6, shootEffect = CONST_ANI_ARROW, effect = CONST_ME_EXPLOSIONAREA, target = true }, } diff --git a/data-otxserver/monster/quests/the_curse_spreads/feroxa5.lua b/data-otxserver/monster/quests/the_curse_spreads/feroxa5.lua index a469ad757..39fed1dc7 100644 --- a/data-otxserver/monster/quests/the_curse_spreads/feroxa5.lua +++ b/data-otxserver/monster/quests/the_curse_spreads/feroxa5.lua @@ -87,7 +87,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -1400, maxDamage = -1800 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -1050, radius = 6, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -700, maxDamage = -1250, length = 9, spread = 1, effect = CONST_ME_MAGIC_BLUE, target = false }, + { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -700, maxDamage = -1250, length = 9, spread = 0, effect = CONST_ME_MAGIC_BLUE, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -450, maxDamage = -700, radius = 7, effect = CONST_ME_BLOCKHIT, target = false }, } diff --git a/data-otxserver/monster/quests/the_curse_spreads/sharpclaw.lua b/data-otxserver/monster/quests/the_curse_spreads/sharpclaw.lua index 570f501ef..50ad689b7 100644 --- a/data-otxserver/monster/quests/the_curse_spreads/sharpclaw.lua +++ b/data-otxserver/monster/quests/the_curse_spreads/sharpclaw.lua @@ -100,7 +100,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -290 }, { name = "combat", interval = 1000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 100, maxDamage = 720, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -600, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, - { name = "combat", interval = 1000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -100, maxDamage = -700, length = 5, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 1000, chance = 14, type = COMBAT_DEATHDAMAGE, minDamage = -100, maxDamage = -700, length = 5, spread = 0, effect = CONST_ME_MORTAREA, target = false }, { name = "outfit", interval = 1000, chance = 1, radius = 1, target = true, duration = 2000, outfitMonster = "Werebadger" }, { name = "ghastly dragon curse", interval = 2000, chance = 5, range = 1, target = false }, } diff --git a/data-otxserver/monster/quests/the_dream_courts/bosses/alptramun.lua b/data-otxserver/monster/quests/the_dream_courts/bosses/alptramun.lua index 76275c2cd..46b5cf6c9 100644 --- a/data-otxserver/monster/quests/the_dream_courts/bosses/alptramun.lua +++ b/data-otxserver/monster/quests/the_dream_courts/bosses/alptramun.lua @@ -118,9 +118,9 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -200, maxDamage = -1000 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -2000, range = 7, length = 6, spread = 3, shootEffect = CONST_ANI_POISON, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -700, range = 3, length = 6, spread = 3, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -500, range = 3, length = 6, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -700, maxDamage = -2000, range = 7, length = 6, spread = 0, shootEffect = CONST_ANI_POISON, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -700, range = 3, length = 6, spread = 0, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -500, range = 3, length = 6, spread = 0, effect = CONST_ME_HITBYFIRE, target = false }, { name = "stone shower rune", interval = 2000, chance = 10, minDamage = -230, maxDamage = -450, range = 7, target = false }, } diff --git a/data-otxserver/monster/quests/the_dream_courts/bosses/plagueroot.lua b/data-otxserver/monster/quests/the_dream_courts/bosses/plagueroot.lua index 3d436e2b8..5888f8e18 100644 --- a/data-otxserver/monster/quests/the_dream_courts/bosses/plagueroot.lua +++ b/data-otxserver/monster/quests/the_dream_courts/bosses/plagueroot.lua @@ -141,8 +141,8 @@ monster.attacks = { { name = "combat", interval = 1000, chance = 50, type = COMBAT_FIREDAMAGE, minDamage = -20, maxDamage = -100, radius = 5, effect = CONST_ME_BLOCKHIT, target = false }, { name = "firefield", interval = 1000, chance = 4, radius = 8, effect = CONST_ME_EXPLOSIONHIT, target = false }, { name = "combat", interval = 1000, chance = 34, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -650, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 1000, chance = 13, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -600, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONHIT, target = false }, - { name = "combat", interval = 1000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -600, length = 8, spread = 3, effect = CONST_ME_FIREAREA, target = false }, + { name = "combat", interval = 1000, chance = 13, type = COMBAT_FIREDAMAGE, minDamage = -250, maxDamage = -600, length = 8, spread = 0, effect = CONST_ME_EXPLOSIONHIT, target = false }, + { name = "combat", interval = 1000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -350, maxDamage = -600, length = 8, spread = 0, effect = CONST_ME_FIREAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_dream_courts/mind-wrecking_dream.lua b/data-otxserver/monster/quests/the_dream_courts/mind-wrecking_dream.lua index 455453414..64c2f9529 100644 --- a/data-otxserver/monster/quests/the_dream_courts/mind-wrecking_dream.lua +++ b/data-otxserver/monster/quests/the_dream_courts/mind-wrecking_dream.lua @@ -67,9 +67,9 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -320 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -165, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -350, maxDamage = -720, length = 8, spread = 3, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 7, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -275, radius = 4, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -350, maxDamage = -720, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 7, spread = 0, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -275, radius = 4, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_dream_courts/plant_abomination.lua b/data-otxserver/monster/quests/the_dream_courts/plant_abomination.lua index 41517061f..fefb9dc4c 100644 --- a/data-otxserver/monster/quests/the_dream_courts/plant_abomination.lua +++ b/data-otxserver/monster/quests/the_dream_courts/plant_abomination.lua @@ -67,7 +67,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_MANADRAIN, minDamage = -30, maxDamage = -100, radius = 4, effect = CONST_ME_GREEN_RINGS, target = false }, - { name = "speed", interval = 2000, chance = 15, speedChange = -700, length = 5, spread = 3, effect = CONST_ME_SMALLPLANTS, target = false, duration = 15000 }, + { name = "speed", interval = 2000, chance = 15, speedChange = -700, length = 5, spread = 0, effect = CONST_ME_SMALLPLANTS, target = false, duration = 15000 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -100, range = 7, radius = 1, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_CARNIPHILA, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -55, maxDamage = -100, radius = 4, effect = CONST_ME_HITBYPOISON, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, radius = 1, effect = CONST_ME_POISONAREA, target = false }, diff --git a/data-otxserver/monster/quests/the_elemental_spheres/blistering_fire_elemental.lua b/data-otxserver/monster/quests/the_elemental_spheres/blistering_fire_elemental.lua index 3991aa6ae..fc58dbba7 100644 --- a/data-otxserver/monster/quests/the_elemental_spheres/blistering_fire_elemental.lua +++ b/data-otxserver/monster/quests/the_elemental_spheres/blistering_fire_elemental.lua @@ -71,7 +71,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -350 }, - { name = "combat", interval = 1000, chance = 11, type = COMBAT_FIREDAMAGE, minDamage = -65, maxDamage = -510, length = 7, spread = 3, target = false }, + { name = "combat", interval = 1000, chance = 11, type = COMBAT_FIREDAMAGE, minDamage = -65, maxDamage = -510, length = 7, spread = 0, effect = CONST_ME_FIREAREA, target = false }, -- fire { name = "condition", type = CONDITION_FIRE, interval = 1000, chance = 12, minDamage = -50, maxDamage = -200, radius = 6, effect = CONST_ME_FIREAREA, target = false }, { name = "firefield", interval = 1000, chance = 15, range = 7, radius = 3, shootEffect = CONST_ANI_FIRE, target = true }, diff --git a/data-otxserver/monster/quests/the_elemental_spheres/earth_overlord.lua b/data-otxserver/monster/quests/the_elemental_spheres/earth_overlord.lua index 33251b292..e35e69c70 100644 --- a/data-otxserver/monster/quests/the_elemental_spheres/earth_overlord.lua +++ b/data-otxserver/monster/quests/the_elemental_spheres/earth_overlord.lua @@ -79,7 +79,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, - { name = "combat", interval = 1000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -800, length = 7, spread = 3, effect = CONST_ME_STONES, target = false }, + { name = "combat", interval = 1000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -800, length = 7, spread = 0, effect = CONST_ME_STONES, target = false }, { name = "combat", interval = 1000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -490, radius = 6, effect = CONST_ME_BIGPLANTS, target = false }, { name = "speed", interval = 2000, chance = 20, speedChange = -750, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 4000 }, } diff --git a/data-otxserver/monster/quests/the_elemental_spheres/energy_overlord.lua b/data-otxserver/monster/quests/the_elemental_spheres/energy_overlord.lua index 844a6504d..f7c0a4002 100644 --- a/data-otxserver/monster/quests/the_elemental_spheres/energy_overlord.lua +++ b/data-otxserver/monster/quests/the_elemental_spheres/energy_overlord.lua @@ -74,7 +74,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -800, length = 7, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -800, length = 7, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "combat", interval = 1000, chance = 11, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -200, range = 3, effect = CONST_ME_PURPLEENERGY, target = true }, { name = "combat", interval = 1000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -50, maxDamage = -200, radius = 5, effect = CONST_ME_BIGPLANTS, target = false }, } diff --git a/data-otxserver/monster/quests/the_elemental_spheres/jagged_earth_elemental.lua b/data-otxserver/monster/quests/the_elemental_spheres/jagged_earth_elemental.lua index 15cd6582e..df44ccaac 100644 --- a/data-otxserver/monster/quests/the_elemental_spheres/jagged_earth_elemental.lua +++ b/data-otxserver/monster/quests/the_elemental_spheres/jagged_earth_elemental.lua @@ -76,7 +76,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, - { name = "combat", interval = 1000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -250, length = 6, spread = 3, effect = CONST_ME_STONES, target = false }, + { name = "combat", interval = 1000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -250, length = 6, spread = 0, effect = CONST_ME_STONES, target = false }, { name = "combat", interval = 1000, chance = 11, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -200, range = 7, radius = 6, shootEffect = CONST_ANI_SMALLEARTH, effect = CONST_ME_POISONAREA, target = true }, } diff --git a/data-otxserver/monster/quests/the_elemental_spheres/muddy_earth_elemental.lua b/data-otxserver/monster/quests/the_elemental_spheres/muddy_earth_elemental.lua index 8970e7392..5a74924dd 100644 --- a/data-otxserver/monster/quests/the_elemental_spheres/muddy_earth_elemental.lua +++ b/data-otxserver/monster/quests/the_elemental_spheres/muddy_earth_elemental.lua @@ -74,7 +74,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -160 }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -25, maxDamage = -155, range = 7, radius = 2, effect = CONST_ME_STONES, target = true }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 1000, chance = 10, minDamage = 0, maxDamage = -26, length = 6, spread = 3, effect = CONST_ME_GROUNDSHAKER, target = false }, + { name = "condition", type = CONDITION_POISON, interval = 1000, chance = 10, minDamage = 0, maxDamage = -26, length = 6, spread = 0, effect = CONST_ME_GROUNDSHAKER, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_first_dragon/haunted_dragon.lua b/data-otxserver/monster/quests/the_first_dragon/haunted_dragon.lua index 9f1f11a2c..9e261a34d 100644 --- a/data-otxserver/monster/quests/the_first_dragon/haunted_dragon.lua +++ b/data-otxserver/monster/quests/the_first_dragon/haunted_dragon.lua @@ -98,7 +98,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -480 }, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -400, range = 7, radius = 4, target = true }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -400, range = 7, radius = 4, effect = CONST_ME_HITAREA, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -125, maxDamage = -600, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -390, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, diff --git a/data-otxserver/monster/quests/the_inquisition/ungreez.lua b/data-otxserver/monster/quests/the_inquisition/ungreez.lua index c19b21999..f2308c8c9 100644 --- a/data-otxserver/monster/quests/the_inquisition/ungreez.lua +++ b/data-otxserver/monster/quests/the_inquisition/ungreez.lua @@ -80,7 +80,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 13, type = COMBAT_MANADRAIN, minDamage = 0, maxDamage = -110, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, target = false }, { name = "combat", interval = 1000, chance = 14, type = COMBAT_FIREDAMAGE, minDamage = -150, maxDamage = -250, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "combat", interval = 2000, chance = 18, type = COMBAT_ENERGYDAMAGE, minDamage = -200, maxDamage = -400, shootEffect = CONST_ANI_ENERGY, effect = CONST_ME_PURPLEENERGY, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -380, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -380, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_new_frontier/doomhowl.lua b/data-otxserver/monster/quests/the_new_frontier/doomhowl.lua index ee20fda84..5aa858960 100644 --- a/data-otxserver/monster/quests/the_new_frontier/doomhowl.lua +++ b/data-otxserver/monster/quests/the_new_frontier/doomhowl.lua @@ -66,7 +66,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -150 }, - { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -645, radius = 3, target = false }, + { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -645, radius = 3, effect = CONST_ME_BLOCKHIT, target = false }, { name = "combat", interval = 4000, chance = 20, type = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_SOUND_GREEN, target = false }, } diff --git a/data-otxserver/monster/quests/the_new_frontier/tirecz.lua b/data-otxserver/monster/quests/the_new_frontier/tirecz.lua index 42cbd1f2b..2370a208b 100644 --- a/data-otxserver/monster/quests/the_new_frontier/tirecz.lua +++ b/data-otxserver/monster/quests/the_new_frontier/tirecz.lua @@ -75,7 +75,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 25, type = COMBAT_FIREDAMAGE, minDamage = -120, maxDamage = -460, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -290, radius = 3, effect = CONST_ME_BLOCKHIT, target = false }, { name = "combat", interval = 3000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -80, maxDamage = -345, length = 8, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -370, radius = 7, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -370, radius = 7, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_order_of_lion/bosses/ancient_lion_knight.lua b/data-otxserver/monster/quests/the_order_of_lion/bosses/ancient_lion_knight.lua index 9118397f7..820931f81 100644 --- a/data-otxserver/monster/quests/the_order_of_lion/bosses/ancient_lion_knight.lua +++ b/data-otxserver/monster/quests/the_order_of_lion/bosses/ancient_lion_knight.lua @@ -97,7 +97,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -750, effect = CONST_ME_DRAWBLOOD }, - { name = "combat", interval = 6000, chance = 30, type = COMBAT_HOLYDAMAGE, minDamage = -450, maxDamage = -750, length = 8, spread = 3, effect = CONST_ME_HOLYAREA, target = false }, + { name = "combat", interval = 6000, chance = 30, type = COMBAT_HOLYDAMAGE, minDamage = -450, maxDamage = -750, length = 8, spread = 0, effect = CONST_ME_HOLYAREA, target = false }, { name = "combat", interval = 2750, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -800, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2500, chance = 22, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -500, radius = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 3300, chance = 24, type = COMBAT_ICEDAMAGE, minDamage = -250, maxDamage = -350, length = 4, spread = 0, effect = CONST_ME_ICEATTACK, target = false }, diff --git a/data-otxserver/monster/quests/the_order_of_lion/bosses/drume.lua b/data-otxserver/monster/quests/the_order_of_lion/bosses/drume.lua index 646a665c4..9d86b77cd 100644 --- a/data-otxserver/monster/quests/the_order_of_lion/bosses/drume.lua +++ b/data-otxserver/monster/quests/the_order_of_lion/bosses/drume.lua @@ -127,11 +127,11 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1100, effect = CONST_ME_DRAWBLOOD }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_HOLYDAMAGE, minDamage = -850, maxDamage = -1150, length = 8, spread = 3, effect = CONST_ME_HOLYAREA, target = false }, - { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -800, maxDamage = -1200, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 22, type = COMBAT_DEATHDAMAGE, minDamage = -800, maxDamage = -1000, radius = 3, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 24, type = COMBAT_ICEDAMAGE, minDamage = -700, maxDamage = -900, length = 4, spread = 0, effect = CONST_ME_ICEATTACK, target = false }, - { name = "singlecloudchain", interval = 2000, chance = 34, minDamage = -600, maxDamage = -1100, range = 4, effect = CONST_ME_ENERGYHIT, target = true }, + { name = "combat", interval = 2700, chance = 25, type = COMBAT_HOLYDAMAGE, minDamage = -850, maxDamage = -1150, length = 8, spread = 0, effect = CONST_ME_HOLYAREA, target = false }, + { name = "combat", interval = 3100, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -800, maxDamage = -1200, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 3300, chance = 22, type = COMBAT_DEATHDAMAGE, minDamage = -800, maxDamage = -1000, radius = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 3700, chance = 24, type = COMBAT_ICEDAMAGE, minDamage = -700, maxDamage = -900, length = 4, spread = 0, effect = CONST_ME_ICEATTACK, target = false }, + { name = "singlecloudchain", interval = 2100, chance = 34, minDamage = -600, maxDamage = -1100, range = 4, effect = CONST_ME_ENERGYHIT, target = true }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_order_of_lion/bosses/kesar.lua b/data-otxserver/monster/quests/the_order_of_lion/bosses/kesar.lua index a3db694f7..b60503900 100644 --- a/data-otxserver/monster/quests/the_order_of_lion/bosses/kesar.lua +++ b/data-otxserver/monster/quests/the_order_of_lion/bosses/kesar.lua @@ -70,7 +70,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -750, effect = CONST_ME_DRAWBLOOD }, - { name = "combat", interval = 4000, chance = 15, type = COMBAT_HOLYDAMAGE, minDamage = -450, maxDamage = -750, length = 8, spread = 3, effect = CONST_ME_HOLYAREA, target = false }, + { name = "combat", interval = 4000, chance = 15, type = COMBAT_HOLYDAMAGE, minDamage = -450, maxDamage = -750, length = 8, spread = 0, effect = CONST_ME_HOLYAREA, target = false }, { name = "combat", interval = 2750, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -400, maxDamage = -800, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, { name = "singledeathchain", interval = 4000, chance = 15, minDamage = -250, maxDamage = -530, range = 5, effect = CONST_ME_MORTAREA, target = true }, { name = "singleicechain", interval = 4000, chance = 18, minDamage = -150, maxDamage = -450, range = 5, effect = CONST_ME_ICEATTACK, target = true }, diff --git a/data-otxserver/monster/quests/the_percht_queens_island/baleful_bunny.lua b/data-otxserver/monster/quests/the_percht_queens_island/baleful_bunny.lua index d35db5b1c..851ab767f 100644 --- a/data-otxserver/monster/quests/the_percht_queens_island/baleful_bunny.lua +++ b/data-otxserver/monster/quests/the_percht_queens_island/baleful_bunny.lua @@ -88,7 +88,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, { name = "combat", interval = 2000, chance = 1, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -150, radius = 4, effect = CONST_ME_POFF, target = true }, { name = "combat", interval = 2000, chance = 1, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -150, radius = 1, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "combat", interval = 2000, chance = 111, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -150, radius = 4, target = true }, + { name = "combat", interval = 2000, chance = 111, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -150, radius = 4, effect = CONST_ME_DRAWBLOOD, target = true }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_percht_queens_island/bonny_bunny.lua b/data-otxserver/monster/quests/the_percht_queens_island/bonny_bunny.lua index 31f0973a2..a9e044fc0 100644 --- a/data-otxserver/monster/quests/the_percht_queens_island/bonny_bunny.lua +++ b/data-otxserver/monster/quests/the_percht_queens_island/bonny_bunny.lua @@ -63,7 +63,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, - { name = "combat", interval = 2000, chance = 50, type = COMBAT_FIREDAMAGE, minDamage = -90, maxDamage = -150, length = 4, spread = 3, effect = CONST_ME_HEARTS, target = false }, + { name = "combat", interval = 2000, chance = 50, type = COMBAT_FIREDAMAGE, minDamage = -90, maxDamage = -150, length = 4, spread = 0, effect = CONST_ME_HEARTS, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/biting_cold.lua b/data-otxserver/monster/quests/the_secret_library/biting_cold.lua index 188854dec..163e005b4 100644 --- a/data-otxserver/monster/quests/the_secret_library/biting_cold.lua +++ b/data-otxserver/monster/quests/the_secret_library/biting_cold.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -450 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/bone_jaw.lua b/data-otxserver/monster/quests/the_secret_library/bone_jaw.lua index 9d4d97cd3..5c8a41c3e 100644 --- a/data-otxserver/monster/quests/the_secret_library/bone_jaw.lua +++ b/data-otxserver/monster/quests/the_secret_library/bone_jaw.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/bosses/ghulosh.lua b/data-otxserver/monster/quests/the_secret_library/bosses/ghulosh.lua index 4324a573e..bd3a786b3 100644 --- a/data-otxserver/monster/quests/the_secret_library/bosses/ghulosh.lua +++ b/data-otxserver/monster/quests/the_secret_library/bosses/ghulosh.lua @@ -105,11 +105,10 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 1000, chance = 100, skill = 150, attack = 280 }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -900, maxDamage = -1500, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -210, maxDamage = -600, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -900, maxDamage = -1500, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -210, maxDamage = -600, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 12, type = COMBAT_DEATHDAMAGE, minDamage = -210, maxDamage = -600, range = 7, radius = 3, effect = CONST_ME_MORTAREA, target = false }, - { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 250 }, - { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAIN, minDamage = -1500, maxDamage = -2000, range = 7, radius = 3, target = false }, + { name = "combat", interval = 2000, chance = 12, type = COMBAT_LIFEDRAIN, minDamage = -1500, maxDamage = -2000, range = 7, radius = 3, effect = CONST_ME_DRAWBLOOD, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/bosses/grand_canon_dominus.lua b/data-otxserver/monster/quests/the_secret_library/bosses/grand_canon_dominus.lua index 324701dac..f6976c6d7 100644 --- a/data-otxserver/monster/quests/the_secret_library/bosses/grand_canon_dominus.lua +++ b/data-otxserver/monster/quests/the_secret_library/bosses/grand_canon_dominus.lua @@ -86,7 +86,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -150, maxDamage = -700 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -720, range = 7, shootEffect = CONST_ANI_ETHEREALSPEAR, target = false }, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -100, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 2000, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -100, maxDamage = -1000, length = 8, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -700, range = 5, radius = 3, effect = CONST_ME_HOLYAREA, target = false }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -700, range = 5, radius = 3, effect = CONST_ME_SMALLCLOUDS, target = false }, } diff --git a/data-otxserver/monster/quests/the_secret_library/bosses/grand_chaplain_gaunder.lua b/data-otxserver/monster/quests/the_secret_library/bosses/grand_chaplain_gaunder.lua index bd22561f5..a4d42046c 100644 --- a/data-otxserver/monster/quests/the_secret_library/bosses/grand_chaplain_gaunder.lua +++ b/data-otxserver/monster/quests/the_secret_library/bosses/grand_chaplain_gaunder.lua @@ -94,7 +94,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -150, maxDamage = -850 }, { name = "combat", interval = 1500, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -380, maxDamage = -890, range = 4, radius = 4, effect = CONST_ME_HITBYPOISON, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -290, maxDamage = -720, range = 7, shootEffect = CONST_ANI_ETHEREALSPEAR, target = false }, - { name = "combat", interval = 1500, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -300, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, + { name = "combat", interval = 1500, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -300, maxDamage = -1000, length = 8, spread = 0, effect = CONST_ME_BLOCKHIT, target = false }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -700, range = 5, radius = 3, effect = CONST_ME_SMALLCLOUDS, target = false }, } diff --git a/data-otxserver/monster/quests/the_secret_library/bosses/grand_commander_soeren.lua b/data-otxserver/monster/quests/the_secret_library/bosses/grand_commander_soeren.lua index 9e8a232f9..e79984a53 100644 --- a/data-otxserver/monster/quests/the_secret_library/bosses/grand_commander_soeren.lua +++ b/data-otxserver/monster/quests/the_secret_library/bosses/grand_commander_soeren.lua @@ -88,7 +88,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -150, maxDamage = -700 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -720, range = 7, shootEffect = CONST_ANI_ROYALSPEAR, target = false }, - { name = "combat", interval = 1000, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -500, maxDamage = -1000, length = 8, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, + { name = "combat", interval = 1000, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -500, maxDamage = -1000, length = 8, spread = 0, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/bosses/thawing_dragon_lord.lua b/data-otxserver/monster/quests/the_secret_library/bosses/thawing_dragon_lord.lua index 032b61dba..fa175a85a 100644 --- a/data-otxserver/monster/quests/the_secret_library/bosses/thawing_dragon_lord.lua +++ b/data-otxserver/monster/quests/the_secret_library/bosses/thawing_dragon_lord.lua @@ -74,7 +74,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -300 }, { name = "ice crystal bomb", interval = 2000, chance = 30, minDamage = -600, maxDamage = -700, target = true }, - { name = "fire wave", interval = 2000, chance = 30, minDamage = -800, maxDamage = -1200, length = 1, spread = 0, target = true }, + { name = "fire wave", interval = 2000, chance = 30, minDamage = -800, maxDamage = -1200, length = 1, spread = 1, effect = CONST_ME_FIREAREA, target = true }, { name = "speed", interval = 1000, chance = 12, speedChange = -250, radius = 6, effect = CONST_ME_HITBYFIRE, target = false, duration = 60000 }, { name = "firefield", interval = 1000, chance = 10, range = 7, radius = 4, shootEffect = CONST_ANI_FIRE, target = true }, } diff --git a/data-otxserver/monster/quests/the_secret_library/bosses/the_scourge_of_oblivion.lua b/data-otxserver/monster/quests/the_secret_library/bosses/the_scourge_of_oblivion.lua index 5965afef0..491b946ad 100644 --- a/data-otxserver/monster/quests/the_secret_library/bosses/the_scourge_of_oblivion.lua +++ b/data-otxserver/monster/quests/the_secret_library/bosses/the_scourge_of_oblivion.lua @@ -130,14 +130,14 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 8, type = COMBAT_FIREDAMAGE, minDamage = -1550, maxDamage = -2550, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -1075, maxDamage = -2405, range = 7, shootEffect = CONST_ANI_ENERGYBALL, effect = CONST_ME_ENERGYHIT, target = true }, { name = "combat", interval = 1000, chance = 20, type = COMBAT_LIFEDRAIN, minDamage = -600, maxDamage = -1500, radius = 8, effect = CONST_ME_LOSEENERGY, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -750, maxDamage = -1200, length = 8, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -750, maxDamage = -1200, length = 8, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, { name = "choking fear drown", interval = 2000, chance = 20, target = false }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -450, maxDamage = -1400, radius = 4, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = true }, { name = "combat", interval = 1000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -800, maxDamage = -2300, radius = 8, effect = CONST_ME_MAGIC_GREEN, target = false }, { name = "speed", interval = 1000, chance = 12, speedChange = -800, radius = 6, effect = CONST_ME_POISONAREA, target = false, duration = 60000 }, { name = "strength", interval = 1000, chance = 8, radius = 5, effect = CONST_ME_HITAREA, target = false }, { name = "combat", interval = 1000, chance = 34, type = COMBAT_FIREDAMAGE, minDamage = -100, maxDamage = -700, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA, target = true }, - { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -950, length = 8, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, + { name = "combat", interval = 1000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -950, length = 8, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/brother_chill.lua b/data-otxserver/monster/quests/the_secret_library/brother_chill.lua index 12400ddc5..7843064c1 100644 --- a/data-otxserver/monster/quests/the_secret_library/brother_chill.lua +++ b/data-otxserver/monster/quests/the_secret_library/brother_chill.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/brother_freeze.lua b/data-otxserver/monster/quests/the_secret_library/brother_freeze.lua index c940834f4..9268ae77e 100644 --- a/data-otxserver/monster/quests/the_secret_library/brother_freeze.lua +++ b/data-otxserver/monster/quests/the_secret_library/brother_freeze.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/concentrated_death.lua b/data-otxserver/monster/quests/the_secret_library/concentrated_death.lua index 35f46d2ea..d83987622 100644 --- a/data-otxserver/monster/quests/the_secret_library/concentrated_death.lua +++ b/data-otxserver/monster/quests/the_secret_library/concentrated_death.lua @@ -67,7 +67,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/dazed_leaf_golem.lua b/data-otxserver/monster/quests/the_secret_library/dazed_leaf_golem.lua index c42fe94b9..06961bae6 100644 --- a/data-otxserver/monster/quests/the_secret_library/dazed_leaf_golem.lua +++ b/data-otxserver/monster/quests/the_secret_library/dazed_leaf_golem.lua @@ -78,7 +78,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/demon_blood.lua b/data-otxserver/monster/quests/the_secret_library/demon_blood.lua index 88b762e2c..166395f6a 100644 --- a/data-otxserver/monster/quests/the_secret_library/demon_blood.lua +++ b/data-otxserver/monster/quests/the_secret_library/demon_blood.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/demon_slave.lua b/data-otxserver/monster/quests/the_secret_library/demon_slave.lua index dc40725c2..898838c9a 100644 --- a/data-otxserver/monster/quests/the_secret_library/demon_slave.lua +++ b/data-otxserver/monster/quests/the_secret_library/demon_slave.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/furious_scorpion.lua b/data-otxserver/monster/quests/the_secret_library/furious_scorpion.lua index 5afc7f32c..8d87526b7 100644 --- a/data-otxserver/monster/quests/the_secret_library/furious_scorpion.lua +++ b/data-otxserver/monster/quests/the_secret_library/furious_scorpion.lua @@ -66,7 +66,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/ghulosh'_deathgaze.lua b/data-otxserver/monster/quests/the_secret_library/ghulosh'_deathgaze.lua index 43cae1f6f..f5b80d9a2 100644 --- a/data-otxserver/monster/quests/the_secret_library/ghulosh'_deathgaze.lua +++ b/data-otxserver/monster/quests/the_secret_library/ghulosh'_deathgaze.lua @@ -63,7 +63,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, lenght = 7, spread = 1, minDamage = -1200, maxDamage = -1800, target = false }, -- -_death_beam(1200-1800) + { name = "combat", interval = 2000, chance = 25, type = COMBAT_DEATHDAMAGE, lenght = 7, spread = 0, minDamage = -1200, maxDamage = -1800, effect = CONST_ME_MORTAREA, target = false }, -- -_death_beam(1200-1800) } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/imp_intruder.lua b/data-otxserver/monster/quests/the_secret_library/imp_intruder.lua index 15b824d74..09a216cda 100644 --- a/data-otxserver/monster/quests/the_secret_library/imp_intruder.lua +++ b/data-otxserver/monster/quests/the_secret_library/imp_intruder.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/invading_demon.lua b/data-otxserver/monster/quests/the_secret_library/invading_demon.lua index b14dea67f..ad10e9b6f 100644 --- a/data-otxserver/monster/quests/the_secret_library/invading_demon.lua +++ b/data-otxserver/monster/quests/the_secret_library/invading_demon.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/jailer.lua b/data-otxserver/monster/quests/the_secret_library/jailer.lua index c3dc4a604..bf066fd01 100644 --- a/data-otxserver/monster/quests/the_secret_library/jailer.lua +++ b/data-otxserver/monster/quests/the_secret_library/jailer.lua @@ -72,7 +72,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/librarian.lua b/data-otxserver/monster/quests/the_secret_library/librarian.lua index fe87ae2ff..83850e0be 100644 --- a/data-otxserver/monster/quests/the_secret_library/librarian.lua +++ b/data-otxserver/monster/quests/the_secret_library/librarian.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/lokathmor.lua b/data-otxserver/monster/quests/the_secret_library/lokathmor.lua index 537b2584d..be0e44216 100644 --- a/data-otxserver/monster/quests/the_secret_library/lokathmor.lua +++ b/data-otxserver/monster/quests/the_secret_library/lokathmor.lua @@ -106,7 +106,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 150, attack = 250 }, - { name = "combat", interval = 2000, chance = 8, type = COMBAT_LIFEDRAIN, minDamage = -1100, maxDamage = -2800, range = 7, radius = 5, shootEffect = CONST_ANI_WHIRLWINDAXE, target = true }, + { name = "combat", interval = 2000, chance = 8, type = COMBAT_LIFEDRAIN, minDamage = -1100, maxDamage = -2800, range = 7, radius = 5, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_DRAWBLOOD, target = true }, { name = "combat", interval = 1000, chance = 8, type = COMBAT_DEATHDAMAGE, minDamage = -800, maxDamage = -1900, radius = 9, effect = CONST_ME_MORTAREA, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 5000, chance = 18, minDamage = -1100, maxDamage = -2500, effect = CONST_ME_HITBYPOISON, target = false }, diff --git a/data-otxserver/monster/quests/the_secret_library/lokathmor_stuck.lua b/data-otxserver/monster/quests/the_secret_library/lokathmor_stuck.lua index 0c75efd91..9f2c99b93 100644 --- a/data-otxserver/monster/quests/the_secret_library/lokathmor_stuck.lua +++ b/data-otxserver/monster/quests/the_secret_library/lokathmor_stuck.lua @@ -59,7 +59,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 150, attack = 250 }, - { name = "combat", interval = 2000, chance = 8, type = COMBAT_LIFEDRAIN, minDamage = -2500, maxDamage = -2800, range = 7, radius = 5, shootEffect = CONST_ANI_WHIRLWINDAXE, target = true }, + { name = "combat", interval = 2000, chance = 8, type = COMBAT_LIFEDRAIN, minDamage = -2500, maxDamage = -2800, range = 7, radius = 5, shootEffect = CONST_ANI_WHIRLWINDAXE, effect = CONST_ME_DRAWBLOOD, target = true }, { name = "combat", interval = 1000, chance = 8, type = COMBAT_DEATHDAMAGE, minDamage = -1500, maxDamage = -1900, radius = 9, effect = CONST_ME_MORTAREA, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 5000, chance = 18, minDamage = -2000, maxDamage = -2500, effect = CONST_ME_HITBYPOISON, target = false }, diff --git a/data-otxserver/monster/quests/the_secret_library/malicious_minion.lua b/data-otxserver/monster/quests/the_secret_library/malicious_minion.lua index ad77095f6..63c7867a8 100644 --- a/data-otxserver/monster/quests/the_secret_library/malicious_minion.lua +++ b/data-otxserver/monster/quests/the_secret_library/malicious_minion.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/mazzinor.lua b/data-otxserver/monster/quests/the_secret_library/mazzinor.lua index a9be1bc32..b5521c454 100644 --- a/data-otxserver/monster/quests/the_secret_library/mazzinor.lua +++ b/data-otxserver/monster/quests/the_secret_library/mazzinor.lua @@ -98,8 +98,8 @@ monster.attacks = { { name = "divine missile", interval = 2000, chance = 10, minDamage = -135, maxDamage = -700, target = true }, { name = "berserk", interval = 2000, chance = 20, minDamage = -90, maxDamage = -500, range = 7, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -135, maxDamage = -280, range = 7, radius = 5, effect = CONST_ME_MAGIC_BLUE, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -210, maxDamage = -600, length = 8, spread = 3, effect = CONST_ME_ENERGYAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -210, maxDamage = -700, length = 8, spread = 3, effect = CONST_ME_HOLYAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -210, maxDamage = -600, length = 8, spread = 0, effect = CONST_ME_ENERGYAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_HOLYDAMAGE, minDamage = -210, maxDamage = -700, length = 8, spread = 0, effect = CONST_ME_HOLYAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/mean_minion.lua b/data-otxserver/monster/quests/the_secret_library/mean_minion.lua index 711ba72ec..32146811c 100644 --- a/data-otxserver/monster/quests/the_secret_library/mean_minion.lua +++ b/data-otxserver/monster/quests/the_secret_library/mean_minion.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/ravenous_beyondling.lua b/data-otxserver/monster/quests/the_secret_library/ravenous_beyondling.lua index 56491de99..28f5f67d2 100644 --- a/data-otxserver/monster/quests/the_secret_library/ravenous_beyondling.lua +++ b/data-otxserver/monster/quests/the_secret_library/ravenous_beyondling.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/rift_breacher.lua b/data-otxserver/monster/quests/the_secret_library/rift_breacher.lua index 24cf9b26f..c7e5c081d 100644 --- a/data-otxserver/monster/quests/the_secret_library/rift_breacher.lua +++ b/data-otxserver/monster/quests/the_secret_library/rift_breacher.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/rift_minion.lua b/data-otxserver/monster/quests/the_secret_library/rift_minion.lua index ae1dbfbb6..521aec483 100644 --- a/data-otxserver/monster/quests/the_secret_library/rift_minion.lua +++ b/data-otxserver/monster/quests/the_secret_library/rift_minion.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/rift_spawn.lua b/data-otxserver/monster/quests/the_secret_library/rift_spawn.lua index 69256a4a7..361699ca0 100644 --- a/data-otxserver/monster/quests/the_secret_library/rift_spawn.lua +++ b/data-otxserver/monster/quests/the_secret_library/rift_spawn.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/spawn_of_havoc.lua b/data-otxserver/monster/quests/the_secret_library/spawn_of_havoc.lua index f53a3c675..4a563a6a1 100644 --- a/data-otxserver/monster/quests/the_secret_library/spawn_of_havoc.lua +++ b/data-otxserver/monster/quests/the_secret_library/spawn_of_havoc.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/stolen_knowledge_of_armor.lua b/data-otxserver/monster/quests/the_secret_library/stolen_knowledge_of_armor.lua index 0191f7d3d..1905e8a29 100644 --- a/data-otxserver/monster/quests/the_secret_library/stolen_knowledge_of_armor.lua +++ b/data-otxserver/monster/quests/the_secret_library/stolen_knowledge_of_armor.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/stolen_knowledge_of_healing.lua b/data-otxserver/monster/quests/the_secret_library/stolen_knowledge_of_healing.lua index 17491a7b4..ffe609dc4 100644 --- a/data-otxserver/monster/quests/the_secret_library/stolen_knowledge_of_healing.lua +++ b/data-otxserver/monster/quests/the_secret_library/stolen_knowledge_of_healing.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/stolen_knowledge_of_lifesteal.lua b/data-otxserver/monster/quests/the_secret_library/stolen_knowledge_of_lifesteal.lua index 3ff2ce520..ec3ccaefa 100644 --- a/data-otxserver/monster/quests/the_secret_library/stolen_knowledge_of_lifesteal.lua +++ b/data-otxserver/monster/quests/the_secret_library/stolen_knowledge_of_lifesteal.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/stolen_knowledge_of_spells.lua b/data-otxserver/monster/quests/the_secret_library/stolen_knowledge_of_spells.lua index 1e319b2a5..58fff59a2 100644 --- a/data-otxserver/monster/quests/the_secret_library/stolen_knowledge_of_spells.lua +++ b/data-otxserver/monster/quests/the_secret_library/stolen_knowledge_of_spells.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/stolen_knowledge_of_summoning.lua b/data-otxserver/monster/quests/the_secret_library/stolen_knowledge_of_summoning.lua index c591e74ca..87c05596b 100644 --- a/data-otxserver/monster/quests/the_secret_library/stolen_knowledge_of_summoning.lua +++ b/data-otxserver/monster/quests/the_secret_library/stolen_knowledge_of_summoning.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/the_blazing_rose.lua b/data-otxserver/monster/quests/the_secret_library/the_blazing_rose.lua index 1eca0b0b5..3eb95e76a 100644 --- a/data-otxserver/monster/quests/the_secret_library/the_blazing_rose.lua +++ b/data-otxserver/monster/quests/the_secret_library/the_blazing_rose.lua @@ -69,7 +69,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/the_book_of_secrets.lua b/data-otxserver/monster/quests/the_secret_library/the_book_of_secrets.lua index 8872dfba1..4058cb786 100644 --- a/data-otxserver/monster/quests/the_secret_library/the_book_of_secrets.lua +++ b/data-otxserver/monster/quests/the_secret_library/the_book_of_secrets.lua @@ -58,7 +58,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/the_devourer_of_secrets.lua b/data-otxserver/monster/quests/the_secret_library/the_devourer_of_secrets.lua index c49ef79f6..e08e3629e 100644 --- a/data-otxserver/monster/quests/the_secret_library/the_devourer_of_secrets.lua +++ b/data-otxserver/monster/quests/the_secret_library/the_devourer_of_secrets.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/the_diamond_blossom.lua b/data-otxserver/monster/quests/the_secret_library/the_diamond_blossom.lua index be4d55a6d..03fc38bff 100644 --- a/data-otxserver/monster/quests/the_secret_library/the_diamond_blossom.lua +++ b/data-otxserver/monster/quests/the_secret_library/the_diamond_blossom.lua @@ -69,7 +69,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/the_lily_of_night.lua b/data-otxserver/monster/quests/the_secret_library/the_lily_of_night.lua index 457aeaa6f..9bf433933 100644 --- a/data-otxserver/monster/quests/the_secret_library/the_lily_of_night.lua +++ b/data-otxserver/monster/quests/the_secret_library/the_lily_of_night.lua @@ -69,7 +69,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/the_scion_of_havoc.lua b/data-otxserver/monster/quests/the_secret_library/the_scion_of_havoc.lua index 23267a626..b76af5f82 100644 --- a/data-otxserver/monster/quests/the_secret_library/the_scion_of_havoc.lua +++ b/data-otxserver/monster/quests/the_secret_library/the_scion_of_havoc.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/the_spellstealer.lua b/data-otxserver/monster/quests/the_secret_library/the_spellstealer.lua index 810ab9ebd..8e304a3a2 100644 --- a/data-otxserver/monster/quests/the_secret_library/the_spellstealer.lua +++ b/data-otxserver/monster/quests/the_secret_library/the_spellstealer.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/war_servant.lua b/data-otxserver/monster/quests/the_secret_library/war_servant.lua index 8bbf980fe..cfbb9c5af 100644 --- a/data-otxserver/monster/quests/the_secret_library/war_servant.lua +++ b/data-otxserver/monster/quests/the_secret_library/war_servant.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/quests/the_secret_library/yalahari_despoiler.lua b/data-otxserver/monster/quests/the_secret_library/yalahari_despoiler.lua index 892e0d12a..a3e52e37e 100644 --- a/data-otxserver/monster/quests/the_secret_library/yalahari_despoiler.lua +++ b/data-otxserver/monster/quests/the_secret_library/yalahari_despoiler.lua @@ -64,7 +64,7 @@ monster.loot = {} monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200 }, { name = "combat", interval = 1000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_POFF, target = false }, - { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 3, effect = CONST_ME_POFF, target = false }, + { name = "combat", interval = 1000, chance = 12, type = COMBAT_ENERGYDAMAGE, minDamage = 0, maxDamage = -175, length = 3, spread = 0, effect = CONST_ME_POFF, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/raids/fernfang.lua b/data-otxserver/monster/raids/fernfang.lua index 70e03ff04..f33b99834 100644 --- a/data-otxserver/monster/raids/fernfang.lua +++ b/data-otxserver/monster/raids/fernfang.lua @@ -66,7 +66,7 @@ monster.summon = { monster.voices = { interval = 5000, chance = 10, - { text = "You desacrated this place!", yell = false }, + { text = "You desecrated this place!", yell = false }, { text = "Yoooohuuuu!", yell = false }, { text = "I will cleanse this isle!", yell = false }, { text = "Grrrrrrr", yell = false }, diff --git a/data-otxserver/monster/raids/ferumbras.lua b/data-otxserver/monster/raids/ferumbras.lua index 40df72b86..c3dfea647 100644 --- a/data-otxserver/monster/raids/ferumbras.lua +++ b/data-otxserver/monster/raids/ferumbras.lua @@ -129,11 +129,11 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -350 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_MANADRAIN, minDamage = -500, maxDamage = -700, range = 7, effect = CONST_ME_MAGIC_RED, target = false }, - { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -450, length = 8, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "combat", interval = 2000, chance = 25, type = COMBAT_LIFEDRAIN, minDamage = -300, maxDamage = -450, length = 8, spread = 0, effect = CONST_ME_HITBYPOISON, target = false }, { name = "combat", interval = 2000, chance = 21, type = COMBAT_LIFEDRAIN, minDamage = -450, maxDamage = -500, radius = 6, effect = CONST_ME_POFF, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 15, minDamage = -20, maxDamage = -40, range = 7, shootEffect = CONST_ANI_POISON, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -900, maxDamage = -1000, range = 4, radius = 3, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_LIFEDRAIN, minDamage = -900, maxDamage = -1000, range = 4, radius = 3, effect = CONST_ME_DRAWBLOOD, target = false }, -- energy damage { name = "condition", type = CONDITION_ENERGY, interval = 2000, chance = 18, minDamage = -300, maxDamage = -400, radius = 6, effect = CONST_ME_ENERGYHIT, target = false }, -- fire diff --git a/data-otxserver/monster/raids/furyosa.lua b/data-otxserver/monster/raids/furyosa.lua index 3d5ddc6df..acbf97112 100644 --- a/data-otxserver/monster/raids/furyosa.lua +++ b/data-otxserver/monster/raids/furyosa.lua @@ -99,9 +99,9 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -625 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_DEATHDAMAGE, minDamage = -260, maxDamage = -310, radius = 6, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -210, length = 8, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -300, length = 8, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -800, length = 8, spread = 3, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_MANADRAIN, minDamage = -50, maxDamage = -210, length = 8, spread = 0, effect = CONST_ME_BLOCKHIT, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_FIREDAMAGE, minDamage = -200, maxDamage = -300, length = 8, spread = 0, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -800, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 3000, chance = 18, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -150, radius = 5, effect = CONST_ME_GROUNDSHAKER, target = true }, { name = "fury skill reducer", interval = 2000, chance = 5, target = false }, } diff --git a/data-otxserver/monster/raids/ghazbaran.lua b/data-otxserver/monster/raids/ghazbaran.lua index da656d181..5f5765567 100644 --- a/data-otxserver/monster/raids/ghazbaran.lua +++ b/data-otxserver/monster/raids/ghazbaran.lua @@ -129,7 +129,7 @@ monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -2191 }, { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -250, maxDamage = -500, range = 7, radius = 6, effect = CONST_ME_HITAREA, target = false }, { name = "combat", interval = 3000, chance = 34, type = COMBAT_PHYSICALDAMAGE, minDamage = -120, maxDamage = -500, range = 7, radius = 1, shootEffect = CONST_ANI_WHIRLWINDSWORD, target = true }, - { name = "combat", interval = 4000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -800, length = 8, spread = 3, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 4000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -800, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 3000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -480, range = 14, radius = 5, effect = CONST_ME_POFF, target = false }, { name = "combat", interval = 4000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -650, range = 7, radius = 13, effect = CONST_ME_BLOCKHIT, target = false }, { name = "combat", interval = 4000, chance = 18, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -600, radius = 14, effect = CONST_ME_LOSEENERGY, target = false }, diff --git a/data-otxserver/monster/raids/mawhawk.lua b/data-otxserver/monster/raids/mawhawk.lua index 9e879512c..f00407ca3 100644 --- a/data-otxserver/monster/raids/mawhawk.lua +++ b/data-otxserver/monster/raids/mawhawk.lua @@ -91,7 +91,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 90, attack = 90 }, - { name = "combat", interval = 1800, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -685, length = 7, spread = 3, effect = CONST_ME_STONES, target = false }, + { name = "combat", interval = 1800, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -685, length = 7, spread = 0, effect = CONST_ME_STONES, target = false }, { name = "combat", interval = 2000, chance = 9, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -590, radius = 6, effect = CONST_ME_BIGPLANTS, target = false }, } diff --git a/data-otxserver/monster/raids/ocyakao.lua b/data-otxserver/monster/raids/ocyakao.lua index b2dfb1a4b..2e036c083 100644 --- a/data-otxserver/monster/raids/ocyakao.lua +++ b/data-otxserver/monster/raids/ocyakao.lua @@ -87,7 +87,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 25, attack = 50 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 70, maxDamage = -185, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLSTONE, target = true }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_PHYSICALDAMAGE, minDamage = 70, maxDamage = -185, range = 7, radius = 3, shootEffect = CONST_ANI_SMALLSTONE, effect = CONST_ME_HITAREA, target = true }, } monster.defenses = { diff --git a/data-otxserver/monster/raids/the_pale_count.lua b/data-otxserver/monster/raids/the_pale_count.lua index c3cc0e3df..31a40bcff 100644 --- a/data-otxserver/monster/raids/the_pale_count.lua +++ b/data-otxserver/monster/raids/the_pale_count.lua @@ -113,7 +113,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 80, attack = 120 }, - { name = "speed", interval = 1000, chance = 17, speedChange = -600, range = 7, radius = 4, target = true, duration = 1500 }, + { name = "speed", interval = 1000, chance = 17, speedChange = -600, range = 7, radius = 4, effect = CONST_ME_MAGIC_RED, target = true, duration = 1500 }, { name = "combat", interval = 2000, chance = 21, type = COMBAT_ICEDAMAGE, minDamage = -130, maxDamage = -350, range = 6, radius = 2, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_GIANTICE, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_MANADRAIN, minDamage = -60, maxDamage = -120, range = 7, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_CARNIPHILA, target = false }, } diff --git a/data-otxserver/monster/raids/yakchal.lua b/data-otxserver/monster/raids/yakchal.lua index 840d370a8..b2314a2ec 100644 --- a/data-otxserver/monster/raids/yakchal.lua +++ b/data-otxserver/monster/raids/yakchal.lua @@ -104,7 +104,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -389 }, { name = "combat", interval = 2000, chance = 18, type = COMBAT_ICEDAMAGE, minDamage = 0, maxDamage = -430, radius = 4, shootEffect = CONST_ANI_SMALLICE, effect = CONST_ME_ICEAREA, target = true }, - { name = "combat", interval = 3000, chance = 34, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -300, range = 7, radius = 3, shootEffect = CONST_ANI_SNOWBALL, target = true }, + { name = "combat", interval = 3000, chance = 34, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = -300, range = 7, radius = 3, shootEffect = CONST_ANI_SNOWBALL, effect = CONST_ME_HITAREA, target = true }, { name = "speed", interval = 2000, chance = 10, speedChange = -300, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 20000 }, } diff --git a/data-otxserver/monster/reptiles/carnivostrich.lua b/data-otxserver/monster/reptiles/carnivostrich.lua index e5fa7948d..e0e0e3625 100644 --- a/data-otxserver/monster/reptiles/carnivostrich.lua +++ b/data-otxserver/monster/reptiles/carnivostrich.lua @@ -91,12 +91,12 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500, condition = { type = CONDITION_POISON, totalDamage = 480, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -386, maxDamage = -480, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = true }, - { name = "combat", interval = 2000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -135, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = true }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_DEATHDAMAGE, minDamage = -350, maxDamage = -495, length = 7, spread = 0, effect = CONST_ME_BLACKSMOKE, target = false }, - { name = "combat", interval = 2000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -280, maxDamage = -320, length = 7, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, - { name = "energy chain", interval = 2000, chance = 20, minDamage = -302, maxDamage = -309, range = 3, target = true }, - { name = "thunderstorm ring", interval = 2000, chance = 20, minDamage = -325, maxDamage = -415 }, + { name = "combat", interval = 2500, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -386, maxDamage = -480, range = 7, shootEffect = CONST_ANI_LARGEROCK, target = true }, + { name = "combat", interval = 3000, chance = 40, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -135, range = 7, shootEffect = CONST_ANI_SMALLSTONE, target = true }, + { name = "combat", interval = 3500, chance = 30, type = COMBAT_DEATHDAMAGE, minDamage = -350, maxDamage = -495, length = 7, spread = 0, effect = CONST_ME_BLACKSMOKE, target = false }, + { name = "combat", interval = 4000, chance = 30, type = COMBAT_ENERGYDAMAGE, minDamage = -280, maxDamage = -320, length = 7, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "energy chain", interval = 4500, chance = 20, minDamage = -302, maxDamage = -309, range = 3, target = true }, + { name = "thunderstorm ring", interval = 5000, chance = 20, minDamage = -325, maxDamage = -415 }, } monster.defenses = { diff --git a/data-otxserver/monster/reptiles/two-headed_turtle.lua b/data-otxserver/monster/reptiles/two-headed_turtle.lua index 6ae829f08..89d8b24c9 100644 --- a/data-otxserver/monster/reptiles/two-headed_turtle.lua +++ b/data-otxserver/monster/reptiles/two-headed_turtle.lua @@ -91,7 +91,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -300 }, { name = "combat", interval = 2500, chance = 35, type = COMBAT_ENERGYDAMAGE, minDamage = -100, maxDamage = -300, radius = 4, target = false, effect = CONST_ME_ENERGYHIT }, - { name = "combat", interval = 2000, chance = 35, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -300, radius = 3, target = true, effect = CONST_ME_GHOSTLYBITE }, + { name = "combat", interval = 2000, chance = 35, type = COMBAT_LIFEDRAIN, minDamage = -100, maxDamage = -300, radius = 3, target = true, effect = CONST_ME_GHOSTLY_BITE }, { name = "combat", interval = 3000, chance = 45, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -300, range = 1, radius = 1, target = true, effect = CONST_ME_EXPLOSIONAREA }, } diff --git a/data-otxserver/monster/reptiles/young_goanna.lua b/data-otxserver/monster/reptiles/young_goanna.lua index 891251d22..5f68752fb 100644 --- a/data-otxserver/monster/reptiles/young_goanna.lua +++ b/data-otxserver/monster/reptiles/young_goanna.lua @@ -94,8 +94,10 @@ monster.loot = { } monster.attacks = { - { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -230, condition = { type = CONDITION_POISON, totalDamage = 15, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -490, range = 3, radius = 1, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_EXPLOSIONHIT, target = true }, + { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -500, condition = { type = CONDITION_POISON, totalDamage = 200, interval = 4000 } }, + { name = "combat", interval = 2500, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -490, range = 3, shootEffect = CONST_ANI_EARTH, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 3000, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -500, radius = 1, effect = CONST_ME_GROUNDSHAKER, target = false }, + { name = "combat", interval = 3500, chance = 30, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -490, lenght = 8, spread = 0, effect = CONST_ME_GREEN_RINGS, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/undeads/bonebeast.lua b/data-otxserver/monster/undeads/bonebeast.lua index 1ac169d5f..f97d29cdb 100644 --- a/data-otxserver/monster/undeads/bonebeast.lua +++ b/data-otxserver/monster/undeads/bonebeast.lua @@ -96,7 +96,7 @@ monster.attacks = { -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -50, maxDamage = -60, radius = 3, effect = CONST_ME_POISONAREA, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -70, maxDamage = -80, length = 6, spread = 3, effect = CONST_ME_POISONAREA, target = false }, + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -70, maxDamage = -80, length = 6, spread = 0, effect = CONST_ME_POISONAREA, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -600, target = true, duration = 13000 }, } diff --git a/data-otxserver/monster/undeads/cursed_prospector.lua b/data-otxserver/monster/undeads/cursed_prospector.lua index b8e184b22..d9cca0090 100644 --- a/data-otxserver/monster/undeads/cursed_prospector.lua +++ b/data-otxserver/monster/undeads/cursed_prospector.lua @@ -89,8 +89,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -200 }, - { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, target = true }, - { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -550, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -550, length = 4, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -550, radius = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 1700, chance = 35, type = COMBAT_HOLYDAMAGE, minDamage = -250, maxDamage = -550, radius = 3, effect = CONST_ME_HOLYAREA, target = false }, { name = "combat", interval = 2000, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -550, range = 4, radius = 4, effect = CONST_ME_ENERGYAREA, target = true }, diff --git a/data-otxserver/monster/undeads/evil_prospector.lua b/data-otxserver/monster/undeads/evil_prospector.lua index 6691a119f..5b12a7676 100644 --- a/data-otxserver/monster/undeads/evil_prospector.lua +++ b/data-otxserver/monster/undeads/evil_prospector.lua @@ -85,8 +85,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -500 }, - { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, target = true }, - { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -550, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -250, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -550, length = 4, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -250, maxDamage = -550, radius = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 1700, chance = 35, type = COMBAT_HOLYDAMAGE, minDamage = -250, maxDamage = -400, radius = 3, effect = CONST_ME_HOLYAREA, target = false }, { name = "combat", interval = 1700, chance = 13, type = COMBAT_ENERGYDAMAGE, minDamage = -400, maxDamage = -450, range = 4, radius = 4, effect = CONST_ME_ENERGYAREA, target = true }, diff --git a/data-otxserver/monster/undeads/falcon_knight.lua b/data-otxserver/monster/undeads/falcon_knight.lua index 1f2fb03b1..54a231307 100644 --- a/data-otxserver/monster/undeads/falcon_knight.lua +++ b/data-otxserver/monster/undeads/falcon_knight.lua @@ -105,7 +105,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, { name = "combat", interval = 2000, chance = 18, type = COMBAT_EARTHDAMAGE, minDamage = -400, maxDamage = -500, radius = 2, effect = CONST_ME_GROUNDSHAKER, target = false }, - { name = "combat", interval = 2000, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -290, maxDamage = -360, length = 5, spread = 3, effect = CONST_ME_BLOCKHIT, target = false }, + { name = "combat", interval = 2000, chance = 14, type = COMBAT_HOLYDAMAGE, minDamage = -290, maxDamage = -360, length = 5, spread = 0, effect = CONST_ME_BLOCKHIT, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/undeads/falcon_paladin.lua b/data-otxserver/monster/undeads/falcon_paladin.lua index d9002a289..799143fe9 100644 --- a/data-otxserver/monster/undeads/falcon_paladin.lua +++ b/data-otxserver/monster/undeads/falcon_paladin.lua @@ -98,7 +98,7 @@ monster.attacks = { { name = "combat", interval = 2000, chance = 50, type = COMBAT_PHYSICALDAMAGE, minDamage = -400, maxDamage = -550, range = 5, shootEffect = CONST_ANI_ROYALSPEAR, target = true }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = -200, maxDamage = 500, range = 5, shootEffect = CONST_ANI_BOLT, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_ENERGYDAMAGE, minDamage = -350, maxDamage = -450, range = 7, radius = 2, shootEffect = CONST_ANI_POWERBOLT, effect = CONST_ME_ENERGYHIT, target = true }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -350, length = 5, spread = 3, effect = CONST_ME_PURPLEENERGY, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_ENERGYDAMAGE, minDamage = -250, maxDamage = -350, length = 5, spread = 0, effect = CONST_ME_PURPLEENERGY, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/undeads/flimsy_lost_soul.lua b/data-otxserver/monster/undeads/flimsy_lost_soul.lua index 5336042de..7ff4d5bc6 100644 --- a/data-otxserver/monster/undeads/flimsy_lost_soul.lua +++ b/data-otxserver/monster/undeads/flimsy_lost_soul.lua @@ -90,8 +90,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -500 }, - { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, target = true }, - { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -550, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -550, length = 4, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -550, radius = 3, effect = CONST_ME_MORTAREA, target = false }, } diff --git a/data-otxserver/monster/undeads/freakish_lost_soul.lua b/data-otxserver/monster/undeads/freakish_lost_soul.lua index 6f00c3eb7..ec039b48d 100644 --- a/data-otxserver/monster/undeads/freakish_lost_soul.lua +++ b/data-otxserver/monster/undeads/freakish_lost_soul.lua @@ -87,8 +87,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -500 }, - { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, target = true }, - { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -550, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -550, length = 4, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -150, maxDamage = -550, radius = 4, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 1700, chance = 20, type = COMBAT_ENERGYDAMAGE, minDamage = -150, maxDamage = -550, radius = 4, effect = CONST_ME_ENERGYAREA, target = false }, } diff --git a/data-otxserver/monster/undeads/grim_reaper.lua b/data-otxserver/monster/undeads/grim_reaper.lua index 107a0ece5..b43c7cc64 100644 --- a/data-otxserver/monster/undeads/grim_reaper.lua +++ b/data-otxserver/monster/undeads/grim_reaper.lua @@ -102,9 +102,9 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -320 }, { name = "combat", interval = 2000, chance = 20, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -165, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_MORTAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -350, maxDamage = -720, length = 8, spread = 3, target = false }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 7, spread = 3, effect = CONST_ME_EXPLOSIONAREA, target = false }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -275, radius = 4, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -350, maxDamage = -720, length = 8, spread = 0, effect = CONST_ME_MORTAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = 0, maxDamage = -300, length = 7, spread = 0, effect = CONST_ME_EXPLOSIONAREA, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -225, maxDamage = -275, radius = 4, effect = CONST_ME_MORTAREA, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/undeads/lich.lua b/data-otxserver/monster/undeads/lich.lua index 811ee43d1..f6caeb4ae 100644 --- a/data-otxserver/monster/undeads/lich.lua +++ b/data-otxserver/monster/undeads/lich.lua @@ -114,8 +114,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -75 }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -140, maxDamage = -190, length = 7, spread = 3, effect = CONST_ME_MAGIC_RED, target = false }, -- poison - { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -300, maxDamage = -400, length = 7, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -140, maxDamage = -190, length = 7, spread = 0, effect = CONST_ME_MAGIC_RED, target = false }, -- poison + { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -300, maxDamage = -400, length = 7, spread = 0, effect = CONST_ME_HITBYPOISON, target = false }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -200, maxDamage = -245, range = 1, effect = CONST_ME_MAGIC_RED, target = true }, { name = "speed", interval = 2000, chance = 15, speedChange = -300, range = 7, effect = CONST_ME_MAGIC_RED, target = false, duration = 30000 }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_LIFEDRAIN, minDamage = -130, maxDamage = -195, radius = 3, effect = CONST_ME_MAGIC_RED, target = false }, diff --git a/data-otxserver/monster/undeads/mean_lost_soul.lua b/data-otxserver/monster/undeads/mean_lost_soul.lua index aa4ded25b..8c25b2c4f 100644 --- a/data-otxserver/monster/undeads/mean_lost_soul.lua +++ b/data-otxserver/monster/undeads/mean_lost_soul.lua @@ -89,8 +89,8 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = -100, maxDamage = -500 }, - { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, target = true }, - { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -550, length = 4, spread = 3, effect = CONST_ME_ENERGYHIT, target = false }, + { name = "combat", interval = 1700, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -300, maxDamage = -550, radius = 3, shootEffect = CONST_ANI_ENVENOMEDARROW, effect = CONST_ME_HITBYPOISON, target = true }, + { name = "combat", interval = 1700, chance = 25, type = COMBAT_ENERGYDAMAGE, minDamage = -300, maxDamage = -550, length = 4, spread = 0, effect = CONST_ME_ENERGYHIT, target = false }, { name = "combat", interval = 1700, chance = 35, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -550, radius = 3, effect = CONST_ME_MORTAREA, target = false }, } diff --git a/data-otxserver/monster/undeads/paladin's_apparition.lua b/data-otxserver/monster/undeads/paladin's_apparition.lua index 440eea9a0..066266e70 100644 --- a/data-otxserver/monster/undeads/paladin's_apparition.lua +++ b/data-otxserver/monster/undeads/paladin's_apparition.lua @@ -100,7 +100,7 @@ monster.attacks = { { name = "ice chain", interval = 5000, chance = 20, minDamage = -1050, maxDamage = -1300, range = 7 }, { name = "combat", interval = 9500, chance = 52, type = COMBAT_HOLYDAMAGE, minDamage = -1050, maxDamage = -1300, range = 7, shootEffect = CONST_ANI_HOLY, effect = CONST_ME_HOLYDAMAGE, target = true }, { name = "combat", interval = 3000, chance = 22, type = COMBAT_HOLYDAMAGE, minDamage = -1200, maxDamage = -1400, radius = 4, effect = CONST_ME_HOLYAREA, target = false }, - { name = "combat", interval = 4000, chance = 23, type = COMBAT_PHYSICALDAMAGE, minDamage = -900, maxDamage = -1350, radius = 4, shootEffect = CONST_ANI_EXPLOSION, range = 7, target = true }, + { name = "combat", interval = 4000, chance = 23, type = COMBAT_PHYSICALDAMAGE, minDamage = -900, maxDamage = -1350, radius = 4, shootEffect = CONST_ANI_EXPLOSION, range = 7, effect = CONST_ME_EXPLOSIONHIT, target = true }, } monster.defenses = { diff --git a/data-otxserver/monster/undeads/rot_elemental.lua b/data-otxserver/monster/undeads/rot_elemental.lua index ba7944934..2c4146870 100644 --- a/data-otxserver/monster/undeads/rot_elemental.lua +++ b/data-otxserver/monster/undeads/rot_elemental.lua @@ -96,7 +96,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, skill = 58, attack = 50, condition = { type = CONDITION_POISON, totalDamage = 280, interval = 4000 } }, { name = "combat", interval = 2000, chance = 13, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -250, range = 7, radius = 3, shootEffect = CONST_ANI_GLOOTHSPEAR, effect = CONST_ME_POISONAREA, target = true }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -230, length = 6, spread = 3, effect = CONST_ME_POISONAREA, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -150, maxDamage = -230, length = 6, spread = 0, effect = CONST_ME_POISONAREA, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -200, maxDamage = -300, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, { name = "rot elemental paralyze", interval = 2000, chance = 11, target = false }, diff --git a/data-otxserver/monster/undeads/undead_dragon.lua b/data-otxserver/monster/undeads/undead_dragon.lua index 5e604be6c..0dc1652d8 100644 --- a/data-otxserver/monster/undeads/undead_dragon.lua +++ b/data-otxserver/monster/undeads/undead_dragon.lua @@ -109,7 +109,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -480 }, - { name = "combat", interval = 2000, chance = 5, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -400, range = 7, radius = 4, target = true }, + { name = "combat", interval = 2000, chance = 5, type = COMBAT_PHYSICALDAMAGE, minDamage = -300, maxDamage = -400, range = 7, radius = 4, effect = CONST_ME_HITAREA, target = true }, { name = "combat", interval = 2000, chance = 10, type = COMBAT_DEATHDAMAGE, minDamage = -125, maxDamage = -600, range = 7, shootEffect = CONST_ANI_SUDDENDEATH, effect = CONST_ME_SMALLCLOUDS, target = false }, { name = "combat", interval = 2000, chance = 5, type = COMBAT_EARTHDAMAGE, minDamage = -100, maxDamage = -390, range = 7, radius = 4, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = 0, maxDamage = -180, range = 7, shootEffect = CONST_ANI_POISON, effect = CONST_ME_POISONAREA, target = true }, diff --git a/data-otxserver/monster/undeads/vicious_manbat.lua b/data-otxserver/monster/undeads/vicious_manbat.lua index 0c50b15fe..8de69a1bc 100644 --- a/data-otxserver/monster/undeads/vicious_manbat.lua +++ b/data-otxserver/monster/undeads/vicious_manbat.lua @@ -80,10 +80,10 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -215 }, - { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -250, radius = 3, target = false }, + { name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -100, maxDamage = -250, radius = 3, effect = CONST_ME_HITAREA, target = false }, { name = "speed", interval = 2000, chance = 15, radius = 1, effect = CONST_ME_BATS, target = true }, -- bleed - { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -400, maxDamage = -600, radius = 2, target = false }, + { name = "condition", type = CONDITION_BLEEDING, interval = 2000, chance = 20, minDamage = -400, maxDamage = -600, radius = 2, effect = CONST_ME_DRAWBLOOD, target = false }, } monster.defenses = { diff --git a/data-otxserver/monster/vermins/cave_devourer.lua b/data-otxserver/monster/vermins/cave_devourer.lua index 15d639d4d..1283ac20b 100644 --- a/data-otxserver/monster/vermins/cave_devourer.lua +++ b/data-otxserver/monster/vermins/cave_devourer.lua @@ -93,10 +93,10 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, - { name = "stalagmite rune", interval = 2000, chance = 15, minDamage = -190, maxDamage = -300, range = 7, length = 6, spread = 3, shootEffect = CONST_ANI_POISON, target = false }, + { name = "stalagmite rune", interval = 2000, chance = 15, minDamage = -190, maxDamage = -300, range = 7, shootEffect = CONST_ANI_POISON, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -70, maxDamage = -160, range = 3, length = 6, spread = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -90, maxDamage = -160, range = 3, length = 6, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "stone shower rune", interval = 2000, chance = 10, minDamage = -230, maxDamage = -450, range = 7, target = false }, + { name = "stone shower rune", interval = 2000, chance = 10, minDamage = -230, maxDamage = -450, range = 7, radius = 3, effect = CONST_ME_STONES, target = true }, } monster.defenses = { diff --git a/data-otxserver/monster/vermins/tunnel_tyrant.lua b/data-otxserver/monster/vermins/tunnel_tyrant.lua index 2299354f2..f8e3b7bfb 100644 --- a/data-otxserver/monster/vermins/tunnel_tyrant.lua +++ b/data-otxserver/monster/vermins/tunnel_tyrant.lua @@ -92,10 +92,10 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -400 }, - { name = "stalagmite rune", interval = 2000, chance = 15, minDamage = -190, maxDamage = -300, range = 7, length = 6, spread = 3, shootEffect = CONST_ANI_POISON, target = false }, + { name = "stalagmite rune", interval = 2000, chance = 15, minDamage = -190, maxDamage = -300, range = 7, shootEffect = CONST_ANI_POISON, target = true }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_DEATHDAMAGE, minDamage = -70, maxDamage = -160, range = 3, length = 6, spread = 3, effect = CONST_ME_MORTAREA, target = false }, { name = "combat", interval = 2000, chance = 15, type = COMBAT_FIREDAMAGE, minDamage = -90, maxDamage = -160, range = 3, length = 6, spread = 3, effect = CONST_ME_HITBYFIRE, target = false }, - { name = "stone shower rune", interval = 2000, chance = 10, minDamage = -230, maxDamage = -450, range = 7, target = false }, + { name = "stone shower rune", interval = 2000, chance = 10, minDamage = -230, maxDamage = -450, range = 7, radius = 3, effect = CONST_ME_STONES, target = true }, } monster.defenses = { diff --git a/data-otxserver/monster/vermins/wiggler.lua b/data-otxserver/monster/vermins/wiggler.lua index 76c994cdf..bfce930b1 100644 --- a/data-otxserver/monster/vermins/wiggler.lua +++ b/data-otxserver/monster/vermins/wiggler.lua @@ -98,7 +98,7 @@ monster.loot = { monster.attacks = { { name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -200, condition = { type = CONDITION_POISON, totalDamage = 500, interval = 4000 } }, - { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -180, maxDamage = -270, length = 4, spread = 3, target = false }, + { name = "combat", interval = 2000, chance = 10, type = COMBAT_EARTHDAMAGE, minDamage = -180, maxDamage = -270, length = 4, spread = 3, effect = CONST_ME_HITBYPOISON, target = false }, -- poison { name = "condition", type = CONDITION_POISON, interval = 2000, chance = 10, minDamage = -160, maxDamage = -200, range = 7, shootEffect = CONST_ANI_POISONARROW, effect = CONST_ME_SMALLPLANTS, target = false }, { name = "speed", interval = 2000, chance = 15, speedChange = -700, length = 3, spread = 2, effect = CONST_ME_HITAREA, target = false, duration = 30000 }, diff --git a/data-otxserver/scripts/actions/addons/addons.lua b/data-otxserver/scripts/actions/addons/addons.lua index 8fea3d0b0..0658ab693 100644 --- a/data-otxserver/scripts/actions/addons/addons.lua +++ b/data-otxserver/scripts/actions/addons/addons.lua @@ -20,6 +20,9 @@ local config = { -- rascoohan [35595] = { female = 1372, male = 1371, addon = 1, achievement = "Honorary Rascoohan" }, [35695] = { female = 1372, male = 1371, addon = 2, achievement = "Honorary Rascoohan" }, + -- fire-fighter + [39544] = { female = 1569, male = 1568, addon = 1, achievement = "Friendly Fire" }, + [39545] = { female = 1569, male = 1568, addon = 2, achievement = "Friendly Fire" }, } local addons = Action() diff --git a/data-otxserver/scripts/actions/addons/afflicted_outfit.lua b/data-otxserver/scripts/actions/addons/afflicted_outfit.lua new file mode 100644 index 000000000..179e98145 --- /dev/null +++ b/data-otxserver/scripts/actions/addons/afflicted_outfit.lua @@ -0,0 +1,65 @@ +local afflictedOutfit = Action() + +function afflictedOutfit.onUse(player, item, fromPosition, target, toPosition, isHotkey) + local hasOutfit = player:getStorageValue(Storage.OutfitQuest.Afflicted.Outfit) == 1 + -- Plgue Mask + if item.itemid == 12786 then + if not hasOutfit then + return false + end + + if player:getStorageValue(Storage.OutfitQuest.Afflicted.AddonPlagueMask) == 1 then + return false + end + + player:addOutfitAddon(430, 2) + player:addOutfitAddon(431, 2) + player:getPosition():sendMagicEffect(CONST_ME_POFF) + player:setStorageValue(Storage.OutfitQuest.Afflicted.AddonPlagueMask, 1) + player:say("You gained a plague mask for your outfit.", TALKTYPE_MONSTER_SAY, false, player) + item:remove() + + -- Plague Bell + elseif item.itemid == 12787 then + if not hasOutfit then + return false + end + + if player:getStorageValue(Storage.OutfitQuest.Afflicted.AddonPlagueBell) == 1 then + return false + end + + player:addOutfitAddon(430, 1) + player:addOutfitAddon(431, 1) + player:getPosition():sendMagicEffect(CONST_ME_POFF) + player:setStorageValue(Storage.OutfitQuest.Afflicted.AddonPlagueBell, 1) + player:say("You gained a plague bell for your outfit.", TALKTYPE_MONSTER_SAY, false, player) + item:remove() + + -- Outfit + else + if hasOutfit then + return false + end + + for id = 12551, 12556 do + if player:getItemCount(id) < 1 then + return false + end + end + + for id = 12551, 12556 do + player:removeItem(id, 1) + end + + player:addOutfit(430) + player:addOutfit(431) + player:getPosition():sendMagicEffect(CONST_ME_POFF) + player:setStorageValue(Storage.OutfitQuest.Afflicted.Outfit, 1) + player:say("You have restored an outfit.", TALKTYPE_MONSTER_SAY, false, player) + end + return true +end + +afflictedOutfit:id(12551, 12552, 12553, 12554, 12555, 12556, 12786, 12787) +afflictedOutfit:register() diff --git a/data-otxserver/scripts/actions/adventurers_guild/adventurers_stone.lua b/data-otxserver/scripts/actions/adventurers_guild/adventurers_stone.lua index 51cc68cdd..d66e0e12d 100644 --- a/data-otxserver/scripts/actions/adventurers_guild/adventurers_stone.lua +++ b/data-otxserver/scripts/actions/adventurers_guild/adventurers_stone.lua @@ -43,16 +43,16 @@ function adventurersStone.onUse(player, item, fromPosition, target, toPosition, if config.enableTemples then for _, temple in ipairs(config.Temples) do - if isInRange(playerPos, temple.fromPos, temple.toPos) then + if playerPos:isInRange(temple.fromPos, temple.toPos) then allowed, townId = true, temple.townId break end end end - if config.enableDepots then + if config.enableDepots and not allowed then for _, depot in ipairs(config.Depots) do - if isInRange(playerPos, depot.fromPos, depot.toPos) then + if playerPos:isInRange(depot.fromPos, depot.toPos) then allowed, townId = true, depot.townId break end diff --git a/data-otxserver/scripts/actions/door/custom_door.lua b/data-otxserver/scripts/actions/door/custom_door.lua index 50e27feaf..2dadeb684 100644 --- a/data-otxserver/scripts/actions/door/custom_door.lua +++ b/data-otxserver/scripts/actions/door/custom_door.lua @@ -18,12 +18,14 @@ function customDoor.onUse(player, item, fromPosition, target, toPosition, isHotk for index, value in ipairs(CustomDoorTable) do if value.closedDoor == item.itemid then item:transform(value.openDoor) + item:getPosition():sendSingleSoundEffect(SOUND_EFFECT_TYPE_ACTION_OPEN_DOOR) return true end end for index, value in ipairs(CustomDoorTable) do if value.openDoor == item.itemid then item:transform(value.closedDoor) + item:getPosition():sendSingleSoundEffect(SOUND_EFFECT_TYPE_ACTION_CLOSE_DOOR) return true end end diff --git a/data-otxserver/scripts/actions/door/key_door.lua b/data-otxserver/scripts/actions/door/key_door.lua index 15a38a884..4f748b6b6 100644 --- a/data-otxserver/scripts/actions/door/key_door.lua +++ b/data-otxserver/scripts/actions/door/key_door.lua @@ -37,6 +37,7 @@ function keyDoor.onUse(player, item, fromPosition, target, toPosition, isHotkey) for index, value in ipairs(KeyDoorTable) do if value.closedDoor == item.itemid then item:transform(value.openDoor) + item:getPosition():sendSingleSoundEffect(SOUND_EFFECT_TYPE_ACTION_OPEN_DOOR) return true end end @@ -46,6 +47,7 @@ function keyDoor.onUse(player, item, fromPosition, target, toPosition, isHotkey) return false end item:transform(value.closedDoor) + item:getPosition():sendSingleSoundEffect(SOUND_EFFECT_TYPE_ACTION_CLOSE_DOOR) return true end end @@ -60,8 +62,12 @@ function keyDoor.onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.actionid == target.actionid then if value.lockedDoor == target.itemid then target:transform(value.openDoor) + item:getPosition():sendSingleSoundEffect(SOUND_EFFECT_TYPE_ACTION_OPEN_DOOR) return true elseif table.contains({ value.openDoor, value.closedDoor }, target.itemid) then + if value.openDoor == item.itemid then + item:getPosition():sendSingleSoundEffect(SOUND_EFFECT_TYPE_ACTION_CLOSE_DOOR) + end target:transform(value.lockedDoor) return true end diff --git a/data-otxserver/scripts/actions/door/level_door.lua b/data-otxserver/scripts/actions/door/level_door.lua index 177c0894c..6c90fca6d 100644 --- a/data-otxserver/scripts/actions/door/level_door.lua +++ b/data-otxserver/scripts/actions/door/level_door.lua @@ -15,6 +15,7 @@ function levelDoor.onUse(player, item, fromPosition, target, toPosition, isHotke if value.closedDoor == item.itemid then if item.actionid > 0 and player:getLevel() >= item.actionid - 1000 then item:transform(value.openDoor) + item:getPosition():sendSingleSoundEffect(SOUND_EFFECT_TYPE_ACTION_OPEN_DOOR) player:teleportTo(toPosition, true) return true else diff --git a/data-otxserver/scripts/actions/door/quest_door.lua b/data-otxserver/scripts/actions/door/quest_door.lua index 438a23a55..16dffc379 100644 --- a/data-otxserver/scripts/actions/door/quest_door.lua +++ b/data-otxserver/scripts/actions/door/quest_door.lua @@ -15,6 +15,7 @@ function questDoor.onUse(player, item, fromPosition, target, toPosition, isHotke if value.closedDoor == item.itemid then if item.actionid > 0 and player:getStorageValue(item.actionid) ~= -1 then item:transform(value.openDoor) + item:getPosition():sendSingleSoundEffect(SOUND_EFFECT_TYPE_ACTION_OPEN_DOOR) player:teleportTo(toPosition, true) return true else diff --git a/data-otxserver/scripts/actions/object/moonlight_crystals.lua b/data-otxserver/scripts/actions/object/moonlight_crystals.lua index 76762d4a8..e8dbf0073 100644 --- a/data-otxserver/scripts/actions/object/moonlight_crystals.lua +++ b/data-otxserver/scripts/actions/object/moonlight_crystals.lua @@ -2,24 +2,30 @@ local moonlightCrystals = Action() function moonlightCrystals.onUse(player, item, fromPosition, target, toPosition, isHotkey) if target.itemid == 22060 then - target:transform(22061) + target:remove() + player:addItem(22061, 1) item:remove(1) return true elseif target.itemid == 22062 then if (player:getStorageValue(Storage.Grimvale.WereHelmetEnchant) == 0) or (player:getStorageValue(Storage.Grimvale.WereHelmetEnchant) == 1) then - target:transform(24783) -- Magic level helmet + target:remove() -- Magic level helmet + player:addItem(24783, 1) item:remove(1) elseif player:getStorageValue(Storage.Grimvale.WereHelmetEnchant) == 2 then - target:transform(22132) -- Paladin helmet + target:remove() -- Paladin helmet + player:addItem(22132, 1) item:remove(1) elseif player:getStorageValue(Storage.Grimvale.WereHelmetEnchant) == 3 then - target:transform(22128) -- Knight club + target:remove() -- Knight club + player:addItem(22128, 1) item:remove(1) elseif player:getStorageValue(Storage.Grimvale.WereHelmetEnchant) == 4 then - target:transform(22130) -- Knight axe + target:remove() -- Knight axe + player:addItem(22130, 1) item:remove(1) elseif player:getStorageValue(Storage.Grimvale.WereHelmetEnchant) == 5 then - target:transform(22129) -- Knight sword + target:remove() -- Knight sword + player:addItem(22129, 1) item:remove(1) else return false diff --git a/data-otxserver/scripts/actions/other/bag_you_covet.lua b/data-otxserver/scripts/actions/other/bag_you_covet.lua index ddc381c69..e332d9fd3 100644 --- a/data-otxserver/scripts/actions/other/bag_you_covet.lua +++ b/data-otxserver/scripts/actions/other/bag_you_covet.lua @@ -15,7 +15,7 @@ local rewards = { { id = 43887, name = "Sanguine Galoshes" }, } -BagYouCovetId = 43895 +BagYouCovetId = 43898 local bagyouCovet = Action() diff --git a/data-otxserver/scripts/actions/other/dolls.lua b/data-otxserver/scripts/actions/other/dolls.lua index 255bdfa21..32864dcd1 100644 --- a/data-otxserver/scripts/actions/other/dolls.lua +++ b/data-otxserver/scripts/actions/other/dolls.lua @@ -56,6 +56,12 @@ local dolls = { "My dark magic lies on tibialatina.wikia.com", }, [21962] = { "Hail Tibia Brasileiros! (União&Força)" }, + [32918] = { + "COME HERE! FREE ITEMS FOR EVERYONE!", + "DON'T BE AFRAID! I AM COMING IN PEACE!", + "BOW TO THE POWER OF THE RUTHLESS SEVEN!", + "Slay your friends and I will spare you!", + }, } local doll = Action() diff --git a/data-otxserver/scripts/actions/other/outfit_memorial.lua b/data-otxserver/scripts/actions/other/outfit_memorial.lua index d722bb132..6061d5f11 100644 --- a/data-otxserver/scripts/actions/other/outfit_memorial.lua +++ b/data-otxserver/scripts/actions/other/outfit_memorial.lua @@ -39,7 +39,7 @@ function outfitMemorial.onUse(player, item, fromPosition, target, toPosition, is for i = 1, 3 do response:addU16(#goldenOutfitCache[i]) for j = 1, #goldenOutfitCache[i] do - response:addString(goldenOutfitCache[i][j]) + response:addString(goldenOutfitCache[i][j], "outfitMemorial.onUse - goldenOutfitCache[i][j]") end end @@ -52,7 +52,7 @@ function outfitMemorial.onUse(player, item, fromPosition, target, toPosition, is for i = 1, 3 do response:addU16(#royalOutfitCache[i]) for j = 1, #royalOutfitCache[i] do - response:addString(royalOutfitCache[i][j]) + response:addString(royalOutfitCache[i][j], "outfitMemorial.onUse - royalOutfitCache[i][j]") end end diff --git a/data-otxserver/scripts/actions/other/potions.lua b/data-otxserver/scripts/actions/other/potions.lua index 1cc636391..febc3ed9d 100644 --- a/data-otxserver/scripts/actions/other/potions.lua +++ b/data-otxserver/scripts/actions/other/potions.lua @@ -239,7 +239,7 @@ function flaskPotion.onUse(player, item, fromPosition, target, toPosition, isHot end local potion = potions[item:getId()] - if potion.level and player:getLevel() < potion.level or potion.vocations and not table.contains(potion.vocations, player:getVocation():getBaseId()) and not (player:getGroup():getId() >= 2) then + if potion.level and player:getLevel() < potion.level or potion.vocations and not table.contains(potion.vocations, player:getVocation():getBaseId()) and not (player:getGroup():getId() >= GROUP_TYPE_GAMEMASTER) then player:say(potion.description, MESSAGE_POTION) return true end diff --git a/data-otxserver/scripts/actions/other/surprise_bag.lua b/data-otxserver/scripts/actions/other/surprise_bag.lua index bbe76e260..052fc987c 100644 --- a/data-otxserver/scripts/actions/other/surprise_bag.lua +++ b/data-otxserver/scripts/actions/other/surprise_bag.lua @@ -89,7 +89,7 @@ function surpriseBag.onUse(cid, item, fromPosition, itemEx, toPosition) local count = 1 local gift = present[math.random(1, #present)] if type(gift) == "table" then - count = gift[2] + count = math.random(1, gift[2]) gift = gift[1] end diff --git a/data-otxserver/scripts/actions/other/temple_scroll.lua b/data-otxserver/scripts/actions/other/temple_scroll.lua index fdfeff177..1f170d72b 100644 --- a/data-otxserver/scripts/actions/other/temple_scroll.lua +++ b/data-otxserver/scripts/actions/other/temple_scroll.lua @@ -4,12 +4,13 @@ function templeScroll.onUse(player, item, fromPosition, target, toPosition, isHo local inPz = player:getTile():hasFlag(TILESTATE_PROTECTIONZONE) local inFight = player:isPzLocked() or player:getCondition(CONDITION_INFIGHT, CONDITIONID_DEFAULT) if inPz or not inFight then - player:teleportTo(getTownTemplePosition(player:getTown():getId())) + fromPosition:sendMagicEffect(CONST_ME_TELEPORT) + player:teleportTo(player:getTown():getTemplePosition()) + player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) item:remove() - Position(fromPosition):sendMagicEffect(CONST_ME_TELEPORT) else player:sendCancelMessage("You can't use this when you're in a fight.") - Position(fromPosition):sendMagicEffect(CONST_ME_POFF) + fromPosition:sendMagicEffect(CONST_ME_POFF) end return true end diff --git a/data-otxserver/scripts/actions/other/unrealized_dream.lua b/data-otxserver/scripts/actions/other/unrealized_dream.lua deleted file mode 100644 index 6b4f7398b..000000000 --- a/data-otxserver/scripts/actions/other/unrealized_dream.lua +++ /dev/null @@ -1,102 +0,0 @@ -local unrealizedDream = Action() - -function unrealizedDream.onUse(cid, item, frompos, item2, topos) - presente = math.random(1, 22) - pos = getPlayerPosition(cid) - - --surpriese bag-- - if presente == 1 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 12548, 1) -- Bag of Apple Slices - doRemoveItem(item.uid, 1) - elseif presente == 2 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 20275, 1) -- Dream Warden Claw - doRemoveItem(item.uid, 1) - elseif presente == 3 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 3242, 1) -- Stuffed Bunny - doRemoveItem(item.uid, 1) - elseif presente == 4 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 5929, 1) -- Goldfish Bowl - doRemoveItem(item.uid, 1) - elseif presente == 5 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 5792, 1) -- Dice - doRemoveItem(item.uid, 1) - elseif presente == 6 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 3577, 1) -- Meat - doRemoveItem(item.uid, 1) - elseif presente == 7 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 3004, 1) -- Wedding Ring - doRemoveItem(item.uid, 1) - elseif presente == 8 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 3463, 1) -- Mirror - doRemoveItem(item.uid, 1) - elseif presente == 9 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 7459, 1) -- Pair of Earmuffs - doRemoveItem(item.uid, 1) - elseif presente == 10 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 2992, 1) -- Snowball - doRemoveItem(item.uid, 1) - elseif presente == 11 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 3108, 1) -- Rubbish - doRemoveItem(item.uid, 1) - elseif presente == 12 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 2995, 1) -- Piggy Bank - doRemoveItem(item.uid, 1) - elseif presente == 13 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 3568, 1) -- Simple Dress - doRemoveItem(item.uid, 1) - elseif presente == 14 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 2856, 1) -- Present - doRemoveItem(item.uid, 1) - elseif presente == 15 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 3659, 1) -- Blue Rose - doRemoveItem(item.uid, 1) - elseif presente == 16 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 2950, 1) -- Lute - doRemoveItem(item.uid, 1) - elseif presente == 17 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 20272, 1) -- Bronze Prison Key - doRemoveItem(item.uid, 1) - elseif presente == 18 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 20270, 1) -- Silver Prison Key - doRemoveItem(item.uid, 1) - elseif presente == 19 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 20273, 1) -- Golden Prison Key - doRemoveItem(item.uid, 1) - elseif presente == 20 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 20062, 1) -- Cluster of Solace - doRemoveItem(item.uid, 1) - elseif presente == 21 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 651, 1) -- Spellwand - doRemoveItem(item.uid, 1) - elseif presente == 22 then - doSendMagicEffect(pos, 26) - doPlayerAddItem(cid, 20271, 1) -- Copper Prision Key - doRemoveItem(item.uid, 1) - end - - return 1 -end - -unrealizedDream:id(20264) -unrealizedDream:register() diff --git a/data-otxserver/scripts/actions/other/watch.lua b/data-otxserver/scripts/actions/other/watch.lua index d989856ac..a97fce78c 100644 --- a/data-otxserver/scripts/actions/other/watch.lua +++ b/data-otxserver/scripts/actions/other/watch.lua @@ -5,5 +5,5 @@ function watch.onUse(player, item, fromPosition, target, toPosition, isHotkey) return true end -watch:id(2445, 2446, 2447, 2448, 2906, 2771) +watch:id(2445, 2446, 2447, 2448, 2906, 2771, 6091) watch:register() diff --git a/data-otxserver/scripts/actions/valuables/random_items.lua b/data-otxserver/scripts/actions/valuables/random_items.lua index c012c549a..f91dcf4f1 100644 --- a/data-otxserver/scripts/actions/valuables/random_items.lua +++ b/data-otxserver/scripts/actions/valuables/random_items.lua @@ -76,6 +76,33 @@ local config = { }, effect = CONST_ME_CRAPS, }, + [20264] = { -- unrealized dream + chances = { + { from = 1, to = 1081, itemId = 3108 }, -- Rubbish (10.81%) + { from = 1082, to = 2125, itemId = 2992 }, -- Snowball (10.44%) + { from = 2126, to = 3109, itemId = 5792 }, -- Die (9.83%) + { from = 3110, to = 4074, itemId = 2856 }, -- Present (9.64%) + { from = 4075, to = 5039, itemId = 3659 }, -- Blue Rose (9.64%) + { from = 5040, to = 6007, itemId = 3568 }, -- Simple Dress (9.67%) + { from = 6008, to = 6969, itemId = 3463 }, -- Mirror (9.61%) + { from = 6970, to = 7457, itemId = 2995 }, -- Piggy Bank (4.87%) + { from = 7458, to = 7945, itemId = 2950 }, -- Lute (4.87%) + { from = 7946, to = 8268, itemId = 651 }, -- Spellwand (4.22%) + { from = 8269, to = 8659, itemId = 5929 }, -- Goldfish Bowl (3.90%) + { from = 8660, to = 8984, itemId = 3577 }, -- Meat (3.24%) + { from = 8985, to = 9192, itemId = 20271 }, -- Copper Prision Key (2.07%) + { from = 9193, to = 9396, itemId = 20272 }, -- Bronze Prison Key (2.03%) + { from = 9397, to = 9588, itemId = 20270 }, -- Silver Prison Key (1.91%) + { from = 9589, to = 9719, itemId = 20062 }, -- Cluster of Solace (1.30%) + { from = 9720, to = 9780, itemId = 3004 }, -- Wedding Ring (0.60%) + { from = 9781, to = 9842, itemId = 7459 }, -- Pair of Earmuffs (0.61%) + { from = 9843, to = 9894, itemId = 20275 }, -- Dream Warden Claw (0.51%) + { from = 9895, to = 9946, itemId = 20273 }, -- Golden Prison Key (0.51%) + { from = 9947, to = 9987, itemId = 3242 }, -- Stuffed Bunny (0.40%) + { from = 9988, to = 10001, itemId = 12548 }, -- Bag of Apple Slices (0.13%) + }, + effect = CONST_ME_BUBBLES, + }, [22763] = { -- shaggy ogre bag chances = { { from = 1, to = 1440, itemId = 22187, count = 5 }, diff --git a/data-otxserver/scripts/creaturescripts/customs/reward_exercise.lua b/data-otxserver/scripts/creaturescripts/customs/reward_exercise.lua index 847f6feec..2e64dc2ca 100644 --- a/data-otxserver/scripts/creaturescripts/customs/reward_exercise.lua +++ b/data-otxserver/scripts/creaturescripts/customs/reward_exercise.lua @@ -10,4 +10,6 @@ function winReward.onLogin(player) return true end -winReward:register() +if configManager.getBoolean(configKeys.TOGGLE_RECEIVE_REWARD) then + winReward:register() +end diff --git a/data-otxserver/scripts/creaturescripts/others/login_events.lua b/data-otxserver/scripts/creaturescripts/others/login_events.lua index 7adef4c07..2f570a72e 100644 --- a/data-otxserver/scripts/creaturescripts/others/login_events.lua +++ b/data-otxserver/scripts/creaturescripts/others/login_events.lua @@ -1,7 +1,6 @@ local loginEvents = CreatureEvent("LoginEvents") function loginEvents.onLogin(player) local events = { - --Others "AdvanceSave", "BossParticipation", "DropLoot", diff --git a/data-otxserver/scripts/globalevents/game_migrations/20231128213358_move_hireling_data_to_kv.lua b/data-otxserver/scripts/globalevents/game_migrations/20231128213358_move_hireling_data_to_kv.lua new file mode 100644 index 000000000..b30eeb1c7 --- /dev/null +++ b/data-otxserver/scripts/globalevents/game_migrations/20231128213358_move_hireling_data_to_kv.lua @@ -0,0 +1,101 @@ +local old_hirelingSkills = { + BANKER = 1, -- 1<<0 + COOKING = 2, -- 1<<1 + STEWARD = 4, -- 1<<2 + TRADER = 8, -- 1<<3 +} + +local old_hirelingOutfits = { + BANKER = 1, -- 1<<0 + COOKING = 2, -- 1<<1 + STEWARD = 4, -- 1<<2 + TRADER = 8, -- 1<<3 ... + SERVANT = 16, + HYDRA = 32, + FERUMBRAS = 64, + BONELORD = 128, + DRAGON = 256, +} + +local old_hirelingStorage = { + SKILL = 28800, + OUTFIT = 28900, +} + +local function getOutfits(player) + local flags = player:getStorageValue(old_hirelingStorage.OUTFIT) + local outfits = {} + if flags <= 0 then + return outfits + end + for key, value in pairs(old_hirelingOutfits) do + if hasBitSet(value, flags) then + table.insert(outfits, key) + end + end + return outfits +end + +local function getSkills(player) + local flags = player:getStorageValue(old_hirelingStorage.SKILL) + local skills = {} + if flags <= 0 then + return skills + end + for key, value in pairs(old_hirelingSkills) do + if hasBitSet(value, flags) then + table.insert(skills, key) + end + end + return skills +end + +local function migrateHirelingData(player) + if not player then + return false + end + + local outfits = getOutfits(player) + local skills = getSkills(player) + if #outfits == 0 and #skills == 0 then + return true + end + logger.info("Migrating hireling data for player {}", player:getName()) + for _, outfit in pairs(outfits) do + logger.debug("Enabling hireling outfit: {}", outfit) + local outfit = HIRELING_OUTFITS[outfit] + if outfit then + local name = outfit[2] + if name then + player:enableHirelingOutfit(name) + else + logger.error("Invalid hireling outfit name: {}", outfit[1]) + end + else + logger.error("Invalid hireling outfit: {}", outfit) + end + end + + for _, skill in pairs(skills) do + logger.debug("Enabling hireling skill: {}", skill) + local skill = HIRELING_SKILLS[skill] + if skill then + local name = skill[2] + if name then + player:enableHirelingSkill(name) + else + logger.error("Invalid hireling skill name: {}", skill[1]) + end + else + logger.error("Invalid hireling skill: {}", skill) + end + end +end + +local migration = Migration("20231128213158_move_hireling_data_to_kv") + +function migration:onExecute() + self:forEachPlayer(migrateHirelingData) +end + +migration:register() diff --git a/data-otxserver/scripts/lib/register_monster_type.lua b/data-otxserver/scripts/lib/register_monster_type.lua index 6fbf56f82..49537ac9c 100644 --- a/data-otxserver/scripts/lib/register_monster_type.lua +++ b/data-otxserver/scripts/lib/register_monster_type.lua @@ -931,6 +931,11 @@ function readSpell(incomingLua, mtype) spell:setConditionDamage(incomingLua.condition.totalDamage, incomingLua.condition.totalDamage, 0) end + local isArea = (incomingLua.radius and incomingLua.radius > 1) or incomingLua.length or incomingLua.spread + if isArea and incomingLua.effect == nil and not string.find(incomingLua.name, "field") then + logger.warn("[readSpell] - Monster {}: Spell {} is area but has no effect. Set to `false` explicitly to supress this alert and hide the effect", mtype:name(), incomingLua.name) + spell:setCombatEffect(CONST_ME_POFF) + end elseif incomingLua.script then spell:setScriptName("monster/" .. incomingLua.script .. ".lua") if incomingLua.interval then diff --git a/data-otxserver/scripts/lib/register_spells.lua b/data-otxserver/scripts/lib/register_spells.lua index 0aa63ca34..49a5d7aec 100644 --- a/data-otxserver/scripts/lib/register_spells.lua +++ b/data-otxserver/scripts/lib/register_spells.lua @@ -283,6 +283,18 @@ AREA_CIRCLE1X1 = { { 0, 1, 0 }, } +AREA_CIRCLE4X4 = { + { 0, 0, 0, 0, 1, 0, 0, 0, 0 }, + { 0, 0, 0, 1, 1, 1, 0, 0, 0 }, + { 0, 0, 1, 1, 1, 1, 1, 0, 0 }, + { 0, 1, 1, 1, 1, 1, 1, 1, 0 }, + { 1, 1, 1, 1, 3, 1, 1, 1, 1 }, + { 0, 1, 1, 1, 1, 1, 1, 1, 0 }, + { 0, 0, 1, 1, 1, 1, 1, 0, 0 }, + { 0, 0, 0, 1, 1, 1, 0, 0, 0 }, + { 0, 0, 0, 0, 1, 0, 0, 0, 0 }, +} + AREA_CIRCLE5X5 = { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 }, diff --git a/data-otxserver/scripts/lib/shops.lua b/data-otxserver/scripts/lib/shops.lua new file mode 100644 index 000000000..849028994 --- /dev/null +++ b/data-otxserver/scripts/lib/shops.lua @@ -0,0 +1,1604 @@ +SupplyShopConfigTable = { + ["foods"] = { + { itemName = "brown mushroom", clientId = 3725, buy = 10 }, + { itemName = "fire mushroom", clientId = 3731, buy = 300 }, + }, + ["exercise weapons"] = { + { itemName = "enhanced exercise axe", clientId = 35280, buy = 2340000 }, + { itemName = "enhanced exercise bow", clientId = 35282, buy = 2340000 }, + { itemName = "enhanced exercise club", clientId = 35281, buy = 2340000 }, + { itemName = "enhanced exercise rod", clientId = 35283, buy = 2340000 }, + { itemName = "enhanced exercise shield", clientId = 44066, buy = 2340000 }, + { itemName = "enhanced exercise sword", clientId = 35279, buy = 2340000 }, + { itemName = "enhanced exercise wand", clientId = 35284, buy = 2340000 }, + { itemName = "exercise axe", clientId = 28553, buy = 1800000 }, + { itemName = "exercise bow", clientId = 28555, buy = 1800000 }, + { itemName = "exercise club", clientId = 28554, buy = 1800000 }, + { itemName = "exercise rod", clientId = 28556, buy = 1800000 }, + { itemName = "exercise shield", clientId = 44065, buy = 1800000 }, + { itemName = "exercise sword", clientId = 28552, buy = 1800000 }, + { itemName = "exercise wand", clientId = 28557, buy = 1800000 }, + { itemName = "masterful exercise axe", clientId = 35286, buy = 2700000 }, + { itemName = "masterful exercise bow", clientId = 35288, buy = 2700000 }, + { itemName = "masterful exercise club", clientId = 35287, buy = 2700000 }, + { itemName = "masterful exercise rod", clientId = 35289, buy = 2700000 }, + { itemName = "masterful exercise shield", clientId = 44067, buy = 2700000 }, + { itemName = "masterful exercise sword", clientId = 35285, buy = 2700000 }, + { itemName = "masterful exercise wand", clientId = 35290, buy = 2700000 }, + }, + ["distance equipments"] = { + { itemName = "envenomed arrow", clientId = 16143, buy = 12 }, + { itemName = "diamond arrow", clientId = 35901, buy = 100 }, + { itemName = "drill bolt", clientId = 16142, buy = 12 }, + { itemName = "crystalline arrow", clientId = 15793, buy = 20 }, + { itemName = "blue quiver", clientId = 35848, buy = 400 }, + { itemName = "bolt", clientId = 3446, buy = 4 }, + { itemName = "bow", clientId = 3350, buy = 400 }, + { itemName = "arrow", clientId = 3447, buy = 3 }, + { itemName = "assassin star", clientId = 7368, buy = 100 }, + { itemName = "earth arrow", clientId = 774, buy = 5 }, + { itemName = "enchanted spear", clientId = 7367, buy = 30 }, + { itemName = "flaming arrow", clientId = 763, buy = 5 }, + { itemName = "flash arrow", clientId = 761, buy = 5 }, + { itemName = "royal star", clientId = 25759, buy = 110 }, + { itemName = "quiver", clientId = 35562, buy = 400 }, + { itemName = "red quiver", clientId = 35849, buy = 400 }, + { itemName = "power bolt", clientId = 3450, buy = 7 }, + { itemName = "piercing bolt", clientId = 7363, buy = 5 }, + { itemName = "onyx arrow", clientId = 7365, buy = 7 }, + { itemName = "prismatic bolt", clientId = 16141, buy = 20 }, + { itemName = "shiver arrow", clientId = 762, buy = 5 }, + { itemName = "sniper arrow", clientId = 7364, buy = 5 }, + { itemName = "spear", clientId = 3277, buy = 5 }, + { itemName = "spectral bolt", clientId = 35902, buy = 70 }, + { itemName = "throwing star", clientId = 3287, buy = 42 }, + { itemName = "tarsal arrow", clientId = 14251, buy = 6 }, + { itemName = "vortex bolt", clientId = 14252, buy = 6 }, + { itemName = "hunting spear", clientId = 3347, buy = 25 }, + }, + ["runes"] = { + { itemName = "animate dead rune", clientId = 3203, buy = 375 }, + { itemName = "avalanche rune", clientId = 3161, buy = 57 }, + { itemName = "blank rune", clientId = 3147, buy = 10 }, + { itemName = "chameleon rune", clientId = 3178, buy = 210 }, + { itemName = "convince creature rune", clientId = 3177, buy = 80 }, + { itemName = "cure poison rune", clientId = 3153, buy = 65 }, + { itemName = "desintegrate rune", clientId = 3197, buy = 26 }, + { itemName = "destroy field rune", clientId = 3148, buy = 15 }, + { itemName = "divine rain rune", clientId = 3186, buy = 57 }, + { itemName = "energy bomb rune", clientId = 3149, buy = 203 }, + { itemName = "energy field rune", clientId = 3164, buy = 38 }, + { itemName = "energy wall rune", clientId = 3166, buy = 85 }, + { itemName = "explosion rune", clientId = 3200, buy = 31 }, + { itemName = "fire bomb rune", clientId = 3192, buy = 147 }, + { itemName = "fire field rune", clientId = 3188, buy = 28 }, + { itemName = "fire wall rune", clientId = 3190, buy = 61 }, + { itemName = "fireball rune", clientId = 3189, buy = 65 }, + { itemName = "great fireball rune", clientId = 3191, buy = 57 }, + { itemName = "heavy magic missile rune", clientId = 3198, buy = 65 }, + { itemName = "holy missile rune", clientId = 3182, buy = 16 }, + { itemName = "icicle rune", clientId = 3158, buy = 65 }, + { itemName = "intense healing rune", clientId = 3152, buy = 95 }, + { itemName = "light magic missile rune", clientId = 3174, buy = 4 }, + { itemName = "magic wall rune", clientId = 3180, buy = 116 }, + { itemName = "paralyze rune", clientId = 3165, buy = 700 }, + { itemName = "poison bomb rune", clientId = 3173, buy = 85 }, + { itemName = "poison field rune", clientId = 3172, buy = 21 }, + { itemName = "poison wall rune", clientId = 3176, buy = 52 }, + { itemName = "soulfire rune", clientId = 3195, buy = 46 }, + { itemName = "stalagmite rune", clientId = 3179, buy = 65 }, + { itemName = "stone shower rune", clientId = 3175, buy = 57 }, + { itemName = "sudden death rune", clientId = 3155, buy = 135 }, + { itemName = "thunderstorm rune", clientId = 3202, buy = 57 }, + { itemName = "ultimate healing rune", clientId = 3160, buy = 175 }, + { itemName = "wild growth rune", clientId = 3156, buy = 160 }, + }, + ["tools"] = { + { itemName = "fishing rod", clientId = 3483, buy = 150 }, + { itemName = "flask of rust remover", clientId = 9016, buy = 50 }, + { itemName = "torch", clientId = 2920, buy = 2 }, + { itemName = "worm", clientId = 3492, buy = 1 }, + { itemName = "crowbar", clientId = 3304, buy = 260 }, + { itemName = "backpack", clientId = 2854, buy = 20 }, + }, + ["amulets"] = { + { itemName = "gill necklace", clientId = 16108, buy = 20000 }, + { itemName = "glacier amulet", clientId = 815, buy = 15000 }, + { itemName = "leviathan's amulet", clientId = 9303, buy = 30000 }, + { itemName = "magma amulet", clientId = 817, buy = 15000 }, + { itemName = "lightning pendant", clientId = 816, buy = 15000 }, + { itemName = "prismatic necklace", clientId = 16113, buy = 20000 }, + { itemName = "sacred tree amulet", clientId = 9302, buy = 30000 }, + { itemName = "shockwave amulet", clientId = 9304, buy = 30000 }, + { itemName = "stone skin amulet", clientId = 3081, buy = 5000 }, + { itemName = "collar of blue plasma", clientId = 23542, buy = 60000 }, + { itemName = "collar of green plasma", clientId = 23543, buy = 60000 }, + { itemName = "collar of red plasma", clientId = 23544, buy = 60000 }, + { itemName = "terra amulet", clientId = 814, buy = 15000 }, + }, + ["rings"] = { + { itemName = "life ring", clientId = 3052, buy = 900 }, + { itemName = "might ring", clientId = 3048, buy = 5000 }, + { itemName = "ring of blue plasma", clientId = 23529, buy = 80000 }, + { itemName = "ring of green plasma", clientId = 23531, buy = 80000 }, + { itemName = "ring of healing", clientId = 3098, buy = 2000 }, + { itemName = "prismatic ring", clientId = 16114, buy = 100000 }, + { itemName = "ring of red plasma", clientId = 23533, buy = 80000 }, + { itemName = "stealth ring", clientId = 3049, buy = 5000 }, + { itemName = "time ring", clientId = 3053, buy = 2000 }, + { itemName = "dwarven ring", clientId = 3097, buy = 2000 }, + { itemName = "energy ring", clientId = 3051, buy = 2000 }, + }, + ["potions"] = { + { itemName = "great health potion", clientId = 239, buy = 225 }, + { itemName = "great mana potion", clientId = 238, buy = 144 }, + { itemName = "great spirit potion", clientId = 7642, buy = 228 }, + { itemName = "health potion", clientId = 266, buy = 50 }, + { itemName = "mana potion", clientId = 268, buy = 56 }, + { itemName = "mana shield potion", clientId = 35563, buy = 200000 }, + { itemName = "ultimate health potion", clientId = 7643, buy = 379 }, + { itemName = "ultimate mana potion", clientId = 23373, buy = 438 }, + { itemName = "ultimate spirit potion", clientId = 23374, buy = 438 }, + { itemName = "supreme health potion", clientId = 23375, buy = 625 }, + { itemName = "strong health potion", clientId = 236, buy = 115 }, + { itemName = "strong mana potion", clientId = 237, buy = 93 }, + }, +} + +SupplyShopConfig = {} +for _, categoryTable in pairs(SupplyShopConfigTable) do + for _, itemTable in ipairs(categoryTable) do + table.insert(SupplyShopConfig, itemTable) + end +end + +function FindSupplyShopItem(itemName) + for _, item in ipairs(SupplyShopConfig) do + if string.starts(item.itemName:lower(), itemName:lower()) then + return item + end + end +end + +LootShopConfigTable = { + ["creature products"] = { + { itemName = "abomination's eye", clientId = 36792, sell = 650000 }, + { itemName = "abomination's tail", clientId = 36791, sell = 700000 }, + { itemName = "abomination's tongue", clientId = 36793, sell = 950000 }, + { itemName = "afflicted strider head", clientId = 36789, sell = 900 }, + { itemName = "afflicted strider worms", clientId = 36790, sell = 500 }, + { itemName = "alptramun's toothbrush", clientId = 29943, sell = 270000 }, + { itemName = "acorn", clientId = 10296, sell = 10 }, + { itemName = "amber with a bug", clientId = 32624, sell = 41000 }, + { itemName = "amber with a dragonfly", clientId = 32625, sell = 56000 }, + { itemName = "amber", clientId = 32626, sell = 20000 }, + { itemName = "ancient belt buckle", clientId = 24384, sell = 260 }, + { itemName = "ancient liche bone", clientId = 31588, sell = 28000 }, + { itemName = "antlers", clientId = 10297, sell = 50 }, + { itemName = "apron", clientId = 33933, sell = 1300 }, + { itemName = "badger fur", clientId = 10299, sell = 15 }, + { itemName = "badger fur", clientId = 903, sell = 15 }, + { itemName = "bamboo stick", clientId = 11445, sell = 30 }, + { itemName = "banana sash", clientId = 11511, sell = 55 }, + { itemName = "basalt fetish", clientId = 17856, sell = 210 }, + { itemName = "bashmu fang", clientId = 36820, sell = 600 }, + { itemName = "bashmu feather", clientId = 36823, sell = 350 }, + { itemName = "bashmu tongue", clientId = 36821, sell = 400 }, + { itemName = "bed of nails", clientId = 25743, sell = 500 }, + { itemName = "beer tap", clientId = 32114, sell = 50 }, + { itemName = "beetle carapace", clientId = 24381, sell = 200 }, + { itemName = "beetle necklace", clientId = 10457, sell = 1500 }, + { itemName = "bejeweled ship's telescope", clientId = 9616, sell = 20000 }, + { itemName = "berserker", clientId = 7403, sell = 40000 }, + { itemName = "black hood", clientId = 9645, sell = 190 }, + { itemName = "black skull", clientId = 9056, sell = 4000 }, + { itemName = "black wool", clientId = 11448, sell = 300 }, + { itemName = "blazing bone", clientId = 16131, sell = 610 }, + { itemName = "blemished spawn abdomen", clientId = 36779, sell = 550 }, + { itemName = "blemished spawn head", clientId = 36778, sell = 800 }, + { itemName = "blemished spawn tail", clientId = 36780, sell = 1000 }, + { itemName = "blood preservation", clientId = 11449, sell = 320 }, + { itemName = "blood tincture in a vial", clientId = 18928, sell = 360 }, + { itemName = "bloody dwarven beard", clientId = 17827, sell = 110 }, + { itemName = "bloody pincers", clientId = 9633, sell = 100 }, + { itemName = "bloody tears", clientId = 32594, sell = 70000 }, + { itemName = "blue glass plate", clientId = 29345, sell = 60 }, + { itemName = "blue goanna scale", clientId = 31559, sell = 230 }, + { itemName = "boar man hoof", clientId = 40584, sell = 600 }, + { itemName = "boggy dreads", clientId = 9667, sell = 200 }, + { itemName = "bola", clientId = 17809, sell = 35 }, + { itemName = "bone fetish", clientId = 17831, sell = 150 }, + { itemName = "bone shoulderplate", clientId = 10404, sell = 150 }, + { itemName = "bone toothpick", clientId = 24380, sell = 150 }, + { itemName = "bonecarving knife", clientId = 17830, sell = 190 }, + { itemName = "bones of zorvorax", clientId = 24942, sell = 10000 }, + { itemName = "bony tail", clientId = 10277, sell = 210 }, + { itemName = "book of necromantic rituals", clientId = 10320, sell = 180 }, + { itemName = "book of prayers", clientId = 9646, sell = 120 }, + { itemName = "book page", clientId = 28569, sell = 640 }, + { itemName = "bowl of terror sweat", clientId = 20204, sell = 500 }, + { itemName = "brain head's giant neuron", clientId = 32578, sell = 100000 }, + { itemName = "brain head's left hemisphere", clientId = 32579, sell = 90000 }, + { itemName = "brain head's right hemisphere", clientId = 32580, sell = 50000 }, + { itemName = "brainstealer's brain", clientId = 36795, sell = 300000 }, + { itemName = "brainstealer's brainwave", clientId = 36796, sell = 440000 }, + { itemName = "brainstealer's tissue", clientId = 36794, sell = 240000 }, + { itemName = "bright bell", clientId = 30324, sell = 220 }, + { itemName = "brimstone fangs", clientId = 11702, sell = 380 }, + { itemName = "brimstone shell", clientId = 11703, sell = 210 }, + { itemName = "broken bell", clientId = 30185, sell = 150 }, + { itemName = "broken crossbow", clientId = 11451, sell = 30 }, + { itemName = "broken draken mail", clientId = 11660, sell = 340 }, + { itemName = "broken gladiator shield", clientId = 9656, sell = 190 }, + { itemName = "broken halberd", clientId = 10418, sell = 100 }, + { itemName = "broken helmet", clientId = 11453, sell = 20 }, + { itemName = "broken iks faulds", clientId = 40531, sell = 530 }, + { itemName = "broken iks headpiece", clientId = 40532, sell = 560 }, + { itemName = "broken iks sandals", clientId = 40534, sell = 440 }, + { itemName = "broken key ring", clientId = 11652, sell = 8000 }, + { itemName = "broken longbow", clientId = 34161, sell = 130 }, + { itemName = "broken macuahuitl", clientId = 40530, sell = 1000 }, + { itemName = "broken ring of ending", clientId = 12737, sell = 4000 }, + { itemName = "broken shamanic staff", clientId = 11452, sell = 35 }, + { itemName = "broken slicer", clientId = 11661, sell = 120 }, + { itemName = "broken throwing axe", clientId = 17851, sell = 230 }, + { itemName = "broken visor", clientId = 20184, sell = 1900 }, + { itemName = "bronze amulet", clientId = 3056, sell = 50, count = 200 }, + { itemName = "brooch of embracement", clientId = 34023, sell = 14000 }, + { itemName = "brutetamer's staff", clientId = 7379, sell = 1500 }, + { itemName = "buckle", clientId = 17829, sell = 7000 }, + { itemName = "bunch of ripe rice", clientId = 10328, sell = 75 }, + { itemName = "bunch of troll hair", clientId = 9689, sell = 30 }, + { itemName = "bundle of cursed straw", clientId = 9688, sell = 800 }, + { itemName = "capricious heart", clientId = 34138, sell = 2100 }, + { itemName = "capricious robe", clientId = 34145, sell = 1200 }, + { itemName = "carniphila seeds", clientId = 10300, sell = 50 }, + { itemName = "carnisylvan bark", clientId = 36806, sell = 230 }, + { itemName = "carnisylvan finger", clientId = 36805, sell = 250 }, + { itemName = "carnivostrich feathers", clientId = 40586, sell = 550 }, + { itemName = "carrion worm fang", clientId = 10275, sell = 35 }, + { itemName = "cat's paw", clientId = 5479, sell = 2000 }, + { itemName = "cave chimera head", clientId = 36787, sell = 1200 }, + { itemName = "cave chimera leg", clientId = 36788, sell = 650 }, + { itemName = "cave devourer eyes", clientId = 27599, sell = 550 }, + { itemName = "cave devourer legs", clientId = 27601, sell = 350 }, + { itemName = "cave devourer maw", clientId = 27600, sell = 600 }, + { itemName = "cavebear skull", clientId = 12316, sell = 550 }, + { itemName = "centipede leg", clientId = 10301, sell = 28 }, + { itemName = "chasm spawn abdomen", clientId = 27603, sell = 240 }, + { itemName = "chasm spawn head", clientId = 27602, sell = 850 }, + { itemName = "chasm spawn tail", clientId = 27604, sell = 120 }, + { itemName = "cheese cutter", clientId = 17817, sell = 50 }, + { itemName = "cheesy figurine", clientId = 17818, sell = 150 }, + { itemName = "cheesy membership card", clientId = 35614, sell = 120000 }, + { itemName = "chicken feather", clientId = 5890, sell = 30 }, + { itemName = "chitinous mouth", clientId = 27622, sell = 10000 }, + { itemName = "chitinous mouth", clientId = 27626, sell = 10000 }, + { itemName = "cliff strider claw", clientId = 16134, sell = 800 }, + { itemName = "closed trap", clientId = 3481, sell = 75 }, + { itemName = "coal", clientId = 12600, sell = 20 }, + { itemName = "cobra crest", clientId = 31678, sell = 650 }, + { itemName = "cobra tongue", clientId = 9634, sell = 15 }, + { itemName = "colourful feather", clientId = 11514, sell = 110 }, + { itemName = "colourful feathers", clientId = 25089, sell = 400 }, + { itemName = "colourful snail shell", clientId = 25696, sell = 250 }, + { itemName = "compass", clientId = 10302, sell = 45 }, + { itemName = "compound eye", clientId = 14083, sell = 150 }, + { itemName = "condensed energy", clientId = 23501, sell = 260 }, + { itemName = "coral branch", clientId = 39406, sell = 360 }, + { itemName = "coral brooch", clientId = 24391, sell = 750 }, + { itemName = "corrupt naga scales", clientId = 39415, sell = 570 }, + { itemName = "corrupted flag", clientId = 10409, sell = 700 }, + { itemName = "countess sorrow's frozen tear", clientId = 6536, sell = 50000 }, + { itemName = "cow bell", clientId = 32012, sell = 120 }, + { itemName = "cowbell", clientId = 21204, sell = 210 }, + { itemName = "crab man claw", clientId = 40582, sell = 550 }, + { itemName = "crab pincers", clientId = 10272, sell = 35 }, + { itemName = "crawler head plating", clientId = 14079, sell = 210 }, + { itemName = "crawler's essence", clientId = 33982, sell = 3700 }, + { itemName = "crest of the deep seas", clientId = 21892, sell = 10000 }, + { itemName = "cruelty's chest", clientId = 33923, sell = 720000 }, + { itemName = "cruelty's claw", clientId = 33922, sell = 640000 }, + { itemName = "crunor idol", clientId = 30055, sell = 30000 }, + { itemName = "crystal bone", clientId = 23521, sell = 250 }, + { itemName = "cultish mask", clientId = 9638, sell = 280 }, + { itemName = "cultish robe", clientId = 9639, sell = 150 }, + { itemName = "cultish symbol", clientId = 11455, sell = 500 }, + { itemName = "curious matter", clientId = 23511, sell = 430 }, + { itemName = "curl of hair", clientId = 36809, sell = 320000 }, + { itemName = "cursed bone", clientId = 32774, sell = 6000 }, + { itemName = "cursed shoulder spikes", clientId = 10410, sell = 320 }, + { itemName = "cyclops toe", clientId = 9657, sell = 55 }, + { itemName = "daedal chisel", clientId = 40522, sell = 480 }, + { itemName = "damaged armor plates", clientId = 28822, sell = 280 }, + { itemName = "damaged worm head", clientId = 27620, sell = 8000 }, + { itemName = "damselfly eye", clientId = 17463, sell = 25 }, + { itemName = "damselfly wing", clientId = 17458, sell = 20 }, + { itemName = "dandelion seeds", clientId = 25695, sell = 200 }, + { itemName = "dangerous proto matter", clientId = 23515, sell = 300 }, + { itemName = "dark bell", clientId = 30325, sell = 250 }, + { itemName = "dark bell", clientId = 32596, sell = 310000 }, + { itemName = "dead weight", clientId = 20202, sell = 450 }, + { itemName = "deepling breaktime snack", clientId = 14011, sell = 90 }, + { itemName = "deepling claw", clientId = 14044, sell = 430 }, + { itemName = "deepling guard belt buckle", clientId = 14010, sell = 230 }, + { itemName = "deepling ridge", clientId = 14041, sell = 360 }, + { itemName = "deepling scales", clientId = 14017, sell = 80 }, + { itemName = "deepling warts", clientId = 14012, sell = 180 }, + { itemName = "deeptags", clientId = 14013, sell = 290 }, + { itemName = "deepworm jaws", clientId = 27594, sell = 500 }, + { itemName = "deepworm spike roots", clientId = 27593, sell = 650 }, + { itemName = "deepworm spikes", clientId = 27592, sell = 800 }, + { itemName = "demon horn", clientId = 5954, sell = 1000 }, + { itemName = "demonic finger", clientId = 12541, sell = 1000 }, + { itemName = "demonic skeletal hand", clientId = 9647, sell = 80 }, + { itemName = "diabolic skull", clientId = 34025, sell = 19000 }, + { itemName = "diremaw brainpan", clientId = 27597, sell = 350 }, + { itemName = "diremaw legs", clientId = 27598, sell = 270 }, + { itemName = "dirty turban", clientId = 11456, sell = 120 }, + { itemName = "distorted heart", clientId = 34142, sell = 2100 }, + { itemName = "distorted robe", clientId = 34149, sell = 1200 }, + { itemName = "downy feather", clientId = 11684, sell = 20 }, + { itemName = "dowser", clientId = 19110, sell = 35 }, + { itemName = "dracola's eye", clientId = 6546, sell = 50000 }, + { itemName = "dragon blood", clientId = 24937, sell = 700 }, + { itemName = "dragon priest's wandtip", clientId = 10444, sell = 175 }, + { itemName = "dragon tongue", clientId = 24938, sell = 550 }, + { itemName = "dragon's tail", clientId = 11457, sell = 100 }, + { itemName = "draken sulphur", clientId = 11658, sell = 550 }, + { itemName = "draken wristbands", clientId = 11659, sell = 430 }, + { itemName = "draptor scales", clientId = 12309, sell = 800 }, + { itemName = "dream essence egg", clientId = 30005, sell = 205 }, + { itemName = "dung ball", clientId = 14225, sell = 130 }, + { itemName = "earflap", clientId = 17819, sell = 40 }, + { itemName = "elder bonelord tentacle", clientId = 10276, sell = 150 }, + { itemName = "elven astral observer", clientId = 11465, sell = 90 }, + { itemName = "elven hoof", clientId = 18994, sell = 115 }, + { itemName = "elven scouting glass", clientId = 11464, sell = 50 }, + { itemName = "elvish talisman", clientId = 9635, sell = 45 }, + { itemName = "emerald tortoise shell", clientId = 39379, sell = 2150 }, + { itemName = "empty honey glass", clientId = 31331, sell = 270 }, + { itemName = "energy ball", clientId = 23523, sell = 300 }, + { itemName = "energy vein", clientId = 23508, sell = 270 }, + { itemName = "enigmatic voodoo skull", clientId = 5669, sell = 4000 }, + { itemName = "ensouled essence", clientId = 32698, sell = 820 }, + { itemName = "essence of a bad dream", clientId = 10306, sell = 360 }, + { itemName = "eternal flames", clientId = 946, sell = 5000 }, + { itemName = "execowtioner mask", clientId = 21201, sell = 240 }, + { itemName = "ethno coat", clientId = 8064, sell = 200 }, + { itemName = "eye of a deepling", clientId = 12730, sell = 150 }, + { itemName = "eye of a weeper", clientId = 16132, sell = 650 }, + { itemName = "eye of corruption", clientId = 11671, sell = 390 }, + { itemName = "eyeless devourer legs", clientId = 36776, sell = 650 }, + { itemName = "eyeless devourer maw", clientId = 36775, sell = 420 }, + { itemName = "eyeless devourer tongue", clientId = 36777, sell = 900 }, + { itemName = "fafnar symbol", clientId = 31443, sell = 950 }, + { itemName = "fairy wings", clientId = 25694, sell = 200 }, + { itemName = "falcon crest", clientId = 28823, sell = 650 }, + { itemName = "fern", clientId = 3737, sell = 20 }, + { itemName = "fiery heart", clientId = 9636, sell = 375 }, + { itemName = "fiery tear", clientId = 39040, sell = 1070000 }, + { itemName = "fig leaf", clientId = 25742, sell = 200 }, + { itemName = "fir cone", clientId = 19111, sell = 25 }, + { itemName = "flask of embalming fluid", clientId = 11466, sell = 30 }, + { itemName = "flask of warrior's sweat", clientId = 5885, sell = 10000 }, + { itemName = "flotsam", clientId = 39407, sell = 330 }, + { itemName = "flower dress", clientId = 9015, sell = 1000 }, + { itemName = "flower wreath", clientId = 9013, sell = 500 }, + { itemName = "fox paw", clientId = 27462, sell = 100 }, + { itemName = "frazzle skin", clientId = 20199, sell = 400 }, + { itemName = "frazzle tongue", clientId = 20198, sell = 700 }, + { itemName = "frost giant pelt", clientId = 9658, sell = 160 }, + { itemName = "frosty ear of a troll", clientId = 9648, sell = 30 }, + { itemName = "frosty heart", clientId = 9661, sell = 280 }, + { itemName = "gauze bandage", clientId = 9649, sell = 90 }, + { itemName = "gear crystal", clientId = 9655, sell = 200 }, + { itemName = "gear wheel", clientId = 8775, sell = 500 }, + { itemName = "fur shred", clientId = 34164, sell = 200 }, + { itemName = "geomancer's robe", clientId = 11458, sell = 80 }, + { itemName = "geomancer's staff", clientId = 11463, sell = 120 }, + { itemName = "ghastly dragon head", clientId = 10449, sell = 700 }, + { itemName = "ghostly tissue", clientId = 9690, sell = 90 }, + { itemName = "ghoul snack", clientId = 11467, sell = 60 }, + { itemName = "giant crab pincer", clientId = 12317, sell = 950 }, + { itemName = "giant eye", clientId = 10280, sell = 380 }, + { itemName = "giant tentacle", clientId = 27619, sell = 10000 }, + { itemName = "girlish hair decoration", clientId = 11443, sell = 30 }, + { itemName = "girtablilu warrior carapace", clientId = 36971, sell = 520 }, + { itemName = "gland", clientId = 8143, sell = 500 }, + { itemName = "glistening bone", clientId = 23522, sell = 250 }, + { itemName = "glob of acid slime", clientId = 9054, sell = 25 }, + { itemName = "glob of glooth", clientId = 21182, sell = 125 }, + { itemName = "glob of mercury", clientId = 9053, sell = 20 }, + { itemName = "glob of tar", clientId = 9055, sell = 30 }, + { itemName = "gloom wolf fur", clientId = 22007, sell = 70 }, + { itemName = "glooth injection tube", clientId = 21103, sell = 350 }, + { itemName = "goanna claw", clientId = 31561, sell = 260 }, + { itemName = "goanna meat", clientId = 31560, sell = 190 }, + { itemName = "goat grass", clientId = 3674, sell = 50 }, + { itemName = "goblet of gloom", clientId = 34022, sell = 12000 }, + { itemName = "goblin ear", clientId = 11539, sell = 20 }, + { itemName = "goo shell", clientId = 19372, sell = 4000 }, + { itemName = "goosebump leather", clientId = 20205, sell = 650 }, + { itemName = "gore horn", clientId = 39377, sell = 2900 }, + { itemName = "gorerilla mane", clientId = 39392, sell = 2750 }, + { itemName = "gorerilla tail", clientId = 39393, sell = 2650 }, + { itemName = "grant of arms", clientId = 28824, sell = 950 }, + { itemName = "grappling hook", clientId = 35588, sell = 150 }, + { itemName = "grasshopper legs", clientId = 14087, sell = 15000 }, + { itemName = "grave flower", clientId = 3661, sell = 25 }, + { itemName = "greed's arm", clientId = 33924, sell = 950000 }, + { itemName = "green bandage", clientId = 25697, sell = 180 }, + { itemName = "green glass plate", clientId = 29346, sell = 180 }, + { itemName = "grimace", clientId = 32593, sell = 120000 }, + { itemName = "gruesome fan", clientId = 34024, sell = 15000 }, + { itemName = "guidebook", clientId = 25745, sell = 200 }, + { itemName = "hair of a banshee", clientId = 11446, sell = 350 }, + { itemName = "half-digested piece of meat", clientId = 10283, sell = 55 }, + { itemName = "half-digested stones", clientId = 27369, sell = 40 }, + { itemName = "half-eaten brain", clientId = 9659, sell = 85 }, + { itemName = "hand", clientId = 33936, sell = 1450 }, + { itemName = "harpoon of a giant snail", clientId = 27625, sell = 15000 }, + { itemName = "harpy feathers", clientId = 40585, sell = 730 }, + { itemName = "hatched rorc egg", clientId = 18997, sell = 30 }, + { itemName = "haunted piece of wood", clientId = 9683, sell = 115 }, + { itemName = "hazardous heart", clientId = 34140, sell = 5000 }, + { itemName = "hazardous robe", clientId = 34147, sell = 3000 }, + { itemName = "head", clientId = 33932, sell = 3500 }, + { itemName = "head", clientId = 33937, sell = 3200 }, + { itemName = "headpecker beak", clientId = 39387, sell = 2998 }, + { itemName = "headpecker feather", clientId = 39388, sell = 1300 }, + { itemName = "heaven blossom", clientId = 3657, sell = 50 }, + { itemName = "heavy machete", clientId = 3330, sell = 90 }, + { itemName = "heavy old tome", clientId = 23986, sell = 30 }, + { itemName = "hellhound slobber", clientId = 9637, sell = 500 }, + { itemName = "hellspawn tail", clientId = 10304, sell = 475 }, + { itemName = "hemp rope", clientId = 20206, sell = 350 }, + { itemName = "hideous chunk", clientId = 16140, sell = 510 }, + { itemName = "hieroglyph banner", clientId = 12482, sell = 500 }, + { itemName = "high guard flag", clientId = 10415, sell = 550 }, + { itemName = "high guard shoulderplates", clientId = 10416, sell = 130 }, + { itemName = "hollow stampor hoof", clientId = 12314, sell = 400 }, + { itemName = "holy ash", clientId = 17850, sell = 160 }, + { itemName = "horn of kalyassa", clientId = 24941, sell = 10000 }, + { itemName = "horn", clientId = 19359, sell = 300 }, + { itemName = "horoscope", clientId = 18926, sell = 40 }, + { itemName = "huge chunk of crude iron", clientId = 5892, sell = 15000 }, + { itemName = "huge shell", clientId = 27621, sell = 15000 }, + { itemName = "huge spiky snail shell", clientId = 27627, sell = 8000 }, + { itemName = "humongous chunk", clientId = 16139, sell = 540 }, + { itemName = "hunter's quiver", clientId = 11469, sell = 80 }, + { itemName = "hydra egg", clientId = 4839, sell = 500 }, + { itemName = "hydra head", clientId = 10282, sell = 600 }, + { itemName = "hydrophytes", clientId = 39410, sell = 220 }, + { itemName = "ice flower", clientId = 30058, sell = 370 }, + { itemName = "incantation notes", clientId = 18929, sell = 90 }, + { itemName = "infernal heart", clientId = 34139, sell = 2100 }, + { itemName = "infernal robe", clientId = 34146, sell = 1200 }, + { itemName = "inkwell", clientId = 28568, sell = 720 }, + { itemName = "instable proto matter", clientId = 23516, sell = 300 }, + { itemName = "ivory carving", clientId = 33945, sell = 300 }, + { itemName = "ivory comb", clientId = 32773, sell = 8000 }, + { itemName = "izcandar's snow globe", clientId = 29944, sell = 180000 }, + { itemName = "izcandar's sundial", clientId = 29945, sell = 225000 }, + { itemName = "jacket", clientId = 3561, sell = 1 }, + { itemName = "jaws", clientId = 34014, sell = 3900 }, + { itemName = "jewelled belt", clientId = 11470, sell = 180 }, + { itemName = "jungle moa claw", clientId = 39404, sell = 160 }, + { itemName = "jungle moa egg", clientId = 39405, sell = 250 }, + { itemName = "jungle moa feather", clientId = 39403, sell = 140 }, + { itemName = "katex' blood", clientId = 34100, sell = 210 }, + { itemName = "key to the drowned library", clientId = 14009, sell = 330 }, + { itemName = "kollos shell", clientId = 14077, sell = 420 }, + { itemName = "kongra's shoulderpad", clientId = 11471, sell = 100 }, + { itemName = "lamassu hoof", clientId = 31441, sell = 330 }, + { itemName = "lamassu horn", clientId = 31442, sell = 240 }, + { itemName = "lancer beetle shell", clientId = 10455, sell = 80 }, + { itemName = "lancet", clientId = 18925, sell = 90 }, + { itemName = "lava fungus head", clientId = 36785, sell = 900 }, + { itemName = "lava fungus ring", clientId = 36786, sell = 390 }, + { itemName = "lavaworm jaws", clientId = 36771, sell = 1100 }, + { itemName = "lavaworm spike roots", clientId = 36769, sell = 600 }, + { itemName = "lavaworm spikes", clientId = 36770, sell = 750 }, + { itemName = "legionnaire flags", clientId = 10417, sell = 500 }, + { itemName = "liodile fang", clientId = 40583, sell = 480 }, + { itemName = "lion cloak patch", clientId = 34162, sell = 190 }, + { itemName = "lion crest", clientId = 34160, sell = 270 }, + { itemName = "lion figurine", clientId = 33781, sell = 10000 }, + { itemName = "lion seal", clientId = 34163, sell = 210 }, + { itemName = "lion's mane", clientId = 9691, sell = 60 }, + { itemName = "little bowl of myrrh", clientId = 25702, sell = 500 }, + { itemName = "lizard essence", clientId = 11680, sell = 300 }, + { itemName = "lizard heart", clientId = 31340, sell = 530 }, + { itemName = "longing eyes", clientId = 27624, sell = 8000 }, + { itemName = "lost basher's spike", clientId = 17826, sell = 280 }, + { itemName = "lost bracers", clientId = 17853, sell = 140 }, + { itemName = "lost husher's staff", clientId = 17848, sell = 250 }, + { itemName = "lost soul", clientId = 32227, sell = 120 }, + { itemName = "luminescent crystal pickaxe", clientId = 32711, sell = 50 }, + { itemName = "luminous orb", clientId = 11454, sell = 1000 }, + { itemName = "lump of dirt", clientId = 9692, sell = 10 }, + { itemName = "lump of earth", clientId = 10305, sell = 130 }, + { itemName = "mad froth", clientId = 17854, sell = 80 }, + { itemName = "magma clump", clientId = 16130, sell = 570 }, + { itemName = "magma coat", clientId = 826, sell = 11000 }, + { itemName = "makara fin", clientId = 39401, sell = 350 }, + { itemName = "makara tongue", clientId = 39402, sell = 320 }, + { itemName = "malice's horn", clientId = 33920, sell = 620000 }, + { itemName = "malice's spine", clientId = 33921, sell = 850000 }, + { itemName = "malofur's lunchbox", clientId = 30088, sell = 240000 }, + { itemName = "mantassin tail", clientId = 11489, sell = 280 }, + { itemName = "manticore ear", clientId = 31440, sell = 310 }, + { itemName = "manticore tail", clientId = 31439, sell = 220 }, + { itemName = "mantosaurus jaw", clientId = 39386, sell = 2998 }, + { itemName = "marsh stalker beak", clientId = 17461, sell = 65 }, + { itemName = "marsh stalker feather", clientId = 17462, sell = 50 }, + { itemName = "maxilla", clientId = 12315, sell = 250 }, + { itemName = "maxxenius head", clientId = 29942, sell = 500000 }, + { itemName = "megalomania's essence", clientId = 33928, sell = 1900000 }, + { itemName = "megalomania's skull", clientId = 33925, sell = 1500000 }, + { itemName = "metal spike", clientId = 10298, sell = 320 }, + { itemName = "metal toe", clientId = 21198, sell = 430 }, + { itemName = "milk churn", clientId = 32011, sell = 100 }, + { itemName = "minotaur horn", clientId = 11472, sell = 75 }, + { itemName = "miraculum", clientId = 11474, sell = 60 }, + { itemName = "mooh'tah shell", clientId = 21202, sell = 110 }, + { itemName = "moohtant horn", clientId = 21200, sell = 140 }, + { itemName = "moon pin", clientId = 43736, sell = 18000 }, + { itemName = "morgaroth's heart", clientId = 5943, sell = 15000 }, + { itemName = "morshabaal's brain", clientId = 37613, sell = 15000 }, + { itemName = "morshabaal's extract", clientId = 37810, sell = 3250000 }, + { itemName = "mould heart", clientId = 34141, sell = 2100 }, + { itemName = "mould robe", clientId = 34148, sell = 1200 }, + { itemName = "mouldy powder", clientId = 35596, sell = 200 }, + { itemName = "mr. punish's handcuffs", clientId = 6537, sell = 50000 }, + { itemName = "mucus plug", clientId = 16102, sell = 500 }, + { itemName = "mutated bat ear", clientId = 9662, sell = 420 }, + { itemName = "mutated flesh", clientId = 10308, sell = 50 }, + { itemName = "mutated rat tail", clientId = 9668, sell = 150 }, + { itemName = "mysterious fetish", clientId = 3078, sell = 50 }, + { itemName = "mysterious voodoo skull", clientId = 5668, sell = 4000 }, + { itemName = "mystical hourglass", clientId = 9660, sell = 700 }, + { itemName = "naga archer scales", clientId = 39413, sell = 340 }, + { itemName = "naga armring", clientId = 39411, sell = 390 }, + { itemName = "naga earring", clientId = 39412, sell = 380 }, + { itemName = "naga warrior scales", clientId = 39414, sell = 340 }, + { itemName = "necromantic robe", clientId = 11475, sell = 250 }, + { itemName = "necromantic rust", clientId = 21196, sell = 390 }, + { itemName = "nettle blossom", clientId = 10314, sell = 75 }, + { itemName = "nettle spit", clientId = 11476, sell = 25 }, + { itemName = "neutral matter", clientId = 954, sell = 5000 }, + { itemName = "nighthunter wing", clientId = 39381, sell = 2000 }, + { itemName = "odd organ", clientId = 23510, sell = 410 }, + { itemName = "ogre ear stud", clientId = 22188, sell = 180 }, + { itemName = "ogre nose ring", clientId = 22189, sell = 210 }, + { itemName = "old girtablilu carapace", clientId = 36972, sell = 570 }, + { itemName = "old parchment", clientId = 4831, sell = 500 }, + { itemName = "one of timira's many heads", clientId = 39399, sell = 215000 }, + { itemName = "orc leather", clientId = 11479, sell = 30 }, + { itemName = "orc tooth", clientId = 10196, sell = 150 }, + { itemName = "orc trophy", clientId = 7395, sell = 1000 }, + { itemName = "orc tusk", clientId = 7786, sell = 700 }, + { itemName = "orcish gear", clientId = 11477, sell = 85 }, + { itemName = "orshabaal's brain", clientId = 5808, sell = 12000 }, + { itemName = "pair of hellflayer horns", clientId = 22729, sell = 1300 }, + { itemName = "pair of iron fists", clientId = 17828, sell = 4000 }, + { itemName = "pair of old bracers", clientId = 32705, sell = 500 }, + { itemName = "pale worm's scalp", clientId = 32598, sell = 489000 }, + { itemName = "panpipes", clientId = 2953, sell = 150 }, + { itemName = "panther head", clientId = 12039, sell = 750 }, + { itemName = "panther paw", clientId = 12040, sell = 300 }, + { itemName = "parder fur", clientId = 39418, sell = 150 }, + { itemName = "parder tooth", clientId = 39417, sell = 150 }, + { itemName = "patch of fine cloth", clientId = 28821, sell = 1350 }, + { itemName = "peacock feather fan", clientId = 21975, sell = 350 }, + { itemName = "pelvis bone", clientId = 11481, sell = 30 }, + { itemName = "percht horns", clientId = 30186, sell = 200 }, + { itemName = "petrified scream", clientId = 10420, sell = 250 }, + { itemName = "phantasmal hair", clientId = 32704, sell = 500 }, + { itemName = "pharaoh banner", clientId = 12483, sell = 1000 }, + { itemName = "piece of archer armor", clientId = 11483, sell = 20 }, + { itemName = "piece of crocodile leather", clientId = 10279, sell = 15 }, + { itemName = "piece of dead brain", clientId = 9663, sell = 420 }, + { itemName = "piece of hellfire armor", clientId = 9664, sell = 550 }, + { itemName = "piece of massacre's shell", clientId = 6540, sell = 50000 }, + { itemName = "piece of scarab shell", clientId = 9641, sell = 45 }, + { itemName = "piece of swampling wood", clientId = 17823, sell = 30 }, + { itemName = "piece of timira's sensors", clientId = 39400, sell = 150000 }, + { itemName = "piece of warrior armor", clientId = 11482, sell = 50 }, + { itemName = "pieces of magic chalk", clientId = 18930, sell = 210 }, + { itemName = "pig foot", clientId = 9693, sell = 10 }, + { itemName = "pile of grave earth", clientId = 11484, sell = 25 }, + { itemName = "pirat's tail", clientId = 35573, sell = 180 }, + { itemName = "plagueroot offshoot", clientId = 30087, sell = 280000 }, + { itemName = "plasmatic lightning", clientId = 23520, sell = 270 }, + { itemName = "poison gland", clientId = 29348, sell = 210 }, + { itemName = "poison spider shell", clientId = 11485, sell = 10 }, + { itemName = "poisoned fang", clientId = 21195, sell = 130 }, + { itemName = "poisonous slime", clientId = 9640, sell = 50 }, + { itemName = "polar bear paw", clientId = 9650, sell = 30 }, + { itemName = "pool of chitinous glue", clientId = 20207, sell = 480 }, + { itemName = "porcelain mask", clientId = 25088, sell = 2000 }, + { itemName = "powder herb", clientId = 3739, sell = 10 }, + { itemName = "prehemoth claw", clientId = 39383, sell = 2300 }, + { itemName = "prehemoth horns", clientId = 39382, sell = 3000 }, + { itemName = "pristine worm head", clientId = 27618, sell = 15000 }, + { itemName = "protective charm", clientId = 11444, sell = 60 }, + { itemName = "pulverized ore", clientId = 16133, sell = 400 }, + { itemName = "purified soul", clientId = 32228, sell = 260 }, + { itemName = "purple robe", clientId = 11473, sell = 110 }, + { itemName = "quara bone", clientId = 11491, sell = 500 }, + { itemName = "quara eye", clientId = 11488, sell = 350 }, + { itemName = "quara pincers", clientId = 11490, sell = 410 }, + { itemName = "quara tentacle", clientId = 11487, sell = 140 }, + { itemName = "quill", clientId = 28567, sell = 1100 }, + { itemName = "rabbit's foot", clientId = 12172, sell = 50 }, + { itemName = "rare earth", clientId = 27301, sell = 80 }, + { itemName = "ratmiral's hat", clientId = 35613, sell = 150000 }, + { itemName = "ravenous circlet", clientId = 32597, sell = 220000 }, + { itemName = "red goanna scale", clientId = 31558, sell = 270 }, + { itemName = "red hair dye", clientId = 17855, sell = 40 }, + { itemName = "red lantern", clientId = 10289, sell = 250 }, + { itemName = "rhindeer antlers", clientId = 40587, sell = 680 }, + { itemName = "rhino hide", clientId = 24388, sell = 175 }, + { itemName = "rhino horn carving", clientId = 24386, sell = 300 }, + { itemName = "rhino horn", clientId = 24389, sell = 265 }, + { itemName = "ripptor claw", clientId = 39389, sell = 2000 }, + { itemName = "ripptor scales", clientId = 39391, sell = 1200 }, + { itemName = "ritual tooth", clientId = 40528, sell = 135 }, + { itemName = "rogue naga scales", clientId = 39416, sell = 570 }, + { itemName = "roots", clientId = 33938, sell = 1200 }, + { itemName = "rope belt", clientId = 11492, sell = 66 }, + { itemName = "rorc egg", clientId = 18996, sell = 120 }, + { itemName = "rorc feather", clientId = 18993, sell = 70 }, + { itemName = "rotten feather", clientId = 40527, sell = 120 }, + { itemName = "rotten heart", clientId = 31589, sell = 74000 }, + { itemName = "rotten piece of cloth", clientId = 10291, sell = 30 }, + { itemName = "sabretooth fur", clientId = 39378, sell = 2500 }, + { itemName = "sabretooth", clientId = 10311, sell = 400 }, + { itemName = "safety pin", clientId = 11493, sell = 120 }, + { itemName = "sample of monster blood", clientId = 27874, sell = 250 }, + { itemName = "sandcrawler shell", clientId = 10456, sell = 20 }, + { itemName = "scale of corruption", clientId = 11673, sell = 680 }, + { itemName = "scale of gelidrazah", clientId = 24939, sell = 10000 }, + { itemName = "scorpion charm", clientId = 36822, sell = 620 }, + { itemName = "scorpion tail", clientId = 9651, sell = 25 }, + { itemName = "scroll of heroic deeds", clientId = 11510, sell = 230 }, + { itemName = "scythe leg", clientId = 10312, sell = 450 }, + { itemName = "scarab pincers", clientId = 9631, sell = 280 }, + { itemName = "sea serpent scale", clientId = 9666, sell = 520 }, + { itemName = "seacrest hair", clientId = 21801, sell = 260 }, + { itemName = "seacrest scale", clientId = 21800, sell = 150 }, + { itemName = "seeds", clientId = 647, sell = 150 }, + { itemName = "shadow herb", clientId = 3740, sell = 20 }, + { itemName = "shaggy tail", clientId = 10407, sell = 25 }, + { itemName = "shamanic hood", clientId = 11478, sell = 45 }, + { itemName = "shamanic mask", clientId = 22192, sell = 2000 }, + { itemName = "shamanic talisman", clientId = 22184, sell = 200 }, + { itemName = "shark fins", clientId = 35574, sell = 250 }, + { itemName = "shimmering beetles", clientId = 25693, sell = 150 }, + { itemName = "sight of surrender's eye", clientId = 20183, sell = 3000 }, + { itemName = "silencer claws", clientId = 20200, sell = 390 }, + { itemName = "silencer resonating chamber", clientId = 20201, sell = 600 }, + { itemName = "silken bookmark", clientId = 28566, sell = 1300 }, + { itemName = "silky fur", clientId = 10292, sell = 35 }, + { itemName = "single human eye", clientId = 25701, sell = 1000 }, + { itemName = "skull belt", clientId = 11480, sell = 80 }, + { itemName = "skull fetish", clientId = 22191, sell = 250 }, + { itemName = "skull shatterer", clientId = 17849, sell = 170 }, + { itemName = "skunk tail", clientId = 10274, sell = 50 }, + { itemName = "slime heart", clientId = 21194, sell = 160 }, + { itemName = "slime mould", clientId = 12601, sell = 175 }, + { itemName = "slimy leaf tentacle", clientId = 21197, sell = 320 }, + { itemName = "slimy leg", clientId = 27623, sell = 4500 }, + { itemName = "sling herb", clientId = 3738, sell = 10 }, + { itemName = "small energy ball", clientId = 23524, sell = 250 }, + { itemName = "small flask of eyedrops", clientId = 11512, sell = 95 }, + { itemName = "small notebook", clientId = 11450, sell = 480 }, + { itemName = "small oil lamp", clientId = 2933, sell = 150 }, + { itemName = "small pitchfork", clientId = 11513, sell = 70 }, + { itemName = "small tropical fish", clientId = 39408, sell = 380 }, + { itemName = "smoldering eye", clientId = 39543, sell = 470000 }, + { itemName = "snake skin", clientId = 9694, sell = 400 }, + { itemName = "solid rage", clientId = 23517, sell = 310 }, + { itemName = "some grimeleech wings", clientId = 22730, sell = 1200 }, + { itemName = "spark sphere", clientId = 23518, sell = 350 }, + { itemName = "sparkion claw", clientId = 23502, sell = 290 }, + { itemName = "sparkion legs", clientId = 23504, sell = 310 }, + { itemName = "sparkion stings", clientId = 23505, sell = 280 }, + { itemName = "sparkion tail", clientId = 23503, sell = 300 }, + { itemName = "spellsinger's seal", clientId = 14008, sell = 280 }, + { itemName = "sphinx feather", clientId = 31437, sell = 470 }, + { itemName = "sphinx tiara", clientId = 31438, sell = 360 }, + { itemName = "spider fangs", clientId = 8031, sell = 10 }, + { itemName = "spidris mandible", clientId = 14082, sell = 450 }, + { itemName = "spiked iron ball", clientId = 10408, sell = 100 }, + { itemName = "spiky club", clientId = 17859, sell = 300 }, + { itemName = "spite's spirit", clientId = 33926, sell = 840000 }, + { itemName = "spitter nose", clientId = 14078, sell = 340 }, + { itemName = "spooky blue eye", clientId = 9642, sell = 95 }, + { itemName = "srezz' eye", clientId = 34103, sell = 300 }, + { itemName = "stalking seeds", clientId = 39384, sell = 1800 }, + { itemName = "stampor horn", clientId = 12312, sell = 280 }, + { itemName = "stampor talons", clientId = 12313, sell = 150 }, + { itemName = "star herb", clientId = 3736, sell = 15 }, + { itemName = "stone herb", clientId = 3735, sell = 20 }, + { itemName = "stone nose", clientId = 16137, sell = 590 }, + { itemName = "stone wing", clientId = 10278, sell = 120 }, + { itemName = "stonerefiner's skull", clientId = 27606, sell = 100 }, + { itemName = "strand of medusa hair", clientId = 10309, sell = 600 }, + { itemName = "strange proto matter", clientId = 23513, sell = 300 }, + { itemName = "strange symbol", clientId = 3058, sell = 200 }, + { itemName = "strange talisman", clientId = 3045, sell = 30, count = 200 }, + { itemName = "streaked devourer eyes", clientId = 36772, sell = 500 }, + { itemName = "streaked devourer legs", clientId = 36774, sell = 600 }, + { itemName = "streaked devourer maw", clientId = 36773, sell = 400 }, + { itemName = "striped fur", clientId = 10293, sell = 50 }, + { itemName = "sulphider shell", clientId = 39375, sell = 2200 }, + { itemName = "sulphur powder", clientId = 39376, sell = 1900 }, + { itemName = "sulphurous stone", clientId = 10315, sell = 100 }, + { itemName = "summer dress", clientId = 8046, sell = 1500 }, + { itemName = "sun brooch", clientId = 43737, sell = 18000 }, + { itemName = "swamp grass", clientId = 9686, sell = 20 }, + { itemName = "swampling club", clientId = 17824, sell = 40 }, + { itemName = "swampling moss", clientId = 17822, sell = 20 }, + { itemName = "swarmer antenna", clientId = 14076, sell = 130 }, + { itemName = "tail of corruption", clientId = 11672, sell = 240 }, + { itemName = "tarantula egg", clientId = 10281, sell = 80 }, + { itemName = "tarnished rhino figurine", clientId = 24387, sell = 320 }, + { itemName = "tattered piece of robe", clientId = 9684, sell = 120 }, + { itemName = "telescope eye", clientId = 33934, sell = 1600 }, + { itemName = "tentacle of tentugly", clientId = 35611, sell = 27000 }, + { itemName = "tentacle piece", clientId = 11666, sell = 5000 }, + { itemName = "tentugly's eye", clientId = 35610, sell = 52000 }, + { itemName = "tentugly's jaws", clientId = 35612, sell = 80000 }, + { itemName = "terramite eggs", clientId = 10453, sell = 50 }, + { itemName = "terramite legs", clientId = 10454, sell = 60 }, + { itemName = "terramite shell", clientId = 10452, sell = 170 }, + { itemName = "terrorbird beak", clientId = 10273, sell = 95 }, + { itemName = "the handmaiden's protector", clientId = 6539, sell = 50000 }, + { itemName = "the imperor's trident", clientId = 6534, sell = 50000 }, + { itemName = "the plasmother's remains", clientId = 6535, sell = 50000 }, + { itemName = "thick fur", clientId = 10307, sell = 150 }, + { itemName = "thorn", clientId = 9643, sell = 100 }, + { itemName = "tiger eye", clientId = 24961, sell = 350 }, + { itemName = "token of love", clientId = 31594, sell = 440000 }, + { itemName = "tooth file", clientId = 18924, sell = 60 }, + { itemName = "tooth of tazhadur", clientId = 24940, sell = 10000 }, + { itemName = "torn shirt", clientId = 25744, sell = 250 }, + { itemName = "trapped bad dream monster", clientId = 20203, sell = 900 }, + { itemName = "tremendous tyrant head", clientId = 36783, sell = 930 }, + { itemName = "tremendous tyrant shell", clientId = 36784, sell = 740 }, + { itemName = "tribal mask", clientId = 3403, sell = 250 }, + { itemName = "troll green", clientId = 3741, sell = 25 }, + { itemName = "trollroot", clientId = 11515, sell = 50 }, + { itemName = "tunnel tyrant head", clientId = 27595, sell = 500 }, + { itemName = "tunnel tyrant shell", clientId = 27596, sell = 700 }, + { itemName = "tusk", clientId = 3044, sell = 100 }, + { itemName = "two-headed turtle heads", clientId = 39409, sell = 460 }, + { itemName = "undead heart", clientId = 10450, sell = 200 }, + { itemName = "undertaker fangs", clientId = 39380, sell = 2700 }, + { itemName = "unholy bone", clientId = 10316, sell = 480 }, + { itemName = "unholy book", clientId = 6103, sell = 30000 }, + { itemName = "urmahlullus mane", clientId = 31623, sell = 490000 }, + { itemName = "urmahlullus paws", clientId = 31624, sell = 245000 }, + { itemName = "urmahlullus tail", clientId = 31622, sell = 210000 }, + { itemName = "utua's poison", clientId = 34101, sell = 230 }, + { itemName = "vampire teeth", clientId = 9685, sell = 275 }, + { itemName = "vampire's cape chain", clientId = 18927, sell = 150 }, + { itemName = "varnished diremaw brainpan", clientId = 36781, sell = 750 }, + { itemName = "varnished diremaw legs", clientId = 36782, sell = 670 }, + { itemName = "veal", clientId = 32009, sell = 40 }, + { itemName = "vein of ore", clientId = 16135, sell = 330 }, + { itemName = "venison", clientId = 18995, sell = 55 }, + { itemName = "vexclaw talon", clientId = 22728, sell = 1100 }, + { itemName = "vial of hatred", clientId = 33927, sell = 737000 }, + { itemName = "vibrant heart", clientId = 34143, sell = 2100 }, + { itemName = "vibrant robe", clientId = 34144, sell = 1200 }, + { itemName = "violet glass plate", clientId = 29347, sell = 2150 }, + { itemName = "volatile proto matter", clientId = 23514, sell = 300 }, + { itemName = "war horn", clientId = 2958, sell = 8000 }, + { itemName = "warmaster's wristguards", clientId = 10405, sell = 200 }, + { itemName = "warwolf fur", clientId = 10318, sell = 30 }, + { itemName = "waspoid claw", clientId = 14080, sell = 320 }, + { itemName = "waspoid wing", clientId = 14081, sell = 190 }, + { itemName = "weaver's wandtip", clientId = 10397, sell = 250 }, + { itemName = "werebadger claws", clientId = 22051, sell = 160 }, + { itemName = "werebadger skull", clientId = 22055, sell = 185 }, + { itemName = "werebear fur", clientId = 22057, sell = 185 }, + { itemName = "werebear skull", clientId = 22056, sell = 195 }, + { itemName = "wereboar hooves", clientId = 22053, sell = 175 }, + { itemName = "wereboar tusk", clientId = 22054, sell = 165 }, + { itemName = "werecrocodile tongue", clientId = 43729, sell = 570 }, + { itemName = "werefox tail", clientId = 27463, sell = 200 }, + { itemName = "werehyaena nose", clientId = 33943, sell = 220 }, + { itemName = "werehyaena talisman", clientId = 33944, sell = 350 }, + { itemName = "werepanther claw", clientId = 43731, sell = 280 }, + { itemName = "weretiger tooth", clientId = 43730, sell = 490 }, + { itemName = "werewolf fangs", clientId = 22052, sell = 180 }, + { itemName = "werewolf fur", clientId = 10317, sell = 380 }, + { itemName = "white deer antlers", clientId = 12544, sell = 400 }, + { itemName = "white deer skin", clientId = 12545, sell = 245 }, + { itemName = "white silk flower", clientId = 34008, sell = 9000 }, + { itemName = "widow's mandibles", clientId = 10411, sell = 110 }, + { itemName = "wild flowers", clientId = 25691, sell = 120 }, + { itemName = "wimp tooth chain", clientId = 17847, sell = 120 }, + { itemName = "winged tail", clientId = 10313, sell = 800 }, + { itemName = "winter wolf fur", clientId = 10295, sell = 20 }, + { itemName = "witch broom", clientId = 9652, sell = 60 }, + { itemName = "withered pauldrons", clientId = 27607, sell = 850 }, + { itemName = "withered scalp", clientId = 27608, sell = 900 }, + { itemName = "wood", clientId = 5901, sell = 5 }, + { itemName = "wool", clientId = 10319, sell = 15 }, + { itemName = "writhing brain", clientId = 32600, sell = 370000 }, + { itemName = "writhing heart", clientId = 32599, sell = 185000 }, + { itemName = "wyrm scale", clientId = 9665, sell = 400 }, + { itemName = "wyvern talisman", clientId = 9644, sell = 265 }, + { itemName = "yielocks", clientId = 12805, sell = 600 }, + { itemName = "yielowax", clientId = 12742, sell = 600 }, + { itemName = "yirkas' egg", clientId = 34102, sell = 280 }, + { itemName = "young lich worm", clientId = 31590, sell = 25000 }, + { itemName = "zaogun flag", clientId = 10413, sell = 600 }, + { itemName = "zaogun's shoulderplates", clientId = 10414, sell = 150 }, + }, + + ["equipment"] = { + { itemName = "abyss hammer", clientId = 7414, sell = 20000 }, + { itemName = "albino plate", clientId = 19358, sell = 1500 }, + { itemName = "alloy legs", clientId = 21168, sell = 11000 }, + { itemName = "amber staff", clientId = 7426, sell = 8000 }, + { itemName = "ancient shield", clientId = 3432, sell = 900 }, + { itemName = "angelic axe", clientId = 7436, sell = 5000 }, + { itemName = "arbalest", clientId = 5803, sell = 42000 }, + { itemName = "arcane staff", clientId = 3341, sell = 42000 }, + { itemName = "assassin dagger", clientId = 7404, sell = 20000 }, + { itemName = "axe", clientId = 3274, sell = 7 }, + { itemName = "badger boots", clientId = 22086, sell = 7500 }, + { itemName = "bandana", clientId = 5917, sell = 150 }, + { itemName = "battle axe", clientId = 3266, sell = 80 }, + { itemName = "battle hammer", clientId = 3305, sell = 120 }, + { itemName = "battle shield", clientId = 3413, sell = 95 }, + { itemName = "batwing hat", clientId = 9103, sell = 8000 }, + { itemName = "beastslayer axe", clientId = 3344, sell = 1500 }, + { itemName = "belted cape", clientId = 8044, sell = 500 }, + { itemName = "black shield", clientId = 3429, sell = 800 }, + { itemName = "blacksteel sword", clientId = 7406, sell = 6000 }, + { itemName = "blade of corruption", clientId = 11693, sell = 60000 }, + { itemName = "blessed sceptre", clientId = 7429, sell = 40000 }, + { itemName = "bloody edge", clientId = 7416, sell = 30000 }, + { itemName = "blue legs", clientId = 645, sell = 15000 }, + { itemName = "blue robe", clientId = 3567, sell = 10000 }, + { itemName = "bone club", clientId = 3337, sell = 5 }, + { itemName = "bone shield", clientId = 3441, sell = 80 }, + { itemName = "bone sword", clientId = 3338, sell = 20 }, + { itemName = "bonebreaker", clientId = 7428, sell = 10000 }, + { itemName = "bonelord helmet", clientId = 3408, sell = 7500 }, + { itemName = "bonelord shield", clientId = 3418, sell = 1200 }, + { itemName = "boots of haste", clientId = 3079, sell = 30000 }, + { itemName = "brass armor", clientId = 3359, sell = 150 }, + { itemName = "brass helmet", clientId = 3354, sell = 30 }, + { itemName = "brass legs", clientId = 3372, sell = 49 }, + { itemName = "brass shield", clientId = 3411, sell = 25 }, + { itemName = "bright sword", clientId = 3295, sell = 6000 }, + { itemName = "broadsword", clientId = 3301, sell = 500 }, + { itemName = "butcher's axe", clientId = 7412, sell = 18000 }, + { itemName = "butterfly ring", clientId = 25698, sell = 2000 }, + { itemName = "calopteryx cape", clientId = 14086, sell = 15000 }, + { itemName = "carapace shield", clientId = 14088, sell = 32000 }, + { itemName = "carlin sword", clientId = 3283, sell = 118 }, + { itemName = "castle shield", clientId = 3435, sell = 5000 }, + { itemName = "chain armor", clientId = 3358, sell = 70 }, + { itemName = "chain bolter", clientId = 8022, sell = 40000 }, + { itemName = "chain helmet", clientId = 3352, sell = 17 }, + { itemName = "chain legs", clientId = 3558, sell = 25 }, + { itemName = "chaos mace", clientId = 7427, sell = 9000 }, + { itemName = "claw of 'the noxious spawn'", clientId = 9392, sell = 15000 }, + { itemName = "club", clientId = 3270, sell = 1 }, + { itemName = "coat", clientId = 3562, sell = 1 }, + { itemName = "cobra crown", clientId = 11674, sell = 50000 }, + { itemName = "coconut shoes", clientId = 9017, sell = 500 }, + { itemName = "composite hornbow", clientId = 8027, sell = 25000 }, + { itemName = "copper shield", clientId = 3430, sell = 50 }, + { itemName = "cowtana", clientId = 21177, sell = 2500 }, + { itemName = "cranial basher", clientId = 7415, sell = 30000 }, + { itemName = "crocodile boots", clientId = 3556, sell = 1000 }, + { itemName = "crowbar", clientId = 3304, sell = 50 }, + { itemName = "crown armor", clientId = 3381, sell = 12000 }, + { itemName = "crown helmet", clientId = 3385, sell = 2500 }, + { itemName = "crown legs", clientId = 3382, sell = 12000 }, + { itemName = "crown shield", clientId = 3419, sell = 8000 }, + { itemName = "crusader helmet", clientId = 3391, sell = 6000 }, + { itemName = "crystal crossbow", clientId = 16163, sell = 35000 }, + { itemName = "crystal mace", clientId = 3333, sell = 12000 }, + { itemName = "crystal ring", clientId = 3007, sell = 250 }, + { itemName = "crystal sword", clientId = 7449, sell = 600 }, + { itemName = "crystal wand", clientId = 3068, sell = 10000 }, + { itemName = "crystalline armor", clientId = 8050, sell = 16000 }, + { itemName = "crystalline axe", clientId = 16161, sell = 10000 }, + { itemName = "crystalline spikes", clientId = 16138, sell = 440 }, + { itemName = "crystalline sword", clientId = 16160, sell = 2000 }, + { itemName = "dagger", clientId = 3267, sell = 2 }, + { itemName = "daramian mace", clientId = 3327, sell = 110 }, + { itemName = "daramian waraxe", clientId = 3328, sell = 1000 }, + { itemName = "dark armor", clientId = 3383, sell = 400 }, + { itemName = "dark helmet", clientId = 3384, sell = 250 }, + { itemName = "dark shield", clientId = 3421, sell = 400 }, + { itemName = "death ring", clientId = 6299, sell = 1000 }, + { itemName = "deepling axe", clientId = 13991, sell = 40000 }, + { itemName = "deepling squelcher", clientId = 14250, sell = 7000 }, + { itemName = "deepling staff", clientId = 13987, sell = 4000 }, + { itemName = "demon helmet", clientId = 3387, sell = 40000 }, + { itemName = "demon shield", clientId = 3420, sell = 30000 }, + { itemName = "demonbone amulet", clientId = 3019, sell = 32000 }, + { itemName = "demonrage sword", clientId = 7382, sell = 36000 }, + { itemName = "depth calcei", clientId = 13997, sell = 25000 }, + { itemName = "depth galea", clientId = 13995, sell = 35000 }, + { itemName = "depth lorica", clientId = 13994, sell = 30000 }, + { itemName = "depth ocrea", clientId = 13996, sell = 16000 }, + { itemName = "depth scutum", clientId = 13998, sell = 36000 }, + { itemName = "devil helmet", clientId = 3356, sell = 1000 }, + { itemName = "diamond sceptre", clientId = 7387, sell = 3000 }, + { itemName = "divine plate", clientId = 8057, sell = 55000 }, + { itemName = "djinn blade", clientId = 3339, sell = 15000 }, + { itemName = "double axe", clientId = 3275, sell = 260 }, + { itemName = "doublet", clientId = 3379, sell = 3 }, + { itemName = "drachaku", clientId = 10391, sell = 10000 }, + { itemName = "dragon hammer", clientId = 3322, sell = 2000 }, + { itemName = "dragon lance", clientId = 3302, sell = 9000 }, + { itemName = "dragon robe", clientId = 8039, sell = 50000 }, + { itemName = "dragon scale mail", clientId = 3386, sell = 40000 }, + { itemName = "dragon shield", clientId = 3416, sell = 4000 }, + { itemName = "dragon slayer", clientId = 7402, sell = 15000 }, + { itemName = "dragonbone staff", clientId = 7430, sell = 3000 }, + { itemName = "draken boots", clientId = 4033, sell = 40000 }, + { itemName = "drakinata", clientId = 10388, sell = 10000 }, + { itemName = "dream essence egg", clientId = 30005, sell = 205 }, + { itemName = "dung ball", clientId = 14225, sell = 130 }, + { itemName = "dreaded cleaver", clientId = 7419, sell = 15000 }, + { itemName = "dream blossom staff", clientId = 25700, sell = 5000 }, + { itemName = "dwarven armor", clientId = 3397, sell = 30000 }, + { itemName = "dwarven axe", clientId = 3323, sell = 1500 }, + { itemName = "dwarven legs", clientId = 3398, sell = 40000 }, + { itemName = "dwarven shield", clientId = 3425, sell = 100 }, + { itemName = "elite draken mail", clientId = 11651, sell = 50000 }, + { itemName = "elvish bow", clientId = 7438, sell = 2000 }, + { itemName = "epee", clientId = 3326, sell = 8000 }, + { itemName = "execowtioner axe", clientId = 21176, sell = 12000 }, + { itemName = "executioner", clientId = 7453, sell = 55000 }, + { itemName = "fire axe", clientId = 3320, sell = 8000 }, + { itemName = "fire sword", clientId = 3280, sell = 4000 }, + { itemName = "fishing rod", clientId = 3483, sell = 40 }, + { itemName = "focus cape", clientId = 8043, sell = 6000 }, + { itemName = "fur armor", clientId = 22085, sell = 5000 }, + { itemName = "fur boots", clientId = 7457, sell = 2000 }, + { itemName = "furry club", clientId = 7432, sell = 1000 }, + { itemName = "giant sword", clientId = 3281, sell = 17000 }, + { itemName = "glacial rod", clientId = 16118, sell = 6500 }, + { itemName = "glacier amulet", clientId = 815, sell = 1500 }, + { itemName = "glacier kilt", clientId = 823, sell = 11000 }, + { itemName = "glacier mask", clientId = 829, sell = 2500 }, + { itemName = "glacier robe", clientId = 824, sell = 11000 }, + { itemName = "glacier shoes", clientId = 819, sell = 2500 }, + { itemName = "glooth axe", clientId = 21180, sell = 1500 }, + { itemName = "glooth blade", clientId = 21179, sell = 1500 }, + { itemName = "glooth cap", clientId = 21164, sell = 7000 }, + { itemName = "glooth club", clientId = 21178, sell = 1500 }, + { itemName = "glooth whip", clientId = 21172, sell = 2500 }, + { itemName = "glorious axe", clientId = 7454, sell = 3000 }, + { itemName = "golden armor", clientId = 3360, sell = 20000 }, + { itemName = "golden legs", clientId = 3364, sell = 30000 }, + { itemName = "greenwood coat", clientId = 8041, sell = 50000 }, + { itemName = "griffin shield", clientId = 3433, sell = 3000 }, + { itemName = "guardian axe", clientId = 14043, sell = 9000 }, + { itemName = "guardian boots", clientId = 10323, sell = 35000 }, + { itemName = "guardian halberd", clientId = 3315, sell = 11000 }, + { itemName = "guardian shield", clientId = 3415, sell = 2000 }, + { itemName = "hailstorm rod", clientId = 3067, sell = 3000 }, + { itemName = "halberd", clientId = 3269, sell = 400 }, + { itemName = "hammer of wrath", clientId = 3332, sell = 30000 }, + { itemName = "hand axe", clientId = 3268, sell = 4 }, + { itemName = "hatchet", clientId = 3276, sell = 25 }, + { itemName = "haunted blade", clientId = 7407, sell = 8000 }, + { itemName = "headchopper", clientId = 7380, sell = 6000 }, + { itemName = "heat core", clientId = 21167, sell = 10000 }, + { itemName = "heavy trident", clientId = 12683, sell = 2000 }, + { itemName = "heavy mace", clientId = 3340, sell = 50000 }, + { itemName = "helmet of the lost", clientId = 17852, sell = 2000 }, + { itemName = "heroic axe", clientId = 7389, sell = 30000 }, + { itemName = "hibiscus dress", clientId = 8045, sell = 3000 }, + { itemName = "hive bow", clientId = 14246, sell = 28000 }, + { itemName = "hive scythe", clientId = 14089, sell = 17000 }, + { itemName = "ice rapier", clientId = 3284, sell = 1000 }, + { itemName = "iron helmet", clientId = 3353, sell = 150 }, + { itemName = "jade hammer", clientId = 7422, sell = 25000 }, + { itemName = "jade hat", clientId = 10451, sell = 9000 }, + { itemName = "jagged sickle", clientId = 32595, sell = 150000 }, + { itemName = "katana", clientId = 3300, sell = 35 }, + { itemName = "knight armor", clientId = 3370, sell = 5000 }, + { itemName = "knight axe", clientId = 3318, sell = 2000 }, + { itemName = "knight legs", clientId = 3371, sell = 5000 }, + { itemName = "krimhorn helmet", clientId = 7461, sell = 200 }, + { itemName = "lavos armor", clientId = 8049, sell = 16000 }, + { itemName = "leaf legs", clientId = 9014, sell = 500 }, + { itemName = "leaf star", clientId = 25735, sell = 50 }, + { itemName = "leather armor", clientId = 3361, sell = 12 }, + { itemName = "leather boots", clientId = 3552, sell = 2 }, + { itemName = "leather helmet", clientId = 3355, sell = 4 }, + { itemName = "leather legs", clientId = 3559, sell = 9 }, + { itemName = "legion helmet", clientId = 3374, sell = 22 }, + { itemName = "leopard armor", clientId = 3404, sell = 1000 }, + { itemName = "life preserver", clientId = 17813, sell = 300 }, + { itemName = "light shovel", clientId = 5710, sell = 300 }, + { itemName = "lightning boots", clientId = 820, sell = 2500 }, + { itemName = "lightning headband", clientId = 828, sell = 2500 }, + { itemName = "lightning legs", clientId = 822, sell = 11000 }, + { itemName = "lightning pendant", clientId = 816, sell = 1500 }, + { itemName = "lightning robe", clientId = 825, sell = 11000 }, + { itemName = "longsword", clientId = 3285, sell = 51 }, + { itemName = "lunar staff", clientId = 7424, sell = 5000 }, + { itemName = "mace", clientId = 3286, sell = 30 }, + { itemName = "machete", clientId = 3308, sell = 6 }, + { itemName = "magic plate armor", clientId = 3366, sell = 90000 }, + { itemName = "magma boots", clientId = 818, sell = 2500 }, + { itemName = "magma legs", clientId = 821, sell = 11000 }, + { itemName = "magma monocle", clientId = 827, sell = 2500 }, + { itemName = "mammoth fur cape", clientId = 7463, sell = 6000 }, + { itemName = "mammoth fur shorts", clientId = 7464, sell = 850 }, + { itemName = "mammoth whopper", clientId = 7381, sell = 300 }, + { itemName = "mastermind shield", clientId = 3414, sell = 50000 }, + { itemName = "meat hammer", clientId = 32093, sell = 60 }, + { itemName = "medusa shield", clientId = 3436, sell = 9000 }, + { itemName = "mercenary sword", clientId = 7386, sell = 12000 }, + { itemName = "mercurial wing", clientId = 39395, sell = 2500 }, + { itemName = "metal bat", clientId = 21171, sell = 9000 }, + { itemName = "metal jaw", clientId = 21193, sell = 260 }, + { itemName = "metal spats", clientId = 21169, sell = 2000 }, + { itemName = "mino lance", clientId = 21174, sell = 7000 }, + { itemName = "mino shield", clientId = 21175, sell = 3000 }, + { itemName = "modified crossbow", clientId = 8021, sell = 10000 }, + { itemName = "mooh'tah plate", clientId = 21166, sell = 6000 }, + { itemName = "moohtant cudgel", clientId = 21173, sell = 14000 }, + { itemName = "moonlight rod", clientId = 3070, sell = 200 }, + { itemName = "morning star", clientId = 3282, sell = 100 }, + { itemName = "muck rod", clientId = 16117, sell = 6000 }, + { itemName = "mycological bow", clientId = 16164, sell = 35000 }, + { itemName = "mystic blade", clientId = 7384, sell = 30000 }, + { itemName = "mystic turban", clientId = 3574, sell = 150 }, + { itemName = "naginata", clientId = 3314, sell = 2000 }, + { itemName = "necrotic rod", clientId = 3069, sell = 1000 }, + { itemName = "nightmare blade", clientId = 7418, sell = 35000 }, + { itemName = "noble armor", clientId = 3380, sell = 900 }, + { itemName = "noble axe", clientId = 7456, sell = 10000 }, + { itemName = "noble cape", clientId = 31593, sell = 425000 }, + { itemName = "noble turban", clientId = 11486, sell = 430 }, + { itemName = "norse shield", clientId = 7460, sell = 1500 }, + { itemName = "northwind rod", clientId = 8083, sell = 1500 }, + { itemName = "obsidian lance", clientId = 3313, sell = 500 }, + { itemName = "ogre choppa", clientId = 22172, sell = 1500 }, + { itemName = "ogre klubba", clientId = 22171, sell = 2500 }, + { itemName = "ogre scepta", clientId = 22183, sell = 3600 }, + { itemName = "onyx flail", clientId = 7421, sell = 22000 }, + { itemName = "orcish axe", clientId = 3316, sell = 350 }, + { itemName = "orcish maul", clientId = 7392, sell = 6000 }, + { itemName = "oriental shoes", clientId = 21981, sell = 15000 }, + { itemName = "ornamented axe", clientId = 7411, sell = 20000 }, + { itemName = "ornamented shield", clientId = 3424, sell = 1500 }, + { itemName = "ornate chestplate", clientId = 13993, sell = 60000 }, + { itemName = "ornate crossbow", clientId = 14247, sell = 12000 }, + { itemName = "ornate legs", clientId = 13999, sell = 40000 }, + { itemName = "ornate mace", clientId = 14001, sell = 42000 }, + { itemName = "ornate shield", clientId = 14000, sell = 42000 }, + { itemName = "paladin armor", clientId = 8063, sell = 15000 }, + { itemName = "patched boots", clientId = 3550, sell = 2000 }, + { itemName = "pharaoh sword", clientId = 3334, sell = 23000 }, + { itemName = "phoenix shield", clientId = 3439, sell = 16000 }, + { itemName = "pick", clientId = 3456, sell = 15 }, + { itemName = "plate armor", clientId = 3357, sell = 400 }, + { itemName = "plate legs", clientId = 3557, sell = 115 }, + { itemName = "plate shield", clientId = 3410, sell = 45 }, + { itemName = "platinum amulet", clientId = 3055, sell = 2500 }, + { itemName = "poison dagger", clientId = 3299, sell = 50 }, + { itemName = "queen's sceptre", clientId = 7410, sell = 20000 }, + { itemName = "ragnir helmet", clientId = 7462, sell = 400 }, + { itemName = "rapier", clientId = 3272, sell = 5 }, + { itemName = "ratana", clientId = 17812, sell = 500 }, + { itemName = "relic sword", clientId = 7383, sell = 25000 }, + { itemName = "rift bow", clientId = 22866, sell = 45000 }, + { itemName = "rift crossbow", clientId = 22867, sell = 45000 }, + { itemName = "rift lance", clientId = 22727, sell = 30000 }, + { itemName = "rift shield", clientId = 22726, sell = 50000 }, + { itemName = "ripper lance", clientId = 3346, sell = 500 }, + { itemName = "rod", clientId = 33929, sell = 2200 }, + { itemName = "rope", clientId = 3003, sell = 15 }, + { itemName = "royal axe", clientId = 7434, sell = 40000 }, + { itemName = "royal helmet", clientId = 3392, sell = 30000 }, + { itemName = "rubber cap", clientId = 21165, sell = 11000 }, + { itemName = "runed sword", clientId = 7417, sell = 45000 }, + { itemName = "ruthless axe", clientId = 6553, sell = 45000 }, + { itemName = "sabre", clientId = 3273, sell = 12 }, + { itemName = "sai", clientId = 10389, sell = 16500 }, + { itemName = "sapphire hammer", clientId = 7437, sell = 7000 }, + { itemName = "scale armor", clientId = 3377, sell = 75 }, + { itemName = "scarab shield", clientId = 3440, sell = 2000 }, + { itemName = "scimitar", clientId = 3307, sell = 150 }, + { itemName = "scythe", clientId = 3453, sell = 10 }, + { itemName = "serpent sword", clientId = 3297, sell = 900 }, + { itemName = "shadow sceptre", clientId = 7451, sell = 10000 }, + { itemName = "short sword", clientId = 3294, sell = 10 }, + { itemName = "shovel", clientId = 3457, sell = 8 }, + { itemName = "sickle", clientId = 3293, sell = 3 }, + { itemName = "silkweaver bow", clientId = 8029, sell = 12000 }, + { itemName = "silver dagger", clientId = 3290, sell = 500 }, + { itemName = "skull helmet", clientId = 5741, sell = 40000 }, + { itemName = "skull staff", clientId = 3324, sell = 6000 }, + { itemName = "skullcracker armor", clientId = 8061, sell = 18000 }, + { itemName = "small axe", clientId = 3462, sell = 5 }, + { itemName = "snakebite rod", clientId = 3066, sell = 100 }, + { itemName = "soldier helmet", clientId = 3375, sell = 16 }, + { itemName = "spellbook of enlightenment", clientId = 8072, sell = 4000 }, + { itemName = "spellbook of lost souls", clientId = 8075, sell = 19000 }, + { itemName = "spellbook of mind control", clientId = 8074, sell = 13000 }, + { itemName = "spellbook of warding", clientId = 8073, sell = 8000 }, + { itemName = "spellwand", clientId = 651, sell = 299 }, + { itemName = "spellweaver's robe", clientId = 10438, sell = 12000 }, + { itemName = "spike shield", clientId = 17810, sell = 250 }, + { itemName = "spike sword", clientId = 3271, sell = 1000 }, + { itemName = "spiked squelcher", clientId = 7452, sell = 5000 }, + { itemName = "spirit cloak", clientId = 8042, sell = 350 }, + { itemName = "springsprout rod", clientId = 8084, sell = 3600 }, + { itemName = "steel boots", clientId = 3554, sell = 30000 }, + { itemName = "steel helmet", clientId = 3351, sell = 293 }, + { itemName = "steel shield", clientId = 3409, sell = 80 }, + { itemName = "strange helmet", clientId = 3373, sell = 500 }, + { itemName = "studded armor", clientId = 3378, sell = 25 }, + { itemName = "studded club", clientId = 3336, sell = 10 }, + { itemName = "studded helmet", clientId = 3376, sell = 20 }, + { itemName = "studded legs", clientId = 3362, sell = 15 }, + { itemName = "studded shield", clientId = 3426, sell = 16 }, + { itemName = "swamplair armor", clientId = 8052, sell = 16000 }, + { itemName = "sword", clientId = 3264, sell = 25 }, + { itemName = "taurus mace", clientId = 7425, sell = 500 }, + { itemName = "tempest shield", clientId = 3442, sell = 35000 }, + { itemName = "terra boots", clientId = 813, sell = 2500 }, + { itemName = "terra hood", clientId = 830, sell = 2500 }, + { itemName = "terra legs", clientId = 812, sell = 11000 }, + { itemName = "terra mantle", clientId = 811, sell = 11000 }, + { itemName = "terra rod", clientId = 3065, sell = 2000 }, + { itemName = "thaian sword", clientId = 7391, sell = 16000 }, + { itemName = "the avenger", clientId = 6527, sell = 42000 }, + { itemName = "the ironworker", clientId = 8025, sell = 50000 }, + { itemName = "the justice seeker", clientId = 7390, sell = 40000 }, + { itemName = "throwing knife", clientId = 3298, sell = 2 }, + { itemName = "tiara", clientId = 35578, sell = 11000 }, + { itemName = "titan axe", clientId = 7413, sell = 4000 }, + { itemName = "tortoise shield", clientId = 6131, sell = 150 }, + { itemName = "tower shield", clientId = 3428, sell = 8000 }, + { itemName = "twiceslicer", clientId = 11657, sell = 28000 }, + { itemName = "twin hooks", clientId = 10392, sell = 500 }, + { itemName = "two handed sword", clientId = 3265, sell = 450 }, + { itemName = "underworld rod", clientId = 8082, sell = 4400 }, + { itemName = "vampire shield", clientId = 3434, sell = 15000 }, + { itemName = "viking helmet", clientId = 3367, sell = 66 }, + { itemName = "viking shield", clientId = 3431, sell = 85 }, + { itemName = "vile axe", clientId = 7388, sell = 30000 }, + { itemName = "wand of cosmic energy", clientId = 3073, sell = 2000 }, + { itemName = "wand of decay", clientId = 3072, sell = 1000 }, + { itemName = "wand of defiance", clientId = 16096, sell = 6500 }, + { itemName = "wand of draconia", clientId = 8093, sell = 1500 }, + { itemName = "wand of dragonbreath", clientId = 3075, sell = 200 }, + { itemName = "wand of everblazing", clientId = 16115, sell = 6000 }, + { itemName = "wand of inferno", clientId = 3071, sell = 3000 }, + { itemName = "wand of starstorm", clientId = 8092, sell = 3600 }, + { itemName = "wand of voodoo", clientId = 8094, sell = 4400 }, + { itemName = "wand of vortex", clientId = 3074, sell = 100 }, + { itemName = "war axe", clientId = 3342, sell = 12000 }, + { itemName = "war hammer", clientId = 3279, sell = 1200 }, + { itemName = "warrior helmet", clientId = 3369, sell = 5000 }, + { itemName = "warrior's axe", clientId = 14040, sell = 11000 }, + { itemName = "warrior's shield", clientId = 14042, sell = 9000 }, + { itemName = "watch", clientId = 2906, sell = 6 }, + { itemName = "wereboar loincloth", clientId = 22087, sell = 1500 }, + { itemName = "windborn colossus armor", clientId = 8055, sell = 50000 }, + { itemName = "witch hat", clientId = 9653, sell = 5000 }, + { itemName = "wood cape", clientId = 3575, sell = 5000 }, + { itemName = "wooden hammer", clientId = 3459, sell = 15 }, + { itemName = "wooden shield", clientId = 3412, sell = 5 }, + { itemName = "wooden spellbook", clientId = 25699, sell = 12000 }, + { itemName = "wyvern fang", clientId = 7408, sell = 1500 }, + { itemName = "zaoan armor", clientId = 10384, sell = 14000 }, + { itemName = "zaoan halberd", clientId = 10406, sell = 500 }, + { itemName = "zaoan helmet", clientId = 10385, sell = 45000 }, + { itemName = "zaoan legs", clientId = 10387, sell = 14000 }, + { itemName = "zaoan robe", clientId = 10439, sell = 12000 }, + { itemName = "zaoan shoes", clientId = 10386, sell = 5000 }, + { itemName = "zaoan sword", clientId = 10390, sell = 30000 }, + }, + + ["amulets"] = { + { itemName = "amulet of loss", clientId = 3057, sell = 45000 }, + { itemName = "ancient amulet", clientId = 3025, sell = 200 }, + { itemName = "collar of blue plasma", clientId = 23542, sell = 6000 }, + { itemName = "collar of green plasma", clientId = 23543, sell = 6000 }, + { itemName = "collar of red plasma", clientId = 23544, sell = 6000 }, + { itemName = "crystal necklace", clientId = 3008, sell = 400 }, + { itemName = "dragon necklace", clientId = 3085, sell = 100, count = 200 }, + { itemName = "elven amulet", clientId = 3082, sell = 100, count = 50 }, + { itemName = "garlic necklace", clientId = 3083, sell = 50 }, + { itemName = "gearwheel chain", clientId = 21170, sell = 5000 }, + { itemName = "glooth amulet", clientId = 21183, sell = 2000 }, + { itemName = "leviathan's amulet", clientId = 9303, sell = 3000 }, + { itemName = "magma amulet", clientId = 817, sell = 1500 }, + { itemName = "noble amulet", clientId = 31595, sell = 430000 }, + { itemName = "onyx pendant", clientId = 22195, sell = 3500 }, + { itemName = "ornate locket", clientId = 30056, sell = 18000 }, + { itemName = "protection amulet", clientId = 3084, sell = 100, count = 250 }, + { itemName = "ruby necklace", clientId = 3016, sell = 2000 }, + { itemName = "sacred tree amulet", clientId = 9302, sell = 3000 }, + { itemName = "scarab amulet", clientId = 3018, sell = 200 }, + { itemName = "shockwave amulet", clientId = 9304, sell = 3000 }, + { itemName = "silver amulet", clientId = 3054, sell = 50, count = 200 }, + { itemName = "star amulet", clientId = 3014, sell = 500 }, + { itemName = "stone skin amulet", clientId = 3081, sell = 500, count = 5 }, + { itemName = "terra amulet", clientId = 814, sell = 1500 }, + { itemName = "wailing widow's necklace", clientId = 10412, sell = 3000 }, + { itemName = "werewolf amulet", clientId = 22060, sell = 3000 }, + { itemName = "wolf tooth chain", clientId = 3012, sell = 100 }, + }, + + ["rings"] = { + { itemName = "axe ring", clientId = 3092, sell = 100 }, + { itemName = "club ring", clientId = 3093, sell = 100 }, + { itemName = "dwarven ring", clientId = 3097, sell = 100 }, + { itemName = "energy ring", clientId = 3051, sell = 100 }, + { itemName = "life ring", clientId = 3052, sell = 50 }, + { itemName = "might ring", clientId = 3048, sell = 250, count = 20 }, + { itemName = "power ring", clientId = 3050, sell = 50 }, + { itemName = "ring of blue plasma", clientId = 23529, sell = 8000 }, + { itemName = "ring of green plasma", clientId = 23531, sell = 8000 }, + { itemName = "ring of healing", clientId = 3098, sell = 100 }, + { itemName = "ring of red plasma", clientId = 23533, sell = 8000 }, + { itemName = "ring of the sky", clientId = 3006, sell = 30000 }, + { itemName = "signet ring", clientId = 31592, sell = 480000 }, + { itemName = "stealth ring", clientId = 3049, sell = 200 }, + { itemName = "sword ring", clientId = 3091, sell = 100 }, + { itemName = "time ring", clientId = 3053, sell = 100 }, + { itemName = "wedding ring", clientId = 3004, sell = 100 }, + }, + + ["valuables"] = { + { itemName = "ancient coin", clientId = 24390, sell = 350 }, + { itemName = "ancient stone", clientId = 9632, sell = 200 }, + { itemName = "angel figurine", clientId = 32589, sell = 36000 }, + { itemName = "ankh", clientId = 3077, sell = 100 }, + { itemName = "bar of gold", clientId = 14112, sell = 10000 }, + { itemName = "basalt figurine", clientId = 17857, sell = 160 }, + { itemName = "battle stone", clientId = 11447, sell = 290 }, + { itemName = "beast's nightmare-cushion", clientId = 29946, sell = 630000 }, + { itemName = "black pearl", clientId = 3027, sell = 280 }, + { itemName = "blood goblet", clientId = 8531, sell = 10000 }, + { itemName = "blue crystal shard", clientId = 16119, sell = 1500 }, + { itemName = "blue crystal splinter", clientId = 16124, sell = 400 }, + { itemName = "blue gem", clientId = 3041, sell = 5000 }, + { itemName = "broken iks cuirass", clientId = 40533, sell = 640 }, + { itemName = "brown crystal splinter", clientId = 16123, sell = 400 }, + { itemName = "brown giant shimmering pearl", clientId = 282, sell = 3000 }, + { itemName = "ceremonial ankh", clientId = 6561, sell = 20000 }, + { itemName = "cracked alabaster vase", clientId = 24385, sell = 180 }, + { itemName = "crown", clientId = 33935, sell = 2700 }, + { itemName = "cry-stal", clientId = 39394, sell = 3200 }, + { itemName = "crystal ball", clientId = 3076, sell = 190 }, + { itemName = "crystal of balance", clientId = 9028, sell = 1000 }, + { itemName = "crystal of focus", clientId = 9027, sell = 2000 }, + { itemName = "crystal of power", clientId = 9067, sell = 3000 }, + { itemName = "crystallized anger", clientId = 23507, sell = 400 }, + { itemName = "cyan crystal fragment", clientId = 16125, sell = 800 }, + { itemName = "dark rosary", clientId = 10303, sell = 48 }, + { itemName = "death toll", clientId = 32703, sell = 1000 }, + { itemName = "diamond", clientId = 32770, sell = 15000 }, + { itemName = "dragon figurine", clientId = 30053, sell = 45000 }, + { itemName = "eldritch crystal", clientId = 36835, sell = 48000 }, + { itemName = "emerald bangle", clientId = 3010, sell = 800 }, + { itemName = "explorer brooch", clientId = 4871, sell = 50 }, + { itemName = "figurine of cruelty", clientId = 34019, sell = 3100000 }, + { itemName = "figurine of greed", clientId = 34021, sell = 2900000 }, + { itemName = "figurine of hatred", clientId = 34020, sell = 2700000 }, + { itemName = "figurine of malice", clientId = 34018, sell = 2800000 }, + { itemName = "figurine of megalomania", clientId = 33953, sell = 5000000 }, + { itemName = "figurine of spite", clientId = 33952, sell = 3000000 }, + { itemName = "flawless ice crystal", clientId = 942, sell = 5000 }, + { itemName = "flintstone", clientId = 12806, sell = 800 }, + { itemName = "frozen lightning", clientId = 23519, sell = 270 }, + { itemName = "frozen starlight", clientId = 3249, sell = 20000 }, + { itemName = "gemmed figurine", clientId = 24392, sell = 3500 }, + { itemName = "giant amethyst", clientId = 32622, sell = 60000 }, + { itemName = "giant emerald", clientId = 30060, sell = 90000 }, + { itemName = "giant pacifier", clientId = 21199, sell = 170 }, + { itemName = "giant ruby", clientId = 30059, sell = 70000 }, + { itemName = "giant sapphire", clientId = 30061, sell = 50000 }, + { itemName = "giant topaz", clientId = 32623, sell = 80000 }, + { itemName = "glowing rune", clientId = 28570, sell = 350 }, + { itemName = "gold ingot", clientId = 9058, sell = 5000 }, + { itemName = "gold nugget", clientId = 3040, sell = 850 }, + { itemName = "gold ring", clientId = 3063, sell = 8000 }, + { itemName = "gold-brocaded cloth", clientId = 40529, sell = 175 }, + { itemName = "golden amulet", clientId = 3013, sell = 2000 }, + { itemName = "golden brush", clientId = 25689, sell = 250 }, + { itemName = "golden cheese wedge", clientId = 35581, sell = 6000 }, + { itemName = "golden dustbin", clientId = 35579, sell = 7000 }, + { itemName = "golden fafnar trophy", clientId = 9626, sell = 10000 }, + { itemName = "golden figurine", clientId = 5799, sell = 3000 }, + { itemName = "golden lotus brooch", clientId = 21974, sell = 270 }, + { itemName = "golden mask", clientId = 31324, sell = 38000 }, + { itemName = "golden mug", clientId = 2903, sell = 250 }, + { itemName = "golden sickle", clientId = 3306, sell = 1000 }, + { itemName = "golden skull", clientId = 35580, sell = 9000 }, + { itemName = "golden sun coin", clientId = 43734, sell = 11000 }, + { itemName = "golden tiger coin", clientId = 43735, sell = 11000 }, + { itemName = "green crystal fragment", clientId = 16127, sell = 800 }, + { itemName = "green crystal shard", clientId = 16121, sell = 1500 }, + { itemName = "green crystal splinter", clientId = 16122, sell = 400 }, + { itemName = "green gem", clientId = 3038, sell = 5000 }, + { itemName = "green giant shimmering pearl", clientId = 281, sell = 3000 }, + { itemName = "hexagonal ruby", clientId = 30180, sell = 30000 }, + { itemName = "life crystal", clientId = 3061, sell = 85 }, + { itemName = "magic light wand", clientId = 3046, sell = 35 }, + { itemName = "medal of valiance", clientId = 31591, sell = 410000 }, + { itemName = "mind stone", clientId = 3062, sell = 100 }, + { itemName = "moonstone", clientId = 32771, sell = 13000 }, + { itemName = "onyx chip", clientId = 22193, sell = 500 }, + { itemName = "opal", clientId = 22194, sell = 500 }, + { itemName = "orb", clientId = 3060, sell = 750 }, + { itemName = "orichalcum pearl", clientId = 5021, sell = 40 }, + { itemName = "pirate coin", clientId = 35572, sell = 110 }, + { itemName = "plasma pearls", clientId = 23506, sell = 250 }, + { itemName = "prismatic quartz", clientId = 24962, sell = 450 }, + { itemName = "purple tome", clientId = 2848, sell = 2000 }, + { itemName = "rainbow quartz", clientId = 25737, sell = 800 }, + { itemName = "red crystal fragment", clientId = 16126, sell = 800 }, + { itemName = "red gem", clientId = 3039, sell = 1000 }, + { itemName = "red tome", clientId = 2852, sell = 2000 }, + { itemName = "royal almandine", clientId = 39038, sell = 460000 }, + { itemName = "scarab coin", clientId = 3042, sell = 100 }, + { itemName = "sea horse figurine", clientId = 31323, sell = 42000 }, + { itemName = "seacrest pearl", clientId = 21747, sell = 400 }, + { itemName = "shiny stone", clientId = 10310, sell = 500 }, + { itemName = "silver brooch", clientId = 3017, sell = 150 }, + { itemName = "silver foxmouse coin", clientId = 43733, sell = 11000 }, + { itemName = "silver hand mirror", clientId = 32772, sell = 10000 }, + { itemName = "silver moon coin", clientId = 43732, sell = 11000 }, + { itemName = "silver rune emblem explosion", clientId = 11607, sell = 5000 }, + { itemName = "silver rune emblem heavy magic missile", clientId = 11605, sell = 5000 }, + { itemName = "silver rune emblem sudden death", clientId = 11609, sell = 5000 }, + { itemName = "silver rune emblem ultimate healing", clientId = 11603, sell = 5000 }, + { itemName = "skull coin", clientId = 32583, sell = 12000 }, + { itemName = "small amethyst", clientId = 3033, sell = 200 }, + { itemName = "small diamond", clientId = 3028, sell = 300 }, + { itemName = "small emerald", clientId = 3032, sell = 250 }, + { itemName = "small enchanted amethyst", clientId = 678, sell = 200 }, + { itemName = "small enchanted emerald", clientId = 677, sell = 250 }, + { itemName = "small enchanted ruby", clientId = 676, sell = 250 }, + { itemName = "small enchanted sapphire", clientId = 675, sell = 250 }, + { itemName = "small ruby", clientId = 3030, sell = 250 }, + { itemName = "small sapphire", clientId = 3029, sell = 250 }, + { itemName = "small topaz", clientId = 9057, sell = 200 }, + { itemName = "small treasure chest", clientId = 35571, sell = 500 }, + { itemName = "spectral gold nugget", clientId = 32724, sell = 500 }, + { itemName = "spectral silver nugget", clientId = 32725, sell = 250 }, + { itemName = "spectral stone", clientId = 4840, sell = 50 }, + { itemName = "talon", clientId = 3034, sell = 320 }, + { itemName = "unicorn figurine", clientId = 30054, sell = 50000 }, + { itemName = "violet crystal shard", clientId = 16120, sell = 1500 }, + { itemName = "violet gem", clientId = 3036, sell = 10000 }, + { itemName = "war crystal", clientId = 9654, sell = 460 }, + { itemName = "watermelon tourmaline (slice)", clientId = 33779, sell = 30000 }, + { itemName = "watermelon tourmaline", clientId = 33780, sell = 230000 }, + { itemName = "white gem", clientId = 32769, sell = 12000 }, + { itemName = "white pearl", clientId = 3026, sell = 160 }, + { itemName = "yellow gem", clientId = 3037, sell = 1000 }, + }, + + ["quest items"] = { + { itemName = "ape fur", clientId = 5883, sell = 120 }, + { itemName = "bat wing", clientId = 5894, sell = 50 }, + { itemName = "bear paw", clientId = 5896, sell = 100 }, + { itemName = "behemoth claw", clientId = 5930, sell = 2000 }, + { itemName = "blue piece of cloth", clientId = 5912, sell = 200 }, + { itemName = "bonelord eye", clientId = 5898, sell = 80 }, + { itemName = "brown piece of cloth", clientId = 5913, sell = 100 }, + { itemName = "cluster of solace", clientId = 20062, sell = 500 }, + { itemName = "demon dust", clientId = 5906, sell = 300 }, + { itemName = "demonic essence", clientId = 6499, sell = 1000 }, + { itemName = "dragon claw", clientId = 5919, sell = 8000 }, + { itemName = "egg of the many", clientId = 9606, sell = 15000 }, + { itemName = "enchanted chicken wing", clientId = 5891, sell = 20000 }, + { itemName = "first verse of the hymn", clientId = 6087, sell = 100 }, + { itemName = "fish fin", clientId = 5895, sell = 150 }, + { itemName = "fourth verse of the hymn", clientId = 6090, sell = 800 }, + { itemName = "green dragon leather", clientId = 5877, sell = 100 }, + { itemName = "green dragon scale", clientId = 5920, sell = 100 }, + { itemName = "green piece of cloth", clientId = 5910, sell = 200 }, + { itemName = "hardened bone", clientId = 5925, sell = 70 }, + { itemName = "heaven blossom", clientId = 5921, sell = 50 }, + { itemName = "holy orchid", clientId = 5922, sell = 90 }, + { itemName = "honeycomb", clientId = 5902, sell = 40 }, + { itemName = "iced soil", clientId = 944, sell = 2000 }, + { itemName = "energy soil", clientId = 945, sell = 2000 }, + { itemName = "iron ore", clientId = 5880, sell = 500 }, + { itemName = "lizard leather", clientId = 5876, sell = 150 }, + { itemName = "lizard scale", clientId = 5881, sell = 120 }, + { itemName = "magic sulphur", clientId = 5904, sell = 8000 }, + { itemName = "mammoth tusk", clientId = 10321, sell = 100 }, + { itemName = "mandrake", clientId = 5014, sell = 5000 }, + { itemName = "minotaur leather", clientId = 5878, sell = 80 }, + { itemName = "mother soil", clientId = 947, sell = 5000 }, + { itemName = "natural soil", clientId = 940, sell = 2000 }, + { itemName = "necklace of the deep", clientId = 13990, sell = 3000 }, + { itemName = "nose ring", clientId = 5804, sell = 2000 }, + { itemName = "perfect behemoth fang", clientId = 5893, sell = 250 }, + { itemName = "piece of royal steel", clientId = 5887, sell = 10000 }, + { itemName = "piece of draconian steel", clientId = 5889, sell = 3000 }, + { itemName = "piece of hell steel", clientId = 5888, sell = 500 }, + { itemName = "pirate voodoo doll", clientId = 5810, sell = 500 }, + { itemName = "red dragon leather", clientId = 5948, sell = 200 }, + { itemName = "red dragon scale", clientId = 5882, sell = 200 }, + { itemName = "red piece of cloth", clientId = 5911, sell = 300 }, + { itemName = "second verse of the hymn", clientId = 6088, sell = 250 }, + { itemName = "shard", clientId = 7290, sell = 2000 }, + { itemName = "sniper gloves", clientId = 5875, sell = 2000 }, + { itemName = "soul stone", clientId = 5809, sell = 6000 }, + { itemName = "spider silk", clientId = 5879, sell = 100 }, + { itemName = "spirit container", clientId = 5884, sell = 40000 }, + { itemName = "spool of yarn", clientId = 5886, sell = 1000 }, + { itemName = "third verse of the hymn", clientId = 6089, sell = 400 }, + { itemName = "turtle shell", clientId = 5899, sell = 90 }, + { itemName = "vampire dust", clientId = 5905, sell = 100 }, + { itemName = "voodoo doll", clientId = 3002, sell = 400 }, + { itemName = "white piece of cloth", clientId = 5909, sell = 100 }, + { itemName = "wolf paw", clientId = 5897, sell = 70 }, + { itemName = "yellow piece of cloth", clientId = 5914, sell = 150 }, + }, + + ["decoration"] = { + { itemName = "baby seal doll", clientId = 7183, sell = 20000 }, + { itemName = "bat decoration", clientId = 6491, sell = 2000 }, + { itemName = "behemoth trophy", clientId = 7396, sell = 20000 }, + { itemName = "blood herb", clientId = 3734, sell = 500 }, + { itemName = "blue rose", clientId = 3659, sell = 250 }, + { itemName = "bonebeast trophy", clientId = 10244, sell = 6000 }, + { itemName = "crystal pedestal", clientId = 9063, sell = 500 }, + { itemName = "cyclops trophy", clientId = 7398, sell = 500 }, + { itemName = "deer trophy", clientId = 7397, sell = 3000 }, + { itemName = "demon trophy", clientId = 7393, sell = 40000 }, + { itemName = "disgusting trophy", clientId = 10421, sell = 3000 }, + { itemName = "doll", clientId = 2991, sell = 200 }, + { itemName = "dracoyle statue", clientId = 9034, sell = 5000 }, + { itemName = "dragon lord trophy", clientId = 7399, sell = 10000 }, + { itemName = "draken trophy", clientId = 10398, sell = 15000 }, + { itemName = "lion trophy", clientId = 7400, sell = 3000 }, + { itemName = "lizard trophy", clientId = 10419, sell = 8000 }, + { itemName = "marlin trophy", clientId = 902, sell = 5000 }, + { itemName = "minotaur trophy", clientId = 7401, sell = 500 }, + { itemName = "model ship", clientId = 2994, sell = 1000 }, + { itemName = "morbid tapestry", clientId = 34170, sell = 30000 }, + { itemName = "panda teddy", clientId = 5080, sell = 30000 }, + { itemName = "pet pig", clientId = 16165, sell = 1500 }, + { itemName = "sea serpent trophy", clientId = 9613, sell = 10000 }, + { itemName = "silver fafnar trophy", clientId = 9627, sell = 1000 }, + { itemName = "skeleton decoration", clientId = 6525, sell = 3000 }, + { itemName = "souleater trophy", clientId = 11679, sell = 7500 }, + { itemName = "statue of abyssador", clientId = 16232, sell = 4000 }, + { itemName = "statue of deathstrike", clientId = 16236, sell = 3000 }, + { itemName = "statue of devovorga", clientId = 4065, sell = 1500 }, + { itemName = "statue of gnomevil", clientId = 16240, sell = 2000 }, + { itemName = "stuffed dragon", clientId = 5791, sell = 6000 }, + { itemName = "trophy of jaul", clientId = 14006, sell = 4000 }, + { itemName = "trophy of obujos", clientId = 14002, sell = 3000 }, + { itemName = "trophy of tanjis", clientId = 14004, sell = 2000 }, + { itemName = "werebadger trophy", clientId = 22101, sell = 9000 }, + { itemName = "werebear trophy", clientId = 22103, sell = 11000 }, + { itemName = "wereboar trophy", clientId = 22102, sell = 10000 }, + { itemName = "werecrocodile trophy", clientId = 43916, sell = 15000 }, + { itemName = "werefox trophy", clientId = 27706, sell = 9000 }, + { itemName = "werehyaena trophy", clientId = 34219, sell = 12000 }, + { itemName = "werepanther trophy", clientId = 43917, sell = 14000 }, + { itemName = "weretiger trophy", clientId = 43915, sell = 14000 }, + { itemName = "wolf trophy", clientId = 7394, sell = 3000 }, + }, + + ["potions"] = { + { itemName = "berserk potion", clientId = 7439, sell = 500 }, + { itemName = "bullseye potion", clientId = 7443, sell = 500 }, + { itemName = "empty potion flask", clientId = 283, sell = 5 }, + { itemName = "empty potion flask", clientId = 284, sell = 5 }, + { itemName = "empty potion flask", clientId = 285, sell = 5 }, + { itemName = "mastermind potion", clientId = 7440, sell = 500 }, + { itemName = "vial", clientId = 2874, sell = 5 }, + }, + + ["food"] = { + { itemName = "dark mushroom", clientId = 3728, sell = 100 }, + { itemName = "ectoplasmic sushi", clientId = 11681, sell = 300 }, + { itemName = "fire mushroom", clientId = 3731, sell = 200 }, + { itemName = "green mushroom", clientId = 3732, sell = 100 }, + { itemName = "orange mushroom", clientId = 3726, sell = 150 }, + { itemName = "wood mushroom", clientId = 3727, sell = 15 }, + }, +} + +local garbage = { + "Spatial Warp Almanac", + "assassin star", + "big bone", + "bug meat", + "cape", + "combat knife", + "dirty cape", + "dirty fur", + "energy bar", + "fishbone", + "flash arrow", + "great health potion", + "great mana potion", + "great spirit potion", + "ham", + "health potion", + "knife", + "mana potion", + "royal star", + "strong health potion", + "strong mana potion", + "supreme health potion", + "the spatial warp almanac", + "ultimate health potion", + "ultimate mana potion", + "ultimate spirit potion", + "onyx arrow", + "small stone", + 1047, -- bone + 1048, -- bone + 3115, -- bone + 2920, -- torch + 6558, -- demonic blood + 27509, -- heavy crystal fragment + 27713, -- heavy crystal fragment +} + +LootShopConfigTable["garbage"] = {} + +for _, itemNameOrId in ipairs(garbage) do + local item = ItemType(itemNameOrId) + if item and item:getId() > 0 then + local suplyShop = FindSupplyShopItem(item:getName()) + local price = 1 + if suplyShop then + price = math.ceil(suplyShop.buy / 3) + end + table.insert(LootShopConfigTable["garbage"], { itemName = item:getName(), clientId = item:getId(), sell = price }) + end +end + +local lootPouchEntry = { itemName = "all loot in pouch", clientId = ITEM_GOLD_POUCH, sell = 1 } +LootShopConfig = { lootPouchEntry } + +for category, items in pairs(LootShopConfigTable) do + for _, item in ipairs(items) do + table.insert(LootShopConfig, item) + end + table.insert(LootShopConfigTable[category], lootPouchEntry) +end + +function FindLootShopCategory(categoryName) + for category, items in pairs(LootShopConfigTable) do + if string.starts(category:lower(), categoryName:lower()) then + return items + end + end +end + +function FindLootShopItem(itemName) + for _, item in ipairs(LootShopConfig) do + if string.starts(item.itemName:lower(), itemName:lower()) then + return item + end + end +end diff --git a/data-otxserver/scripts/movements/others/closing_door.lua b/data-otxserver/scripts/movements/others/closing_door.lua index 750d6defc..448d208b2 100644 --- a/data-otxserver/scripts/movements/others/closing_door.lua +++ b/data-otxserver/scripts/movements/others/closing_door.lua @@ -13,6 +13,9 @@ for index, value in ipairs(LevelDoorTable) do table.insert(doorIds, value.openDoor) end end +local skipActionIds = { + 12107, +} function closingDoor.onStepIn(creature, item, position, fromPosition) local player = creature:getPlayer() @@ -22,7 +25,7 @@ function closingDoor.onStepIn(creature, item, position, fromPosition) for index, value in ipairs(QuestDoorTable) do if value.openDoor == item.itemid then - if player:getStorageValue(item.actionid) ~= -1 then + if player:getStorageValue(item.actionid) ~= -1 or table.contains(skipActionIds, item.actionid) then return true else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The door seems to be sealed against unwanted intruders.") @@ -103,11 +106,13 @@ function closingDoor.onStepOut(creature, item, position, fromPosition) for index, value in ipairs(LevelDoorTable) do if value.openDoor == item.itemid then item:transform(value.closedDoor) + item:getPosition():sendSingleSoundEffect(SOUND_EFFECT_TYPE_ACTION_CLOSE_DOOR) end end for index, value in ipairs(QuestDoorTable) do if value.openDoor == item.itemid then item:transform(value.closedDoor) + item:getPosition():sendSingleSoundEffect(SOUND_EFFECT_TYPE_ACTION_CLOSE_DOOR) end end return true diff --git a/data-otxserver/scripts/quests/the_order_of_lion/action-bounac_entrance.lua b/data-otxserver/scripts/quests/the_order_of_lion/action-bounac_entrance.lua index 803bfc1b1..6c4c6b6d5 100644 --- a/data-otxserver/scripts/quests/the_order_of_lion/action-bounac_entrance.lua +++ b/data-otxserver/scripts/quests/the_order_of_lion/action-bounac_entrance.lua @@ -20,3 +20,6 @@ end bounacEntrance:aid(59602) bounacEntrance:aid(59603) bounacEntrance:register() + +SimpleTeleport(Position(32475, 32497, 7), Position(32475, 32496, 6), nil, true) +SimpleTeleport(Position(32475, 32497, 6), Position(32475, 32498, 7), nil, true) diff --git a/data-otxserver/scripts/spells/monster/charge_vortex.lua b/data-otxserver/scripts/spells/monster/charge_vortex.lua index 1efc07973..4cf96614b 100644 --- a/data-otxserver/scripts/spells/monster/charge_vortex.lua +++ b/data-otxserver/scripts/spells/monster/charge_vortex.lua @@ -1,51 +1,34 @@ -local mathCount = 0 - -local positions = {} +local positions = { + Position(32264, 31253, 14), + Position(32269, 31258, 14), + Position(32275, 31255, 14), + Position(32280, 31253, 14), + Position(32271, 31248, 14), + Position(32264, 31245, 14), + Position(32270, 31240, 14), + Position(32269, 31253, 14), + Position(32275, 31245, 14), + Position(32276, 31250, 14), + Position(32266, 31249, 14), +} local function createVortex() - local storedPositions = { - { x = 32264, y = 31253, z = 14 }, - { x = 32269, y = 31258, z = 14 }, - { x = 32275, y = 31255, z = 14 }, - { x = 32280, y = 31253, z = 14 }, - { x = 32271, y = 31248, z = 14 }, - { x = 32264, y = 31245, z = 14 }, - { x = 32270, y = 31240, z = 14 }, - { x = 32269, y = 31253, z = 14 }, - { x = 32275, y = 31245, z = 14 }, - { x = 32276, y = 31250, z = 14 }, - { x = 32266, y = 31249, z = 14 }, - } - - if mathCount == 0 then - positions = storedPositions - end - - local r1 = math.random(#positions) - - local tile = Tile(positions[r1]) - + local tile = Tile(positions[math.random(#positions)]) if tile then local ground = tile:getGround() if ground then ground:transform(22894) - addEvent(function(pos) - local tile = Tile(pos) + addEvent(function(positionInAddEvent) + local tile = Tile(positionInAddEvent) if tile then local ground = tile:getGround() if ground then ground:transform(23049) end end - end, 10 * 1000, tile:getPosition()) -- 10*1000 = 10 SECONDS - mathCount = mathCount + 1 - table.remove(positions, r1) + end, 10 * 1000, tile:getPosition()) -- 10 seconds end end - - if mathCount == 11 then - mathCount = 0 - end end local spell = Spell("instant") diff --git a/data-otxserver/scripts/spells/monster/icicle_heal.lua b/data-otxserver/scripts/spells/monster/icicle_heal.lua index 65231af0a..f2bae458b 100644 --- a/data-otxserver/scripts/spells/monster/icicle_heal.lua +++ b/data-otxserver/scripts/spells/monster/icicle_heal.lua @@ -4,16 +4,17 @@ combat:setParameter(COMBAT_PARAM_AGGRESSIVE, 0) combat:setArea(createCombatArea(AREA_CIRCLE3X3)) function onTargetCreature(creature, target) - local min = 400 - local max = 600 - - local master = target:getMaster() - if target:isPlayer() and not master or master and master:isPlayer() then - return true + local spectators, spectator = Game.getSpectators(creature:getPosition(), false, false, 3, 3, 3, 3) + for i = 1, #spectators do + spectator = spectators[i] + if spectator:isMonster() and spectator:getName():lower() == "dragon egg" then + creature:setTarget("dragon egg") + if target:getName():lower() == "dragon egg" then + target:addHealth(-100) + return true + end + end end - - doTargetCombatHealth(0, target, COMBAT_HEALING, min, max, CONST_ME_NONE) - return true end combat:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature") @@ -29,5 +30,5 @@ spell:words("###436") spell:isAggressive(true) spell:blockWalls(true) spell:needLearn(true) -spell:isSelfTarget(true) +spell:isSelfTarget(false) spell:register() diff --git a/data-otxserver/scripts/spells/monster/sparks_chain.lua b/data-otxserver/scripts/spells/monster/sparks_chain.lua new file mode 100644 index 000000000..2134252d9 --- /dev/null +++ b/data-otxserver/scripts/spells/monster/sparks_chain.lua @@ -0,0 +1,22 @@ +local combat = Combat() +combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN) +combat:setParameter(COMBAT_PARAM_CHAIN_EFFECT, CONST_ME_MAGIC_RED) + +function getChainValue(creature) + return 2, 3, false +end + +combat:setCallback(CALLBACK_PARAM_CHAINVALUE, "getChainValue") + +local spell = Spell("instant") + +function spell.onCastSpell(creature, var) + return combat:execute(creature, var) +end + +spell:name("sparks chain") +spell:words("###6054") +spell:needLearn(true) +spell:cooldown("2000") +spell:isSelfTarget(true) +spell:register() diff --git a/data-otxserver/scripts/spells/runes/paralyze_rune.lua b/data-otxserver/scripts/spells/runes/paralyze_rune.lua index a0f41ac1f..b0c602a15 100644 --- a/data-otxserver/scripts/spells/runes/paralyze_rune.lua +++ b/data-otxserver/scripts/spells/runes/paralyze_rune.lua @@ -4,7 +4,7 @@ combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_UNDEFINEDDAMAGE) local condition = Condition(CONDITION_PARALYZE) condition:setParameter(CONDITION_PARAM_TICKS, 6000) -condition:setFormula(-1, 81, -1, 81) +condition:setFormula(-1, 0, -1, 0) combat:addCondition(condition) local rune = Spell("rune") diff --git a/data-otxserver/scripts/spells/support/charge.lua b/data-otxserver/scripts/spells/support/charge.lua index a78780574..f8a0e6c02 100644 --- a/data-otxserver/scripts/spells/support/charge.lua +++ b/data-otxserver/scripts/spells/support/charge.lua @@ -4,7 +4,7 @@ combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false) local condition = Condition(CONDITION_HASTE) condition:setParameter(CONDITION_PARAM_TICKS, 5000) -condition:setFormula(0.9, -0, 0.9, -0) +condition:setFormula(1.9, 40, 1.9, 40) combat:addCondition(condition) local spell = Spell("instant") diff --git a/data-otxserver/scripts/spells/support/haste.lua b/data-otxserver/scripts/spells/support/haste.lua index ee783e9fc..2766d3e79 100644 --- a/data-otxserver/scripts/spells/support/haste.lua +++ b/data-otxserver/scripts/spells/support/haste.lua @@ -4,7 +4,7 @@ combat:setParameter(COMBAT_PARAM_AGGRESSIVE, false) local condition = Condition(CONDITION_HASTE) condition:setParameter(CONDITION_PARAM_TICKS, 30000) -condition:setFormula(0.3, -0, 0.3, -0) +condition:setFormula(1.3, 40, 1.3, 40) combat:addCondition(condition) local spell = Spell("instant") diff --git a/data-otxserver/scripts/spells/support/strong_haste.lua b/data-otxserver/scripts/spells/support/strong_haste.lua index 6cef310e9..11118f3e9 100644 --- a/data-otxserver/scripts/spells/support/strong_haste.lua +++ b/data-otxserver/scripts/spells/support/strong_haste.lua @@ -4,7 +4,7 @@ combat:setParameter(COMBAT_PARAM_AGGRESSIVE, 0) local condition = Condition(CONDITION_HASTE) condition:setParameter(CONDITION_PARAM_TICKS, 22000) -condition:setFormula(0.7, -56, 0.7, -56) +condition:setFormula(1.7, 40, 1.7, 40) combat:addCondition(condition) local spell = Spell("instant") diff --git a/data/XML/mounts.xml b/data/XML/mounts.xml index b0922f3f4..31e8c8068 100644 --- a/data/XML/mounts.xml +++ b/data/XML/mounts.xml @@ -216,5 +216,9 @@ - + + + diff --git a/data/events/scripts/player.lua b/data/events/scripts/player.lua index 0bb3e6ead..7e74f06c9 100644 --- a/data/events/scripts/player.lua +++ b/data/events/scripts/player.lua @@ -40,7 +40,7 @@ local storeItemID = { -- Players cannot throw items on teleports if set to true local blockTeleportTrashing = true -local config = { +local configPush = { maxItemsPerSeconds = 1, exhaustTime = 2000, } @@ -80,8 +80,8 @@ local function antiPush(player, item, count, fromPosition, toPosition, fromCylin pushDelay[playerId].items = 0 end - if pushDelay[playerId].items > config.maxItemsPerSeconds then - pushDelay[playerId].time = currentTime + config.exhaustTime + if pushDelay[playerId].items > configPush.maxItemsPerSeconds then + pushDelay[playerId].time = currentTime + configPush.exhaustTime end if pushDelay[playerId].time > currentTime then @@ -197,6 +197,10 @@ local function useConcoctionTime(player) end function Player:onLookInBattleList(creature, distance) + if not creature then + return false + end + local description = "You see " .. creature:getDescription(distance) if creature:isMonster() then local master = creature:getMaster() @@ -223,6 +227,8 @@ function Player:onLookInBattleList(creature, distance) self:sendTextMessage(MESSAGE_LOOK, description) end +local exhaust = {} + function Player:onMoveItem(item, count, fromPosition, toPosition, fromCylinder, toCylinder) if item:getActionId() == IMMOVABLE_ACTION_ID then self:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE) @@ -237,8 +243,8 @@ function Player:onMoveItem(item, count, fromPosition, toPosition, fromCylinder, end -- Players cannot throw items on teleports - if blockTeleportTrashing and toPosition.x ~= CONTAINER_POSITION then - local thing = Tile(toPosition):getItemByType(ITEM_TYPE_TELEPORT) + if blockTeleportTrashing and tile and toPosition.x ~= CONTAINER_POSITION then + local thing = tile:getItemByType(ITEM_TYPE_TELEPORT) if thing then self:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE) self:getPosition():sendMagicEffect(CONST_ME_POFF) @@ -247,7 +253,6 @@ function Player:onMoveItem(item, count, fromPosition, toPosition, fromCylinder, end -- SSA exhaust - local exhaust = {} if toPosition.x == CONTAINER_POSITION and toPosition.y == CONST_SLOT_NECKLACE and item:getId() == ITEM_STONE_SKIN_AMULET then local playerId = self:getId() if exhaust[playerId] then @@ -256,16 +261,18 @@ function Player:onMoveItem(item, count, fromPosition, toPosition, fromCylinder, end exhaust[playerId] = true addEvent(function(id) - exhaust[id] = false + exhaust[id] = nil end, 2000, playerId) return true end -- Bath tube local toTile = Tile(toCylinder:getPosition()) - local topDownItem = toTile:getTopDownItem() - if topDownItem and table.contains({ BATHTUB_EMPTY, BATHTUB_FILLED }, topDownItem:getId()) then - return false + if toTile then + local topDownItem = toTile:getTopDownItem() + if topDownItem and table.contains({ BATHTUB_EMPTY, BATHTUB_FILLED }, topDownItem:getId()) then + return false + end end -- Handle move items to the ground @@ -315,10 +322,12 @@ function Player:onMoveItem(item, count, fromPosition, toPosition, fromCylinder, -- The player also shouldn't be able to insert items into the boss corpse local tileCorpse = Tile(container:getPosition()) - for index, value in ipairs(tileCorpse:getItems() or {}) do - if value:getAttribute(ITEM_ATTRIBUTE_CORPSEOWNER) == 2 ^ 31 - 1 and value:getName() == container:getName() then - self:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE) - return false + if tileCorpse then + for index, value in ipairs(tileCorpse:getItems() or {}) do + if value:getAttribute(ITEM_ATTRIBUTE_CORPSEOWNER) == 2 ^ 31 - 1 and value:getName() == container:getName() then + self:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE) + return false + end end end end @@ -363,8 +372,12 @@ function Player:onMoveCreature(creature, fromPosition, toPosition) return true end -local function hasPendingReport(name, targetName, reportType) - name = self:getName():gsub("%s+", "_") +local function hasPendingReport(playerGuid, targetName, reportType) + local player = Player(playerGuid) + if not player then + return false + end + local name = player:getName():gsub("%s+", "_") FS.mkdir_p(string.format("%s/reports/players/%s", CORE_DIRECTORY, name)) local file = io.open(string.format("%s/reports/players/%s-%s-%d.txt", CORE_DIRECTORY, name, targetName, reportType), "r") if file then @@ -375,8 +388,8 @@ local function hasPendingReport(name, targetName, reportType) end function Player:onReportRuleViolation(targetName, reportType, reportReason, comment, translation) - name = self:getName() - if hasPendingReport(name, targetName, reportType) then + local name = self:getName() + if hasPendingReport(self:getGuid(), targetName, reportType) then self:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your report is being processed.") return end @@ -585,25 +598,22 @@ function Player:onChangeZone(zone) if configManager.getBoolean(configKeys.STAMINA_PZ) then if zone == ZONE_PROTECTION then - if self:getStamina() < 2520 then + local stamina = self:getStamina() + if stamina < 2520 then if not event then local delay = configManager.getNumber(configKeys.STAMINA_ORANGE_DELAY) - if self:getStamina() > 2400 and self:getStamina() <= 2520 then + if stamina > 2400 and stamina <= 2520 then delay = configManager.getNumber(configKeys.STAMINA_GREEN_DELAY) end - local message = string.format("In protection zone. Every %i minutes, gain %i stamina.", delay, configManager.getNumber(configKeys.STAMINA_PZ_GAIN)) - self:sendTextMessage(MESSAGE_STATUS, message) + local message = string.format("In protection zone. Recharging %i stamina every %i minutes.", configManager.getNumber(configKeys.STAMINA_PZ_GAIN), delay) + self:sendTextMessage(MESSAGE_FAILURE, message) staminaBonus.eventsPz[self:getId()] = addEvent(addStamina, delay * 60 * 1000, nil, self:getId(), delay * 60 * 1000) end end else if event then - self:sendTextMessage( - MESSAGE_STATUS, - "You are no longer refilling stamina, \z - since you left a regeneration zone." - ) + self:sendTextMessage(MESSAGE_FAILURE, "You are no longer refilling stamina, since you left a regeneration zone.") stopEvent(event) staminaBonus.eventsPz[self:getId()] = nil end diff --git a/data/global.lua b/data/global.lua index a204a3321..3d67a1fb4 100644 --- a/data/global.lua +++ b/data/global.lua @@ -11,6 +11,10 @@ function IsRetroPVP() return configManager.getBoolean(configKeys.TOGGLE_SERVER_IS_RETRO) end +function IsTravelFree() + return configManager.getBoolean(configKeys.TOGGLE_TRAVELS_FREE) +end + -- NOTE: 0 is disabled. PARTY_PROTECTION = (IsRetroPVP() and 0) or 1 ADVANCED_SECURE_MODE = (IsRetroPVP() and 0) or 1 @@ -92,8 +96,8 @@ if not _G.NextUseXpStamina then _G.NextUseXpStamina = {} end -if not _G._G.NextUseConcoctionTime then - _G._G.NextUseConcoctionTime = {} +if not _G.NextUseConcoctionTime then + _G.NextUseConcoctionTime = {} end -- Delay potion @@ -151,7 +155,7 @@ function addStamina(playerId, ...) staminaBonus.eventsTrainer[playerId] = nil else player:setStamina(player:getStamina() + staminaBonus.bonus) - player:sendTextMessage(MESSAGE_STATUS, string.format("%i of stamina has been refilled.", configManager.getNumber(configKeys.STAMINA_TRAINER_GAIN))) + player:sendTextMessage(MESSAGE_FAILURE, string.format("%i of stamina has been refilled.", configManager.getNumber(configKeys.STAMINA_TRAINER_GAIN))) staminaBonus.eventsTrainer[playerId] = addEvent(addStamina, staminaBonus.period, playerId) end end @@ -188,8 +192,9 @@ function addStamina(playerId, ...) return false end - player:setStamina(player:getStamina() + configManager.getNumber(configKeys.STAMINA_PZ_GAIN)) - player:sendTextMessage(MESSAGE_STATUS, string.format("%i of stamina has been refilled.", configManager.getNumber(configKeys.STAMINA_PZ_GAIN))) + local regen = configManager.getNumber(configKeys.STAMINA_PZ_GAIN) + player:setStamina(player:getStamina() + regen) + player:sendTextMessage(MESSAGE_STATUS, string.format("%i minute%s of stamina has been refilled.", regen, regen == 1 and "" or "s")) staminaBonus.eventsPz[localPlayerId] = addEvent(addStamina, delay, nil, localPlayerId, delay) return true end diff --git a/data/items/items.xml b/data/items/items.xml index 5542b35d4..ade8054ec 100644 --- a/data/items/items.xml +++ b/data/items/items.xml @@ -7360,6 +7360,8 @@ + + @@ -24931,13 +24933,13 @@ - + + - + - @@ -59786,7 +59788,7 @@ - + @@ -59826,7 +59828,7 @@ - + @@ -59836,7 +59838,7 @@ - + @@ -61565,6 +61567,7 @@ + @@ -65289,6 +65292,7 @@ + diff --git a/data/libs/achievements_lib.lua b/data/libs/achievements_lib.lua index 49318843c..2b0f441ad 100644 --- a/data/libs/achievements_lib.lua +++ b/data/libs/achievements_lib.lua @@ -570,6 +570,10 @@ achievements = { [475] = { name = "Taskmaster", grade = 1, points = 2, description = "Having hunted and bested them all, you live for the thrill of the hunt!" }, [476] = { name = "Verminbane", grade = 1, points = 2, description = "And so it begins!" }, + --12.60 + [480] = { name = "Honorary Rascoohan", grade = 1, points = 2, description = "When in Rascacoon, do as the Rascoohans do!" }, + [481] = { name = "Release the Kraken", grade = 1, points = 3, description = "Riding around on this squishy companion gives you the feeling of flying through the air... uhm... swimming through the seven seas!" }, + --Custom [477] = { name = "Waypoint Explorer", grade = 1, points = 1, description = "You've explored all the towns of Tibia and discovered each town's waypoint." }, [478] = { name = "Up the Molehill", grade = 1, points = 3, description = "Putting this candle stump on your new mount was kind of a waiting game. You're even tempted to call it whack-a-mole. But in the end you found a loyal companion for your journeys into the depths." }, @@ -578,6 +582,12 @@ achievements = { --12.60 [480] = { name = "Honorary Rascoohan", grade = 1, points = 2, description = "When in Rascacoon, do as the Rascoohans do!" }, [481] = { name = "Release the Kraken", grade = 1, points = 3, description = "Riding around on this squishy companion gives you the feeling of flying through the air... uhm... swimming through the seven seas!" }, + + -- 12.90 + [482] = { name = "Friendly Fire", grade = 1, points = 2, description = "You mastered the fire and tamed a supervulcano!" }, + + -- + [483] = { name = "Dream Warrior", grade = 2, points = 6, description = "You became an acquaintance of the courts of dreams and acquired the right to display your new status and title of 'dream warrior'." }, } ACHIEVEMENT_FIRST = 1 diff --git a/data/libs/encounters_lib.lua b/data/libs/encounters_lib.lua index dee7a38c0..6258f3995 100644 --- a/data/libs/encounters_lib.lua +++ b/data/libs/encounters_lib.lua @@ -83,26 +83,25 @@ function Encounter:resetConfig(config) self.registered = false self.global = config.global or false self.timeToSpawnMonsters = ParseDuration(config.timeToSpawnMonsters or "3s") - self.events = {} + self.events = Set() end ---@param callable function The callable function for the event ---@param delay number The delay time for the event function Encounter:addEvent(callable, delay, ...) - local index = #self.events + 1 local event = addEvent(function(callable, ...) pcall(callable, ...) - table.remove(self.events, index) + self.events:remove(event) end, ParseDuration(delay), callable, ...) - table.insert(self.events, index, event) + self.events:insert(event) end ---Cancels all the events associated with the encounter function Encounter:cancelEvents() - for _, event in ipairs(self.events) do + for event in self.events:iter() do stopEvent(event) end - self.events = {} + self.events = Set() end ---Returns the stage of the encounter by the given stage number diff --git a/data/libs/exercise_training.lua b/data/libs/exercise_training.lua index df9f9e312..ab4282b3c 100644 --- a/data/libs/exercise_training.lua +++ b/data/libs/exercise_training.lua @@ -55,7 +55,7 @@ function ExerciseEvent(playerId, tilePosition, weaponId, dummyId) end if player:isTraining() == 0 then - player:sendTextMessage(MESSAGE_FAILURE, "You left training!") + player:sendTextMessage(MESSAGE_FAILURE, "You have stopped training.") return LeaveTraining(playerId) end diff --git a/data/libs/functions/bosslever.lua b/data/libs/functions/bosslever.lua index 648c25bed..3792cdf62 100644 --- a/data/libs/functions/bosslever.lua +++ b/data/libs/functions/bosslever.lua @@ -18,7 +18,7 @@ ---@field private exit Position ---@field private encounter Encounter ---@field private timeoutEvent Event ----@field private testMode boolean +---@field private disableCooldown boolean BossLever = {} --[[ @@ -61,7 +61,7 @@ setmetatable(BossLever, { bossPosition = boss.position, timeToFightAgain = config.timeToFightAgain or configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_FIGHT_AGAIN), timeToDefeat = config.timeToDefeat or configManager.getNumber(configKeys.BOSS_DEFAULT_TIME_TO_DEFEAT), - timeAfterKill = config.timeAfterKill or 0, + timeAfterKill = config.timeAfterKill or 60, requiredLevel = config.requiredLevel or 0, createBoss = boss.createFunction, disabled = config.disabled, @@ -71,7 +71,7 @@ setmetatable(BossLever, { exit = config.exit, area = config.specPos, monsters = config.monsters or {}, - testMode = config.testMode, + disableCooldown = config.disableCooldown, _position = nil, _uid = nil, _aid = nil, @@ -115,7 +115,7 @@ end ---@param player Player ---@return number function BossLever:lastEncounterTime(player) - if not player or self.testMode then + if not player or self.disableCooldown then return 0 end return player:getBossCooldown(self.name) @@ -178,7 +178,18 @@ function BossLever:onUse(player) return false end - if not lever:canUseLever(player, self.name, self.timeToFightAgain / 60 / 60) then + if self:lastEncounterTime(creature) > os.time() then + local info = lever:getInfoPositions() + for _, v in pairs(info) do + local newPlayer = v.creature + if newPlayer then + local timeLeft = self:lastEncounterTime(newPlayer) - os.time() + newPlayer:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You or a member in your team have to wait " .. getTimeInWords(timeLeft) .. " to face " .. self.name .. " again!") + if self:lastEncounterTime(newPlayer) > os.time() then + newPlayer:getPosition():sendMagicEffect(CONST_ME_POFF) + end + end + end return false end self.onUseExtra(creature) @@ -214,9 +225,9 @@ function BossLever:onUse(player) stopEvent(self.timeoutEvent) self.timeoutEvent = nil end - self.timeoutEvent = addEvent(function(zone) - zone:refresh() - zone:removePlayers() + self.timeoutEvent = addEvent(function(zn) + zn:refresh() + zn:removePlayers() end, self.timeToDefeat * 1000, zone) end return true diff --git a/data/libs/functions/container.lua b/data/libs/functions/container.lua index 5b85e2978..15030e0ca 100644 --- a/data/libs/functions/container.lua +++ b/data/libs/functions/container.lua @@ -12,7 +12,7 @@ function Container:addLoot(loot) logger.warn("Container:addLoot: invalid item type: {}", itemId) goto continue end - if iType:isStackable() or iType:getCharges() ~= 0 then + if iType:isStackable() then local stackSize = iType:getStackSize() local remainingCount = item.count @@ -23,9 +23,13 @@ function Container:addLoot(loot) logger.warn("Container:addLoot: failed to add stackable item: {}, to corpse {} with id {}", ItemType(itemId):getName(), self:getName(), self:getId()) goto continue end - remainingCount = remainingCount - countToAdd end + elseif iType:getCharges() ~= 0 then + local tmpItem = self:addItem(itemId, item.count, INDEX_WHEREEVER, FLAG_NOLIMIT) + if not tmpItem then + logger.warn("Container:addLoot: failed to add charge item: {}, to corpse {} with id {}", ItemType(itemId):getName(), self:getName(), self:getId()) + end else for i = 1, item.count do local tmpItem = self:addItem(itemId, 1, INDEX_WHEREEVER, FLAG_NOLIMIT) diff --git a/data/libs/functions/creature.lua b/data/libs/functions/creature.lua index d43a31f28..29e0303ca 100644 --- a/data/libs/functions/creature.lua +++ b/data/libs/functions/creature.lua @@ -7,9 +7,14 @@ function Creature.getClosestFreePosition(self, position, maxRadius, mustBeReacha end local checkPosition = Position(position) + local closestDistance = -1 + local closestPosition = Position() for radius = 0, maxRadius do checkPosition.x = checkPosition.x - math.min(1, radius) checkPosition.y = checkPosition.y + math.min(1, radius) + if closestDistance ~= -1 then + return closestPosition + end local total = math.max(1, radius * 8) for i = 1, total do @@ -20,11 +25,15 @@ function Creature.getClosestFreePosition(self, position, maxRadius, mustBeReacha local tile = Tile(checkPosition) if tile and tile:getCreatureCount() == 0 and not tile:hasProperty(CONST_PROP_IMMOVABLEBLOCKSOLID) and (not mustBeReachable or self:getPathTo(checkPosition)) then - return checkPosition + local distance = self:getPosition():getDistance(checkPosition) + if closestDistance == -1 or closestDistance > distance then + closestDistance = distance + closestPosition = Position(checkPosition) + end end end end - return Position() + return closestPosition end function Creature.getMonster(self) diff --git a/data/libs/functions/functions.lua b/data/libs/functions/functions.lua index 2cdf4868a..d3853ecb9 100644 --- a/data/libs/functions/functions.lua +++ b/data/libs/functions/functions.lua @@ -251,7 +251,7 @@ function clearBossRoom(playerId, centerPosition, onlyPlayers, rangeX, rangeY, ex local spectators, spectator = Game.getSpectators(centerPosition, false, onlyPlayers, rangeX, rangeX, rangeY, rangeY) for i = 1, #spectators do spectator = spectators[i] - if spectator:isPlayer() and spectator.uid == playerId then + if spectator:isPlayer() and ((playerId ~= nil and spectator.uid == playerId) or playerId == nil) then spectator:teleportTo(exitPosition) exitPosition:sendMagicEffect(CONST_ME_TELEPORT) end @@ -716,10 +716,6 @@ if not bosssPlayers then } end -function isInRange(pos, fromPos, toPos) - return pos.x >= fromPos.x and pos.y >= fromPos.y and pos.z >= fromPos.z and pos.x <= toPos.x and pos.y <= toPos.y and pos.z <= toPos.z -end - function isNumber(str) return tonumber(str) ~= nil end diff --git a/data/libs/functions/game.lua b/data/libs/functions/game.lua index 5682f5c58..e4d40bef3 100644 --- a/data/libs/functions/game.lua +++ b/data/libs/functions/game.lua @@ -58,18 +58,6 @@ function Game.getHouseByPlayerGUID(playerGUID) return nil end -function Game.getPlayersByAccountNumber(accountNumber) - local result = {} - local players, player = Game.getPlayers() - for i = 1, #players do - player = players[i] - if player:getAccountId() == accountNumber then - result[#result + 1] = player - end - end - return result -end - function Game.getPlayersByIPAddress(ip, mask) if not mask then mask = 0xFFFFFFFF diff --git a/data/libs/functions/load.lua b/data/libs/functions/load.lua index 9319bc97a..bedbbe84f 100644 --- a/data/libs/functions/load.lua +++ b/data/libs/functions/load.lua @@ -27,3 +27,4 @@ dofile(CORE_DIRECTORY .. "/libs/functions/teleport.lua") dofile(CORE_DIRECTORY .. "/libs/functions/tile.lua") dofile(CORE_DIRECTORY .. "/libs/functions/vocation.lua") dofile(CORE_DIRECTORY .. "/libs/functions/set.lua") +dofile(CORE_DIRECTORY .. "/libs/functions/queue.lua") diff --git a/data/libs/functions/party.lua b/data/libs/functions/party.lua index c2fdffffc..b811b8bb5 100644 --- a/data/libs/functions/party.lua +++ b/data/libs/functions/party.lua @@ -74,6 +74,50 @@ function Party.hasDruid(self) return self:hasVocation(VOCATION.BASE_ID.DRUID) end +function Party:getPlayersWithVocation(vocation) + local players = {} + if self:getLeader():getVocation():getBaseId() == vocation then + table.insert(players, self:getLeader()) + end + local membersList = self:getMembers() + for i = 1, #membersList do + local player = membersList[i] + if player and player:getVocation():getBaseId() == vocation then + table.insert(players, player) + end + end + return players +end + +function Party:getKnights() + return self:getPlayersWithVocation(VOCATION.BASE_ID.KNIGHT) +end + +function Party:getPaladins() + return self:getPlayersWithVocation(VOCATION.BASE_ID.PALADIN) +end + +function Party:getSorcerers() + return self:getPlayersWithVocation(VOCATION.BASE_ID.SORCERER) +end + +function Party:getDruids() + return self:getPlayersWithVocation(VOCATION.BASE_ID.DRUID) +end + +function Party:getMages() + local sorcerers = self:getSorcerers() + local druids = self:getDruids() + local mages = {} + for i = 1, #sorcerers do + table.insert(mages, sorcerers[i]) + end + for i = 1, #druids do + table.insert(mages, druids[i]) + end + return mages +end + function Participants(player, requireSharedExperience) local party = player:getParty() if not party then @@ -86,3 +130,14 @@ function Participants(player, requireSharedExperience) table.insert(members, party:getLeader()) return members end + +function Player:isPartyLeaderOrSolo(sharedExperience) + local party = self:getParty() + if not party then + return true + end + if sharedExperience and not party:isSharedExperienceActive() then + return true + end + return party:getLeader() == self +end diff --git a/data/libs/functions/player.lua b/data/libs/functions/player.lua index ae4b21215..5cb18a58c 100644 --- a/data/libs/functions/player.lua +++ b/data/libs/functions/player.lua @@ -27,7 +27,7 @@ function Player.feed(self, food) end function Player.getClosestFreePosition(self, position, extended) - if self:getGroup():getAccess() and self:getAccountType() >= ACCOUNT_TYPE_GOD then + if self:getGroup():getAccess() and self:getAccountType() == ACCOUNT_TYPE_GOD then return position end return Creature.getClosestFreePosition(self, position, extended) @@ -64,7 +64,7 @@ function Player.sendExtendedOpcode(self, opcode, buffer) local networkMessage = NetworkMessage() networkMessage:addByte(0x32) networkMessage:addByte(opcode) - networkMessage:addString(buffer) + networkMessage:addString(buffer, "Player.sendExtendedOpcode - buffer") networkMessage:sendToPlayer(self) networkMessage:delete() return true @@ -520,7 +520,7 @@ function Player:calculateLootFactor(monster) local participants = { self } local factor = 1 - if configManager.getBoolean(PARTY_SHARE_LOOT_BOOSTS) then + if configManager.getBoolean(configKeys.PARTY_SHARE_LOOT_BOOSTS) then local party = self:getParty() if party and party:isSharedExperienceEnabled() then participants = party:getMembers() @@ -584,6 +584,62 @@ function Player:setFiendish() return false end +function Player:findItemInInbox(itemId, name) + local inbox = self:getSlotItem(CONST_SLOT_STORE_INBOX) + local items = inbox:getItems() + for _, item in pairs(items) do + if item:getId() == itemId and (not name or item:getName() == name) then + return item + end + end + return nil +end + +function Player:sendColoredMessage(message) + local grey = 3003 + local blue = 3043 + local green = 3415 + local purple = 36792 + local yellow = 34021 + + local msg = message:gsub("{grey|", "{" .. grey .. "|"):gsub("{blue|", "{" .. blue .. "|"):gsub("{green|", "{" .. green .. "|"):gsub("{purple|", "{" .. purple .. "|"):gsub("{yellow|", "{" .. yellow .. "|") + return self:sendTextMessage(MESSAGE_LOOT, msg) +end + +function Player:showInfoModal(title, message, buttonText) + local modal = ModalWindow({ + title = title, + message = message, + }) + buttonText = buttonText or "Close" + modal:addButton(buttonText, function() end) + modal:setDefaultEscapeButton(buttonText) + + modal:sendToPlayer(self) +end + +function Player:showConfirmationModal(title, message, yesCallback, noCallback, yesText, noText) + local modal = ModalWindow({ + title = title, + message = message, + }) + yesText = yesText or "Yes" + modal:addButton(yesText, yesCallback or function() end) + noText = noText or "No" + modal:addButton(noText, noCallback or function() end) + modal:setDefaultEscapeButton(noText) + + modal:sendToPlayer(self) +end + +function Player:removeAll(itemId) + local count = 0 + while self:removeItem(itemId, 1) do + count = count + 1 + end + return count +end + local function bossKVScope(bossNameOrId) local mType = MonsterType(bossNameOrId) if not mType then diff --git a/data/libs/functions/position.lua b/data/libs/functions/position.lua index 2ba38968f..27923eeb2 100644 --- a/data/libs/functions/position.lua +++ b/data/libs/functions/position.lua @@ -49,7 +49,6 @@ function Position:moveUpstairs() return self end --- Functions from OTServBR-Global function Position:isInRange(from, to) -- No matter what corner from and to is, we want to make -- life easier by calculating north-west and south-east @@ -373,3 +372,20 @@ function Position:isProtectionZoneTile() end return tile:hasFlag(TILESTATE_PROTECTIONZONE) end + +--- Calculates and returns a position based on a specified range. +-- This method determines which position (self or the other) is returned based on the provided range. +-- If the distance between self and the other position is greater than the specified range, +-- it returns the self position. Otherwise, it returns the other position. +-- @param self The position object calling the method. +-- @param otherPosition Position The other position to compare with. +-- @param range number The range to compare the distance against. +-- @return Position The position within the specified range (either self or otherPosition). +function Position.getWithinRange(self, otherPosition, range) + local distance = math.max(math.abs(self.x - otherPosition.x), math.abs(self.y - otherPosition.y)) + if distance > range then + return self + end + + return otherPosition +end diff --git a/data/libs/functions/quests.lua b/data/libs/functions/quests.lua index 66414115e..02487c550 100644 --- a/data/libs/functions/quests.lua +++ b/data/libs/functions/quests.lua @@ -297,7 +297,7 @@ function Player.sendQuestLog(self) for questId = 1, #Quests do if self:questIsStarted(questId) then msg:addU16(questId) - msg:addString(Quests[questId].name .. (self:questIsCompleted(questId) and " (completed)" or "")) + msg:addString(Quests[questId].name .. (self:questIsCompleted(questId) and " (completed)" or ""), "Player.sendQuestLog") msg:addByte(self:questIsCompleted(questId)) end end @@ -319,8 +319,8 @@ function Player.sendQuestLine(self, questId) if self:getClient().version >= 1200 then msg:addU16(self:getMissionId(questId, missionId)) end - msg:addString(self:getMissionName(questId, missionId)) - msg:addString(self:getMissionDescription(questId, missionId)) + msg:addString(self:getMissionName(questId, missionId), "Player.sendQuestLine - self:getMissionName(questId, missionId)") + msg:addString(self:getMissionDescription(questId, missionId), "Player.sendQuestLine - self:getMissionDescription(questId, missionId)") end end end @@ -338,9 +338,9 @@ function Player.sendTrackedQuests(self, remainingQuests, missions) msg:addByte(#missions) for _, mission in ipairs(missions) do msg:addU16(mission.missionId) - msg:addString(mission.questName) - msg:addString(mission.missionName) - msg:addString(mission.missionDesc) + msg:addString(mission.questName, "Player.sendTrackedQuests - mission.questName") + msg:addString(mission.missionName, "Player.sendTrackedQuests - mission.missionName") + msg:addString(mission.missionDesc, "Player.sendTrackedQuests - mission.missionDesc") end msg:sendToPlayer(self) msg:delete() @@ -351,8 +351,8 @@ function Player.sendUpdateTrackedQuest(self, mission) msg:addByte(0xD0) msg:addByte(0x00) msg:addU16(mission.missionId) - msg:addString(mission.missionName) - msg:addString(mission.missionDesc) + msg:addString(mission.missionName, "Player.sendUpdateTrackedQuest - mission.missionName") + msg:addString(mission.missionDesc, "Player.sendUpdateTrackedQuest - mission.missionDesc") msg:sendToPlayer(self) msg:delete() end diff --git a/data/libs/functions/queue.lua b/data/libs/functions/queue.lua new file mode 100644 index 000000000..33a6c2409 --- /dev/null +++ b/data/libs/functions/queue.lua @@ -0,0 +1,73 @@ +Queue = {} + +---@param initial table|Queue +---@param options table +---@return Queue +setmetatable(Queue, { + __call = function(self) + local set = setmetatable({ + head = 0, + tail = -1, + items = {}, + }, { __index = Queue }) + return set + end, +}) + +function Queue:isEmpty() + return self.head > self.tail +end + +function Queue:enqueue(value) + self.tail = self.tail + 1 + self.items[self.tail] = value +end + +function Queue:dequeue() + if self:isEmpty() then + error("Queue is empty") + end + + local value = self.items[self.head] + self.items[self.head] = nil -- to allow garbage collection + self.head = self.head + 1 + return value +end + +function Queue:peek() + if self:isEmpty() then + error("Queue is empty") + end + + return self.items[self.head] +end + +function Queue:size() + return self.tail - self.head + 1 +end + +RandomQueue = {} + +setmetatable(RandomQueue, { + __index = Queue, + __call = function(self) + local instance = setmetatable(Queue(), { __index = RandomQueue }) + return instance + end, +}) + +function RandomQueue:dequeue() + if self:isEmpty() then + error("RandomQueue is empty") + end + + local index = math.random(self.head, self.tail) + local value = self.items[index] + + -- Move the last item to the place of the removed item to maintain contiguity + self.items[index] = self.items[self.tail] + self.items[self.tail] = nil -- to allow garbage collection + self.tail = self.tail - 1 + + return value +end diff --git a/data/libs/functions/set.lua b/data/libs/functions/set.lua index e3e6b6f92..35065a733 100644 --- a/data/libs/functions/set.lua +++ b/data/libs/functions/set.lua @@ -52,6 +52,9 @@ function Set:insert(key) end function Set:remove(key) + if not self:contains(key) then + return + end key = self:__key(key) self.values[key] = nil end diff --git a/data/libs/functions/string.lua b/data/libs/functions/string.lua index 5d41af47c..9d746b82e 100644 --- a/data/libs/functions/string.lua +++ b/data/libs/functions/string.lua @@ -96,6 +96,19 @@ string.splitTrimmed = function(str, sep) return res end +-- Function that splits a string into parts using a separator +-- @param str (string) - the string to be split, sep (string) - the separator to be used +-- @return a table containing the separated parts of the string +function string.splitFirst(str, delimiter) + local start, finish = string.find(str, delimiter) + if start == nil then + return str, nil + end + local firstPart = string.sub(str, 1, start - 1) + local secondPart = string.sub(str, finish + 1) + return firstPart:trim(), secondPart:trim() +end + --- Function that removes whitespace from the beginning and end of a string -- @param str (string) - the string to be modified -- @return the string without whitespace at the beginning and end diff --git a/data/libs/functions/teleport.lua b/data/libs/functions/teleport.lua index de150cdcf..266e29d4f 100644 --- a/data/libs/functions/teleport.lua +++ b/data/libs/functions/teleport.lua @@ -2,7 +2,7 @@ function Teleport.isTeleport(self) return true end -function SimpleTeleport(from, destination, condition) +function SimpleTeleport(from, destination, condition, disableEffect) local teleport = MoveEvent() function teleport.onStepIn(creature, item, position, fromPosition) @@ -16,7 +16,9 @@ function SimpleTeleport(from, destination, condition) end player:teleportTo(destination) - player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) + if not disableEffect then + player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) + end return true end diff --git a/data/libs/hazard_lib.lua b/data/libs/hazard_lib.lua index d10650a81..c13f120f7 100644 --- a/data/libs/hazard_lib.lua +++ b/data/libs/hazard_lib.lua @@ -88,30 +88,22 @@ function Hazard:getPlayerMaxLevel(player) local fromStorage = player:getStorageValue(self.storageMax) return fromStorage <= 0 and 1 or fromStorage end - local fromKV = player:kv():scoped(self.name):get("maxLevel") + local fromKV = player:kv():scoped(self.name):get("maxLevel") or 1 + return fromKV <= 0 and 1 or fromKV end function Hazard:levelUp(player) - if self.storageMax and self.storageCurrent then - local current = self:getPlayerCurrentLevel(player) - local max = self:getPlayerMaxLevel(player) - if current == max then - self:setPlayerMaxLevel(player, max + 1) - end - return - end - - local current = player:kv(self.name):get("currentLevel") - local max = player:kv(self.name):get("maxLevel") + local current = self:getPlayerCurrentLevel(player) + local max = self:getPlayerMaxLevel(player) if current == max then - player:kv(self.name):set("maxLevel", max + 1) + self:setPlayerMaxLevel(player, max + 1) end end function Hazard:setPlayerMaxLevel(player, level) - if level > self.maxLevelLevel then - level = self.maxLevelLevel + if level > self.maxLevel then + level = self.maxLevel end if self.storageMax then diff --git a/data/libs/hireling_lib.lua b/data/libs/hireling_lib.lua index beadcdb6c..528a903da 100644 --- a/data/libs/hireling_lib.lua +++ b/data/libs/hireling_lib.lua @@ -1,39 +1,25 @@ -HIRELING_CREDITS = { - Developer = 'Leonardo "Leu" Pereira (jlcvp)', - Version = "1.0-CoronaVaires", - Date = "29/04/2020", -} - -local DEBUG = true -- print debug to console - -HIRELING_CACHE_STORAGE = {} HIRELINGS = {} PLAYER_HIRELINGS = {} HIRELING_OUTFIT_CHANGING = {} -function DebugPrint(str) - if DEBUG == true then - logger.debug(str) - end -end - -function printTable(t) - local str = "{" - - for k, v in pairs(t) do - str = str .. string.format("\n %s = %s", tostring(k), tostring(v)) - end - str = str .. "\n}" - logger.debug(str) -end - --- [[ Constants and ENUMS ]] - +-- This is for server registration only, high ids to avoid conflicting with the gamestore subaction HIRELING_SKILLS = { - BANKER = 1, -- 1<<0 - COOKING = 2, -- 1<<1 - STEWARD = 4, -- 1<<2 - TRADER = 8, -- 1<<3 + BANKER = { 1001, "banker" }, + COOKING = { 1002, "cooker" }, + STEWARD = { 1003, "steward" }, + TRADER = { 1004, "trader" }, +} + +HIRELING_OUTFITS = { + BANKER = { 2001, "banker" }, + COOKING = { 2002, "cooker" }, + STEWARD = { 2003, "steward" }, + TRADER = { 2004, "trader" }, + SERVANT = { 2005, "servant" }, + HYDRA = { 2006, "hydra" }, + FERUMBRAS = { 2007, "ferumbras" }, + BONELORD = { 2008, "bonelord" }, + DRAGON = { 2009, "dragon" }, } HIRELING_SEX = { @@ -43,18 +29,6 @@ HIRELING_SEX = { HIRELING_OUTFIT_DEFAULT = { name = "Citizen", female = 1107, male = 1108 } -HIRELING_OUTFITS = { - BANKER = 1, -- 1<<0 - COOKING = 2, -- 1<<1 - STEWARD = 4, -- 1<<2 - TRADER = 8, -- 1<<3 ... - SERVANT = 16, - HYDRA = 32, - FERUMBRAS = 64, - BONELORD = 128, - DRAGON = 256, -} - HIRELING_OUTFITS_TABLE = { BANKER = { name = "Banker Dress", female = 1109, male = 1110 }, BONELORD = { name = "Bonelord Dress", female = 1123, male = 1124 }, @@ -67,11 +41,6 @@ HIRELING_OUTFITS_TABLE = { TRADER = { name = "Trader Dress", female = 1111, male = 1112 }, } -HIRELING_STORAGE = { - SKILL = 28800, - OUTFIT = 28900, -} - HIRELING_FOODS_BOOST = { MAGIC = 29410, MELEE = 29411, @@ -79,7 +48,7 @@ HIRELING_FOODS_BOOST = { DISTANCE = 35173, } -HIRELING_FOODS = { -- only the non-skill ones +HIRELING_FOODS_IDS = { 29412, 29413, 29414, @@ -87,10 +56,18 @@ HIRELING_FOODS = { -- only the non-skill ones 29416, } --- [[ LOCAL FUNCTIONS AND UTILS ]] +local function printTable(t) + local str = "{" + + for k, v in pairs(t) do + str = str .. string.format("\n %s = %s", tostring(k), tostring(v)) + end + str = str .. "\n}" + logger.debug(str) +end local function checkHouseAccess(hireling) - --check if owner still have access to the house + -- Check if owner still have access to the house if not hireling or hireling.active == 0 then return false end @@ -99,6 +76,7 @@ local function checkHouseAccess(hireling) if not tile then return false end + local house = tile:getHouse() if not house then return false @@ -112,13 +90,20 @@ local function checkHouseAccess(hireling) return true end - -- player is not invited anymore, return to lamp - logger.info("Returning Hireling: {} to owner Inbox", hireling:getName()) + -- Player is not invited anymore, return to lamp + logger.debug("Returning Hireling: {} to owner '{}' Inbox", hireling:getName(), player:getName()) local inbox = player:getSlotItem(CONST_SLOT_STORE_INBOX) + if not inbox then + return false + end + -- Using FLAG_NOLIMIT to avoid losing the hireling after being kicked out of the house and having no slots available in the store inbox local lamp = inbox:addItem(HIRELING_LAMP, 1, INDEX_WHEREEVER, FLAG_NOLIMIT) - lamp:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "This mysterious lamp summons your very own personal hireling.\nThis item cannot be traded.\nThis magic lamp is the home of " .. hireling:getName() .. ".") - lamp:setCustomAttribute("Hireling", hireling:getId()) --save hirelingId on item + if lamp then + lamp:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "This mysterious lamp summons your very own personal hireling.\nThis item cannot be traded.\nThis magic lamp is the home of " .. hireling:getName() .. ".") + lamp:setCustomAttribute("Hireling", hireling:getId()) + end + player:save() hireling.active = 0 hireling.cid = -1 @@ -137,41 +122,6 @@ local function spawnNPCs() end end -local function addStorageCacheValue(player_id, storage, value) - if not HIRELING_CACHE_STORAGE[player_id] then - HIRELING_CACHE_STORAGE[player_id] = {} - end - HIRELING_CACHE_STORAGE[player_id][storage] = value -end - -local function initStorageCache() - local sql = string.format("SELECT `player_id`, `key`, `value` FROM `player_storage` " .. "WHERE `key` IN (%d,%d)", HIRELING_STORAGE.SKILL, HIRELING_STORAGE.OUTFIT) - - local resultId = db.storeQuery(sql) - if resultId ~= false then - local player_id, key, value - repeat - player_id = Result.getNumber(resultId, "player_id") - key = Result.getNumber(resultId, "key") - value = Result.getNumber(resultId, "value") - - addStorageCacheValue(player_id, key, value) - until not Result.next(resultId) - Result.free(resultId) - end -end - -local function getStorageForPlayer(player_id, storage) - local player = Player(player_id) - if player then - return player:getStorageValue(storage) - else - return HIRELING_CACHE_STORAGE[player_id] and HIRELING_CACHE_STORAGE[player_id][storage] or -1 - end -end - --- [[ DEFINING HIRELING CLASS ]] - Hireling = { id = -1, player_id = -1, @@ -253,26 +203,28 @@ function Hireling:getOutfit() end function Hireling:getAvailableOutfits() - local flags = getStorageForPlayer(self:getOwnerId(), HIRELING_STORAGE.OUTFIT) - local sex = (self.sex == HIRELING_SEX.FEMALE) and "female" or "male" + local player = Player(self:getOwnerId()) + if not player then + return + end - local outfits = {} - -- add default outfit - table.insert(outfits, { name = HIRELING_OUTFIT_DEFAULT.name, lookType = HIRELING_OUTFIT_DEFAULT[sex] }) - if flags > 0 then - local outfit - for key, value in pairs(HIRELING_OUTFITS) do - if hasBitSet(value, flags) then - outfit = { - name = HIRELING_OUTFITS_TABLE[key].name, - lookType = HIRELING_OUTFITS_TABLE[key][sex], - } - table.insert(outfits, outfit) - end + local outfitsAvailable = {} + local sex = (self.sex == HIRELING_SEX.FEMALE) and "female" or "male" + -- Add default outfit + table.insert(outfitsAvailable, { name = HIRELING_OUTFIT_DEFAULT.name, lookType = HIRELING_OUTFIT_DEFAULT[sex] }) + for key, outfit in pairs(HIRELING_OUTFITS) do + local outfitName = outfit[2] + local haveOutfit = player:kv():scoped("hireling-outfits"):get(outfitName) + if haveOutfit == true then + logger.debug("[getAvailableOutfits] found outfit {}", outfitName) + tempOutfit = { + name = HIRELING_OUTFITS_TABLE[key].name, + lookType = HIRELING_OUTFITS_TABLE[key][sex], + } + table.insert(outfitsAvailable, tempOutfit) end end - - return outfits + return outfitsAvailable end function Hireling:requestOutfitChange() @@ -317,13 +269,27 @@ function Hireling:changeOutfit(outfit) self:setOutfit(outfit) end -function Hireling:hasSkill(SKILL) - local skills = getStorageForPlayer(self:getOwnerId(), HIRELING_STORAGE.SKILL) - if skills <= 0 then +function Hireling:hasSkill(skillName) + local function hasSkillFromPlayer(player) + if player then + return player:kv():scoped("hireling-skills"):get(skillName) or false + end + end + + local player = Player(self:getOwnerId()) or Game.getOfflinePlayer(self:getOwnerId()) + return hasSkillFromPlayer(player) +end + +function Hireling:hasSkill(skillName) + local function hasSkillFromPlayer(player) + if player then + return player:kv():scoped("hireling-skills"):get(skillName) or false + end + return false - else - return hasBitSet(SKILL, skills) end + local player = Player(self:getOwnerId()) or Game.getOfflinePlayer(self:getOwnerId()) + return hasSkillFromPlayer(player) end function Hireling:setCreature(cid) @@ -446,18 +412,39 @@ function getHirelingByPosition(position) return nil end +function GetHirelingSkillNameById(id) + for _, skill in pairs(HIRELING_SKILLS) do + if skill[1] == id then + return skill[2] + end + end + return nil +end + +function GetHirelingOutfitNameById(id) + local outfitName = nil + for _, outfit in pairs(HIRELING_OUTFITS) do + if outfit[1] == id then + logger.debug("[GetHirelingOutfitNameById] returning outfit name {}", outfit[2]) + outfitName = outfit[2] + break + end + end + + return outfitName +end + function HirelingsInit() local rows = db.storeQuery("SELECT * FROM `player_hirelings`") - if rows then + local player_id, hireling repeat - local player_id = Result.getNumber(rows, "player_id") - + player_id = Result.getNumber(rows, "player_id") if not PLAYER_HIRELINGS[player_id] then PLAYER_HIRELINGS[player_id] = {} end - local hireling = Hireling:new() + hireling = Hireling:new() hireling.id = Result.getNumber(rows, "id") hireling.player_id = player_id hireling.name = Result.getString(rows, "name") @@ -478,7 +465,6 @@ function HirelingsInit() Result.free(rows) spawnNPCs() - initStorageCache() end end @@ -521,9 +507,6 @@ function PersistHireling(hireling) end end --- [[ END GLOBAL FUNCTIONS ]] - --- [[ Player extension ]] function Player:getHirelings() return PLAYER_HIRELINGS[self:getGuid()] or {} end @@ -538,15 +521,17 @@ function Player:addNewHireling(name, sex) hireling.name = name hireling.player_id = self:getGuid() if sex == HIRELING_SEX.FEMALE then - hireling.looktype = 136 -- citizen female + -- Citizen female + hireling.looktype = 136 hireling.sex = HIRELING_SEX.FEMALE else - hireling.looktype = 128 -- citizen male + -- Citizen male + hireling.looktype = 128 hireling.sex = HIRELING_SEX.MALE end local lampType = ItemType(HIRELING_LAMP) - if self:getFreeCapacity() < lampType:getWeight(1) then + if not lampType or self:getFreeCapacity() < lampType:getWeight(1) then self:getPosition():sendMagicEffect(CONST_ME_POFF) self:sendTextMessage(MESSAGE_FAILURE, "You do not have enough capacity.") return false @@ -561,20 +546,26 @@ function Player:addNewHireling(name, sex) local saved = PersistHireling(hireling) if not saved then - DebugPrint("Error saving Hireling:" .. name .. " - player:" .. self:getName()) + logger.error("[Player:addNewHireling] error to saving Hireling '{}' for player '{}'", name, self:getName()) return false - else - if not PLAYER_HIRELINGS[self:getGuid()] then - PLAYER_HIRELINGS[self:getGuid()] = {} - end - table.insert(PLAYER_HIRELINGS[self:getGuid()], hireling) - table.insert(HIRELINGS, hireling) - local lamp = inbox:addItem(HIRELING_LAMP, 1, INDEX_WHEREEVER, FLAG_NOLIMIT) - lamp:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "This mysterious lamp summons your very own personal hireling.\nThis item cannot be traded.\nThis magic lamp is the home of " .. hireling:getName() .. ".") - lamp:setCustomAttribute("Hireling", hireling:getId()) --save hirelingId on item - hireling.active = 0 - return hireling end + + local lamp = inbox:addItem(HIRELING_LAMP, 1, INDEX_WHEREEVER, FLAG_NOLIMIT) + if not lamp then + logger.error("[Player:addNewHireling] error to add hireling lamp '{}' for player {}", name, self:getName()) + return false + end + + if not PLAYER_HIRELINGS[self:getGuid()] then + PLAYER_HIRELINGS[self:getGuid()] = {} + end + table.insert(PLAYER_HIRELINGS[self:getGuid()], hireling) + table.insert(HIRELINGS, hireling) + + lamp:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "This mysterious lamp summons your very own personal hireling.\nThis item cannot be traded.\nThis magic lamp is the home of " .. hireling:getName() .. ".") + lamp:setCustomAttribute("Hireling", hireling:getId()) + hireling.active = 0 + return hireling end function Player:isChangingHirelingOutfit() @@ -593,7 +584,8 @@ end function Player:sendHirelingOutfitWindow(hireling) local outfit = hireling:getOutfit() local msg = NetworkMessage() - msg:addByte(0xC8) -- 'ProtocolGame::sendOutfitWindow()'' header + -- 'ProtocolGame::sendOutfitWindow()' header + msg:addByte(0xC8) msg:addU16(outfit.lookType) if outfit.lookType == 0 then @@ -617,7 +609,7 @@ function Player:sendHirelingOutfitWindow(hireling) msg:addU16(#availableOutfits) for _, outfit in ipairs(availableOutfits) do msg:addU16(outfit.lookType) - msg:addString(outfit.name) + msg:addString(outfit.name, "Player:sendHirelingOutfitWindow - outfit.name") msg:addByte(0x00) -- addons msg:addByte(0x00) -- Store bool end @@ -635,15 +627,6 @@ function Player:hasHirelings() return PLAYER_HIRELINGS[self:getGuid()] and #PLAYER_HIRELINGS[self:getGuid()] > 0 or false end -function Player:copyHirelingStorageToCache() - if self:hasHirelings() then - local storageSkill = self:getStorageValue(HIRELING_STORAGE.SKILL) - local storageOutfit = self:getStorageValue(HIRELING_STORAGE.OUTFIT) - addStorageCacheValue(self:getGuid(), HIRELING_STORAGE.SKILL, storageSkill) - addStorageCacheValue(self:getGuid(), HIRELING_STORAGE.OUTFIT, storageOutfit) - end -end - function Player:findHirelingLamp(hirelingId) local inbox = self:getSlotItem(CONST_SLOT_STORE_INBOX) if not inbox then @@ -693,54 +676,46 @@ function Player:sendHirelingSelectionModal(title, message, callback, data) modal:sendToPlayer(self) end -function Player:showInfoModal(title, message, buttonText) - local modal = ModalWindow({ - title = title, - message = message, - }) - buttonText = buttonText or "Close" - modal:addButton(buttonText, function() end) - modal:setDefaultEscapeButton(buttonText) - - modal:sendToPlayer(self) +function Player:hasHirelingSkill(skillName) + return self:kv():scoped("hireling-skills"):get(skillName) end -function Player:hasHirelingSkill(SKILL) - local skills = self:getStorageValue(HIRELING_STORAGE.SKILL) - if skills <= 0 then - return false - else - return hasBitSet(SKILL, skills) +function Player:enableHirelingSkill(skillName) + local skillScoped = self:kv():scoped("hireling-skills") + if skillScoped:get(skillName) then + logger.debug("Player '{}' already have hireling skill name '{}'", self:getName(), skillName) + return end + + skillScoped:set(skillName, true) end -function Player:enableHirelingSkill(SKILL) - local skills = self:getStorageValue(HIRELING_STORAGE.SKILL) - if skills < 0 then - skills = 0 - end - skills = setFlag(SKILL, skills) - self:setStorageValue(HIRELING_STORAGE.SKILL, skills) - self:copyHirelingStorageToCache() +function Player:hasHirelingOutfit(outfitName) + return self:kv():scoped("hireling-outfits"):get(outfitName) end -function Player:hasHirelingOutfit(OUTFIT) - local outfits = self:getStorageValue(HIRELING_STORAGE.OUTFIT) - if outfits <= 0 then - return false - else - return hasBitSet(OUTFIT, outfits) +function Player:enableHirelingOutfit(outfitName) + local outfitScoped = self:kv():scoped("hireling-outfits") + if outfitScoped:get(outfitName) then + logger.debug("Player '{}' already have hireling outfit name '{}'", self:getName(), outfitName) + return end + + outfitScoped:set(outfitName, true) end -function Player:enableHirelingOutfit(OUTFIT) - local outfits = self:getStorageValue(HIRELING_STORAGE.OUTFIT) - if outfits < 0 then - outfits = 0 +function Player:clearAllHirelingStats() + local skillsScoped = self:kv():scoped("hireling-skills") + for key, skills in pairs(HIRELING_SKILLS) do + if skillsScoped:get(skills[2]) then + skillsScoped:set(skills[2], false) + end end - outfits = setFlag(OUTFIT, outfits) - self:setStorageValue(HIRELING_STORAGE.OUTFIT, outfits) - self:copyHirelingStorageToCache() -end --- [[ END PLAYER EXTENSION ]] + local outfitsScoped = self:kv():scoped("hireling-outfits") + for key, outfits in pairs(HIRELING_OUTFITS) do + if outfitsScoped:get(outfits[2]) then + outfitsScoped:set(outfits[2], false) + end + end +end diff --git a/data/libs/loyalty_lib.lua b/data/libs/loyalty_lib.lua index 7665c5261..4956a8ac3 100644 --- a/data/libs/loyalty_lib.lua +++ b/data/libs/loyalty_lib.lua @@ -1,5 +1,5 @@ local loyaltySystem = { - enable = configManager.getBoolean(LOYALTY_ENABLED), + enable = configManager.getBoolean(configKeys.LOYALTY_ENABLED), titles = { [1] = { name = "Scout of Tibia", points = 50 }, [2] = { name = "Sentinel of Tibia", points = 100 }, diff --git a/data/libs/reward_boss/reward_boss.lua b/data/libs/reward_boss/reward_boss.lua index 8913d746a..5576eb62f 100644 --- a/data/libs/reward_boss/reward_boss.lua +++ b/data/libs/reward_boss/reward_boss.lua @@ -116,6 +116,9 @@ function ResetAndSetTargetList(creature) local bossId = creature:getId() local info = _G.GlobalBosses[bossId] + if not info then + return + end -- Reset all players' status for _, player in pairs(info) do player.active = false diff --git a/data/modules/scripts/blessings/blessings.lua b/data/modules/scripts/blessings/blessings.lua index 0582c6154..c7c1ce42a 100644 --- a/data/modules/scripts/blessings/blessings.lua +++ b/data/modules/scripts/blessings/blessings.lua @@ -183,7 +183,7 @@ Blessings.sendBlessDialog = function(player) for i = 1, historyAmount do msg:addU32(os.time()) -- timestamp msg:addByte(0) -- Color message (1 - Red | 0 = White loss) - msg:addString("Blessing Purchased") -- History message + msg:addString("Blessing Purchased", "Blessings.sendBlessDialog - Blessing Purchased") -- History message end msg:sendToPlayer(player) @@ -361,6 +361,10 @@ Blessings.BuyAllBlesses = function(player) end if player:removeMoneyBank(totalCost) then + metrics.addCounter("balance_decrease", remainsPrice, { + player = player:getName(), + context = "blessings", + }) for i, v in ipairs(missingBless) do player:addBlessing(v.id, 1) end diff --git a/data/modules/scripts/daily_reward/daily_reward.lua b/data/modules/scripts/daily_reward/daily_reward.lua index 640ec0b22..de4116f7e 100644 --- a/data/modules/scripts/daily_reward/daily_reward.lua +++ b/data/modules/scripts/daily_reward/daily_reward.lua @@ -367,7 +367,7 @@ function Player.sendOpenRewardWall(self, shrine) msg:addByte(self:getDayStreak()) -- current reward? day = 0, day 1, ... this should be resetted to 0 every week imo 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:addString("Sorry, you have already taken your daily reward or you are unable to collect it.", "Player.sendOpenRewardWall - Sorry, you have already taken your daily reward or you are unable to collect it.") -- Unknown message if self:getJokerTokens() > 0 then msg:addByte(1) msg:addU16(self:getJokerTokens()) @@ -529,7 +529,7 @@ function Player.sendError(self, error) local msg = NetworkMessage() msg:addByte(ServerPackets.ShowDialog) msg:addByte(0x14) - msg:addString(error) + msg:addString(error, "Player.sendError - error") msg:sendToPlayer(self) end @@ -562,7 +562,7 @@ function Player.sendRewardHistory(self) for k, entry in ipairs(entries) do msg:addU32(entry.timestamp) msg:addByte(0) -- (self:isPremium() and 0 or 0) - msg:addString(entry.description) + msg:addString(entry.description, "Player.sendRewardHistory - entry.description") msg:addU16(entry.daystreak + 1) end msg:sendToPlayer(self) @@ -595,7 +595,7 @@ function Player.readDailyReward(self, msg, currentDay, state) local itemName = itemType:getArticle() .. " " .. itemType:getName() local itemWeight = itemType:getWeight() msg:addU16(itemId) - msg:addString(itemName) + msg:addString(itemName, "Player.readDailyReward - itemName") msg:addU32(itemWeight) end end @@ -605,7 +605,7 @@ function Player.readDailyReward(self, msg, currentDay, state) -- for i = 1, #rewards.things do -- msg:addByte(DAILY_REWARD_SYSTEM_TYPE_OTHER) -- type -- msg:addU16(rewards.things[i].id * 100) - -- msg:addString(rewards.things[i].name) + -- msg:addString(rewards.things[i].name, "Player.readDailyReward - rewards.things[i].name") -- msg:addByte(rewards.things[i].quantity) -- end elseif type == DAILY_REWARD_TYPE_PREY_REROLL then @@ -636,7 +636,7 @@ function Player.sendDailyReward(self) local maxBonus = 7 msg:addByte(maxBonus - 1) for i = 2, maxBonus do - msg:addString(DailyReward.strikeBonuses[i].text) + msg:addString(DailyReward.strikeBonuses[i].text, "Player.sendDailyReward - DailyReward.strikeBonuses[i].text") msg:addByte(i) end msg:addByte(1) -- Unknown diff --git a/data/modules/scripts/gamestore/gamestore.lua b/data/modules/scripts/gamestore/gamestore.lua index c4313dc9d..afaffcb0b 100644 --- a/data/modules/scripts/gamestore/gamestore.lua +++ b/data/modules/scripts/gamestore/gamestore.lua @@ -1114,14 +1114,6 @@ GameStore.Categories = { rookgaard = true, state = GameStore.States.STATE_NONE, offers = { - { - icons = { "Arctic_Unicorn.png" }, - name = "Artic Unicorn", - price = 870, - id = 114, - description = "{character}\n{speedboost}\n\nThe Arctic Unicorn lives in a deep rivalry with its cousin the Blazing Unicorn. Even though they were born in completely different areas, they somehow share the same bloodline. The eternal battle between fire and ice continues. Who will win? Tangerine vs.crystal blue! The choice is yours!", - type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, - }, { icons = { "Armoured_War_Horse.png" }, name = "Armoured War Horse", @@ -1130,6 +1122,14 @@ GameStore.Categories = { description = "{character}\n{speedboost}\n\nThe Armoured War Horse is a dangerous black beauty! When you see its threatening, blood-red eyes coming towards you, you'll know trouble is on its way. Protected by its heavy armour plates, the warhorse is the perfect partner for dangerous hunting sessions and excessive enemy slaughtering.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, + { + icons = { "Arctic_Unicorn.png" }, + name = "Artic Unicorn", + price = 870, + id = 114, + description = "{character}\n{speedboost}\n\nThe Arctic Unicorn lives in a deep rivalry with its cousin the Blazing Unicorn. Even though they were born in completely different areas, they somehow share the same bloodline. The eternal battle between fire and ice continues. Who will win? Tangerine vs.crystal blue! The choice is yours!", + type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, + }, { icons = { "Batcat.png" }, name = "Batcat", @@ -1178,6 +1178,14 @@ GameStore.Categories = { description = "{character}\n{speedboost}\n\nYou are fascinated by insectoid creatures and can picture yourself riding one during combat or just for travelling? The Bloodcurl will carry you through the Tibian wilderness with ease.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, + { + icons = { "Bogwurm.png" }, + name = "Bogwurm", + price = 870, + id = 189, + description = "{character}\n{speedboost}\n\nThe Bogwurm, Gloomwurm, and Rustwurm belong to a little known subset of the dragon family, and usually live out their lives in habitats far away from human interaction. Them being cunning hunters, and their keen sense of perception make these wurms great companions for whomever can locate and tame them.", + type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, + }, { icons = { "Boreal_Owl.png" }, name = "Boreal Owl", @@ -1194,14 +1202,6 @@ GameStore.Categories = { description = "{character}\n{speedboost}\n\nThe vibrant colours and elegance of a Tangerine Flecked Koi, a Brass Speckled Koi, and an Ink Spotted Koi make them a fascinating sight to behold, and their boisterous nature and speed will make you the first to arrive wherever there are riches to gain. Wield your weapon as gracefully and effortlessly as your swimming companion glides through the water, and the two of you will make the perfect and most deadly pair.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, - { - icons = { "Bogwurm.png" }, - name = "Bogwurm", - price = 870, - id = 189, - description = "{character}\n{speedboost}\n\nThe Bogwurm, Gloomwurm, and Rustwurm belong to a little known subset of the dragon family, and usually live out their lives in habitats far away from human interaction. Them being cunning hunters, and their keen sense of perception make these wurms great companions for whomever can locate and tame them.", - type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, - }, { icons = { "Bunny_Dray.png" }, name = "Bunny Dray", @@ -1274,6 +1274,16 @@ GameStore.Categories = { description = "{character}\n{speedboost}\n\nIf the Coralripper moves its fins, it generates enough air pressure that it can even float over land. Its numerous eyes allow it to quickly detect dangers even in confusing situations and eliminate them with one powerful bite. If you watch your fingers, you are going to be good friends.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, + --[[{ + icons = { "Corpsefire_Skull.png" }, + name = "Corpsefire Skull", + price = 750, + id = 221, + description = "{character}\n{speedboost}\n\nSkulls are the infernal heralds of untamed power. Bodies are obsolete when sinister forces animate your being. Embrace their presence and command the devastating might that awaits on the back of an eerie Corpsefire Skull!", + type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, + state = GameStore.States.STATE_NEW, + home = true, + },]] { icons = { "Cranium_Spider.png" }, name = "Cranium Spider", @@ -1306,6 +1316,14 @@ GameStore.Categories = { description = "{character}\n{speedboost}\n\nBorn from the depths of the forest, where flora and fauna intertwine in mysterious ways, the Floral Beast is a colourful creature that is sure to turn some heads. The Hyacinth, Peony, and Dandelion mount are loyal companions that will safely carry you through their natural habitat of the woods, or lands unknown to them.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, + { + icons = { "Darkfire_Devourer.png" }, + name = "Darkfire Devourer", + price = 1300, + id = 216, + description = "{character}\n{speedboost}\n\nA wild, ancient creature, which had been hiding in the depths of the shadows for a very long time, has been spotted in Tibia again! The almighty Shadow Draptor has returned and only the bravest Tibians can control such a beast!", + type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, + }, { icons = { "Dawn_Strayer.png" }, name = "Dawn Strayer", @@ -1330,6 +1348,16 @@ GameStore.Categories = { description = "{character}\n{speedboost}\n\nIts roaring is piercing marrow and bone and can be heard over ten miles away. The Desert King is the undisputed ruler of its territory and no one messes with this animal. Show no fear and prove yourself worthy of its trust and you will get yourself a valuable companion for your adventures.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, + --[[{ + icons = { "Doom_Skull.png" }, + name = "Doom Skull", + price = 750, + id = 219, + description = "{character}\n{speedboost}\n\nSkulls are the infernal heralds of untamed power. Bodies are obsolete when sinister forces animate your being. Embrace their presence and command the devastating might that awaits on the back of a grim Doom Skull.", + type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, + state = GameStore.States.STATE_NEW, + home = true, + },]] { icons = { "Doombringer.png" }, name = "Doombringer", @@ -1498,6 +1526,14 @@ GameStore.Categories = { description = "{character}\n{speedboost}\n\nThe Flying Divan is the perfect mount for those who are too busy to take care of an animal mount or simply like to travel on a beautiful, magic hand-woven carpet.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, + { + icons = { "Foxmouse.png" }, + name = "Foxmouse", + price = 750, + id = 218, + description = "{character}\n{speedboost}\n\nA wild, ancient creature, which had been hiding in the depths of the shadows for a very long time, has been spotted in Tibia again! The almighty Shadow Draptor has returned and only the bravest Tibians can control such a beast!", + type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, + }, { icons = { "Frostbringer.png" }, name = "Frostbringer", @@ -1698,6 +1734,16 @@ GameStore.Categories = { description = "{character}\n{speedboost}\n\nThe Magic Carpet is the perfect mount for those who are too busy to take care of an animal mount or simply like to travel on a beautiful, magic hand-woven carpet.", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, + --[[{ + icons = { "Magma_Skull.png" }, + name = "Magma Skull", + price = 750, + id = 220, + description = "{character}\n{speedboost}\n\nSkulls are the infernal heralds of untamed power. Bodies are obsolete when sinister forces animate your being. Embrace their presence and command the devastating might that awaits on the back of a blazing Magma Skull.", + type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, + state = GameStore.States.STATE_NEW, + home = true, + },]] { icons = { "Marsh_Toad.png" }, name = "Marsh Toad", @@ -2026,6 +2072,14 @@ GameStore.Categories = { description = "{character}\n{speedboost}\n\nIncredible strength and smartness, an irrepressible will to survive, passionately hunting in groups. If these attributes apply to your character, we have found the perfect partner for you. Have a proper look at Snow Pelt, which stands loyally by its master's side in every situation. It is time to become the leader of the wolf pack!", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, + { + icons = { "Snow_Strider.png" }, + name = "Snow Strider", + price = 870, + id = 164, + description = "{character}\n{speedboost}\n\nA magical fire burns inside these wolves. Bred as the faithful guardians for an eccentric wizard's tower, these creatures make for loyal companions during your travels. While not originally intended for riding, their sturdy frame makes the Dawn Strayer, Dusk Pryer and Snow Strider suitable mounts.", + type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, + }, { icons = { "Snowy_Owl.png" }, name = "Snowy Owl", @@ -2035,11 +2089,11 @@ GameStore.Categories = { type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { - icons = { "Snow_Strider.png" }, - name = "Snow Strider", - price = 870, - id = 164, - description = "{character}\n{speedboost}\n\nA magical fire burns inside these wolves. Bred as the faithful guardians for an eccentric wizard's tower, these creatures make for loyal companions during your travels. While not originally intended for riding, their sturdy frame makes the Dawn Strayer, Dusk Pryer and Snow Strider suitable mounts.", + icons = { "Spirit_of_Purity.png" }, + name = "Spirit of Purity", + price = 1000, + id = 217, + description = "{character}\n{speedboost}\n\nA wild, ancient creature, which had been hiding in the depths of the shadows for a very long time, has been spotted in Tibia again! The almighty Shadow Draptor has returned and only the bravest Tibians can control such a beast!", type = GameStore.OfferTypes.OFFER_TYPE_MOUNT, }, { @@ -6115,7 +6169,7 @@ GameStore.Categories = { icons = { "Hireling_Cook.png" }, name = "Hireling Cook", price = 900, - id = HIRELING_STORAGE.SKILL + HIRELING_SKILLS.COOKING, + id = HIRELING_SKILLS.COOKING[1], count = 1, number = 1, description = "{info} Give your hirelings the ability to cook exclusive status enhancement and instant recovery meals!", @@ -6125,7 +6179,7 @@ GameStore.Categories = { icons = { "Hireling_Trader.png" }, name = "Hireling Trader", price = 250, - id = HIRELING_STORAGE.SKILL + HIRELING_SKILLS.TRADER, + id = HIRELING_SKILLS.TRADER[1], count = 1, number = 1, description = "{info} Give your hirelings the ability of trading several types of items, including equipment, tools, potions, runes, wands and rods.", @@ -6135,7 +6189,7 @@ GameStore.Categories = { icons = { "Hireling_Steward.png" }, name = "Hireling Steward", price = 250, - id = HIRELING_STORAGE.SKILL + HIRELING_SKILLS.STEWARD, + id = HIRELING_SKILLS.STEWARD[1], count = 1, number = 1, description = "{info} Give your hirelings the ability to access and manage your stash at the confort of your from home", @@ -6145,7 +6199,7 @@ GameStore.Categories = { icons = { "Hireling_Banker.png" }, name = "Hireling Banker", price = 250, - id = HIRELING_STORAGE.SKILL + HIRELING_SKILLS.BANKER, + id = HIRELING_SKILLS.BANKER[1], count = 1, number = 1, description = "{info} Give your hirelings the ability of managing your banking business.", @@ -6165,7 +6219,7 @@ GameStore.Categories = { icons = { "Hireling_Banker.png" }, name = "Banker Dress", price = 500, - id = HIRELING_STORAGE.OUTFIT + HIRELING_OUTFITS.BANKER, + id = HIRELING_OUTFITS.BANKER[1], count = 1, number = 1, description = "{info} can only be used for hirelings of the purchasing character\n{activated}\n{info} the purchased dress can be used by all hirelings, however, how many hirelings can wear this outfit at the same time depends on the number of dresses you own\n{info} colours can be changed using the Outfit dialog\n{info} number that can be purchased depends on the amount of hirelings you own", @@ -6175,7 +6229,7 @@ GameStore.Categories = { icons = { "Hireling_Trader.png" }, name = "Trader Dress", price = 500, - id = HIRELING_STORAGE.OUTFIT + HIRELING_OUTFITS.TRADER, + id = HIRELING_OUTFITS.TRADER[1], count = 1, number = 1, description = "{info} can only be used for hirelings of the purchasing character\n{activated}\n{info} the purchased dress can be used by all hirelings, however, how many hirelings can wear this outfit at the same time depends on the number of dresses you own\n{info} colours can be changed using the Outfit dialog\n{info} number that can be purchased depends on the amount of hirelings you own", @@ -6185,7 +6239,7 @@ GameStore.Categories = { icons = { "Hireling_Cook.png" }, name = "Cook Dress", price = 500, - id = HIRELING_STORAGE.OUTFIT + HIRELING_OUTFITS.COOKING, + id = HIRELING_OUTFITS.COOKING[1], count = 1, number = 1, description = "{info} can only be used for hirelings of the purchasing character\n{activated}\n{info} the purchased dress can be used by all hirelings, however, how many hirelings can wear this outfit at the same time depends on the number of dresses you own\n{info} colours can be changed using the Outfit dialog\n{info} number that can be purchased depends on the amount of hirelings you own", @@ -6195,7 +6249,7 @@ GameStore.Categories = { icons = { "Hireling_Steward.png" }, name = "Steward Dress", price = 500, - id = HIRELING_STORAGE.OUTFIT + HIRELING_OUTFITS.STEWARD, + id = HIRELING_OUTFITS.STEWARD[1], count = 1, number = 1, description = "{info} can only be used for hirelings of the purchasing character\n{activated}\n{info} the purchased dress can be used by all hirelings, however, how many hirelings can wear this outfit at the same time depends on the number of dresses you own\n{info} colours can be changed using the Outfit dialog\n{info} number that can be purchased depends on the amount of hirelings you own", @@ -6205,7 +6259,7 @@ GameStore.Categories = { icons = { "Hireling_Servant.png" }, name = "Servant Dress", price = 300, - id = HIRELING_STORAGE.OUTFIT + HIRELING_OUTFITS.SERVANT, + id = HIRELING_OUTFITS.SERVANT[1], count = 1, number = 1, description = "{info} can only be used for hirelings of the purchasing character\n{activated}\n{info} the purchased dress can be used by all hirelings, however, how many hirelings can wear this outfit at the same time depends on the number of dresses you own\n{info} colours can be changed using the Outfit dialog\n{info} number that can be purchased depends on the amount of hirelings you own", @@ -6215,7 +6269,7 @@ GameStore.Categories = { icons = { "Hireling_Hydra.png" }, name = "Hydra Dress", price = 900, - id = HIRELING_STORAGE.OUTFIT + HIRELING_OUTFITS.HYDRA, + id = HIRELING_OUTFITS.HYDRA[1], count = 1, number = 1, description = "{info} can only be used for hirelings of the purchasing character\n{activated}\n{info} the purchased dress can be used by all hirelings, however, how many hirelings can wear this outfit at the same time depends on the number of dresses you own\n{info} number that can be purchased depends on the amount of hirelings you own", @@ -6225,7 +6279,7 @@ GameStore.Categories = { icons = { "Hireling_Ferumbras.png" }, name = "Ferumbras Dress", price = 900, - id = HIRELING_STORAGE.OUTFIT + HIRELING_OUTFITS.FERUMBRAS, + id = HIRELING_OUTFITS.FERUMBRAS[1], count = 1, number = 1, description = "{info} can only be used for hirelings of the purchasing character\n{activated}\n{info} the purchased dress can be used by all hirelings, however, how many hirelings can wear this outfit at the same time depends on the number of dresses you own\n{info} number that can be purchased depends on the amount of hirelings you own", @@ -6235,7 +6289,7 @@ GameStore.Categories = { icons = { "Hireling_Bonelord.png" }, name = "Bonelord Dress", price = 900, - id = HIRELING_STORAGE.OUTFIT + HIRELING_OUTFITS.BONELORD, + id = HIRELING_OUTFITS.BONELORD[1], count = 1, number = 1, description = "{info} can only be used for hirelings of the purchasing character\n{activated}\n{info} the purchased dress can be used by all hirelings, however, how many hirelings can wear this outfit at the same time depends on the number of dresses you own\n{info} number that can be purchased depends on the amount of hirelings you own", @@ -6245,7 +6299,7 @@ GameStore.Categories = { icons = { "Hireling_Dragon.png" }, name = "Dragon Dress", price = 900, - id = HIRELING_STORAGE.OUTFIT + HIRELING_OUTFITS.DRAGON, + id = HIRELING_OUTFITS.DRAGON[1], count = 1, number = 1, description = "{info} can only be used for hirelings of the purchasing character\n{activated}\n{info} the purchased dress can be used by all hirelings, however, how many hirelings can wear this outfit at the same time depends on the number of dresses you own\n{info} number that can be purchased depends on the amount of hirelings you own", diff --git a/data/modules/scripts/gamestore/init.lua b/data/modules/scripts/gamestore/init.lua index 86c2c60d4..981db5cec 100644 --- a/data/modules/scripts/gamestore/init.lua +++ b/data/modules/scripts/gamestore/init.lua @@ -438,7 +438,7 @@ function parseBuyStoreOffer(playerId, msg) -- Handled errors have a code index and unhandled errors do not local pcallOk, pcallError = pcall(function() if offer.type == GameStore.OfferTypes.OFFER_TYPE_ITEM then - GameStore.processItemPurchase(player, offer.itemtype, offer.count, offer.moveable) + GameStore.processItemPurchase(player, offer.itemtype, offer.count, offer.movable) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_POUCH then GameStore.processItemPurchase(player, offer.itemtype, offer.count) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_INSTANT_REWARD_ACCESS then @@ -446,13 +446,13 @@ function parseBuyStoreOffer(playerId, msg) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_CHARMS then GameStore.processCharmsPurchase(player) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_BLESSINGS then - GameStore.processSignleBlessingPurchase(player, offer.blessid, offer.count) + GameStore.processSingleBlessingPurchase(player, offer.blessid, offer.count) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_ALLBLESSINGS then GameStore.processAllBlessingsPurchase(player, offer.count) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_PREMIUM then GameStore.processPremiumPurchase(player, offer.id) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_STACKABLE then - GameStore.processStackablePurchase(player, offer.itemtype, offer.count, offer.name, offer.moveable) + GameStore.processStackablePurchase(player, offer.itemtype, offer.count, offer.name, offer.movable) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_HOUSE then GameStore.processHouseRelatedPurchase(player, offer) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_OUTFIT then @@ -477,7 +477,7 @@ function parseBuyStoreOffer(playerId, msg) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_TEMPLE then GameStore.processTempleTeleportPurchase(player) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_CHARGES then - GameStore.processChargesPurchase(player, offer.itemtype, offer.name, offer.charges, offer.moveable) + GameStore.processChargesPurchase(player, offer.itemtype, offer.name, offer.charges, offer.movable) elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_HIRELING then local hirelingName = msg:getString() local sex = msg:getByte() @@ -572,9 +572,9 @@ function openStore(playerId) GameStoreCategories, GameStoreCount = GameStore.Categories, #GameStore.Categories end local addCategory = function(category) - msg:addString(category.name) + msg:addString(category.name, "openStore - category.name") if oldProtocol then - msg:addString(category.description) + msg:addString(category.description, "openStore - category.description") end msg:addByte(category.state or GameStore.States.STATE_NONE) @@ -582,13 +582,13 @@ function openStore(playerId) msg:addByte(size) for _, icon in ipairs(category.icons) do if size > 0 then - msg:addString(icon) + msg:addString(icon, "openStore - icon") size = size - 1 end end if category.parent then - msg:addString(category.parent) + msg:addString(category.parent, "openStore - category.parent") else msg:addU16(0) end @@ -608,7 +608,7 @@ function sendOfferDescription(player, offerId, description) local msg = NetworkMessage() msg:addByte(0xEA) msg:addU32(offerId) - msg:addString(description) + msg:addString(description, "sendOfferDescription - description") msg:sendToPlayer(player) end @@ -733,8 +733,7 @@ function Player.canBuyOffer(self, offer) disabledReason = "You already have bought the maximum number of allowed hirelings." end elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_HIRELING_SKILL then - local skill = (HIRELING_STORAGE.SKILL + offer.id) - if self:hasHirelingSkill(skill) then + if self:hasHirelingSkill(GetHirelingSkillNameById(offer.id)) then disabled = 1 disabledReason = "This skill is already unlocked." end @@ -743,8 +742,7 @@ function Player.canBuyOffer(self, offer) disabledReason = "You need to have a hireling." end elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_HIRELING_OUTFIT then - local outfit = offer.id - HIRELING_STORAGE.OUTFIT - if self:hasHirelingOutfit(outfit) then + if self:hasHirelingOutfit(GetHirelingOutfitNameById(offer.id)) then disabled = 1 disabledReason = "This hireling outfit is already unlocked." end @@ -779,7 +777,7 @@ function sendShowStoreOffers(playerId, category, redirectId) local msg = NetworkMessage() local haveSaleOffer = 0 msg:addByte(GameStore.SendingPackets.S_StoreOffers) - msg:addString(category.name) + msg:addString(category.name, "sendShowStoreOffers - category.name") local categoryLimit = 65535 if oldProtocol then @@ -846,7 +844,7 @@ function sendShowStoreOffers(playerId, category, redirectId) msg:addU16(#disableReasons) for _, reason in ipairs(disableReasons) do - msg:addString(reason) + msg:addString(reason, "sendShowStoreOffers - reason") end if count > categoryLimit then @@ -857,7 +855,7 @@ function sendShowStoreOffers(playerId, category, redirectId) for name, offer in pairs(offers) do if count > 0 then count = count - 1 - msg:addString(name) + msg:addString(name, "sendShowStoreOffers - name") msg:addByte(#offer.offers) sendOfferDescription(player, offer.id and offer.id or 0xFFFF, offer.description) for _, off in ipairs(offer.offers) do @@ -902,7 +900,7 @@ function sendShowStoreOffers(playerId, category, redirectId) msg:addByte(type) if type == GameStore.ConverType.SHOW_NONE then - msg:addString(offer.icons[1]) + msg:addString(offer.icons[1], "sendShowStoreOffers - offer.icons[1]") elseif type == GameStore.ConverType.SHOW_MOUNT then local mount = Mount(offer.id) msg:addU16(mount:getClientId()) @@ -968,7 +966,7 @@ function sendShowStoreOffersOnOldProtocol(playerId, category) local msg = NetworkMessage() local haveSaleOffer = 0 msg:addByte(GameStore.SendingPackets.S_StoreOffers) - msg:addString(category.name) + msg:addString(category.name, "sendShowStoreOffersOnOldProtocol - category.name") if not category.offers then msg:addU16(0) @@ -1014,8 +1012,8 @@ function sendShowStoreOffersOnOldProtocol(playerId, category) local disabled, disabledReason = player:canBuyOffer(offer).disabled, player:canBuyOffer(offer).disabledReason local offerPrice = offer.type == GameStore.OfferTypes.OFFER_TYPE_EXPBOOST and GameStore.ExpBoostValues[player:getStorageValue(GameStore.Storages.expBoostCount)] or (newPrice or offer.price or 0xFFFF) msg:addU32(offer.id and offer.id or 0xFFFF) - msg:addString(name) - msg:addString(offer.description or GameStore.getDefaultDescription(offer.type, offer.count)) + msg:addString(name, "sendShowStoreOffersOnOldProtocol - name") + msg:addString(offer.description or GameStore.getDefaultDescription(offer.type, offer.count), "sendShowStoreOffersOnOldProtocol - offer.description or GameStore.getDefaultDescription(offer.type, offer.count)") msg:addU32(offerPrice) if offer.state then if offer.state == GameStore.States.STATE_SALE then @@ -1037,20 +1035,20 @@ function sendShowStoreOffersOnOldProtocol(playerId, category) msg:addByte(disabled) if disabled == 1 then - msg:addString(disabledReason) + msg:addString(disabledReason, "sendShowStoreOffersOnOldProtocol - disabledReason") end if offer.type == GameStore.OfferTypes.OFFER_TYPE_MOUNT then msg:addByte(1) - msg:addString((offer.name):gsub("% ", "_") .. ".png") + msg:addString((offer.name):gsub("% ", "_") .. ".png", "sendShowStoreOffersOnOldProtocol - (offer.name).png") elseif offer.type == GameStore.OfferTypes.OFFER_TYPE_OUTFIT then msg:addByte(2) - msg:addString(offer.icons[1]) - msg:addString(offer.icons[2]) + msg:addString(offer.icons[1], "sendShowStoreOffersOnOldProtocol - offer.icons[1]") + msg:addString(offer.icons[2], "sendShowStoreOffersOnOldProtocol - offer.icons[2]") else msg:addByte(#offer.icons) for k, icon in ipairs(offer.icons) do - msg:addString(icon) + msg:addString(icon, "sendShowStoreOffersOnOldProtocol - icon") end end @@ -1091,7 +1089,7 @@ function sendStoreTransactionHistory(playerId, page, entriesPerPage) if not oldProtocol then msg:addByte(0x0) -- 0 = transferable tibia coin, 1 = normal tibia coin end - msg:addString(entry.description) + msg:addString(entry.description, "sendStoreTransactionHistory - entry.description") if not oldProtocol then msg:addByte(0) -- details end @@ -1109,7 +1107,7 @@ function sendStorePurchaseSuccessful(playerId, message) local msg = NetworkMessage() msg:addByte(GameStore.SendingPackets.S_CompletePurchase) msg:addByte(0x00) - msg:addString(message) + msg:addString(message, "sendStorePurchaseSuccessful - message") if oldProtocol then -- Send all coins can be used for buy store offers local totalCoins = player:getTibiaCoins() + player:getTransferableCoins() @@ -1131,7 +1129,7 @@ function sendStoreError(playerId, errorType, message) msg:addByte(GameStore.SendingPackets.S_StoreError) msg:addByte(errorType) - msg:addString(message) + msg:addString(message, "sendStoreError - message") msg:sendToPlayer(player) end @@ -1495,7 +1493,7 @@ end -- take a table {code = ..., message = ...} if the error is handled. When no code -- index is present the error is assumed to be unhandled. -function GameStore.processItemPurchase(player, offerId, offerCount, moveable) +function GameStore.processItemPurchase(player, offerId, offerCount, movable) if player:getFreeCapacity() < ItemType(offerId):getWeight(offerCount) then return error({ code = 0, message = "Please make sure you have free capacity to hold this item." }) end @@ -1504,7 +1502,7 @@ function GameStore.processItemPurchase(player, offerId, offerCount, moveable) if inbox then for t = 1, offerCount do local inboxItem = inbox:addItem(offerId, offerCount or 1) - if moveable ~= true and inboxItem then + if movable ~= true and inboxItem then inboxItem:setAttribute(ITEM_ATTRIBUTE_STORE, systemTime()) end end @@ -1513,7 +1511,7 @@ function GameStore.processItemPurchase(player, offerId, offerCount, moveable) end end -function GameStore.processChargesPurchase(player, itemtype, name, charges, moveable) +function GameStore.processChargesPurchase(player, itemtype, name, charges, movable) if player:getFreeCapacity() < ItemType(itemtype):getWeight(1) then return error({ code = 0, message = "Please make sure you have free capacity to hold this item." }) end @@ -1522,7 +1520,7 @@ function GameStore.processChargesPurchase(player, itemtype, name, charges, movea if inbox then local inboxItem = inbox:addItem(itemtype, charges) - if moveable ~= true and inboxItem then + if movable ~= true and inboxItem then inboxItem:setAttribute(ITEM_ATTRIBUTE_STORE, systemTime()) end else @@ -1530,7 +1528,7 @@ function GameStore.processChargesPurchase(player, itemtype, name, charges, movea end end -function GameStore.processSignleBlessingPurchase(player, blessId, count) +function GameStore.processSingleBlessingPurchase(player, blessId, count) player:addBlessing(blessId, count) end @@ -1563,7 +1561,7 @@ function GameStore.processPremiumPurchase(player, offerId) end end -function GameStore.processStackablePurchase(player, offerId, offerCount, offerName, moveable) +function GameStore.processStackablePurchase(player, offerId, offerCount, offerName, movable) local function isKegItem(itemId) return itemId >= ITEM_KEG_START and itemId <= ITEM_KEG_END end @@ -1599,12 +1597,12 @@ function GameStore.processStackablePurchase(player, offerId, offerCount, offerNa local kegItem = parcel:addItem(offerId, 1) kegItem:setAttribute(ITEM_ATTRIBUTE_CHARGES, pack) - if moveable ~= true and kegItem then + if movable ~= true and kegItem then kegItem:setAttribute(ITEM_ATTRIBUTE_STORE, systemTime()) end else local parcelItem = parcel:addItem(offerId, pack) - if moveable ~= true and parcelItem then + if movable ~= true and parcelItem then parcelItem:setAttribute(ITEM_ATTRIBUTE_STORE, systemTime()) end end @@ -1613,7 +1611,7 @@ function GameStore.processStackablePurchase(player, offerId, offerCount, offerNa end else local item = inbox:addItem(offerId, isKeg and 1 or offerCount) - if moveable ~= true and item then + if movable ~= true and item then item:setAttribute(ITEM_ATTRIBUTE_STORE, systemTime()) end if item and isKeg then @@ -1645,7 +1643,7 @@ function GameStore.processHouseRelatedPurchase(player, offer) decoKit:setAttribute(ITEM_ATTRIBUTE_DATE, offer.count) end - if offer.moveable ~= true then + if offer.movable ~= true then decoKit:setAttribute(ITEM_ATTRIBUTE_STORE, systemTime()) end end @@ -1871,8 +1869,7 @@ function GameStore.processHirelingSkillPurchase(player, offer) end player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) - local skill = offer.id - HIRELING_STORAGE.SKILL - player:enableHirelingSkill(skill) + player:enableHirelingSkill(GetHirelingSkillNameById(offer.id)) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "A new hireling skill has been added to all your hirelings") end @@ -1881,9 +1878,10 @@ function GameStore.processHirelingOutfitPurchase(player, offer) return error({ code = 1, message = "You cannot buy hireling outfit on client 10, please relog on client 12 and try again." }) end + local outfitName = GetHirelingOutfitNameById(offer.id) + logger.debug("Processing hireling outfit purchase name {}", outfitName) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) - local outfit = offer.id - HIRELING_STORAGE.OUTFIT - player:enableHirelingOutfit(outfit) + player:enableHirelingOutfit(outfitName) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "A new hireling outfit has been added to all your hirelings") end @@ -2082,7 +2080,7 @@ function sendHomePage(playerId) local msg = NetworkMessage() msg:addByte(GameStore.SendingPackets.S_StoreOffers) - msg:addString("Home") + msg:addString("Home", "sendHomePage - Home") msg:addU32(0x0) -- Redirect ID (not used here) msg:addByte(0x0) -- Window Type msg:addByte(0x0) -- Collections Size @@ -2108,13 +2106,13 @@ function sendHomePage(playerId) msg:addU16(#disableReasons) for _, reason in ipairs(disableReasons) do - msg:addString(reason) + msg:addString(reason, "sendHomePage - reason") end msg:addU16(#homeOffers) -- offers for p, offer in pairs(homeOffers) do - msg:addString(offer.name) + msg:addString(offer.name, "sendHomePage - offer.name") msg:addByte(0x1) -- ? msg:addU32(offer.id or 0) -- id msg:addU16(0x1) @@ -2134,10 +2132,15 @@ function sendHomePage(playerId) msg:addByte(type) if type == GameStore.ConverType.SHOW_NONE then - msg:addString(offer.icons[1]) + msg:addString(offer.icons[1], "sendHomePage - offer.icons[1]") elseif type == GameStore.ConverType.SHOW_MOUNT then local mount = Mount(offer.id) - msg:addU16(mount:getClientId()) + if mount then + msg:addU16(mount:getClientId()) + else + logger.debug("[sendHomePage] mount with id {} not exist, ignoring to avoid a debug on the client", offer.id) + msg:addU16(0) + end elseif type == GameStore.ConverType.SHOW_ITEM then msg:addU16(offer.itemtype) elseif type == GameStore.ConverType.SHOW_OUTFIT then @@ -2160,7 +2163,7 @@ function sendHomePage(playerId) local banner = HomeBanners msg:addByte(#banner.images) for m, image in ipairs(banner.images) do - msg:addString(image) + msg:addString(image, "sendHomePage - image") msg:addByte(0x04) -- Banner Type (offer) msg:addU32(0x00) -- Offer Id msg:addByte(0) diff --git a/data/npclib/npc.lua b/data/npclib/npc.lua index f4e8feddd..303057787 100644 --- a/data/npclib/npc.lua +++ b/data/npclib/npc.lua @@ -54,12 +54,12 @@ end function SayEvent(npcId, playerId, messageDelayed, npcHandler, textType) local npc = Npc(npcId) if not npc then - return logger.error("[NpcHandler:say] - Npc parameter is missing, nil or not found") + return logger.error("[{} NpcHandler:say] - Npc parameter for npc '{}' is missing, nil or not found", npc:getName(), npc:getName()) end local player = Player(playerId) if not player then - return logger.error("[NpcHandler:say] - Player parameter is missing, nil or not found") + return logger.error("[{} NpcHandler:say] - Player parameter for npc '{}' is missing, nil or not found", npc:getName(), npc:getName()) end local parseInfo = { diff --git a/data/npclib/npc_system/modules.lua b/data/npclib/npc_system/modules.lua index 21b273691..c705ac3f5 100644 --- a/data/npclib/npc_system/modules.lua +++ b/data/npclib/npc_system/modules.lua @@ -46,7 +46,7 @@ if Modules == nil then return false end - local cost, costMessage = (configManager.getBoolean(configKeys.TOGGLE_TRAVELS_FREE) and 0) or parameters.cost, "%d gold" + local cost, costMessage = (IsTravelFree() and 0) or parameters.cost, "%d gold" if cost and cost > 0 then if parameters.discount then cost = cost - StdModule.travelDiscount(npc, player, parameters.discount) @@ -64,8 +64,13 @@ if Modules == nil then [TAG_PVPBLESSCOST] = Blessings.getPvpBlessingCost(player:getLevel(), false), [TAG_TRAVELCOST] = costMessage, } + if parameters.replacements then + for k, v in pairs(parameters.replacements) do + parseInfo[k] = v + end + end if parameters.text then - npcHandler:say(npcHandler:parseMessage(parameters.text, parseInfo), npc, player) + npcHandler:say(npcHandler:parseMessage(parameters.text, parseInfo, player, message), npc, player) end if parameters.ungreet then @@ -106,6 +111,7 @@ if Modules == nil then else npcHandler:say(parameters.text, npc, player) player:setVocation(promotion) + player:kv():set("promoted", true) end else npcHandler:say("You need a premium account in order to get promoted.", npc, player) @@ -185,7 +191,7 @@ if Modules == nil then return false end - local cost = (configManager.getBoolean(configKeys.TOGGLE_TRAVELS_FREE) and 0) or parameters.cost + local cost = (IsTravelFree() and 0) or parameters.cost if cost and cost > 0 then if parameters.discount then cost = cost - StdModule.travelDiscount(npc, player, parameters.discount) @@ -490,7 +496,7 @@ if Modules == nil then return false end - local cost = (configManager.getBoolean(configKeys.TOGGLE_TRAVELS_FREE) and 0) or parameters.cost + local cost = (IsTravelFree() and 0) or parameters.cost module.npcHandler:say(string.format("Do you want to travel to '%s' for '%d' gold coins?", keywords[1], cost), npc, player) return true @@ -504,7 +510,7 @@ if Modules == nil then local npcHandler = module.npcHandler - local cost = (configManager.getBoolean(configKeys.TOGGLE_TRAVELS_FREE) and 0) or parameters.cost + local cost = (IsTravelFree() and 0) or parameters.cost local destination = parameters.destination local premium = parameters.premium diff --git a/data/npclib/npc_system/npc_handler.lua b/data/npclib/npc_system/npc_handler.lua index 980e9d5f3..8f4d5f2ca 100644 --- a/data/npclib/npc_system/npc_handler.lua +++ b/data/npclib/npc_system/npc_handler.lua @@ -221,7 +221,7 @@ if NpcHandler == nil then function NpcHandler:removeInteraction(npc, player) local playerId = player:getId() if Player(player) == nil then - return logger.error("[NpcHandler:removeInteraction] - Player is missing or nil") + return logger.error("[{} NpcHandler:removeInteraction] - Player parameter for npc '{}' is missing or nil", npc:getName(), npc:getName()) end if self:getEventDelayedSay(playerId) then @@ -345,16 +345,29 @@ if NpcHandler == nil then end -- Translates all message tags found in msg using parseInfo - function NpcHandler:parseMessage(msg, parseInfo) + function NpcHandler:parseMessage(msg, parseInfo, player, message) local ret = msg if type(ret) == "string" then for search, replace in pairs(parseInfo) do - ret = string.gsub(ret, search, replace) + if type(replace) == "string" then + ret = string.gsub(ret, search, replace) + elseif type(replace) == "function" then + ret = string.gsub(ret, search, replace(player, message)) + else + ret = string.gsub(ret, search, replace) + end end else for i = 1, #ret do for search, replace in pairs(parseInfo) do ret[i] = string.gsub(ret[i], search, replace) + if type(replace) == "string" then + ret[i] = string.gsub(ret[i], search, replace) + elseif type(replace) == "function" then + ret = string.gsub(ret, search, replace(player, message)) + else + ret[i] = string.gsub(ret[i], search, replace) + end end end end @@ -467,6 +480,7 @@ if NpcHandler == nil then -- If is npc shop, send shop window and parse default message (if not have callback on the npc) if npc:isMerchant() then + npc:closeShopWindow(player) npc:openShopWindow(player) self:say(msg, npc, player) end diff --git a/data/scripts/eventcallbacks/monster/ondroploot__base.lua b/data/scripts/eventcallbacks/monster/ondroploot__base.lua index c30f00263..cb7bc4207 100644 --- a/data/scripts/eventcallbacks/monster/ondroploot__base.lua +++ b/data/scripts/eventcallbacks/monster/ondroploot__base.lua @@ -1,10 +1,14 @@ local callback = EventCallback() +function Player:canReceiveLoot() + return self:getStamina() > 840 +end + function callback.monsterOnDropLoot(monster, corpse) local player = Player(corpse:getCorpseOwner()) local factor = 1.0 local msgSuffix = "" - if player and player:getStamina() > 840 then + if player and player:canReceiveLoot() then local config = player:calculateLootFactor(monster) factor = config.factor msgSuffix = config.msgSuffix diff --git a/data/scripts/eventcallbacks/monster/ondroploot_boosted.lua b/data/scripts/eventcallbacks/monster/ondroploot_boosted.lua index 613d1943f..1d94033a5 100644 --- a/data/scripts/eventcallbacks/monster/ondroploot_boosted.lua +++ b/data/scripts/eventcallbacks/monster/ondroploot_boosted.lua @@ -1,21 +1,22 @@ local callback = EventCallback() function callback.monsterOnDropLoot(monster, corpse) - if configManager.getNumber(configKeys.RATE_LOOT) == 0 then + if not monster or not corpse then return end - local mType = monster:getType() - if mType:isRewardBoss() then + if monster:getName():lower() ~= Game.getBoostedCreature():lower() then return end - if monster:getName():lower() ~= Game.getBoostedCreature():lower() then + local mType = monster:getType() + if mType:isRewardBoss() then return end local player = Player(corpse:getCorpseOwner()) - if not player then + if not player or not player:canReceiveLoot() then return end - if player:getStamina() <= 840 then + local mType = monster:getType() + if not mType then return end diff --git a/data/scripts/eventcallbacks/monster/ondroploot_hazard.lua b/data/scripts/eventcallbacks/monster/ondroploot_hazard.lua index e628c4750..ddcaeaee7 100644 --- a/data/scripts/eventcallbacks/monster/ondroploot_hazard.lua +++ b/data/scripts/eventcallbacks/monster/ondroploot_hazard.lua @@ -1,21 +1,15 @@ local callback = EventCallback() function callback.monsterOnDropLoot(monster, corpse) - if configManager.getNumber(configKeys.RATE_LOOT) == 0 then - return - end - local mType = monster:getType() - if mType:isRewardBoss() then - return - end if not monster:hazard() then return end local player = Player(corpse:getCorpseOwner()) - if not player then + if not player or not player:canReceiveLoot() then return end - if player:getStamina() <= 840 then + local mType = monster:getType() + if not mType then return end @@ -29,7 +23,7 @@ function callback.monsterOnDropLoot(monster, corpse) rolls = math.floor(rolls) end - if configManager.getBoolean(PARTY_SHARE_LOOT_BOOSTS) and rolls > 1 then + if configManager.getBoolean(configKeys.PARTY_SHARE_LOOT_BOOSTS) and rolls > 1 then msgSuffix = msgSuffix .. " (hazard system, " .. rolls .. " extra rolls)" elseif rolls == 1 then msgSuffix = msgSuffix .. " (hazard system)" diff --git a/data/scripts/eventcallbacks/monster/ondroploot_prey.lua b/data/scripts/eventcallbacks/monster/ondroploot_prey.lua index f6e855188..1f732f173 100644 --- a/data/scripts/eventcallbacks/monster/ondroploot_prey.lua +++ b/data/scripts/eventcallbacks/monster/ondroploot_prey.lua @@ -1,25 +1,19 @@ local callback = EventCallback() function callback.monsterOnDropLoot(monster, corpse) - if configManager.getNumber(configKeys.RATE_LOOT) == 0 then - return - end - local mType = monster:getType() - if mType:isRewardBoss() then - return - end local player = Player(corpse:getCorpseOwner()) - if not player then + if not player or not player:canReceiveLoot() then return end - if player:getStamina() <= 840 then + local mType = monster:getType() + if not mType then return end local factor = 1.0 local msgSuffix = "" local participants = { player } - if configManager.getBoolean(PARTY_SHARE_LOOT_BOOSTS) then + if configManager.getBoolean(configKeys.PARTY_SHARE_LOOT_BOOSTS) then local party = player:getParty() if party and party:isSharedExperienceEnabled() then participants = party:getMembers() @@ -42,7 +36,7 @@ function callback.monsterOnDropLoot(monster, corpse) return end - if configManager.getBoolean(PARTY_SHARE_LOOT_BOOSTS) then + if configManager.getBoolean(configKeys.PARTY_SHARE_LOOT_BOOSTS) then msgSuffix = msgSuffix .. " (active prey bonus for " .. table.concat(preyActivators, ", ") .. ")" else msgSuffix = msgSuffix .. " (active prey bonus)" diff --git a/data/scripts/eventcallbacks/monster/ondroploot_wealth_duplex.lua b/data/scripts/eventcallbacks/monster/ondroploot_wealth_duplex.lua index 008352174..20202c0b5 100644 --- a/data/scripts/eventcallbacks/monster/ondroploot_wealth_duplex.lua +++ b/data/scripts/eventcallbacks/monster/ondroploot_wealth_duplex.lua @@ -1,25 +1,19 @@ local callback = EventCallback() function callback.monsterOnDropLoot(monster, corpse) - if configManager.getNumber(configKeys.RATE_LOOT) == 0 then - return - end - local mType = monster:getType() - if mType:isRewardBoss() then - return - end local player = Player(corpse:getCorpseOwner()) - if not player then + if not player or not player:canReceiveLoot() then return end - if player:getStamina() <= 840 then + local mType = monster:getType() + if not mType then return end local factor = 1.0 local msgSuffix = "" local participants = { player } - if configManager.getBoolean(PARTY_SHARE_LOOT_BOOSTS) then + if configManager.getBoolean(configKeys.PARTY_SHARE_LOOT_BOOSTS) then local party = player:getParty() if party and party:isSharedExperienceEnabled() then participants = party:getMembers() @@ -57,7 +51,7 @@ function callback.monsterOnDropLoot(monster, corpse) return end - if configManager.getBoolean(PARTY_SHARE_LOOT_BOOSTS) and rolls > 1 then + if configManager.getBoolean(configKeys.PARTY_SHARE_LOOT_BOOSTS) and rolls > 1 then msgSuffix = msgSuffix .. " (active wealth duplex, " .. rolls .. " extra rolls)" else msgSuffix = msgSuffix .. " (active wealth duplex)" diff --git a/data/scripts/eventcallbacks/monster/postdroploot_analyzer.lua b/data/scripts/eventcallbacks/monster/postdroploot_analyzer.lua index 371bdd01b..8214ac98e 100644 --- a/data/scripts/eventcallbacks/monster/postdroploot_analyzer.lua +++ b/data/scripts/eventcallbacks/monster/postdroploot_analyzer.lua @@ -2,10 +2,7 @@ local callback = EventCallback() function callback.monsterPostDropLoot(monster, corpse) local player = Player(corpse:getCorpseOwner()) - if not player then - return - end - if player:getStamina() <= 840 then + if not player or not player:canReceiveLoot() then return end local mType = monster:getType() diff --git a/data/scripts/talkactions/gm/position.lua b/data/scripts/talkactions/gm/position.lua index f68b42109..1869b109c 100644 --- a/data/scripts/talkactions/gm/position.lua +++ b/data/scripts/talkactions/gm/position.lua @@ -1,22 +1,46 @@ local position = TalkAction("/pos", "!pos") +local function extractCoordinates(input) + local patterns = { + -- table format + "{%s*x%s*=%s*(%d+)%s*,%s*y%s*=%s*(%d+)%s*,%s*z%s*=%s*(%d+)%s*}", + -- Position format + "Position%s*%((%d+)%s*,%s*(%d+)%s*,%s*(%d+)%s*%)", + -- x, y, z format + "(%d+)%s*,%s*(%d+)%s*,%s*(%d+)", + } + + for _, pattern in ipairs(patterns) do + local x, y, z = string.match(input, pattern) + if x and y and z then + return tonumber(x), tonumber(y), tonumber(z) + end + end +end + function position.onSay(player, words, param) -- create log logCommand(player, words, param) - local param = string.gsub(param, "%s+", "") - local tile = load("return " .. param)() - local split = param:split(",") - if type(tile) == "table" and tile.x and tile.y and tile.z then - player:teleportTo(Position(tile.x, tile.y, tile.z)) - elseif split and param ~= "" then - player:teleportTo(Position(split[1], split[2], split[3])) - elseif param == "" then - local playerPosition = player:getPosition() - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your current position is: \z - " .. playerPosition.x .. ", " .. playerPosition.y .. ", " .. playerPosition.z .. ".") + if param == "" then + local pos = player:getPosition() + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your current position is: " .. pos.x .. ", " .. pos.y .. ", " .. pos.z .. ".") + return + end + + local x, y, z = extractCoordinates(param) + if x and y and z then + local teleportPosition = Position(x, y, z) + local tile = Tile(teleportPosition) + if not tile then + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Invalid tile or position. Send a valid position.") + return + end + + player:teleportTo(teleportPosition) + else + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Invalid position format. Use one of the following formats: \n/pos {x = ..., y = ..., z = ...}\n/pos Position(..., ..., ...)\n/pos x, y, z.") end - return true end position:separator(" ") diff --git a/data/scripts/talkactions/gm/teleport_set_destination.lua b/data/scripts/talkactions/gm/teleport_set_destination.lua index cc1520db0..62e8d12ff 100644 --- a/data/scripts/talkactions/gm/teleport_set_destination.lua +++ b/data/scripts/talkactions/gm/teleport_set_destination.lua @@ -1,38 +1,32 @@ -- Script for set teleport destination -- /teleport xxxx, xxxx, x -local teleportSetDestination = TalkAction("/teleport") +local teleportSetDestination = TalkAction("/teleport", "/tp") function teleportSetDestination.onSay(player, words, param) -- create log logCommand(player, words, param) if param == "" then - player:sendCancelMessage("Teleport position required.") + player:sendCancelMessage("Command param required.") return true end - local position = player:getPosition() - position:getNextPosition(player:getDirection(), 1) - local tile = Tile(position) - local teleport = tile and tile:getItemByType(ITEM_TYPE_TELEPORT) - if teleport then - local split = param:split(",") -- Split always return a table, even if it's empty - if #split ~= 3 then - player:sendCancelMessage('You need to declare the X, Y of Z of destination. Please use "/teleport X, Y, Z".') - return true - else - local destPosition = Position(split[1], split[2], split[3]) - if destPosition and destPosition:getTile() then - teleport:setDestination(destPosition) + local params = param:split(",") + if params[3] then + local position = player:getPosition() + position:getNextPosition(player:getDirection(), 1) + local destination = Position(params[1], params[2], params[3]) + if destination and destination:getTile() then + local tp = Game.createItem(35502, 1, position) + if tp then + tp:setDestination(destination) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format("New position: %s", param)) - else - player:sendCancelMessage("Destination position is not valid.") - return true end + else + player:sendCancelMessage("Destination position is not valid.") end else - player:sendCancelMessage("The item is not a teleport type") - return true + player:sendCancelMessage('You need to declare the X, Y of Z of destination. Please use "/teleport X, Y, Z".') end return true end diff --git a/data/scripts/talkactions/gm/teleport_to_active_player.lua b/data/scripts/talkactions/gm/teleport_to_active_player.lua index abb71116a..028c14c46 100644 --- a/data/scripts/talkactions/gm/teleport_to_active_player.lua +++ b/data/scripts/talkactions/gm/teleport_to_active_player.lua @@ -19,12 +19,12 @@ function teleportToCreature.onSay(player, words, param) if #activePlayers == 0 then player:sendCancelMessage("There are no active players.") - return false + return true end local targetPlayer = activePlayers[math.random(#activePlayers)] player:teleportTo(targetPlayer:getPosition()) - return false + return true end teleportToCreature:separator(" ") diff --git a/data/scripts/talkactions/gm/teleport_to_player.lua b/data/scripts/talkactions/gm/teleport_to_player.lua index 04bcdf0dc..786cfa7cb 100644 --- a/data/scripts/talkactions/gm/teleport_to_player.lua +++ b/data/scripts/talkactions/gm/teleport_to_player.lua @@ -4,7 +4,7 @@ function teleportToCreature.onSay(player, words, param) -- create log logCommand(player, words, param) - local onlyActive = param == "active" and true or false + local showAll = param == "all" and true or false local players = Game.getPlayers() local playerList = {} @@ -14,13 +14,14 @@ function teleportToCreature.onSay(player, words, param) goto continue end - if not onlyActive then + if showAll then table.insert(playerList, targetPlayer) else local isGhost = targetPlayer:isInGhostMode() local isTraining = _G.OnExerciseTraining[targetPlayer:getId()] local isIdle = targetPlayer:getIdleTime() >= 5 * 60 * 1000 - local isActive = not isGhost and not isTraining and not isIdle + local isInTrainingRoom = targetPlayer:getPosition():isInRange(Position(1015, 1109, 7), Position(1094, 1738, 7)) + local isActive = not isGhost and not isTraining and not isIdle and not isInTrainingRoom if isActive then table.insert(playerList, targetPlayer) end @@ -30,7 +31,7 @@ function teleportToCreature.onSay(player, words, param) if #playerList == 0 then player:sendCancelMessage("There are no active players.") - return false + return true end local window = ModalWindow({ diff --git a/data/scripts/talkactions/god/add_addon.lua b/data/scripts/talkactions/god/add_addon.lua index c9f7003ee..026336e27 100644 --- a/data/scripts/talkactions/god/add_addon.lua +++ b/data/scripts/talkactions/god/add_addon.lua @@ -20,24 +20,24 @@ function addons.onSay(player, words, param) if not target then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Player " .. name .. " is currently not online.") - return false + return true end local looktype = tonumber(split[2]) if not looktype then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Invalid looktype.") - return false + return true end local addons = tonumber(split[3]) if not addons or addons < 0 or addons > 3 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Invalid addon.") - return false + return true end target:addOutfitAddon(looktype, addons) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Addon for looktype " .. looktype .. "a for " .. target:getName() .. " set to " .. addons .. ".") - return false + return true end addons:separator(" ") diff --git a/data/scripts/talkactions/god/add_bosstiary_kills.lua b/data/scripts/talkactions/god/add_bosstiary_kills.lua index 583b02fa8..4e5aecdfb 100644 --- a/data/scripts/talkactions/god/add_bosstiary_kills.lua +++ b/data/scripts/talkactions/god/add_bosstiary_kills.lua @@ -13,13 +13,13 @@ function talkaction.onSay(player, words, param) if not kills or kills < 1 then player:sendCancelMessage("Invalid kill count.") - return false + return true end local target = targetName ~= "" and Player(targetName) or player if not target then player:sendCancelMessage("Target player not found.") - return false + return true end local message = "Added received kills: " .. kills .. ", for boss: " .. monsterName diff --git a/data/scripts/talkactions/god/add_money.lua b/data/scripts/talkactions/god/add_money.lua index 57670abd9..fa37aa9a8 100644 --- a/data/scripts/talkactions/god/add_money.lua +++ b/data/scripts/talkactions/god/add_money.lua @@ -20,7 +20,7 @@ function addMoney.onSay(player, words, param) local normalizedName = Game.getNormalizedPlayerName(name) if not normalizedName then player:sendCancelMessage("A player with name " .. name .. " does not exist.") - return false + return true end name = normalizedName @@ -32,14 +32,14 @@ function addMoney.onSay(player, words, param) -- Check if the coins is valid if amount <= 0 or amount == nil then player:sendCancelMessage("Invalid amount.") - return false + return true end if not Bank.credit(name, amount) then player:sendCancelMessage("Failed to add money to " .. name .. ".") -- Distro log logger.error("[addMoney.onSay] - Failed to add money to player") - return false + return true end player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Successfull added " .. amount .. " gold coins to " .. name .. ".") diff --git a/data/scripts/talkactions/god/add_mounts.lua b/data/scripts/talkactions/god/add_mounts.lua index 6a5893270..3de099165 100644 --- a/data/scripts/talkactions/god/add_mounts.lua +++ b/data/scripts/talkactions/god/add_mounts.lua @@ -18,7 +18,7 @@ function mounts.onSay(player, words, param) return true end - for i = 1, 217 do + for i = 1, 221 do target:addMount(i) end diff --git a/data/scripts/talkactions/god/close_server.lua b/data/scripts/talkactions/god/close_server.lua index 9f020e289..a807b4f72 100644 --- a/data/scripts/talkactions/god/close_server.lua +++ b/data/scripts/talkactions/god/close_server.lua @@ -19,8 +19,6 @@ function closeServer.onSay(player, words, param) end -- Updating daily reward next server save. UpdateDailyRewardGlobalStorage(DailyReward.storages.lastServerSave, os.time()) - -- Reset gamestore exp boost count. - db.query("UPDATE `player_storage` SET `value` = 0 WHERE `player_storage`.`key` = 51052") elseif param == "maintainance" then Game.setGameState(GAME_STATE_MAINTAIN) player:sendTextMessage(MESSAGE_ADMINISTRADOR, "Server is set to maintenance mode.") diff --git a/data/scripts/talkactions/god/create_hirelinglamp.lua b/data/scripts/talkactions/god/create_hirelinglamp.lua deleted file mode 100644 index aa012b2c9..000000000 --- a/data/scripts/talkactions/god/create_hirelinglamp.lua +++ /dev/null @@ -1,20 +0,0 @@ -local talk = TalkAction("/hireling") - -function talk.onSay(player, words, param) - -- create log - logCommand(player, words, param) - - local split = param:split(",") - local name = split[1] ~= "" and split[1] or "Hireling " .. player:getName() - local sex = split[2] and tonumber(split[2]) or 1 - - local result = player:addNewHireling(name, sex) - if result then - player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) - end - return true -end - -talk:separator(" ") -talk:groupType("god") -talk:register() diff --git a/data/scripts/talkactions/god/create_item.lua b/data/scripts/talkactions/god/create_item.lua index 7a6285ef1..4fa3be3dc 100644 --- a/data/scripts/talkactions/god/create_item.lua +++ b/data/scripts/talkactions/god/create_item.lua @@ -20,19 +20,35 @@ function createItem.onSay(player, words, param) end local charges = itemType:getCharges() - local count = tonumber(split[2]) + local count = tonumber(split[2] or 1) if count then if itemType:isStackable() then - local item = Game.createItem(itemType:getId(), count) - if not item then - player:sendCancelMessage("Cannot create item") - return true + local mainContainer = player:getSlotItem(CONST_SLOT_BACKPACK) + if not mainContainer then + player:addItemEx(Game.createItem(2854), CONST_SLOT_BACKPACK) + mainContainer = player:getSlotItem(CONST_SLOT_BACKPACK) end + local remainingCount = count + local stackSize = itemType:getStackSize() + + while remainingCount > 0 do + local freeSlots = mainContainer and (mainContainer:getCapacity() - mainContainer:getSize()) or 0 + if freeSlots <= 1 and mainContainer:getSize() ~= 0 then + mainContainer = Game.createItem(2854) + player:addItemEx(mainContainer) + end - local ret = player:addItemEx(item, INDEX_WHEREEVER, FLAG_NOLIMIT) - if ret ~= RETURNVALUE_NOERROR then - player:sendCancelMessage(ret) + local countToAdd = math.min(remainingCount, stackSize) + local tmpItem = mainContainer:addItem(itemType:getId(), countToAdd) + if tmpItem then + remainingCount = remainingCount - countToAdd + else + logger.warn("Failed to add item: {}, to container", itemType:getName()) + break + end end + + player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) return true elseif not itemType:isFluidContainer() then local min = 100 diff --git a/data/scripts/talkactions/god/goto_house.lua b/data/scripts/talkactions/god/goto_house.lua index 407649c83..503ebd65a 100644 --- a/data/scripts/talkactions/god/goto_house.lua +++ b/data/scripts/talkactions/god/goto_house.lua @@ -20,7 +20,7 @@ function sellHouse.onSay(player, words, param) player:teleportTo(house:getExitPosition()) end - return false + return true end sellHouse:separator(" ") diff --git a/data/scripts/talkactions/god/inbox_command.lua b/data/scripts/talkactions/god/inbox_command.lua index 59d7dbec3..b9834aa23 100644 --- a/data/scripts/talkactions/god/inbox_command.lua +++ b/data/scripts/talkactions/god/inbox_command.lua @@ -28,7 +28,7 @@ function inboxCommand.onSay(player, words, param) player:sendCancelMessage("Creature not found.") end - return false + return true end inboxCommand:separator(" ") diff --git a/data/scripts/talkactions/god/manage_kv.lua b/data/scripts/talkactions/god/manage_kv.lua index 6a2f4e6c6..d4c7f104c 100644 --- a/data/scripts/talkactions/god/manage_kv.lua +++ b/data/scripts/talkactions/god/manage_kv.lua @@ -15,18 +15,8 @@ get:register() local set = TalkAction("/setkv") -local function splitFirst(str, delimiter) - local start, finish = string.find(str, delimiter) - if start == nil then - return str, nil - end - local firstPart = string.sub(str, 1, start - 1) - local secondPart = string.sub(str, finish + 1) - return firstPart, secondPart -end - function set.onSay(player, words, param) - local key, value = splitFirst(param, " ") + local key, value = string.splitFirst(param, " ") value = load("return " .. value)() kv.set(key, value) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "kv[" .. key .. "] = " .. PrettyString(value)) @@ -39,7 +29,7 @@ set:register() local bossCooldown = TalkAction("/clearcooldown") function bossCooldown.onSay(player, words, param) - local boss, playerName = splitFirst(param, ",") + local boss, playerName = string.splitFirst(param, ",") if not playerName then playerName = player:getName() end diff --git a/data/scripts/talkactions/god/zones.lua b/data/scripts/talkactions/god/zones.lua index 75f70af65..1eaaf37a0 100644 --- a/data/scripts/talkactions/god/zones.lua +++ b/data/scripts/talkactions/god/zones.lua @@ -5,13 +5,20 @@ function zones.onSay(player, words, param) local cmd = params[1] if not cmd then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Command not found.") - return false + return true end if cmd == "list" then local list = {} + local filter = params[2] and params[2]:trim() for _, zone in ipairs(Zone.getAll()) do + if filter then + if not zone:getName():lower():find(filter:lower()) then + goto continue + end + end table.insert(list, zone:getName()) + ::continue:: end player:sendTextMessage(MESSAGE_HEALED, "Zones:\n" .. table.concat(list, "\n ")) return true @@ -21,12 +28,12 @@ function zones.onSay(player, words, param) local zoneName = params[2]:trim() if not zoneName then player:sendTextMessage(MESSAGE_HEALED, "Zone not found.") - return false + return true end local zone = Zone.getByName(zoneName) if not zone then player:sendTextMessage(MESSAGE_HEALED, "Zone not found.") - return false + return true end return zone end @@ -36,7 +43,7 @@ function zones.onSay(player, words, param) local pos = zone:randomPosition() if not pos then player:sendTextMessage(MESSAGE_HEALED, "No position found.") - return false + return true end player:teleportTo(pos) player:sendTextMessage(MESSAGE_HEALED, "You have been teleported to " .. zone:getName() .. ".") @@ -82,11 +89,11 @@ function zones.onSay(player, words, param) local command = commands[cmd] if not command then player:sendTextMessage(MESSAGE_HEALED, "Command not found.") - return false + return true end local zone = zoneFromParam() if not zone then - return false + return true end return command(zone) end diff --git a/data/scripts/talkactions/player/buy_house.lua b/data/scripts/talkactions/player/buy_house.lua index 90b33aef7..c3784d81a 100644 --- a/data/scripts/talkactions/player/buy_house.lua +++ b/data/scripts/talkactions/player/buy_house.lua @@ -1,7 +1,7 @@ local buyHouse = TalkAction("!buyhouse") function buyHouse.onSay(player, words, param) - local housePrice = configManager.getNumber(configKeys.HOUSE_PRICE) + local housePrice = configManager.getNumber(configKeys.HOUSE_PRICE_PER_SQM) if housePrice == -1 then return true end @@ -42,7 +42,7 @@ function buyHouse.onSay(player, words, param) if house:hasItemOnTile() then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You cannot buy this house, as there are items inside it. Please, contact an administrator.") - return false + return true end local price = house:getPrice() @@ -50,6 +50,10 @@ function buyHouse.onSay(player, words, param) player:sendCancelMessage("You do not have enough money.") return true end + metrics.addCounter("balance_decrease", remainsPrice, { + player = player:getName(), + context = "house_purchase", + }) house:setHouseOwner(player:getGuid()) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have successfully bought this house, be sure to have the money for the rent in the bank.") diff --git a/data/scripts/talkactions/player/emote_spell.lua b/data/scripts/talkactions/player/emote_spell.lua index 5dea5aee9..23162ee87 100644 --- a/data/scripts/talkactions/player/emote_spell.lua +++ b/data/scripts/talkactions/player/emote_spell.lua @@ -2,16 +2,22 @@ local emoteSpell = TalkAction("!emote") function emoteSpell.onSay(player, words, param) + if configManager.getBoolean(configKeys.EMOTE_SPELLS) == false then + player:sendTextMessage(MESSAGE_LOOK, "Emote spells have been disabled by the administrator.") + return true + end + if param == "" then - player:sendCancelMessage("You need to specify on/off param.") + player:sendCancelMessage("Please specify the parameter: 'on' to activate or 'off' to deactivate.") return true end + if param == "on" then player:setStorageValue(STORAGEVALUE_EMOTE, 1) - player:sendTextMessage(MESSAGE_LOOK, "You activated emoted spells") + player:sendTextMessage(MESSAGE_LOOK, "You have activated emote spells.") elseif param == "off" then player:setStorageValue(STORAGEVALUE_EMOTE, 0) - player:sendTextMessage(MESSAGE_LOOK, "You desactivated emoted spells") + player:sendTextMessage(MESSAGE_LOOK, "You have deactivated emote spells.") end return true end diff --git a/data/scripts/talkactions/player/flask.lua b/data/scripts/talkactions/player/flask.lua index 577df46a1..f3ccdb0bb 100644 --- a/data/scripts/talkactions/player/flask.lua +++ b/data/scripts/talkactions/player/flask.lua @@ -6,12 +6,10 @@ function flask.onSay(player, words, param) return true end if param == "on" and player:getStorageValueByName("talkaction.potions.flask") ~= 1 then - player:setStorageValue(STORAGEVALUE_EMOTE, 1) player:setStorageValueByName("talkaction.potions.flask", 1) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You will not receive flasks!") player:getPosition():sendMagicEffect(CONST_ME_REDSMOKE) elseif param == "off" then - player:setStorageValue(STORAGEVALUE_EMOTE, 0) player:setStorageValueByName("talkaction.potions.flask", 0) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You will receive flasks.") player:getPosition():sendMagicEffect(CONST_ME_REDSMOKE) diff --git a/data/scripts/talkactions/player/hidden_npc_sell_shop_items.lua b/data/scripts/talkactions/player/hidden_npc_sell_shop_items.lua index 6812de99e..1d7e3b210 100644 --- a/data/scripts/talkactions/player/hidden_npc_sell_shop_items.lua +++ b/data/scripts/talkactions/player/hidden_npc_sell_shop_items.lua @@ -10,7 +10,7 @@ function talkaction.onSay(player, words, param) player:sendTextMessage(MESSAGE_LOOK, "You activated hidden sell shop items.") elseif param == "off" then player:kv():set("npc-shop-hidden-sell-item", false) - player:sendTextMessage(MESSAGE_LOOK, "You desactivated hidden sell shop items") + player:sendTextMessage(MESSAGE_LOOK, "You deactivated hidden sell shop items") end return true end diff --git a/data/scripts/talkactions/player/leave_house.lua b/data/scripts/talkactions/player/leave_house.lua index 8743ed17a..20ad186f2 100644 --- a/data/scripts/talkactions/player/leave_house.lua +++ b/data/scripts/talkactions/player/leave_house.lua @@ -19,7 +19,7 @@ function leaveHouse.onSay(player, words, param) if house:hasNewOwnership() then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You cannot leave this house. Ownership is already scheduled to be transferred upon the next server restart.") playerPosition:sendMagicEffect(CONST_ME_POFF) - return false + return true end -- Move hireling back to lamp diff --git a/data/scripts/talkactions/player/reward.lua b/data/scripts/talkactions/player/reward.lua index e75c3f164..37255e71f 100644 --- a/data/scripts/talkactions/player/reward.lua +++ b/data/scripts/talkactions/player/reward.lua @@ -1,11 +1,12 @@ local config = { items = { - { id = 35284, charges = 64000 }, - { id = 35279, charges = 64000 }, - { id = 35281, charges = 64000 }, - { id = 35283, charges = 64000 }, - { id = 35282, charges = 64000 }, - { id = 35280, charges = 64000 }, + { id = 35284, charges = 64400 }, + { id = 35279, charges = 64400 }, + { id = 35281, charges = 64400 }, + { id = 35283, charges = 64400 }, + { id = 35282, charges = 64400 }, + { id = 35280, charges = 64400 }, + { id = 44066, charges = 64400 }, }, storage = tonumber(Storage.PlayerWeaponReward), -- storage key, player can only win once } @@ -29,6 +30,7 @@ local function sendExerciseRewardModal(player) if item then item:setActionId(IMMOVABLE_ACTION_ID) item:setAttribute(ITEM_ATTRIBUTE_STORE, systemTime()) + item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, string.format("You won this exercise weapon as a reward to be a %s player. Use it in a dummy!\nHave a nice game..", configManager.getString(configKeys.SERVER_NAME))) else player:sendTextMessage(MESSAGE_LOOK, "You need to have capacity and empty slots to receive.") return