diff --git a/game/engines/default/engine/resolvers.lua b/game/engines/default/engine/resolvers.lua index 2b66361c2e5fa530463b26c9607547ca826eea9c..d36a070763e3bbb287c1a2e13c0d5563a1c39155 100644 --- a/game/engines/default/engine/resolvers.lua +++ b/game/engines/default/engine/resolvers.lua @@ -133,6 +133,16 @@ function resolvers.calc.rngtalent(t, e) return nil end +--- Talents resolver, random choice of set of talents +function resolvers.rngtalentsets(list) + return {__resolver="rngtalentsets", list} +end +function resolvers.calc.rngtalentsets(t, e) + local set = rng.table(t[1]) + resolvers.calc.talents({set}, e) + return nil +end + --- Talents masteries function resolvers.tmasteries(list) return {__resolver="tmasteries", list} diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua index 65b2f85879c2fd285efc876e0b0327a19227539f..aa1c33e2ee4fd66a61a32794cf3c41dbbc95f03e 100644 --- a/game/modules/tome/class/Actor.lua +++ b/game/modules/tome/class/Actor.lua @@ -8133,4 +8133,4 @@ end function _M:getShieldDuration(duration) return duration + (self:attr("shield_dur") or 0) -end \ No newline at end of file +end diff --git a/game/modules/tome/data/birth/classes/mage.lua b/game/modules/tome/data/birth/classes/mage.lua index e7f8604166fc80d9652bdd8843c9b640a2794ee8..d04f5f720b623225f2793428b1d680e18bdeee1f 100644 --- a/game/modules/tome/data/birth/classes/mage.lua +++ b/game/modules/tome/data/birth/classes/mage.lua @@ -271,6 +271,7 @@ newBirthDescriptor{ }, birth_example_particles = { "necrotic-aura", + -- DGDGDGDG: update function(actor) if core.shader.active(4) then local x, y = actor:attachementSpot("back", true) actor:addParticles(Particles.new("shader_wings", 1, {x=x, y=y, infinite=1, img="darkwings"})) end diff --git a/game/modules/tome/data/general/npcs/orc-rak-shor.lua b/game/modules/tome/data/general/npcs/orc-rak-shor.lua index b0141f1e7f2fc9e3cbdafc832858a85b626066e2..13ee9b582281fb8678b0206daffa117adb8c26b2 100644 --- a/game/modules/tome/data/general/npcs/orc-rak-shor.lua +++ b/game/modules/tome/data/general/npcs/orc-rak-shor.lua @@ -61,25 +61,54 @@ newEntity{ base = "BASE_NPC_ORC_RAK_SHOR", }, combat_armor = 0, combat_def = 5, - soul = resolvers.rngavg(5, 10), ---[[DGDGDGDG + soul = 10, + resolvers.talents{ - [Talents.T_NECROTIC_AURA] = 1, - [Talents.T_AURA_MASTERY] = 5, - [Talents.T_CREATE_MINIONS]={base=4, every=5, max=7}, - [Talents.T_RIGOR_MORTIS]={base=3, every=5, max=7}, - [Talents.T_INVOKE_DARKNESS]={base=5, every=5, max=9}, - [Talents.T_VAMPIRIC_GIFT]={base=2, every=7, max=7}, + [Talents.T_HIEMAL_SHIELD]={base=2, every=7, max=7}, + [Talents.T_DESOLATE_WASTE]={last=25, base=0, every=7, max=7}, + [Talents.T_BLEAK_GUARD]={last=30, base=0, every=7, max=7}, + [Talents.T_BLURRED_MORTALITY]={base=3, every=5, max=7}, + [Talents.T_SOUL_LEECH]={base=2, every=8, max=5}, [Talents.T_STAFF_MASTERY]={base=2, every=8, max=5}, }, - resolvers.rngtalent{ - [Talents.T_CIRCLE_OF_DEATH]={base=3, every=5, max=7}, - [Talents.T_SURGE_OF_UNDEATH]={base=3, every=5, max=7}, - [Talents.T_WILL_O__THE_WISP]={base=3, every=5, max=7}, - [Talents.T_FORGERY_OF_HAZE]={base=3, every=5, max=7}, - [Talents.T_FROSTDUSK]={base=3, every=5, max=7}, + resolvers.rngtalentsets{ + -- Skeleton theme + { + [Talents.T_CALL_OF_THE_CRYPT]={base=5, every=5, max=9}, + [Talents.T_ASSEMBLE]={base=3, every=5, max=7}, + [Talents.T_LORD_OF_SKULLS]={last=25, base=0, every=5, max=7}, + [Talents.T_NECROTIC_AURA]={base=1, every=5, max=7}, + [Talents.T_SURGE_OF_UNDEATH]={base=3, every=5, max=7}, + [Talents.T_RECALL_MINIONS]={base=3, every=5, max=7}, + }, + -- Ghoul theme + { + [Talents.T_CALL_OF_THE_MAUSOLEUM]={base=5, every=5, max=9}, + [Talents.T_CORPSE_EXPLOSION]={base=3, every=5, max=7}, + [Talents.T_PUTRESCENT_LIQUEFACTION]={last=25, base=0, every=5, max=7}, + [Talents.T_NECROTIC_AURA]={base=1, every=5, max=7}, + [Talents.T_SURGE_OF_UNDEATH]={base=3, every=5, max=7}, + [Talents.T_SUFFER_FOR_ME]={base=3, every=5, max=7}, + }, + -- Darkness theme + { + [Talents.T_INVOKE_DARKNESS]={base=5, every=5, max=9}, + [Talents.T_CIRCLE_OF_DEATH]={base=3, every=5, max=7}, + [Talents.T_ERUPTING_SHADOWS]={last=25, base=0, every=5, max=7}, + [Talents.T_RIVER_OF_SOULS]={last=40, base=0, every=5, max=7}, + [Talents.T_DREAD]={base=3, every=5, max=7}, + [Talents.T_CREPUSCULE]={base=3, every=5, max=7}, + }, + -- Cold theme + { + [Talents.T_CHILL_OF_THE_TOMB]={base=5, every=5, max=9}, + [Talents.T_BLACK_ICE]={base=3, every=5, max=7}, + [Talents.T_CORPSELIGHT]={base=3, every=5, max=7}, + [Talents.T_RIME_WRAITH]={base=3, every=5, max=7}, + [Talents.T_FRIGID_PLUNGE]={base=3, every=5, max=7}, + [Talents.T_PERMAFROST]={base=3, every=5, max=7}, + }, }, -]] resolvers.sustains_at_birth(), } diff --git a/game/modules/tome/data/gfx/shockbolt/npc/immovable_jelly_malevolent_dimensional_jelly.png b/game/modules/tome/data/gfx/shockbolt/npc/immovable_jelly_malevolent_dimensional_jelly.png index ba5cd43443b456c6f1a3e7de2ec8a818aa2c5415..02e3b8672c947c0af16f83c8b7b769c9ca908b29 100644 Binary files a/game/modules/tome/data/gfx/shockbolt/npc/immovable_jelly_malevolent_dimensional_jelly.png and b/game/modules/tome/data/gfx/shockbolt/npc/immovable_jelly_malevolent_dimensional_jelly.png differ diff --git a/game/modules/tome/data/talents/spells/necrosis.lua b/game/modules/tome/data/talents/spells/necrosis.lua index 1985f51e40b2243e8f2d49f3a94f29689b1bd9d0..4f67c183213ccf00480c567cd3c3b5b53c9c75e9 100644 --- a/game/modules/tome/data/talents/spells/necrosis.lua +++ b/game/modules/tome/data/talents/spells/necrosis.lua @@ -39,6 +39,7 @@ newTalent{ self:updateTalentPassives(t) end), passives = function(self, t, p) + if type(self.max_life) ~= "number" then return end -- Prevent running on NPCs being spawned local bonus = t.getLifeBonus(self, t) self:talentTemporaryValue(p, "die_at", -bonus) self:talentTemporaryValue(p, "max_life", -math.ceil(bonus * t.getLifeLostFactor(self, t))) diff --git a/game/modules/tome/data/timed_effects/magical.lua b/game/modules/tome/data/timed_effects/magical.lua index f698475d5f629279646ee66e8af31b5e4abeea32..13b50ac037582be070b9b7afe0c3df4b6dbe92cf 100644 --- a/game/modules/tome/data/timed_effects/magical.lua +++ b/game/modules/tome/data/timed_effects/magical.lua @@ -772,7 +772,7 @@ newEffect{ on_merge = function(self, old_eff, new_eff) local new_eff_adj = {} -- Adjust for shield modifiers new_eff_adj.power = self:getShieldAmount(new_eff.power) - new_eff_adj.dur = self:getShieldDuration(new_eff_adj.dur) + new_eff_adj.dur = self:getShieldDuration(new_eff.dur) -- If the new shield would be stronger than the existing one, just replace it if old_eff.dur > new_eff_adj.dur then return old_eff end if math.max(self.damage_shield_absorb, self.damage_shield_absorb_max) <= new_eff_adj.power then @@ -4962,11 +4962,8 @@ newEffect{ self:removeEffect(self.EFF_CORPSELIGHT, true, true) end, explode = function(self, eff) - game.log("====================1") if not self:knowTalent(self.T_GRAVE_MISTAKE) then return end - game.log("====================2") if eff.exploded then return end - game.log("====================3") eff.exploded = true self:callTalent(self.T_GRAVE_MISTAKE, "explode", eff.x, eff.y, eff.effective_radius, eff.stacks) end,