diff --git a/game/modules/tome/data/talents/misc/races.lua b/game/modules/tome/data/talents/misc/races.lua index f4d0fdc263b4936f940bba036d18ff23a2700818..2db4b3949bf5f8e8872689f7496bfb0579d22cae 100644 --- a/game/modules/tome/data/talents/misc/races.lua +++ b/game/modules/tome/data/talents/misc/races.lua @@ -286,11 +286,11 @@ newTalent{ points = 5, mode = "passive", on_learn = function(self, t) - self.disease_immune = self.disease_immune + 0.12 + self:attr("disease_immune", 0.12) self.resists[DamageType.BLIGHT] = (self.resists[DamageType.BLIGHT] or 0) + 4 end, on_unlearn = function(self, t) - self.disease_immune = self.disease_immune - 0.12 + self:attr("disease_immune", -0.12) self.resists[DamageType.BLIGHT] = (self.resists[DamageType.BLIGHT] or 0) - 4 end, info = function(self, t) @@ -480,11 +480,129 @@ newTalent{ end, } +newTalent{ + name = "Unity", + type = {"race/yeek", 2}, + require = racial_req2, + points = 5, + mode = "passive", + on_learn = function(self, t) + self:attr("confusion_immune", 0.12) + self:attr("silence_immune", 0.12) + self.combat_mentalresist = self.combat_mentalresist + 4 + end, + on_unlearn = function(self, t) + self:attr("confusion_immune", -0.12) + self:attr("silence_immune", -0.12) + self.combat_mentalresist = self.combat_mentalresist - 4 + end, + info = function(self, t) + return ([[Your mind becomes more attuned to the Way and is shielded from outside effects. + Increase confusion and silence immunities by %d%% and your mental save by +%d.]]):format(self:getTalentLevelRaw(t) * 12, self:getTalentLevelRaw(t) * 4) + end, +} + +newTalent{ + name = "Quickened", + type = {"race/yeek", 3}, + require = racial_req3, + points = 5, + mode = "passive", + on_learn = function(self, t) + self.energy.mod = self.energy.mod + 0.03 + end, + on_unlearn = function(self, t) + self.energy.mod = self.energy.mod - 0.03 + end, + info = function(self, t) + return ([[Yeeks live fast, think fast, and sacrifice fast for the Way. + Increase global speed by %d%%.]]):format(self:getTalentLevelRaw(t) * 3) + end, +} + +newTalent{ + name = "Wayist", + type = {"race/yeek", 4}, + require = racial_req4, + points = 5, + no_energy = true, + cooldown = function(self, t) return 50 - self:getTalentLevel(t) * 3 end, + range = 4, + no_npc_use = true, + action = function(self, t) + local tg = {type="bolt", nowarning=true, range=self:getTalentRange(t), nolock=true, talent=t} + local tx, ty, target = self:getTarget(tg) + if not tx or not ty then return nil end + local _ _, tx, ty = self:canProject(tg, tx, ty) + target = game.level.map(tx, ty, Map.ACTOR) + if target == self then target = nil end + + -- Find space + for i = 1, 3 do + local x, y = util.findFreeGrid(tx, ty, 5, true, {[Map.ACTOR]=true}) + if not x then + game.logPlayer(self, "Not enough space to summon!") + return + end + + local NPC = require "mod.class.NPC" + local m = NPC.new{ + type = "humanoid", subtype = "yeek", + display = "y", + name = "yeek mindslayer", color=colors.YELLOW, + desc = "A wayist that came to help.", + + body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, + + rank = 3, + life_rating = 8, + max_life = resolvers.rngavg(50,80), + infravision = 20, + + autolevel = "none", + ai = "summoned", ai_real = "tactical", ai_state = { talent_in=2, }, + stats = {str=0, dex=0, con=0, cun=0, wil=0, mag=0}, + inc_stats = { str=25 + self:getWil() * self:getTalentLevel(t) / 5, dex=18, con=10 + self:getTalentLevel(t) * 2, }, + + resolvers.equip{ + {type="weapon", subtype="longsword", autoreq=true}, + {type="weapon", subtype="dagger", autoreq=true}, + }, + + level_range = {1, nil}, exp_worth = 0, + silent_levelup = true, + + combat_armor = 13, combat_def = 8, + resolvers.talents{ + [Talents.T_KINETIC_SHIELD]={base=1, every=5, max=5}, + [Talents.T_KINETIC_AURA]={base=1, every=5, max=5}, + [Talents.T_CHARGED_AURA]={base=1, every=5, max=5}, + }, + + faction = self.faction, + summoner = self, summoner_gain_exp=true, + summon_time = 6, + ai_target = {actor=target} + } + setupSummon(self, m, x, y) + end + + game:playSoundNear(self, "talents/spell_generic") + return true + end, + info = function(self, t) + return ([[Shatters the mind of your victim, giving your full control over its actions for %s turns. + When the effect ends you pull out your mind and the victim's body colapses dead. + This effect does not work on elite or undeads. + The duration will increase with the Willpower stat]]):format(4 + self:getWil(10)) + end, +} + -- Yeek's power: ID newTalent{ short_name = "YEEK_ID", name = "Knowledge of the Way", - type = {"race/yeek", 1}, + type = {"base/race", 1}, no_npc_use = true, on_learn = function(self, t) self.auto_id = 2 end, action = function(self, t)