From fb0ea448af4c42a4cd1e86c87a766094bd4f29ee Mon Sep 17 00:00:00 2001 From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54> Date: Mon, 30 Apr 2012 08:09:47 +0000 Subject: [PATCH] better git-svn-id: http://svn.net-core.org/repos/t-engine4@5063 51575b47-30f0-44d4-a5cc-537603b46e54 --- game/engines/default/engine/Entity.lua | 4 ++++ game/engines/default/engine/Projectile.lua | 4 ++++ .../general/objects/egos/totems-powers.lua | 4 ++-- .../tome/data/timed_effects/physical.lua | 22 +++++++++++++++++-- 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/game/engines/default/engine/Entity.lua b/game/engines/default/engine/Entity.lua index 6663c9f80f..5bcc235c64 100644 --- a/game/engines/default/engine/Entity.lua +++ b/game/engines/default/engine/Entity.lua @@ -299,6 +299,10 @@ function _M:makeMapObject(tiles, idx) return self._mo, self.z end +function _M:loaded() + self:defineDisplayCallback() +end + --- Get all "map objects" representing this entity -- Do not touch unless you *KNOW* what you are doing.<br/> -- You do *NOT* need this, this is used by the engine.Map class automatically.<br/> diff --git a/game/engines/default/engine/Projectile.lua b/game/engines/default/engine/Projectile.lua index 7bf5ac002a..3a9e11ef03 100644 --- a/game/engines/default/engine/Projectile.lua +++ b/game/engines/default/engine/Projectile.lua @@ -45,6 +45,10 @@ function _M:save() end function _M:loaded() +-- DPT: I think the line below should be there +-- but somehow this causes projectiles to be duplicated on a chrono load +-- self:defineDisplayCallback() + if self.project and self.project.def and self.project.def.typ and self.project.def.typ.line_function and type(self.project.def.typ.line_function.line) == "table" then self.project.def.typ.line_function.line = util.isHex() and core.fov.hex_line_import(unpack(self.project.def.typ.line_function.line)) or core.fov.line_import(unpack(self.project.def.typ.line_function.line)) diff --git a/game/modules/tome/data/general/objects/egos/totems-powers.lua b/game/modules/tome/data/general/objects/egos/totems-powers.lua index b0523d8d7a..d8c0bb218e 100644 --- a/game/modules/tome/data/general/objects/egos/totems-powers.lua +++ b/game/modules/tome/data/general/objects/egos/totems-powers.lua @@ -109,8 +109,8 @@ newEntity{ rarity = 6, charm_power_def = {add=5, max=50, floor=true}, - resolvers.charm("hardens the skin for 6 turns increasing armour by %d", 20, function(self, who) - who:setEffect(who.EFF_STONE_SKIN, 6, {power=self:getCharmPower()}) + resolvers.charm(function(self) return ("hardens the skin for 6 turns increasing armour by %d and armour hardiness by %d%%%%"):format(self:getCharmPower(), 20 + self.material_level * 10) end, 20, function(self, who) + who:setEffect(who.EFF_THORNY_SKIN, 6, {ac=self:getCharmPower(), hard=20 + self.material_level * 10}) game:playSoundNear(who, "talents/heal") game.logSeen(who, "%s uses %s!", who.name:capitalize(), self:getName{no_count=true}) return {id=true, used=true} diff --git a/game/modules/tome/data/timed_effects/physical.lua b/game/modules/tome/data/timed_effects/physical.lua index c28ec3d948..087bb219f3 100644 --- a/game/modules/tome/data/timed_effects/physical.lua +++ b/game/modules/tome/data/timed_effects/physical.lua @@ -519,6 +519,24 @@ newEffect{ end, } +newEffect{ + name = "THORNY_SKIN", image = "talents/stoneskin.png", + desc = "Thorny Skin", + long_desc = function(self, eff) return ("The target's skin reacts to damage, granting %d armour and %d%% armour hardiness."):format(eff.ac, eff.hard) end, + type = "physical", + subtype = { nature=true }, + status = "beneficial", + parameters = { ac=10, hard=10 }, + activate = function(self, eff) + eff.aid = self:addTemporaryValue("combat_armor", eff.ac) + eff.hid = self:addTemporaryValue("combat_armor_hardiness", eff.hard) + end, + deactivate = function(self, eff) + self:removeTemporaryValue("combat_armor", eff.aid) + self:removeTemporaryValue("combat_armor_hardiness", eff.hid) + end, +} + newEffect{ name = "FROZEN_FEET", image = "talents/frozen_ground.png", desc = "Frozen Feet", @@ -1605,11 +1623,11 @@ newEffect{ -- add the remaining healing reduction spread out over the new duration old_eff.healFactorChange = math.max(-0.75, (old_eff.healFactorChange / old_eff.totalDuration) * old_eff.dur + new_eff.healFactorChange) old_eff.dur = math.max(old_eff.dur, new_eff.dur) - + self:removeTemporaryValue("healing_factor", old_eff.healFactorId) old_eff.healFactorId = self:addTemporaryValue("healing_factor", old_eff.healFactorChange) game.logSeen(self, "%s has re-opened a cursed wound!", self.name:capitalize()) - + return old_eff end, } -- GitLab