From 923419f193f1236a3cb8cdc33b5a334b95978644 Mon Sep 17 00:00:00 2001 From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54> Date: Fri, 18 Jun 2010 17:53:13 +0000 Subject: [PATCH] ego items now vary in price based on their level of bonus git-svn-id: http://svn.net-core.org/repos/t-engine4@812 51575b47-30f0-44d4-a5cc-537603b46e54 --- game/modules/tome/class/Object.lua | 12 +++- .../data/general/objects/egos/amulets.lua | 10 +-- .../tome/data/general/objects/egos/armor.lua | 10 +-- .../tome/data/general/objects/egos/rings.lua | 69 ++++++++++--------- .../tome/data/general/objects/egos/robe.lua | 32 ++++----- .../tome/data/general/objects/egos/shield.lua | 22 +++--- .../tome/data/general/objects/egos/staves.lua | 24 +++---- .../tome/data/general/objects/egos/weapon.lua | 26 +++---- .../modules/tome/data/maps/towns/angolwen.lua | 2 +- game/modules/tome/resolvers.lua | 23 +++++-- 10 files changed, 128 insertions(+), 102 deletions(-) diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua index 97fde01e15..6510766d40 100644 --- a/game/modules/tome/class/Object.lua +++ b/game/modules/tome/class/Object.lua @@ -91,11 +91,19 @@ function _M:descAttribute(attr) elseif attr == "DAMBONUS" then local stat, i = next(self.wielder.inc_damage) return (i > 0 and "+"..i or tostring(i)).."%" + elseif attr == "RESIST" then + local stat, i = next(self.wielder.resists) + return (i > 0 and "+"..i or tostring(i)).."%" + elseif attr == "REGEN" then + local i = self.wielder.mana_regen or self.wielder.stamina_regen or self.wielder.life_regen + return ("%s%0.2f/turn"):format(i > 0 and "+" or "-", math.abs(i)) elseif attr == "COMBAT" then local c = self.combat return c.dam.."-"..(c.dam*(c.damrange or 1.1)).." dam, "..(c.apr or 0).." apr" elseif attr == "ARMOR" then return (self.wielder and self.wielder.combat_def or 0).." def, "..(self.wielder and self.wielder.combat_armor or 0).." armor" + elseif attr == "ATTACK" then + return (self.wielder and self.wielder.combat_atk or 0).." attack, "..(self.wielder and self.wielder.combat_apr or 0).." apr"..(self.wielder and self.wielder.combat_dam or 0).." dam" elseif attr == "MONEY" then return ("worth %0.2f"):format(self.money_value / 10) end @@ -262,8 +270,8 @@ function _M:getDesc() if w.knockback_immune then desc[#desc+1] = ("Increases knockback immunity: %d%%."):format(w.knockback_immune * 100) end if w.instakill_immune then desc[#desc+1] = ("Increases instant-death immunity: %d%%."):format(w.instakill_immune * 100) end - if w.life_regen then desc[#desc+1] = ("Regenerates %d hitpoints each turn."):format(w.life_regen) end - if w.mana_regen then desc[#desc+1] = ("Regenerates %d mana each turn."):format(w.mana_regen) end + if w.life_regen then desc[#desc+1] = ("Regenerates %0.2f hitpoints each turn."):format(w.life_regen) end + if w.mana_regen then desc[#desc+1] = ("Regenerates %0.2f mana each turn."):format(w.mana_regen) end if w.max_life then desc[#desc+1] = ("Maximum life %d"):format(w.max_life) end if w.max_mana then desc[#desc+1] = ("Maximum mana %d"):format(w.max_mana) end diff --git a/game/modules/tome/data/general/objects/egos/amulets.lua b/game/modules/tome/data/general/objects/egos/amulets.lua index 4243c83ace..802d1c9205 100644 --- a/game/modules/tome/data/general/objects/egos/amulets.lua +++ b/game/modules/tome/data/general/objects/egos/amulets.lua @@ -26,7 +26,7 @@ newEntity{ rarity = 6, cost = 4, wielder = { - inc_stats = { [Stats.STAT_CUN] = resolvers.mbonus_material(8, 2) }, + inc_stats = { [Stats.STAT_CUN] = resolvers.mbonus_material(8, 2, function(e, v) return v * 3 end) }, }, } newEntity{ @@ -35,7 +35,7 @@ newEntity{ rarity = 6, cost = 4, wielder = { - inc_stats = { [Stats.STAT_WIL] = resolvers.mbonus_material(8, 2) }, + inc_stats = { [Stats.STAT_WIL] = resolvers.mbonus_material(8, 2, function(e, v) return v * 3 end) }, }, } newEntity{ @@ -87,14 +87,16 @@ newEntity{ local tt = tts[rng.range(1, #tts)] e.wielder.talents_types_mastery = {} - e.wielder.talents_types_mastery[tt] = (10 + rng.mbonus(math.ceil(30 * e.material_level / 5), resolvers.current_level, 50)) / 100 + local v = (10 + rng.mbonus(math.ceil(30 * e.material_level / 5), resolvers.current_level, 50)) / 100 + e.wielder.talents_types_mastery[tt] = v + e.cost = e.cost + v * 60 end), } newEntity{ name = " of greater telepathy", suffix=true, level_range = {40, 50}, rarity = 15, - cost = 15, + cost = 25, wielder = { esp = {all=1}, }, diff --git a/game/modules/tome/data/general/objects/egos/armor.lua b/game/modules/tome/data/general/objects/egos/armor.lua index f85588a371..744cc0e2ab 100644 --- a/game/modules/tome/data/general/objects/egos/armor.lua +++ b/game/modules/tome/data/general/objects/egos/armor.lua @@ -23,7 +23,7 @@ newEntity{ rarity = 5, cost = 6, wielder = { - resists={[DamageType.FIRE] = resolvers.mbonus_material(30, 10)}, + resists={[DamageType.FIRE] = resolvers.mbonus_material(30, 10, function(e, v) return v * 0.15 end)}, }, } newEntity{ @@ -32,7 +32,7 @@ newEntity{ rarity = 5, cost = 6, wielder = { - resists={[DamageType.COLD] = resolvers.mbonus_material(30, 10)}, + resists={[DamageType.COLD] = resolvers.mbonus_material(30, 10, function(e, v) return v * 0.15 end)}, }, } newEntity{ @@ -41,7 +41,7 @@ newEntity{ rarity = 5, cost = 6, wielder = { - resists={[DamageType.ACID] = resolvers.mbonus_material(30, 10)}, + resists={[DamageType.ACID] = resolvers.mbonus_material(30, 10, function(e, v) return v * 0.15 end)}, }, } newEntity{ @@ -50,7 +50,7 @@ newEntity{ rarity = 5, cost = 6, wielder = { - resists={[DamageType.LIGHTNING] = resolvers.mbonus_material(30, 10)}, + resists={[DamageType.LIGHTNING] = resolvers.mbonus_material(30, 10, function(e, v) return v * 0.15 end)}, }, } newEntity{ @@ -59,7 +59,7 @@ newEntity{ rarity = 5, cost = 6, wielder = { - resists={[DamageType.NATURE] = resolvers.mbonus_material(30, 10)}, + resists={[DamageType.NATURE] = resolvers.mbonus_material(30, 10, function(e, v) return v * 0.15 end)}, }, } diff --git a/game/modules/tome/data/general/objects/egos/rings.lua b/game/modules/tome/data/general/objects/egos/rings.lua index dd7caaaecd..5dde6f40d0 100644 --- a/game/modules/tome/data/general/objects/egos/rings.lua +++ b/game/modules/tome/data/general/objects/egos/rings.lua @@ -26,8 +26,9 @@ newEntity{ rarity = 4, cost = 2, wielder = { - see_invisible = resolvers.mbonus_material(20, 5), + see_invisible = resolvers.mbonus_material(20, 5, function(e, v) return v * 0.2 end), }, + } newEntity{ @@ -38,97 +39,97 @@ Beware, you should take off your light, otherwise you will still be easily spott rarity = 4, cost = 16, wielder = { - invisible = resolvers.mbonus_material(10, 5), + invisible = resolvers.mbonus_material(10, 5, function(e, v) return v * 1 end), }, } newEntity{ - name = " of regeneration", suffix=true, + name = " of regeneration (#REGEN#)", suffix=true, level_range = {10, 20}, rarity = 10, cost = 8, wielder = { - life_regen = resolvers.mbonus_material(3, 1), + life_regen = resolvers.mbonus_material(30, 5, function(e, v) v=v/10 return v * 10, v end), }, } newEntity{ - name = "energizing ", prefix=true, + name = " of mana (#REGEN#)", suffix=true, level_range = {10, 20}, rarity = 8, cost = 3, wielder = { - mana_regen = resolvers.mbonus_material(3, 1), + mana_regen = resolvers.mbonus_material(3, 1, function(e, v) v=v/10 return v * 8, v end), }, } newEntity{ - name = " of accuracy", suffix=true, + name = " of accuracy (#ATTACK#)", suffix=true, level_range = {1, 30}, rarity = 6, cost = 2, wielder = { - combat_atk = resolvers.mbonus_material(15, 5), + combat_atk = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.3 end), }, } newEntity{ - name = " of defense", suffix=true, + name = " of defense (#ARMOR#)", suffix=true, level_range = {1, 30}, rarity = 6, cost = 2, wielder = { - combat_def = resolvers.mbonus_material(15, 5), + combat_def = resolvers.mbonus_material(15, 5, function(e, v) return v * 1 end), }, } newEntity{ - name = " of fire resistance", suffix=true, + name = " of fire resistance (#RESIST#)", suffix=true, level_range = {10, 40}, rarity = 6, cost = 2, wielder = { - resists = { [DamageType.FIRE] = resolvers.mbonus_material(15, 20), } + resists = { [DamageType.FIRE] = resolvers.mbonus_material(15, 20, function(e, v) return v * 0.15 end), } }, } newEntity{ - name = " of cold resistance", suffix=true, + name = " of cold resistance (#RESIST#)", suffix=true, level_range = {10, 40}, rarity = 6, cost = 2, wielder = { - resists = { [DamageType.COLD] = resolvers.mbonus_material(15, 20), } + resists = { [DamageType.COLD] = resolvers.mbonus_material(15, 20, function(e, v) return v * 0.15 end), } }, } newEntity{ - name = " of nature resistance", suffix=true, + name = " of nature resistance (#RESIST#)", suffix=true, level_range = {10, 40}, rarity = 6, cost = 2, wielder = { - resists = { [DamageType.NATURE] = resolvers.mbonus_material(15, 20), } + resists = { [DamageType.NATURE] = resolvers.mbonus_material(15, 20, function(e, v) return v * 0.15 end), } }, } newEntity{ - name = " of lightning resistance", suffix=true, + name = " of lightning resistance (#RESIST#)", suffix=true, level_range = {10, 40}, rarity = 6, cost = 2, wielder = { - resists = { [DamageType.LIGHTNING] = resolvers.mbonus_material(15, 20), } + resists = { [DamageType.LIGHTNING] = resolvers.mbonus_material(15, 20, function(e, v) return v * 0.15 end), } }, } newEntity{ - name = " of acid resistance", suffix=true, + name = " of acid resistance (#RESIST#)", suffix=true, level_range = {10, 40}, rarity = 6, cost = 2, wielder = { - resists = { [DamageType.ACID] = resolvers.mbonus_material(15, 20), } + resists = { [DamageType.ACID] = resolvers.mbonus_material(15, 20, function(e, v) return v * 0.15 end), } }, } @@ -138,7 +139,7 @@ newEntity{ rarity = 6, cost = 2, wielder = { - combat_spellresist = resolvers.mbonus_material(15, 5), + combat_spellresist = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.15 end), }, } @@ -148,7 +149,7 @@ newEntity{ rarity = 6, cost = 2, wielder = { - combat_physresist = resolvers.mbonus_material(15, 5), + combat_physresist = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.15 end), }, } @@ -158,7 +159,7 @@ newEntity{ rarity = 6, cost = 4, wielder = { - inc_stats = { [Stats.STAT_STR] = resolvers.mbonus_material(8, 2) }, + inc_stats = { [Stats.STAT_STR] = resolvers.mbonus_material(8, 2, function(e, v) return v * 3 end) }, }, } newEntity{ @@ -167,7 +168,7 @@ newEntity{ rarity = 6, cost = 4, wielder = { - inc_stats = { [Stats.STAT_DEX] = resolvers.mbonus_material(8, 2) }, + inc_stats = { [Stats.STAT_DEX] = resolvers.mbonus_material(8, 2, function(e, v) return v * 3 end) }, }, } newEntity{ define_as = "RING_MAGIC", @@ -176,7 +177,7 @@ newEntity{ define_as = "RING_MAGIC", rarity = 6, cost = 4, wielder = { - inc_stats = { [Stats.STAT_MAG] = resolvers.mbonus_material(8, 2) }, + inc_stats = { [Stats.STAT_MAG] = resolvers.mbonus_material(8, 2, function(e, v) return v * 3 end) }, }, } newEntity{ @@ -185,7 +186,7 @@ newEntity{ rarity = 6, cost = 4, wielder = { - inc_stats = { [Stats.STAT_CON] = resolvers.mbonus_material(8, 2) }, + inc_stats = { [Stats.STAT_CON] = resolvers.mbonus_material(8, 2, function(e, v) return v * 3 end) }, }, } @@ -196,7 +197,7 @@ newEntity{ rarity = 4, cost = 4, wielder = { - inc_damage = { [DamageType.PHYSICAL] = resolvers.mbonus_material(15, 5) }, + inc_damage = { [DamageType.PHYSICAL] = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.8 end) }, }, } newEntity{ define_as = "RING_ARCANE_POWER", @@ -205,7 +206,7 @@ newEntity{ define_as = "RING_ARCANE_POWER", rarity = 4, cost = 4, wielder = { - inc_damage = { [DamageType.ARCANE] = resolvers.mbonus_material(15, 5) }, + inc_damage = { [DamageType.ARCANE] = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.8 end) }, }, } newEntity{ define_as = "RING_BURNING", @@ -214,7 +215,7 @@ newEntity{ define_as = "RING_BURNING", rarity = 4, cost = 4, wielder = { - inc_damage = { [DamageType.FIRE] = resolvers.mbonus_material(15, 5) }, + inc_damage = { [DamageType.FIRE] = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.8 end) }, }, } newEntity{ define_as = "RING_FREEZING", @@ -223,7 +224,7 @@ newEntity{ define_as = "RING_FREEZING", rarity = 4, cost = 4, wielder = { - inc_damage = { [DamageType.COLD] = resolvers.mbonus_material(15, 5) }, + inc_damage = { [DamageType.COLD] = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.8 end) }, }, } newEntity{ define_as = "RING_NATURE_BLESSING", @@ -232,7 +233,7 @@ newEntity{ define_as = "RING_NATURE_BLESSING", rarity = 4, cost = 4, wielder = { - inc_damage = { [DamageType.NATURE] = resolvers.mbonus_material(15, 5) }, + inc_damage = { [DamageType.NATURE] = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.8 end) }, }, } newEntity{ define_as = "RING_BLIGHT", @@ -241,7 +242,7 @@ newEntity{ define_as = "RING_BLIGHT", rarity = 4, cost = 4, wielder = { - inc_damage = { [DamageType.BLIGHT] = resolvers.mbonus_material(15, 5) }, + inc_damage = { [DamageType.BLIGHT] = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.8 end) }, }, } newEntity{ define_as = "RING_SHOCK", @@ -250,7 +251,7 @@ newEntity{ define_as = "RING_SHOCK", rarity = 4, cost = 4, wielder = { - inc_damage = { [DamageType.LIGHTNING] = resolvers.mbonus_material(15, 5) }, + inc_damage = { [DamageType.LIGHTNING] = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.8 end) }, }, } newEntity{ define_as = "RING_CORROSION", @@ -259,6 +260,6 @@ newEntity{ define_as = "RING_CORROSION", rarity = 4, cost = 4, wielder = { - inc_damage = { [DamageType.ACID] = resolvers.mbonus_material(15, 5) }, + inc_damage = { [DamageType.ACID] = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.8 end) }, }, } diff --git a/game/modules/tome/data/general/objects/egos/robe.lua b/game/modules/tome/data/general/objects/egos/robe.lua index b1d2941ed6..1c33658094 100644 --- a/game/modules/tome/data/general/objects/egos/robe.lua +++ b/game/modules/tome/data/general/objects/egos/robe.lua @@ -23,7 +23,7 @@ newEntity{ rarity = 5, cost = 6, wielder = { - resists={[DamageType.FIRE] = resolvers.mbonus_material(30, 10)}, + resists={[DamageType.FIRE] = resolvers.mbonus_material(30, 10, function(e, v) return v * 0.15 end)}, }, } newEntity{ @@ -32,7 +32,7 @@ newEntity{ rarity = 5, cost = 6, wielder = { - resists={[DamageType.COLD] = resolvers.mbonus_material(30, 10)}, + resists={[DamageType.COLD] = resolvers.mbonus_material(30, 10, function(e, v) return v * 0.15 end)}, }, } newEntity{ @@ -41,7 +41,7 @@ newEntity{ rarity = 5, cost = 6, wielder = { - resists={[DamageType.ACID] = resolvers.mbonus_material(30, 10)}, + resists={[DamageType.ACID] = resolvers.mbonus_material(30, 10, function(e, v) return v * 0.15 end)}, }, } newEntity{ @@ -50,7 +50,7 @@ newEntity{ rarity = 5, cost = 6, wielder = { - resists={[DamageType.LIGHTNING] = resolvers.mbonus_material(30, 10)}, + resists={[DamageType.LIGHTNING] = resolvers.mbonus_material(30, 10, function(e, v) return v * 0.15 end)}, }, } newEntity{ @@ -60,7 +60,7 @@ newEntity{ cost = 6, wielder = { resists={[DamageType.NATURE] = resolvers.mbonus_material(30, 10)}, - }, + }, , function(e, v) return v * 0.15 end } newEntity{ @@ -69,7 +69,7 @@ newEntity{ rarity = 7, cost = 6, wielder = { - max_mana = resolvers.mbonus_material(100, 10), + max_mana = resolvers.mbonus_material(100, 10, function(e, v) return v * 0.1 end), }, } @@ -79,25 +79,25 @@ newEntity{ rarity = 7, cost = 6, wielder = { - on_melee_hit={[DamageType.SLIME] = resolvers.mbonus_material(7, 3)}, + on_melee_hit={[DamageType.SLIME] = resolvers.mbonus_material(7, 3, function(e, v) return v * 1 end)}, }, } newEntity{ name = " of power", suffix=true, level_range = {20, 50}, - rarity = 9, + rarity = 15, cost = 15, wielder = { inc_damage = { - [DamageType.ARCANE] = resolvers.mbonus_material(15, 5), - [DamageType.FIRE] = resolvers.mbonus_material(15, 5), - [DamageType.COLD] = resolvers.mbonus_material(15, 5), - [DamageType.ACID] = resolvers.mbonus_material(15, 5), - [DamageType.LIGHTNING] = resolvers.mbonus_material(15, 5), - [DamageType.NATURE] = resolvers.mbonus_material(15, 5), - [DamageType.BLIGHT] = resolvers.mbonus_material(15, 5), - [DamageType.PHYSICAL] = resolvers.mbonus_material(15, 5), + [DamageType.ARCANE] = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.25 end), + [DamageType.FIRE] = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.25 end), + [DamageType.COLD] = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.25 end), + [DamageType.ACID] = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.25 end), + [DamageType.LIGHTNING] = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.25 end), + [DamageType.NATURE] = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.25 end), + [DamageType.BLIGHT] = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.25 end), + [DamageType.PHYSICAL] = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.25 end), }, combat_spellpower = 4, }, diff --git a/game/modules/tome/data/general/objects/egos/shield.lua b/game/modules/tome/data/general/objects/egos/shield.lua index f5976d3578..1f0f6e74c0 100644 --- a/game/modules/tome/data/general/objects/egos/shield.lua +++ b/game/modules/tome/data/general/objects/egos/shield.lua @@ -23,7 +23,7 @@ newEntity{ rarity = 5, cost = 4, wielder = { - resists={[DamageType.FIRE] = resolvers.mbonus_material(20, 10)}, + resists={[DamageType.FIRE] = resolvers.mbonus_material(20, 10, function(e, v) return v * 0.15 end)}, }, } newEntity{ @@ -32,7 +32,7 @@ newEntity{ rarity = 5, cost = 4, wielder = { - resists={[DamageType.COLD] = resolvers.mbonus_material(20, 10)}, + resists={[DamageType.COLD] = resolvers.mbonus_material(20, 10, function(e, v) return v * 0.15 end)}, }, } newEntity{ @@ -41,7 +41,7 @@ newEntity{ rarity = 5, cost = 4, wielder = { - resists={[DamageType.ACID] = resolvers.mbonus_material(20, 10)}, + resists={[DamageType.ACID] = resolvers.mbonus_material(20, 10, function(e, v) return v * 0.15 end)}, }, } newEntity{ @@ -50,7 +50,7 @@ newEntity{ rarity = 5, cost = 4, wielder = { - resists={[DamageType.LIGHTNING] = resolvers.mbonus_material(20, 10)}, + resists={[DamageType.LIGHTNING] = resolvers.mbonus_material(20, 10, function(e, v) return v * 0.15 end)}, }, } newEntity{ @@ -59,7 +59,7 @@ newEntity{ rarity = 5, cost = 4, wielder = { - resists={[DamageType.NATURE] = resolvers.mbonus_material(20, 10)}, + resists={[DamageType.NATURE] = resolvers.mbonus_material(20, 10, function(e, v) return v * 0.15 end)}, }, } @@ -70,7 +70,7 @@ newEntity{ rarity = 8, cost = 8, wielder = { - on_melee_hit={[DamageType.FIRE] = resolvers.mbonus_material(7, 3)}, + on_melee_hit={[DamageType.FIRE] = resolvers.mbonus_material(7, 3, function(e, v) return v * 0.6 end)}, }, } newEntity{ @@ -79,7 +79,7 @@ newEntity{ rarity = 8, cost = 10, wielder = { - on_melee_hit={[DamageType.ICE] = resolvers.mbonus_material(4, 3)}, + on_melee_hit={[DamageType.ICE] = resolvers.mbonus_material(4, 3, function(e, v) return v * 0.7 end)}, }, } newEntity{ @@ -88,7 +88,7 @@ newEntity{ rarity = 8, cost = 8, wielder = { - on_melee_hit={[DamageType.ACID] = resolvers.mbonus_material(7, 3)}, + on_melee_hit={[DamageType.ACID] = resolvers.mbonus_material(7, 3, function(e, v) return v * 0.7 end)}, }, } newEntity{ @@ -97,7 +97,7 @@ newEntity{ rarity = 8, cost = 8, wielder = { - on_melee_hit={[DamageType.LIGHTNING] = resolvers.mbonus_material(7, 3)}, + on_melee_hit={[DamageType.LIGHTNING] = resolvers.mbonus_material(7, 3, function(e, v) return v * 0.7 end)}, }, } @@ -107,7 +107,7 @@ newEntity{ rarity = 15, cost = 20, wielder = { - combat_def=resolvers.mbonus_material(15, 4), + combat_def=resolvers.mbonus_material(15, 4, function(e, v) return v * 1 end), }, } @@ -117,6 +117,6 @@ newEntity{ rarity = 15, cost = 20, wielder = { - max_life=resolvers.mbonus_material(100, 10), + max_life=resolvers.mbonus_material(100, 10, function(e, v) return v * 0.1 end), }, } diff --git a/game/modules/tome/data/general/objects/egos/staves.lua b/game/modules/tome/data/general/objects/egos/staves.lua index e055ca49c0..4b3b3f0537 100644 --- a/game/modules/tome/data/general/objects/egos/staves.lua +++ b/game/modules/tome/data/general/objects/egos/staves.lua @@ -25,7 +25,7 @@ newEntity{ rarity = 4, cost = 8, wielder = { - combat_spellpower = resolvers.mbonus_material(30, 3), + combat_spellpower = resolvers.mbonus_material(30, 3, function(e, v) return v * 0.8 end), }, } @@ -35,7 +35,7 @@ newEntity{ rarity = 3, cost = 8, wielder = { - max_mana = resolvers.mbonus_material(100, 10), + max_mana = resolvers.mbonus_material(100, 10, function(e, v) return v * 0.2 end), }, } @@ -45,7 +45,7 @@ newEntity{ rarity = 3, cost = 8, wielder = { - combat_spellcrit = resolvers.mbonus_material(15, 4), + combat_spellcrit = resolvers.mbonus_material(15, 4, function(e, v) return v * 0.4 end), }, } @@ -55,9 +55,9 @@ newEntity{ rarity = 12, cost = 45, wielder = { - combat_spellpower = resolvers.mbonus_material(30, 3), - max_mana = resolvers.mbonus_material(100, 10), - inc_stats = { [Stats.STAT_MAG] = resolvers.mbonus_material(5, 1), [Stats.STAT_WIL] = resolvers.mbonus_material(5, 1) }, + combat_spellpower = resolvers.mbonus_material(30, 3, function(e, v) return v * 0.6 end), + max_mana = resolvers.mbonus_material(100, 10, function(e, v) return v * 0.2 end), + inc_stats = { [Stats.STAT_MAG] = resolvers.mbonus_material(5, 1, function(e, v) return v * 3 end), [Stats.STAT_WIL] = resolvers.mbonus_material(5, 1, function(e, v) return v * 3 end) }, }, } @@ -67,7 +67,7 @@ newEntity{ rarity = 3, cost = 5, wielder = { - inc_damage={ [DamageType.FIRE] = resolvers.mbonus_material(25, 8), }, + inc_damage={ [DamageType.FIRE] = resolvers.mbonus_material(25, 8, function(e, v) return v * 0.8 end), }, }, } @@ -77,7 +77,7 @@ newEntity{ rarity = 3, cost = 5, wielder = { - inc_damage={ [DamageType.COLD] = resolvers.mbonus_material(25, 8), }, + inc_damage={ [DamageType.COLD] = resolvers.mbonus_material(25, 8, function(e, v) return v * 0.8 end), }, }, } @@ -87,7 +87,7 @@ newEntity{ rarity = 3, cost = 5, wielder = { - inc_damage={ [DamageType.ACID] = resolvers.mbonus_material(25, 8), }, + inc_damage={ [DamageType.ACID] = resolvers.mbonus_material(25, 8, function(e, v) return v * 0.8 end), }, }, } @@ -97,7 +97,7 @@ newEntity{ rarity = 3, cost = 5, wielder = { - inc_damage={ [DamageType.LIGHTNING] = resolvers.mbonus_material(25, 8), }, + inc_damage={ [DamageType.LIGHTNING] = resolvers.mbonus_material(25, 8, function(e, v) return v * 0.8 end), }, }, } @@ -107,7 +107,7 @@ newEntity{ rarity = 3, cost = 5, wielder = { - inc_damage={ [DamageType.NATURE] = resolvers.mbonus_material(25, 8), }, + inc_damage={ [DamageType.NATURE] = resolvers.mbonus_material(25, 8, function(e, v) return v * 0.8 end), }, }, } @@ -117,6 +117,6 @@ newEntity{ rarity = 3, cost = 5, wielder = { - inc_damage={ [DamageType.BLIGHT] = resolvers.mbonus_material(25, 8), }, + inc_damage={ [DamageType.BLIGHT] = resolvers.mbonus_material(25, 8, function(e, v) return v * 0.8 end), }, }, } diff --git a/game/modules/tome/data/general/objects/egos/weapon.lua b/game/modules/tome/data/general/objects/egos/weapon.lua index e0e6d2ea6b..86657291d0 100644 --- a/game/modules/tome/data/general/objects/egos/weapon.lua +++ b/game/modules/tome/data/general/objects/egos/weapon.lua @@ -22,7 +22,7 @@ newEntity{ level_range = {1, 50}, rarity = 5, wielder = { - melee_project={[DamageType.FIRE] = resolvers.mbonus_material(25, 4)}, + melee_project={[DamageType.FIRE] = resolvers.mbonus_material(25, 4, function(e, v) return v * 0.64 end)}, }, } newEntity{ @@ -30,7 +30,7 @@ newEntity{ level_range = {15, 50}, rarity = 5, wielder = { - melee_project={[DamageType.ICE] = resolvers.mbonus_material(15, 4)}, + melee_project={[DamageType.ICE] = resolvers.mbonus_material(15, 4, function(e, v) return v * 0.7 end)}, }, } newEntity{ @@ -38,7 +38,7 @@ newEntity{ level_range = {1, 50}, rarity = 5, wielder = { - melee_project={[DamageType.ACID] = resolvers.mbonus_material(25, 4)}, + melee_project={[DamageType.ACID] = resolvers.mbonus_material(25, 4, function(e, v) return v * 0.7 end)}, }, } newEntity{ @@ -46,7 +46,7 @@ newEntity{ level_range = {1, 50}, rarity = 5, wielder = { - melee_project={[DamageType.LIGHTNING] = resolvers.mbonus_material(25, 4)}, + melee_project={[DamageType.LIGHTNING] = resolvers.mbonus_material(25, 4, function(e, v) return v * 0.7 end)}, }, } newEntity{ @@ -54,7 +54,7 @@ newEntity{ level_range = {1, 50}, rarity = 5, wielder = { - melee_project={[DamageType.POISON] = resolvers.mbonus_material(45, 6)}, + melee_project={[DamageType.POISON] = resolvers.mbonus_material(45, 6, function(e, v) return v * 0.5 end)}, }, } @@ -63,7 +63,7 @@ newEntity{ level_range = {10, 50}, rarity = 5, wielder = { - melee_project={[DamageType.SLIME] = resolvers.mbonus_material(45, 6)}, + melee_project={[DamageType.SLIME] = resolvers.mbonus_material(45, 6, function(e, v) return v * 0.9 end)}, }, } @@ -72,7 +72,7 @@ newEntity{ level_range = {1, 50}, rarity = 3, cost = 4, - combat={atk = resolvers.mbonus_material(20, 2)}, + combat={atk = resolvers.mbonus_material(20, 2, function(e, v) return v * 0.3 end)}, } newEntity{ @@ -80,7 +80,7 @@ newEntity{ level_range = {1, 50}, rarity = 3, cost = 6, - combat={apr = resolvers.mbonus_material(15, 1)}, + combat={apr = resolvers.mbonus_material(15, 1, function(e, v) return v * 0.3 end)}, } newEntity{ @@ -90,10 +90,10 @@ newEntity{ cost = 35, wielder = { melee_project={ - [DamageType.FIRE] = resolvers.mbonus_material(25, 4), - [DamageType.ICE] = resolvers.mbonus_material(15, 4), - [DamageType.ACID] = resolvers.mbonus_material(25, 4), - [DamageType.LIGHTNING] = resolvers.mbonus_material(25, 4), + [DamageType.FIRE] = resolvers.mbonus_material(25, 4, function(e, v) return v * 0.7 end), + [DamageType.ICE] = resolvers.mbonus_material(15, 4, function(e, v) return v * 0.7 end), + [DamageType.ACID] = resolvers.mbonus_material(25, 4, function(e, v) return v * 0.7 end), + [DamageType.LIGHTNING] = resolvers.mbonus_material(25, 4, function(e, v) return v * 0.7 end), }, }, } @@ -104,6 +104,6 @@ newEntity{ rarity = 3, cost = 4, wielder = { - inc_damage={ [DamageType.PHYSICAL] = resolvers.mbonus_material(25, 8), }, + inc_damage={ [DamageType.PHYSICAL] = resolvers.mbonus_material(25, 8, function(e, v) return v * 0.8 end), }, }, } diff --git a/game/modules/tome/data/maps/towns/angolwen.lua b/game/modules/tome/data/maps/towns/angolwen.lua index 5f88ba8b0b..19ffe0f90c 100644 --- a/game/modules/tome/data/maps/towns/angolwen.lua +++ b/game/modules/tome/data/maps/towns/angolwen.lua @@ -23,7 +23,7 @@ quickEntity('T', {name='tree', display='#', color=colors.LIGHT_GREEN, block_move quickEntity('o', {name='fountain', display='~', color=colors.BLUE, block_move=true, image="terrain/river.png"}) quickEntity(' ', {name='grass', display='.', color=colors.LIGHT_GREEN, image="terrain/grass.png"}) -quickEntity('2', {show_tooltip=true, name="Jewelry", display='2', color=colors.BLUE, resolvers.store("ANGOLWEN_JEWELRY"), image="terrain/terrain/wood_store_gem.png"}) +quickEntity('2', {show_tooltip=true, name="Jewelry", display='2', color=colors.BLUE, resolvers.store("ANGOLWEN_JEWELRY"), image="terrain/wood_store_gem.png"}) quickEntity('4', {show_tooltip=true, name="Alchemist", display='4', color=colors.LIGHT_BLUE, resolvers.store("POTION"), image="terrain/wood_store_potion.png"}) quickEntity('5', {show_tooltip=true, name="Scribe", display='5', color=colors.WHITE, resolvers.store("SCROLL"), image="terrain/wood_store_book.png"}) quickEntity('6', {show_tooltip=true, name="Staves & Wands", display='6', color=colors.RED, resolvers.store("ANGOLWEN_STAFF_WAND"), image="terrain/wood_store_closed.png"}) diff --git a/game/modules/tome/resolvers.lua b/game/modules/tome/resolvers.lua index 6cd61e1621..f4d0921184 100644 --- a/game/modules/tome/resolvers.lua +++ b/game/modules/tome/resolvers.lua @@ -164,11 +164,26 @@ resolvers.mbonus_max_level = 60 --- Random bonus based on level and material quality resolvers.current_level = 1 -function resolvers.mbonus_material(max, add) - return {__resolver="mbonus_material", max, add} +function resolvers.mbonus_material(max, add, pricefct) + return {__resolver="mbonus_material", max, add, pricefct} end function resolvers.calc.mbonus_material(t, e) local ml = e.material_level or 1 - print("RESOLVER MBONUS MATERIAL", ml, math.ceil(t[1] * ml / 5)) - return math.ceil(rng.mbonus(t[1], resolvers.current_level, resolvers.mbonus_max_level) * ml / 5) + (t[2] or 0) + local v = math.ceil(rng.mbonus(t[1], resolvers.current_level, resolvers.mbonus_max_level) * ml / 5) + (t[2] or 0) + + if e.cost and t[3] then + local ap, nv = t[3](e, v) + e.cost = e.cost + ap + v = nv or v + end + + return v +end + +--- Generic resolver, takes a function, executes at the end +function resolvers.genericlast(fct) + return {__resolver="genericlast", __resolve_last=true, fct} +end +function resolvers.calc.genericlast(t, e) + return t[1](e) end -- GitLab