From e1a8f3e0ab8b92964916409e8bef41734f734a6c Mon Sep 17 00:00:00 2001 From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54> Date: Thu, 8 Jul 2010 15:01:53 +0000 Subject: [PATCH] NPCs get some random resists as they levelup git-svn-id: http://svn.net-core.org/repos/t-engine4@890 51575b47-30f0-44d4-a5cc-537603b46e54 --- game/modules/tome/class/Actor.lua | 43 ++++++++++++++++++- game/modules/tome/class/Player.lua | 3 +- .../tome/data/talents/spells/spells.lua | 1 + 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua index b7877752cf..084df44242 100644 --- a/game/modules/tome/class/Actor.lua +++ b/game/modules/tome/class/Actor.lua @@ -34,6 +34,7 @@ require "engine.interface.ActorFOV" require "mod.class.interface.Combat" local Faction = require "engine.Faction" local Map = require "engine.Map" +local DamageType = require "engine.DamageType" module(..., package.seeall, class.inherit( -- a ToME actor is a complex beast it uses may inetrfaces @@ -333,6 +334,16 @@ function _M:getRankLifeAdjust() end end +function _M:getRankResistAdjust() + if self.rank == 1 then return 0.4, 0.9 + elseif self.rank == 2 then return 0.5, 1.5 + elseif self.rank == 3 then return 0.8, 1.5 + elseif self.rank == 4 then return 0.9, 1.5 + elseif self.rank >= 5 then return 0.9, 1.5 + else return 0 + end +end + function _M:TextRank() local rank, color = "normal", "#ANTIQUE_WHITE#" if self.rank == 1 then rank, color = "critter", "#C0C0C0#" @@ -377,12 +388,18 @@ function _M:tooltip() end end + local resists = {} + for t, v in pairs(self.resists) do + resists[#resists+1] = string.format("%d%% %s", v, DamageType:get(t).name) + end + return ([[%s%s Rank: %s%s #00ffff#Level: %d Exp: %d/%d #ff0000#HP: %d (%d%%) Stats: %d / %d / %d / %d / %d / %d +Resists: %s Size: #ANTIQUE_WHITE#%s %s Faction: %s%s (%s) @@ -399,6 +416,7 @@ Faction: %s%s (%s) self:getWil(), self:getCun(), self:getCon(), + table.concat(resists, ','), self:TextSizeCategory(), self.desc or "", factcolor, Faction.factions[self.faction].name, factstate, @@ -438,7 +456,7 @@ function _M:onTakeHit(value, src) -- Explode! game.logSeen(self, "%s disruption shield collapses and then explodes in a powerful manastorm!", self.name:capitalize()) local tg = {type="ball", radius=5} - self:project(tg, self.x, self.y, engine.DamageType.ARCANE, dam, {type="manathrust"}) + self:project(tg, self.x, self.y, DamageType.ARCANE, dam, {type="manathrust"}) end end @@ -582,6 +600,29 @@ function _M:levelup() self.unused_talents_types = self.unused_talents_types + 1 end + -- Gain some basic resistances + if not self.no_auto_resists then + -- Make up a random list of resists the first time + if not self.auto_resists_list then + local list = { + DamageType.PHYSICAL, + DamageType.FIRE, DamageType.COLD, DamageType.ACID, DamageType.LIGHTNING, + DamageType.LIGHT, DamageType.DARKNESS, + DamageType.NATURE, DamageType.BLIGHT, + } + self.auto_resists_list = {} + for i = 1, rng.range(1, self.auto_resists_nb or 2) do + local t = rng.tableRemove(list) + -- Double the chance so that resist is more likely to happen + if rng.percent(30) then self.auto_resists_list[#self.auto_resists_list+1] = t end + self.auto_resists_list[#self.auto_resists_list+1] = t + end + end + -- Provide one of our resists + local t = rng.table(self.auto_resists_list) + self.resists[t] = (self.resists[t] or 0) + rng.float(self:getRankResistAdjust()) + end + -- Gain life and resources local rating = self.life_rating if not self.fixed_rating then diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua index 110e62f97c..76318efa8c 100644 --- a/game/modules/tome/class/Player.lua +++ b/game/modules/tome/class/Player.lua @@ -57,7 +57,8 @@ function _M:init(t, no_default) if t.fixed_rating == nil then t.fixed_rating = true end - t.move_others=true + t.move_others = true + t.no_auto_resists = true t.lite = t.lite or 0 diff --git a/game/modules/tome/data/talents/spells/spells.lua b/game/modules/tome/data/talents/spells/spells.lua index 44396829a6..3eec6f5a59 100644 --- a/game/modules/tome/data/talents/spells/spells.lua +++ b/game/modules/tome/data/talents/spells/spells.lua @@ -77,3 +77,4 @@ load("/data/talents/spells/enhancement.lua") load("/data/talents/spells/alchemy.lua") load("/data/talents/spells/infusion.lua") +--load("/data/talents/spells/golemancy.lua") -- GitLab