From 7bc54b5856e8e23944e9556991ecdc30011e4631 Mon Sep 17 00:00:00 2001 From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54> Date: Sat, 15 Jan 2011 11:52:31 +0000 Subject: [PATCH] fix randart generation git-svn-id: http://svn.net-core.org/repos/t-engine4@2379 51575b47-30f0-44d4-a5cc-537603b46e54 --- game/engines/default/engine/utils.lua | 14 ++++ game/modules/tome/class/GameState.lua | 66 +++++++++--------- .../data/general/objects/egos/amulets.lua | 12 ++-- .../tome/data/general/objects/egos/cloak.lua | 10 ++- .../tome/data/general/objects/egos/digger.lua | 14 ++-- .../tome/data/general/objects/egos/gloves.lua | 20 +++--- .../tome/data/general/objects/egos/helm.lua | 12 ++-- .../tome/data/general/objects/egos/lite.lua | 16 ++--- .../tome/data/general/objects/egos/rings.lua | 68 ++++++++++--------- .../data/general/objects/egos/wizard-hat.lua | 14 ++-- 10 files changed, 134 insertions(+), 112 deletions(-) diff --git a/game/engines/default/engine/utils.lua b/game/engines/default/engine/utils.lua index bd5286fd2f..adb83c9b2f 100644 --- a/game/engines/default/engine/utils.lua +++ b/game/engines/default/engine/utils.lua @@ -23,6 +23,20 @@ function lpeg.anywhere (p) return lpeg.P{ p + 1 * lpeg.V(1) } end +function table.print(src, offset) + offset = offset or "" + for k, e in pairs(src) do + -- Deep copy subtables, but not objects! + if type(e) == "table" and not e.__CLASSNAME then + print(("%s[%s] = {"):format(offset, tostring(k))) + table.print(e, offset.." ") + print(("%s}"):format(offset)) + else + print(("%s[%s] = %s"):format(offset, tostring(k), tostring(e))) + end + end +end + function table.clone(tbl, deep) local n = {} for k, e in pairs(tbl) do diff --git a/game/modules/tome/class/GameState.lua b/game/modules/tome/class/GameState.lua index 8dbd012c28..2b26f6f56d 100644 --- a/game/modules/tome/class/GameState.lua +++ b/game/modules/tome/class/GameState.lua @@ -229,6 +229,41 @@ function _M:generateRandart(add, base, lev) print("Creating randart "..name.."("..o.unided_name..") with "..(themename or "nil").." with level "..lev) print(" * using themes", table.concat(table.keys(themes), ',')) + ----------------------------------------------------------- + -- Add ego properties + ----------------------------------------------------------- + if o.egos then + local legos = {} + local been_greater = false + table.insert(legos, game.level:getEntitiesList("object/"..o.egos..":prefix")) + table.insert(legos, game.level:getEntitiesList("object/"..o.egos..":suffix")) + table.insert(legos, game.level:getEntitiesList("object/"..o.egos..":")) + for i = 1, 2 do + local egos = rng.table(legos) + local list = {} + local filter = nil + if rng.percent(lev) and not been_greater then been_greater = true filter = function(e) return e.greater_ego end end + for z = 1, #egos do list[#list+1] = egos[z].e end + local pick_egos = game.zone:computeRarities("object", list, game.level, filter, nil, nil) + local ego = game.zone:pickEntity(pick_egos) + if ego then + print(" ** selected ego", ego.name) + ego = ego:clone() + if ego.instant_resolve then ego:resolve(nil, nil, o) end + ego.instant_resolve = nil + ego.uid = nil + ego.name = nil + ego.unided_name = nil + + table.mergeAddAppendArray(o, ego, true) + end + end + o.egos = nil o.egos_chance = nil o.force_ego = nil + -- Re-resolve with the (possibly) new resolvers + o:resolve() + o:resolve(nil, true) + end + ----------------------------------------------------------- -- Imbue powers in the randart ----------------------------------------------------------- @@ -292,37 +327,6 @@ function _M:generateRandart(add, base, lev) hpoints = hpoints - p.points * 2 end - ----------------------------------------------------------- - -- Add ego properties - ----------------------------------------------------------- - if o.egos then - local legos = {} - local been_greater = false - table.insert(legos, game.level:getEntitiesList("object/"..o.egos..":prefix")) - table.insert(legos, game.level:getEntitiesList("object/"..o.egos..":suffix")) - table.insert(legos, game.level:getEntitiesList("object/"..o.egos..":")) - for i = 1, 2 do - local egos = rng.table(legos) - local list = {} - local filter = nil - if rng.percent(lev) and not been_greater then been_greater = true filter = function(e) return e.greater_ego end end - for z = 1, #egos do list[#list+1] = egos[z].e end - local pick_egos = game.zone:computeRarities("object", list, game.level, filter, nil, nil) - local ego = game.zone:pickEntity(pick_egos) - if ego then - print(" ** selected ego", ego.name) - ego = ego:clone() - ego.name = nil - ego.unided_name = nil - if ego.instant_resolve then ego:resolve(nil, nil, o) end - ego.instant_resolve = nil - ego.uid = nil - table.mergeAddAppendArray(o, ego, true) - end - end - o.egos = nil o.egos_chance = nil o.force_ego = nil - end - -- Setup the name o.name = name diff --git a/game/modules/tome/data/general/objects/egos/amulets.lua b/game/modules/tome/data/general/objects/egos/amulets.lua index 1c43e89ee6..b21c9538b7 100644 --- a/game/modules/tome/data/general/objects/egos/amulets.lua +++ b/game/modules/tome/data/general/objects/egos/amulets.lua @@ -27,7 +27,7 @@ local Talents = require "engine.interface.ActorTalents" --load("/data/general/objects/egos/charged-utility.lua") newEntity{ - name = " of cunning (#STATBONUS#)", suffix=true, + name = " of cunning (#STATBONUS#)", suffix=true, instant_resolve=true, level_range = {1, 50}, rarity = 6, cost = 4, @@ -36,7 +36,7 @@ newEntity{ }, } newEntity{ - name = " of willpower (#STATBONUS#)", suffix=true, + name = " of willpower (#STATBONUS#)", suffix=true, instant_resolve=true, level_range = {1, 50}, rarity = 6, cost = 4, @@ -114,7 +114,7 @@ newEntity{ newEntity{ - name = "insulating ", prefix=true, + name = "insulating ", prefix=true, instant_resolve=true, level_range = {1, 50}, rarity = 6, cost = 5, @@ -151,7 +151,7 @@ newEntity{ } newEntity{ - name = "shielding ", prefix=true, + name = "shielding ", prefix=true, instant_resolve=true, level_range = {1, 50}, rarity = 6, cost = 5, @@ -162,7 +162,7 @@ newEntity{ } newEntity{ - name = "cleansing ", prefix=true, + name = "cleansing ", prefix=true, instant_resolve=true, level_range = {1, 50}, rarity = 9, cost = 9, @@ -176,7 +176,7 @@ newEntity{ } newEntity{ - name = "vitalizing ", prefix=true, + name = "vitalizing ", prefix=true, instant_resolve=true, level_range = {20, 50}, greater_ego = true, rarity = 15, diff --git a/game/modules/tome/data/general/objects/egos/cloak.lua b/game/modules/tome/data/general/objects/egos/cloak.lua index d552f9b780..2fc90c197c 100644 --- a/game/modules/tome/data/general/objects/egos/cloak.lua +++ b/game/modules/tome/data/general/objects/egos/cloak.lua @@ -52,7 +52,7 @@ newEntity{ } newEntity{ - name = " of Eldoral", suffix=true, + name = " of Eldoral", suffix=true, instant_resolve=true, level_range = {1, 50}, rarity = 6, cost = 10, @@ -65,7 +65,7 @@ newEntity{ } newEntity{ - name = " of the Shaloren", suffix=true, + name = " of the Shaloren", suffix=true, instant_resolve=true, level_range = {1, 50}, rarity = 6, cost = 10, @@ -78,7 +78,7 @@ newEntity{ } newEntity{ - name = " of Iron Throne", suffix=true, + name = " of Iron Throne", suffix=true, instant_resolve=true, level_range = {1, 50}, rarity = 6, cost = 10, @@ -191,7 +191,7 @@ newEntity{ cut_immune = resolvers.mbonus_material(2, 2, function(e, v) v=v/10 return v * 8, v end), life_regen = resolvers.mbonus_material(10, 5, function(e, v) v=v/10 return v * 10, v end), poison_immune = resolvers.mbonus_material(10, 10, function(e, v) return v * 0.15, v/100 end), - + }, } @@ -225,5 +225,3 @@ newEntity{ }, }, } - - diff --git a/game/modules/tome/data/general/objects/egos/digger.lua b/game/modules/tome/data/general/objects/egos/digger.lua index 194972ad35..1f1d654473 100644 --- a/game/modules/tome/data/general/objects/egos/digger.lua +++ b/game/modules/tome/data/general/objects/egos/digger.lua @@ -28,7 +28,7 @@ newEntity{ } newEntity{ - name = " of strength", suffix=true, + name = " of strength", suffix=true, instant_resolve=true, level_range = {10, 50}, rarity = 6, cost = 10, @@ -38,7 +38,7 @@ newEntity{ } newEntity{ - name = " of delving", suffix=true, + name = " of delving", suffix=true, instant_resolve=true, level_range = {30, 50}, greater_ego = true, rarity = 20, @@ -80,7 +80,7 @@ newEntity{ } newEntity{ - name = " of the Iron Throne", suffix=true, + name = " of the Iron Throne", suffix=true, instant_resolve=true, level_range = {20, 50}, greater_ego = true, rarity = 15, @@ -93,7 +93,7 @@ newEntity{ } newEntity{ - name = " of Reknor", suffix=true, + name = " of Reknor", suffix=true, instant_resolve=true, level_range = {20, 50}, greater_ego = true, rarity = 15, @@ -108,7 +108,7 @@ newEntity{ } newEntity{ - name = "brutal ", prefix=true, + name = "brutal ", prefix=true, instant_resolve=true, level_range = {40, 50}, greater_ego = true, rarity = 20, @@ -122,7 +122,7 @@ newEntity{ } newEntity{ - name = "builder's ", prefix=true, + name = "builder's ", prefix=true, instant_resolve=true, level_range = {30, 50}, greater_ego = true, rarity = 15, @@ -137,7 +137,7 @@ newEntity{ } newEntity{ - name = "soldier's ", prefix=true, + name = "soldier's ", prefix=true, instant_resolve=true, level_range = {30, 50}, greater_ego = true, rarity = 15, diff --git a/game/modules/tome/data/general/objects/egos/gloves.lua b/game/modules/tome/data/general/objects/egos/gloves.lua index edf64fdc68..6b5095e6a8 100644 --- a/game/modules/tome/data/general/objects/egos/gloves.lua +++ b/game/modules/tome/data/general/objects/egos/gloves.lua @@ -148,7 +148,7 @@ newEntity{ } newEntity{ - name = " of strength (#STATBONUS#)", suffix=true, + name = " of strength (#STATBONUS#)", suffix=true, instant_resolve=true, level_range = {1, 50}, rarity = 6, cost = 4, @@ -158,7 +158,7 @@ newEntity{ } newEntity{ - name = " of dexterity (#STATBONUS#)", suffix=true, + name = " of dexterity (#STATBONUS#)", suffix=true, instant_resolve=true, level_range = {1, 50}, rarity = 6, cost = 4, @@ -168,7 +168,7 @@ newEntity{ } newEntity{ - name = " of magic (#STATBONUS#)", suffix=true, + name = " of magic (#STATBONUS#)", suffix=true, instant_resolve=true, level_range = {1, 50}, rarity = 6, cost = 4, @@ -178,7 +178,7 @@ newEntity{ } newEntity{ - name = " of iron grip", suffix=true, + name = " of iron grip", suffix=true, instant_resolve=true, level_range = {20, 50}, rarity = 9, cost = 15, @@ -189,7 +189,7 @@ newEntity{ } newEntity{ - name = " of protection", suffix=true, + name = " of protection", suffix=true, instant_resolve=true, level_range = {20, 50}, greater_ego = true, rarity = 15, @@ -204,7 +204,7 @@ newEntity{ } newEntity{ - name = " of warmaking", suffix=true, + name = " of warmaking", suffix=true, instant_resolve=true, level_range = {30, 50}, greater_ego = true, rarity = 17, @@ -220,7 +220,7 @@ newEntity{ } newEntity{ - name = " of regeneration", suffix=true, + name = " of regeneration", suffix=true, instant_resolve=true, level_range = {30, 50}, greater_ego = true, rarity = 18, @@ -233,7 +233,7 @@ newEntity{ } newEntity{ - name = "heroic ", prefix=true, + name = "heroic ", prefix=true, instant_resolve=true, level_range = {40, 50}, greater_ego = true, rarity = 20, @@ -249,7 +249,7 @@ newEntity{ } newEntity{ - name = "alchemist's ", prefix=true, + name = "alchemist's ", prefix=true, instant_resolve=true, level_range = {30, 50}, greater_ego = true, rarity = 17, @@ -265,7 +265,7 @@ newEntity{ } newEntity{ - name = "archer's ", prefix=true, + name = "archer's ", prefix=true, instant_resolve=true, level_range = {30, 50}, greater_ego = true, rarity = 17, diff --git a/game/modules/tome/data/general/objects/egos/helm.lua b/game/modules/tome/data/general/objects/egos/helm.lua index cd620285f9..4d0a58a8d0 100644 --- a/game/modules/tome/data/general/objects/egos/helm.lua +++ b/game/modules/tome/data/general/objects/egos/helm.lua @@ -25,7 +25,7 @@ local DamageType = require "engine.DamageType" newEntity{ - name = " of strength (#STATBONUS#)", suffix=true, + name = " of strength (#STATBONUS#)", suffix=true, instant_resolve=true, level_range = {1, 50}, rarity = 6, cost = 4, @@ -34,7 +34,7 @@ newEntity{ }, } newEntity{ - name = " of constitution (#STATBONUS#)", suffix=true, + name = " of constitution (#STATBONUS#)", suffix=true, instant_resolve=true, level_range = {1, 50}, rarity = 6, cost = 4, @@ -43,7 +43,7 @@ newEntity{ }, } newEntity{ - name = " of dexterity (#STATBONUS#)", suffix=true, + name = " of dexterity (#STATBONUS#)", suffix=true, instant_resolve=true, level_range = {1, 50}, rarity = 6, cost = 4, @@ -204,7 +204,7 @@ newEntity{ inc_stats = { [Stats.STAT_MAG] = resolvers.mbonus_material(3, 2, function(e, v) return v * 3 end), [Stats.STAT_WIL] = resolvers.mbonus_material(3, 2, function(e, v) return v * 3 end), - }, + }, }, } @@ -220,7 +220,7 @@ newEntity{ inc_stats = { [Stats.STAT_STR] = resolvers.mbonus_material(3, 2, function(e, v) return v * 3 end), [Stats.STAT_CON] = resolvers.mbonus_material(3, 2, function(e, v) return v * 3 end), - }, + }, }, } @@ -235,7 +235,7 @@ newEntity{ inc_stats = { [Stats.STAT_DEX] = resolvers.mbonus_material(3, 2, function(e, v) return v * 3 end), [Stats.STAT_CUN] = resolvers.mbonus_material(3, 2, function(e, v) return v * 3 end), - }, + }, }, } diff --git a/game/modules/tome/data/general/objects/egos/lite.lua b/game/modules/tome/data/general/objects/egos/lite.lua index f9d8cdb331..b89ea3f79e 100644 --- a/game/modules/tome/data/general/objects/egos/lite.lua +++ b/game/modules/tome/data/general/objects/egos/lite.lua @@ -65,7 +65,7 @@ newEntity{ } newEntity{ - name = " of revealing", suffix=true, + name = " of revealing", suffix=true, instant_resolve=true, level_range = {1, 50}, rarity = 7, cost = 10, @@ -76,7 +76,7 @@ newEntity{ } newEntity{ - name = " of clarity", suffix=true, + name = " of clarity", suffix=true, instant_resolve=true, level_range = {1, 50}, rarity = 7, cost = 10, @@ -86,7 +86,7 @@ newEntity{ } newEntity{ - name = " of health", suffix=true, + name = " of health", suffix=true, instant_resolve=true, level_range = {1, 50}, rarity = 7, cost = 10, @@ -96,7 +96,7 @@ newEntity{ } newEntity{ - name = " of guile", suffix=true, + name = " of guile", suffix=true, instant_resolve=true, level_range = {1, 50}, rarity = 7, cost = 10, @@ -108,7 +108,7 @@ newEntity{ } newEntity{ - name = "burglar's ", prefix=true, + name = "burglar's ", prefix=true, instant_resolve=true, level_range = {15, 50}, rarity = 9, cost = 12, @@ -119,7 +119,7 @@ newEntity{ } newEntity{ - name = "guard's ", prefix=true, + name = "guard's ", prefix=true, instant_resolve=true, level_range = {15, 50}, rarity = 9, cost = 12, @@ -129,7 +129,7 @@ newEntity{ } newEntity{ - name = "healer's ", prefix=true, + name = "healer's ", prefix=true, instant_resolve=true, level_range = {15, 50}, rarity = 9, cost = 12, @@ -139,7 +139,7 @@ newEntity{ } newEntity{ - name = "guide's ", prefix=true, + name = "guide's ", prefix=true, instant_resolve=true, level_range = {15, 50}, rarity = 9, cost = 12, diff --git a/game/modules/tome/data/general/objects/egos/rings.lua b/game/modules/tome/data/general/objects/egos/rings.lua index 4351616732..94080c294a 100644 --- a/game/modules/tome/data/general/objects/egos/rings.lua +++ b/game/modules/tome/data/general/objects/egos/rings.lua @@ -25,7 +25,7 @@ local DamageType = require "engine.DamageType" --load("/data/general/objects/egos/charged-utility.lua") newEntity{ - name = " of see invisible", suffix=true, + name = " of see invisible", suffix=true, instant_resolve=true, level_range = {1, 20}, rarity = 4, cost = 2, @@ -45,7 +45,7 @@ newEntity{ } newEntity{ - name = " of mana (#REGEN#)", suffix=true, + name = " of mana (#REGEN#)", suffix=true, instant_resolve=true, level_range = {10, 20}, rarity = 8, cost = 3, @@ -55,73 +55,79 @@ newEntity{ } newEntity{ - name = " of fire (#RESIST#)", suffix=true, + name = " of fire (#RESIST#)", suffix=true, instant_resolve=true, level_range = {10, 40}, rarity = 6, cost = 2, wielder = { inc_damage = { [DamageType.FIRE] = resolvers.mbonus_material(10, 10, function(e, v) return v * 0.8 end) }, - resists = {[DamageType.FIRE] = resolvers.genericlast(function(e) return e.wielder.inc_damage[engine.DamageType.FIRE] end) }, + resists = {}, + resolvers.genericlast(function(e) e.wielder.resists[engine.DamageType.FIRE] = (e.wielder.resists[engine.DamageType.FIRE] or 0) + e.wielder.inc_damage[engine.DamageType.FIRE] end), }, } newEntity{ - name = " of frost (#RESIST#)", suffix=true, + name = " of frost (#RESIST#)", suffix=true, instant_resolve=true, level_range = {10, 40}, rarity = 6, cost = 2, wielder = { inc_damage = { [DamageType.COLD] = resolvers.mbonus_material(10, 10, function(e, v) return v * 0.8 end) }, - resists = {[DamageType.COLD] = resolvers.genericlast(function(e) return e.wielder.inc_damage[engine.DamageType.COLD] end) }, + resists = {}, + resolvers.genericlast(function(e) e.wielder.resists[engine.DamageType.COLD] = (e.wielder.resists[engine.DamageType.COLD] or 0) + e.wielder.inc_damage[engine.DamageType.COLD] end), }, } newEntity{ - name = " of nature (#RESIST#)", suffix=true, + name = " of nature (#RESIST#)", suffix=true, instant_resolve=true, level_range = {10, 40}, rarity = 6, cost = 2, wielder = { inc_damage = { [DamageType.NATURE] = resolvers.mbonus_material(10, 10, function(e, v) return v * 0.8 end) }, - resists = {[DamageType.NATURE] = resolvers.genericlast(function(e) return e.wielder.inc_damage[engine.DamageType.NATURE] end) }, + resists = {}, + resolvers.genericlast(function(e) e.wielder.resists[engine.DamageType.NATURE] = (e.wielder.resists[engine.DamageType.NATURE] or 0) + e.wielder.inc_damage[engine.DamageType.NATURE] end), }, } newEntity{ - name = " of lightning (#RESIST#)", suffix=true, + name = " of lightning (#RESIST#)", suffix=true, instant_resolve=true, level_range = {10, 40}, rarity = 6, cost = 2, wielder = { inc_damage = { [DamageType.LIGHTNING] = resolvers.mbonus_material(10, 10, function(e, v) return v * 0.8 end) }, - resists = {[DamageType.LIGHTNING] = resolvers.genericlast(function(e) return e.wielder.inc_damage[engine.DamageType.LIGHTNING] end) }, + resists = {}, + resolvers.genericlast(function(e) e.wielder.resists[engine.DamageType.LIGHTNING] = (e.wielder.resists[engine.DamageType.LIGHTNING] or 0) + e.wielder.inc_damage[engine.DamageType.LIGHTNING] end), }, } newEntity{ - name = " of corrosion (#RESIST#)", suffix=true, + name = " of corrosion (#RESIST#)", suffix=true, instant_resolve=true, level_range = {10, 40}, rarity = 6, cost = 2, wielder = { inc_damage = { [DamageType.ACID] = resolvers.mbonus_material(10, 10, function(e, v) return v * 0.8 end) }, - resists = {[DamageType.ACID] = resolvers.genericlast(function(e) return e.wielder.inc_damage[engine.DamageType.ACID] end) }, + resists = {}, + resolvers.genericlast(function(e) e.wielder.resists[engine.DamageType.ACID] = (e.wielder.resists[engine.DamageType.ACID] or 0) + e.wielder.inc_damage[engine.DamageType.ACID] end), }, } newEntity{ - name = " of blight (#RESIST#)", suffix=true, + name = " of blight (#RESIST#)", suffix=true, instant_resolve=true, level_range = {10, 40}, rarity = 6, cost = 2, wielder = { inc_damage = { [DamageType.BLIGHT] = resolvers.mbonus_material(10, 10, function(e, v) return v * 0.8 end) }, - resists = {[DamageType.BLIGHT] = resolvers.genericlast(function(e) return e.wielder.inc_damage[engine.DamageType.BLIGHT] end) }, + resists = {}, + resolvers.genericlast(function(e) e.wielder.resists[engine.DamageType.BLIGHT] = (e.wielder.resists[engine.DamageType.BLIGHT] or 0) + e.wielder.inc_damage[engine.DamageType.BLIGHT] end), }, } newEntity{ - name = " of massacre (#DAMBONUS#)", suffix=true, + name = " of massacre (#DAMBONUS#)", suffix=true, instant_resolve=true, level_range = {6, 50}, rarity = 4, cost = 4, @@ -131,7 +137,7 @@ newEntity{ } newEntity{ define_as = "RING_ARCANE_POWER", - name = " of arcane power (#DAMBONUS#)", suffix=true, + name = " of arcane power (#DAMBONUS#)", suffix=true, instant_resolve=true, level_range = {6, 50}, rarity = 4, cost = 4, @@ -153,51 +159,51 @@ newEntity{ } newEntity{ - name = "brawler's ", prefix=true, + name = "brawler's ", prefix=true, instant_resolve=true, level_range = {1, 50}, rarity = 7, cost = 6, wielder = { inc_stats = { [Stats.STAT_STR] = resolvers.mbonus_material(8, 2, function(e, v) return v * 3 end) }, - combat_def = resolvers.genericlast(function(e) return e.wielder.inc_stats[engine.interface.ActorStats.STAT_STR] end), + resolvers.genericlast(function(e) e.wielder.combat_def = (e.wielder.combat_def or 0) + e.wielder.inc_stats[engine.interface.ActorStats.STAT_STR] end), }, } newEntity{ - name = "titan's ", prefix=true, + name = "titan's ", prefix=true, instant_resolve=true, level_range = {1, 50}, rarity = 7, cost = 6, wielder = { inc_stats = { [Stats.STAT_CON] = resolvers.mbonus_material(8, 2, function(e, v) return v * 3 end) }, - combat_physresist = resolvers.genericlast(function(e) return e.wielder.inc_stats[engine.interface.ActorStats.STAT_CON] end), + resolvers.genericlast(function(e) e.wielder.combat_physresist = (e.wielder.combat_physresist or 0) + e.wielder.inc_stats[engine.interface.ActorStats.STAT_CON] end), }, } newEntity{ - name = "duelist's ", prefix=true, + name = "duelist's ", prefix=true, instant_resolve=true, level_range = {1, 50}, rarity = 7, cost = 6, wielder = { inc_stats = { [Stats.STAT_DEX] = resolvers.mbonus_material(8, 2, function(e, v) return v * 3 end) }, - combat_atk = resolvers.genericlast(function(e) return e.wielder.inc_stats[engine.interface.ActorStats.STAT_DEX] end), + resolvers.genericlast(function(e) e.wielder.combat_atk = (e.wielder.combat_atk or 0) + e.wielder.inc_stats[engine.interface.ActorStats.STAT_DEX] end), }, } newEntity{ define_as = "RING_MAGIC", - name = "wizard's ", prefix=true, + name = "wizard's ", prefix=true, instant_resolve=true, level_range = {1, 50}, rarity = 7, cost = 6, wielder = { inc_stats = { [Stats.STAT_MAG] = resolvers.mbonus_material(8, 2, function(e, v) return v * 3 end) }, - combat_spellresist = resolvers.genericlast(function(e) return e.wielder.inc_stats[engine.interface.ActorStats.STAT_MAG] end), + resolvers.genericlast(function(e) e.wielder.combat_spellresist = (e.wielder.combat_spellresist or 0) + e.wielder.inc_stats[engine.interface.ActorStats.STAT_MAG] end), }, } newEntity{ - name = "mule's ", prefix=true, + name = "mule's ", prefix=true, instant_resolve=true, level_range = {1, 50}, rarity = 7, cost = 6, @@ -214,7 +220,7 @@ newEntity{ rarity = 12, cost = 20, wielder = { - lite = -2, + lite = -2, inc_stats = { [Stats.STAT_DEX] = resolvers.mbonus_material(6, 4, function(e, v) return v * 3 end), [Stats.STAT_CUN] = resolvers.mbonus_material(6, 4, function(e, v) return v * 3 end), @@ -248,7 +254,7 @@ newEntity{ inc_stats = { [Stats.STAT_MAG] = resolvers.mbonus_material(4, 4, function(e, v) return v * 3 end), [Stats.STAT_WIL] = resolvers.mbonus_material(4, 4, function(e, v) return v * 3 end), - }, + }, }, } @@ -261,7 +267,7 @@ newEntity{ wielder = { pin_immune = resolvers.mbonus_material(2, 2, function(e, v) v=v/10 return v * 8, v end), knockback_immune = resolvers.mbonus_material(2, 2, function(e, v) v=v/10 return v * 8, v end), - disarm_immune = resolvers.mbonus_material(2, 2, function(e, v) v=v/10 return v * 8, v end), + disarm_immune = resolvers.mbonus_material(2, 2, function(e, v) v=v/10 return v * 8, v end), }, } @@ -275,7 +281,7 @@ newEntity{ wielder = { combat_spellpower = resolvers.mbonus_material(3, 3, function(e, v) return v * 0.8 end), combat_spellcrit = resolvers.mbonus_material(3, 3, function(e, v) return v * 0.4 end), - inc_damage = { [DamageType.ARCANE] = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.8 end) }, + inc_damage = { [DamageType.ARCANE] = resolvers.mbonus_material(15, 5, function(e, v) return v * 0.8 end) }, }, } @@ -285,10 +291,10 @@ newEntity{ greater_ego = true, rarity = 12, cost = 50, - wielder = { + wielder = { max_life=resolvers.mbonus_material(60, 40, function(e, v) return v * 0.1 end), life_regen = resolvers.mbonus_material(15, 5, function(e, v) v=v/10 return v * 10, v end), - healing_factor = resolvers.mbonus_material(20, 10, function(e, v) v=v/100 return v * 80, v end), + healing_factor = resolvers.mbonus_material(20, 10, function(e, v) v=v/100 return v * 80, v end), }, } diff --git a/game/modules/tome/data/general/objects/egos/wizard-hat.lua b/game/modules/tome/data/general/objects/egos/wizard-hat.lua index f26c5b44f1..4552219b0f 100644 --- a/game/modules/tome/data/general/objects/egos/wizard-hat.lua +++ b/game/modules/tome/data/general/objects/egos/wizard-hat.lua @@ -37,7 +37,7 @@ newEntity{ } newEntity{ - name = " of magic (#STATBONUS#)", suffix=true, + name = " of magic (#STATBONUS#)", suffix=true, instant_resolve=true, level_range = {1, 50}, rarity = 6, cost = 4, @@ -46,7 +46,7 @@ newEntity{ }, } newEntity{ - name = " of willpower (#STATBONUS#)", suffix=true, + name = " of willpower (#STATBONUS#)", suffix=true, instant_resolve=true, level_range = {1, 50}, rarity = 6, cost = 4, @@ -55,7 +55,7 @@ newEntity{ }, } newEntity{ - name = " of cunning (#STATBONUS#)", suffix=true, + name = " of cunning (#STATBONUS#)", suffix=true, instant_resolve=true, level_range = {1, 50}, rarity = 6, cost = 4, @@ -84,7 +84,7 @@ newEntity{ }, } newEntity{ - name = "shimmering ", prefix=true, + name = "shimmering ", prefix=true, instant_resolve=true, level_range = {1, 50}, rarity = 10, cost = 4, @@ -94,7 +94,7 @@ newEntity{ } newEntity{ - name = " of seeing ", suffix=true, + name = " of seeing ", suffix=true, instant_resolve=true, level_range = {1, 50}, rarity = 5, cost = 6, @@ -192,7 +192,7 @@ newEntity{ inc_stats = { [Stats.STAT_MAG] = resolvers.mbonus_material(3, 2, function(e, v) return v * 3 end), [Stats.STAT_WIL] = resolvers.mbonus_material(3, 2, function(e, v) return v * 3 end), - }, + }, }, } @@ -208,7 +208,7 @@ newEntity{ [DamageType.COLD] = resolvers.mbonus_material(7, 5, function(e, v) return v * 0.25 end), [DamageType.ACID] = resolvers.mbonus_material(7, 5, function(e, v) return v * 0.25 end), [DamageType.LIGHTNING] = resolvers.mbonus_material(7, 5, function(e, v) return v * 0.25 end), - }, + }, }, } -- GitLab