diff --git a/game/engines/default/engine/Object.lua b/game/engines/default/engine/Object.lua index b82c591b3ec0a65689dab9895af3a42b91645733..2d88d66d2e11ad204b9b07415d7a807c035d593f 100644 --- a/game/engines/default/engine/Object.lua +++ b/game/engines/default/engine/Object.lua @@ -118,8 +118,8 @@ end --- Adds object to the stack -- @return true if stacking worked, false if not -function _M:stack(o) - if not self:canStack(o) then return false end +function _M:stack(o, force) + if not force and not self:canStack(o) then return false end self.stacked = self.stacked or {} self.stacked[#self.stacked+1] = o diff --git a/game/engines/default/engine/Zone.lua b/game/engines/default/engine/Zone.lua index c88a4c0c4f19ae347afb2bbab034a07a224b8078..52f8391059267c806981fe265b8924ec657430d6 100644 --- a/game/engines/default/engine/Zone.lua +++ b/game/engines/default/engine/Zone.lua @@ -337,7 +337,7 @@ function _M:finishEntity(level, type, e, ego_chance) s[#s+1] = e:clone() e.generate_stack = e.generate_stack - 1 end - for i = 1, #s do e:stack(s[i]) end + for i = 1, #s do e:stack(s[i], true) end end e:resolve(nil, true) diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua index 64a6958883f8eef0fb6a677daa4aa6914d9188fe..67807935c5a033c428bf6ed7ea718c4218241dfe 100644 --- a/game/modules/tome/class/Actor.lua +++ b/game/modules/tome/class/Actor.lua @@ -89,7 +89,7 @@ function _M:init(t, no_default) self.unused_talents_types = self.unused_talents_types or 0 t.resource_pool_refs = t.resource_pool_refs or {} - + t.lite = t.lite or 0 t.size_category = t.size_category or 3 @@ -977,37 +977,37 @@ function _M:learnTalent(t_id, force, nb) local t = _M.talents_def[t_id] if t.type[1]:find("^spell/") and not self:knowTalent(self.T_MANA_POOL) and t.mana or t.sustain_mana then self:learnTalent(self.T_MANA_POOL, true) - self.resource_pool_refs[self.T_MANA_POOL] = self.resource_pool_refs[self.T_MANA_POOL] + 1 + self.resource_pool_refs[self.T_MANA_POOL] = (self.resource_pool_refs[self.T_MANA_POOL] or 0) + 1 end if t.type[1]:find("^wild%-gift/") and not self:knowTalent(self.T_EQUILIBRIUM_POOL) and t.equilibrium or t.sustain_equilibrium then self:learnTalent(self.T_EQUILIBRIUM_POOL, true) - self.resource_pool_refs[self.T_EQUILIBRIUM_POOL] = self.resource_pool_refs[self.T_EQUILIBRIUM_POOL] + 1 + self.resource_pool_refs[self.T_EQUILIBRIUM_POOL] = (self.resource_pool_refs[self.T_EQUILIBRIUM_POOL] or 0) + 1 end if t.type[1]:find("^technique/") and not self:knowTalent(self.T_STAMINA_POOL) and t.stamina or t.sustain_stamina then self:learnTalent(self.T_STAMINA_POOL, true) - self.resource_pool_refs[self.T_STAMINA_POOL] = self.resource_pool_refs[self.T_STAMINA_POOL] + 1 + self.resource_pool_refs[self.T_STAMINA_POOL] = (self.resource_pool_refs[self.T_STAMINA_POOL] or 0) + 1 end if t.type[1]:find("^corruption/") and not self:knowTalent(self.T_VIM_POOL) and t.vim or t.sustain_vim then self:learnTalent(self.T_VIM_POOL, true) - self.resource_pool_refs[self.T_VIM_POOL] = self.resource_pool_refs[self.T_VIM_POOL] + 1 + self.resource_pool_refs[self.T_VIM_POOL] = (self.resource_pool_refs[self.T_VIM_POOL] or 0) + 1 end if t.type[1]:find("^divine/") and (t.positive or t.sustain_positive) and not self:knowTalent(self.T_POSITIVE_POOL) then self:learnTalent(self.T_POSITIVE_POOL, true) - self.resource_pool_refs[self.T_POSITIVE_POOL] = self.resource_pool_refs[self.T_POSITIVE_POOL] + 1 + self.resource_pool_refs[self.T_POSITIVE_POOL] = (self.resource_pool_refs[self.T_POSITIVE_POOL] or 0) + 1 end if t.type[1]:find("^divine/") and (t.negative or t.sustain_negative) and not self:knowTalent(self.T_NEGATIVE_POOL) then self:learnTalent(self.T_NEGATIVE_POOL, true) - self.resource_pool_refs[self.T_NEGATIVE_POOL] = self.resource_pool_refs[self.T_NEGATIVE_POOL] + 1 + self.resource_pool_refs[self.T_NEGATIVE_POOL] = (self.resource_pool_refs[self.T_NEGATIVE_POOL] or 0) + 1 end if t.type[1]:find("^cursed/") and not self:knowTalent(self.T_HATE_POOL) then self:learnTalent(self.T_HATE_POOL, true) - self.resource_pool_refs[self.T_HATE_POOL] = self.resource_pool_refs[self.T_HATE_POOL] + 1 + self.resource_pool_refs[self.T_HATE_POOL] = (self.resource_pool_refs[self.T_HATE_POOL] or 0) + 1 end -- If we learn an archery talent, also learn to shoot if t.type[1]:find("^technique/archery") and not self:knowTalent(self.T_SHOOT) then self:learnTalent(self.T_SHOOT, true) - self.resource_pool_refs[self.T_SHOOT] = self.resource_pool_refs[self.T_SHOOT] + 1 + self.resource_pool_refs[self.T_SHOOT] = (self.resource_pool_refs[self.T_SHOOT] or 0) + 1 end return true diff --git a/game/modules/tome/data/general/objects/egos/boots.lua b/game/modules/tome/data/general/objects/egos/boots.lua index d152b6850ed8a413aed18762faabee75cf72c7c9..8a195aa0b9f847e197e4e40abc2d2e0f9bd15100 100644 --- a/game/modules/tome/data/general/objects/egos/boots.lua +++ b/game/modules/tome/data/general/objects/egos/boots.lua @@ -16,8 +16,9 @@ -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org + local Stats = require "engine.interface.ActorStats" -local DamageType = require "engine.DamageType" +local Talents = require "engine.interface.ActorTalents" newEntity{ name = " of phasing", suffix=true, instant_resolve=true, diff --git a/game/modules/tome/data/general/objects/gem.lua b/game/modules/tome/data/general/objects/gem.lua index c97ae572493566dcfdd97d558eb272afdec74d19..b8d32cbd718fa32131afe799038218e4594f6970 100644 --- a/game/modules/tome/data/general/objects/gem.lua +++ b/game/modules/tome/data/general/objects/gem.lua @@ -72,7 +72,7 @@ newGem("Bloodstone", "object/bloodstone.png",5, 18, "red", 40, 50, 5, 70, { leech=10 } ) newGem("Ruby", "object/ruby.png", 4, 16, "red", 30, 40, 4, 65, - { inc_stats = { [Stats.STAT_STR] = 4, [Stats.STAT_DEX] = 4, [Stats.STAT_MAG] = 4, [Stats.STAT_WIL] = 4, [Stats.STAT_CUN] = 4, [Stats.STAT_CUN] = 4, } }, + { inc_stats = { [Stats.STAT_STR] = 4, [Stats.STAT_DEX] = 4, [Stats.STAT_MAG] = 4, [Stats.STAT_WIL] = 4, [Stats.STAT_CUN] = 4, [Stats.STAT_CON] = 4, } }, { power=20 } ) newGem("Amber", "object/amber.png", 4, 16, "yellow", 30, 40, 4, 65, @@ -108,7 +108,7 @@ newGem("Garnets", "object/garnet.png",3, 12, "red", 20, 30, 3, 50, { leech=5 } ) newGem("Onyx", "object/.png", 3, 12, "black", 20, 30, 3, 50, - { inc_stats = { [Stats.STAT_STR] = 3, [Stats.STAT_DEX] = 3, [Stats.STAT_MAG] = 3, [Stats.STAT_WIL] = 3, [Stats.STAT_CUN] = 3, [Stats.STAT_CUN] = 3, } }, + { inc_stats = { [Stats.STAT_STR] = 3, [Stats.STAT_DEX] = 3, [Stats.STAT_MAG] = 3, [Stats.STAT_WIL] = 3, [Stats.STAT_CUN] = 3, [Stats.STAT_CON] = 3, } }, { power=15 } ) newGem("Amethyst", "object/.png",2, 10, "violet", 10, 20, 2, 35, @@ -116,7 +116,7 @@ newGem("Amethyst", "object/.png",2, 10, "violet", 10, 20, 2, 35, { splash={type="ARCANE", dam=25}} ) newGem("Opal", "object/.png", 2, 10, "blue", 10, 20, 2, 35, - { inc_stats = { [Stats.STAT_STR] = 2, [Stats.STAT_DEX] = 2, [Stats.STAT_MAG] = 2, [Stats.STAT_WIL] = 2, [Stats.STAT_CUN] = 2, [Stats.STAT_CUN] = 2, } }, + { inc_stats = { [Stats.STAT_STR] = 2, [Stats.STAT_DEX] = 2, [Stats.STAT_MAG] = 2, [Stats.STAT_WIL] = 2, [Stats.STAT_CUN] = 2, [Stats.STAT_CON] = 2, } }, { power=10 } ) newGem("Topaz", "object/.png", 2, 10, "blue", 10, 20, 2, 35, @@ -144,6 +144,6 @@ newGem("Citrine", "object/.png",1, 8, "yellow", 1, 10, 1, 20, { range=1 } ) newGem("Agate", "object/.png", 1, 8, "black", 1, 10, 1, 20, - { inc_stats = { [Stats.STAT_STR] = 1, [Stats.STAT_DEX] = 1, [Stats.STAT_MAG] = 1, [Stats.STAT_WIL] = 1, [Stats.STAT_CUN] = 1, [Stats.STAT_CUN] = 1, } }, + { inc_stats = { [Stats.STAT_STR] = 1, [Stats.STAT_DEX] = 1, [Stats.STAT_MAG] = 1, [Stats.STAT_WIL] = 1, [Stats.STAT_CUN] = 1, [Stats.STAT_CON] = 1, } }, { power=5 } )