diff --git a/game/modules/tome/data/general/objects/boss-artifacts.lua b/game/modules/tome/data/general/objects/boss-artifacts.lua index ab71182154153f9ed16b563918d7883d39e2612e..716f2b8adf851deb3df0df6b245c61f52a37aed8 100644 --- a/game/modules/tome/data/general/objects/boss-artifacts.lua +++ b/game/modules/tome/data/general/objects/boss-artifacts.lua @@ -623,6 +623,7 @@ newEntity{ base = "BASE_AMULET", vampire:resolve() game.zone:addEntity(game.level, vampire, "actor", x, y) vampire:forceUseTalent(vampire.T_TAUNT, {}) + if who:knowTalent(who.T_BLIGHTED_SUMMONING) then vampire:learnTalent(vampire.T_DARKFIRE, true, 3) end game:playSoundNear(who, "talents/spell_generic") return {id=true, used=true} diff --git a/game/modules/tome/data/general/objects/world-artifacts.lua b/game/modules/tome/data/general/objects/world-artifacts.lua index fe4299d75d10dd40bb6b2d9a415693d9d245af4e..230dc763fdd4aca98f881766828ca5c4c0d24bc0 100644 --- a/game/modules/tome/data/general/objects/world-artifacts.lua +++ b/game/modules/tome/data/general/objects/world-artifacts.lua @@ -886,6 +886,7 @@ newEntity{ local setupSummon = getfenv(who:getTalentFromId(who.T_SPIDER).action).setupSummon setupSummon(who, spider, x, y) + if who:knowTalent(who.T_BLIGHTED_SUMMONING) then spider:learnTalent(spider.T_CORROSIVE_WORM, true, 3) end game:playSoundNear(who, "talents/slime") end diff --git a/game/modules/tome/data/gfx/talents/blighted_summoning.png b/game/modules/tome/data/gfx/talents/blighted_summoning.png new file mode 100644 index 0000000000000000000000000000000000000000..37ced8d0ef5371a9894f2dc54050f62aacf4c3cf Binary files /dev/null and b/game/modules/tome/data/gfx/talents/blighted_summoning.png differ diff --git a/game/modules/tome/data/talents/cursed/shadows.lua b/game/modules/tome/data/talents/cursed/shadows.lua index efb91864a25e24c8a5ce3211b46b86eb83d6e752..d02bd0b3bb043911a411068b8d81ae83b2a03588 100644 --- a/game/modules/tome/data/talents/cursed/shadows.lua +++ b/game/modules/tome/data/talents/cursed/shadows.lua @@ -176,7 +176,7 @@ newTalent{ } local function createShadow(self, level, tCallShadows, tShadowWarriors, tShadowMages, duration, target) - return require("mod.class.NPC").new{ + local npc = require("mod.class.NPC").new{ type = "undead", subtype = "shadow", name = "shadow", desc = [[]], @@ -309,6 +309,10 @@ local function createShadow(self, level, tCallShadows, tShadowWarriors, tShadowM return mod.class.Actor.onTakeHit(self, value, src) end, } + + if self:knowTalent(self.T_BLIGHTED_SUMMONING) then npc:learnTalent(npc.T_EMPATHIC_HEX, true, 3) end + + return npc end newTalent{ diff --git a/game/modules/tome/data/talents/gifts/summon-distance.lua b/game/modules/tome/data/talents/gifts/summon-distance.lua index 5bfb9bda09112e514043f552b099658ce429ac93..f21c84f22af06b633918c349ccff934f3a9abc7d 100644 --- a/game/modules/tome/data/talents/gifts/summon-distance.lua +++ b/game/modules/tome/data/talents/gifts/summon-distance.lua @@ -287,6 +287,7 @@ newTalent{ m.name = m.name.." (wild summon)" m[#m+1] = resolvers.talents{ [self.T_FLAME_FURY]=self:getTalentLevelRaw(t) } end + if self:knowTalent(self.T_BLIGHTED_SUMMONING) then m:learnTalent(m.T_DRAIN, true, 3) end setupSummon(self, m, x, y) @@ -392,6 +393,7 @@ newTalent{ m.name = m.name.." (wild summon)" m[#m+1] = resolvers.talents{ [self.T_DISENGAGE]=self:getTalentLevelRaw(t) } end + if self:knowTalent(self.T_BLIGHTED_SUMMONING) then m:learnTalent(m.T_BLOOD_SPRAY, true, 3) end setupSummon(self, m, x, y) @@ -490,6 +492,7 @@ newTalent{ m.name = m.name.." (wild summon)" m[#m+1] = resolvers.talents{ [self.T_RESOLVE]=self:getTalentLevelRaw(t) } end + if self:knowTalent(self.T_BLIGHTED_SUMMONING) then m:learnTalent(m.T_POISON_STORM, true, 3) end setupSummon(self, m, x, y) @@ -627,6 +630,7 @@ newTalent{ m.name = m.name.." (wild summon)" m[#m+1] = resolvers.talents{ [self.T_AURA_OF_SILENCE]=self:getTalentLevelRaw(t) } end + if self:knowTalent(self.T_BLIGHTED_SUMMONING) then m:learnTalent(m.T_DARKFIRE, true, 3) end setupSummon(self, m, x, y) diff --git a/game/modules/tome/data/talents/gifts/summon-melee.lua b/game/modules/tome/data/talents/gifts/summon-melee.lua index 5d72c9eaac19889317734884d51a7bf4935d5140..edf259f624836e95fd29917934f71b4e4ea5aba6 100644 --- a/game/modules/tome/data/talents/gifts/summon-melee.lua +++ b/game/modules/tome/data/talents/gifts/summon-melee.lua @@ -91,6 +91,7 @@ newTalent{ m.name = m.name.." (wild summon)" m[#m+1] = resolvers.talents{ [self.T_TOTAL_THUGGERY]=self:getTalentLevelRaw(t) } end + if self:knowTalent(self.T_BLIGHTED_SUMMONING) then m:learnTalent(m.T_CURSE_OF_DEFENSELESSNESS, true, 3) end setupSummon(self, m, x, y) @@ -193,6 +194,7 @@ newTalent{ m.name = m.name.." (wild summon)" m[#m+1] = resolvers.talents{ [self.T_SWALLOW]=self:getTalentLevelRaw(t) } end + if self:knowTalent(self.T_BLIGHTED_SUMMONING) then m:learnTalent(m.T_VIMSENSE, true, 3) end setupSummon(self, m, x, y) @@ -291,6 +293,7 @@ newTalent{ m.name = m.name.." (wild summon)" m[#m+1] = resolvers.talents{ [self.T_RUSH]=self:getTalentLevelRaw(t) } end + if self:knowTalent(self.T_BLIGHTED_SUMMONING) then m:learnTalent(m.T_LIFE_TAP, true, 3) end setupSummon(self, m, x, y) @@ -392,6 +395,7 @@ newTalent{ m.name = m.name.." (wild summon)" m[#m+1] = resolvers.talents{ [self.T_SHATTERING_IMPACT]=self:getTalentLevelRaw(t) } end + if self:knowTalent(self.T_BLIGHTED_SUMMONING) then m:learnTalent(m.T_BONE_SPEAR, true, 3) end setupSummon(self, m, x, y) diff --git a/game/modules/tome/data/talents/gifts/summon-utility.lua b/game/modules/tome/data/talents/gifts/summon-utility.lua index 18073e8b53fc6cf8dd0d20d6e2b3813f6f488ac1..e90fa112567af30d8dd52e8e5c02df6540c65231 100644 --- a/game/modules/tome/data/talents/gifts/summon-utility.lua +++ b/game/modules/tome/data/talents/gifts/summon-utility.lua @@ -172,6 +172,7 @@ newTalent{ m.name = m.name.." (wild summon)" m[#m+1] = resolvers.talents{ [self.T_BATTLE_CALL]=self:getTalentLevelRaw(t) } end + if self:knowTalent(self.T_BLIGHTED_SUMMONING) then m:learnTalent(m.T_CURSE_OF_IMPOTENCE, true, 3) end setupSummon(self, m, x, y) @@ -275,6 +276,7 @@ newTalent{ m.name = m.name.." (wild summon)" m[#m+1] = resolvers.inscription("INFUSION:_INSIDIOUS_POISON", {cooldown=12, range=6, heal_factor=0.6, power=self:getTalentLevel(t) * 60}) end + if self:knowTalent(self.T_BLIGHTED_SUMMONING) then m:learnTalent(m.T_CORROSIVE_WORM, true, 3) end setupSummon(self, m, x, y) diff --git a/game/modules/tome/data/talents/psionic/thought-forms.lua b/game/modules/tome/data/talents/psionic/thought-forms.lua index cf058b9e7a802cfa711f245801179db48a174ac9..e6f79a2561a5cefea695a3832ec480fc23d000a2 100644 --- a/game/modules/tome/data/talents/psionic/thought-forms.lua +++ b/game/modules/tome/data/talents/psionic/thought-forms.lua @@ -152,6 +152,8 @@ function setupThoughtForm(self, m, x, y, t) game.zone:addEntity(game.level, m, "actor", x, y) game.level.map:particleEmitter(x, y, 1, "generic_teleport", {rm=225, rM=255, gm=225, gM=255, bm=225, bM=255, am=35, aM=90}) + if self:knowTalent(self.T_BLIGHTED_SUMMONING) then m:learnTalent(m.T_FLAME_OF_URH_ROK, true, 3) end + -- Summons never flee m.ai_tactic = m.ai_tactic or {} m.ai_tactic.escape = 0 diff --git a/game/modules/tome/data/talents/spells/necrotic-minions.lua b/game/modules/tome/data/talents/spells/necrotic-minions.lua index ea58b5daad9cc2cff628e701819b98c3369092b8..8c22c809a85e1409f1143b1a2e06b058c4f251b0 100644 --- a/game/modules/tome/data/talents/spells/necrotic-minions.lua +++ b/game/modules/tome/data/talents/spells/necrotic-minions.lua @@ -709,6 +709,12 @@ newTalent{ if minion and pos then p.souls = p.souls - 1 necroSetupSummon(self, minion, pos.x, pos.y, lev, true) + if self:knowTalent(self.T_BLIGHTED_SUMMONING) then + if minion.subtype == "skeleton" or minion.subtype == "giant" then minion:learnTalent(minion.T_BONE_GRAB, true, 3) end + if minion.subtype == "ghoul" then minion:learnTalent(minion.T_BLOOD_LOCK, true, 3) end + if minion.subtype == "vampire" or minion.subtype == "lich" then minion:learnTalent(minion.T_DARKFIRE, true, 3) end + if minion.subtype == "ghost" or minion.subtype == "wight" then minion:learnTalent(minion.T_BLOOD_BOIL, true, 3) end + end end end diff --git a/game/modules/tome/data/talents/uber/mag.lua b/game/modules/tome/data/talents/uber/mag.lua index 9d6fcd654533213c1a803cdeca9b47affce0592c..91a324baf4351698326a3082e1704b9a51e61372 100644 --- a/game/modules/tome/data/talents/uber/mag.lua +++ b/game/modules/tome/data/talents/uber/mag.lua @@ -114,4 +114,37 @@ uberTalent{ Transforming in this form will increase your paradox by 600 and revert it back at the end of the effect.]]) :format() end, -} \ No newline at end of file +} + +uberTalent{ + name = "Blighted Summoning", + mode = "passive", + on_learn = function(self, t) + if self.alchemy_golem then self.alchemy_golem:learnTalent(self.alchemy_golem.T_DRAIN, true, 3) end + end, + require = { special={desc=".", fct=function(self) + return self:getTalentLevelRaw(self.T_IMBUE_ITEM) >= 5 + end} }, + info = function(self, t) + return ([[You infuse blighted energies in all your summons, giving them all a new talent: + - War Hound: Curse of Defenselessness + - Jelly: Vimsense + - Minotaur: Life Tap + - Golem: Bone Spear + - Ritch: Drain + - Hydra: Blood Spray + - Rimebark: Poison Storm + - Fire Drake: Darkfire + - Turtle: Curse of Impotence + - Spider: Corrosive Worm + - Skeletons: Bone Grab + - Ghouls: Blood Lock + - Vampires / Liches: Darkfire + - Ghosts / Wights: Blood Boil + - Alchemy Golems: Drain + - Shadows: Empathic Hex + - Thought-Forms: Flame of Urh'Rok + - Other race or object-based summons might be affected too + ]]):format() + end, +}