Prodigy ideas
Moderator: Moderator
Re: Prodigy ideas
That'd be Chronomancy oriented, probably, so Magic or Will.
Also, to make it more competitive, I'd probably lower the CD down to 8-10. Still, cool idea, and nice and simple.
Also, to make it more competitive, I'd probably lower the CD down to 8-10. Still, cool idea, and nice and simple.
-
- Halfling
- Posts: 88
- Joined: Thu Jul 12, 2012 8:37 pm
Re: Prodigy ideas
I'd say magic would fit best. Maybe a cooldown of 15ish.
I like the idea a lot.
I like the idea a lot.
Re: Prodigy ideas
Well, remember, +15% global speed is a skill.
15% global speed grants you an extra turn once every seven or eight turns.
This is a bit more versatile and on demand, but still, 10 turns for it seems reasonable with that comparison.
15% global speed grants you an extra turn once every seven or eight turns.
This is a bit more versatile and on demand, but still, 10 turns for it seems reasonable with that comparison.
Re: Prodigy ideas
Wow you guys are coding prodigies? Awesome. I will try to code some as soon as I finish my current game.
Here are some ideas for more prodigies:
Arcane skin
Requirements:
Mag 50
Passive
Studying the secrets of the golems, you have found out how to reflect damage you take. X% of the damage you take is reflected back to the enemy. The percentage of damage reflected scales with Magic.
Portal Attacker
Requirements:
Wil 50
Must have dealt over 50000 temporal damage
Sustain
Takes a turn to activate/deactivate.
Your mastery of portals allows you to increase the range of all melee attacks, arrows, and staff blasts by 3, but reduces the amount of damage you deal with those attacks by 25%.
Here are some ideas for more prodigies:
Arcane skin
Requirements:
Mag 50
Passive
Studying the secrets of the golems, you have found out how to reflect damage you take. X% of the damage you take is reflected back to the enemy. The percentage of damage reflected scales with Magic.
Portal Attacker
Requirements:
Wil 50
Must have dealt over 50000 temporal damage
Sustain
Takes a turn to activate/deactivate.
Your mastery of portals allows you to increase the range of all melee attacks, arrows, and staff blasts by 3, but reduces the amount of damage you deal with those attacks by 25%.
Re: Prodigy ideas
In str.lua:
In combat.lua, below Arcane Might:
In combat.lua, just above Gesture of Power's bonus to Mindpower:
Easy stuff this time.
Also adjusted the main list I made with tweaks to skills I made while coding them and with some of DarkGod's comments on them-probably going to have to add new ideas.
I'm shooting for releasing an addon when I hit 12(two of each), for DarkGod to look over and see if he likes stuff out of. 18 would be better, but with the changes to the list, it's getting harder to pull off before I need another round of brainstorming skills.
Of course, if other people keep making new skills, there'll be 18 skills from this thread even if I only get 12 up.
Code: Select all
uberTalent{
name = "Superpower",
mode = "passive",
info = function(self, t)
return ([[A healthy body is key to a healty mind. And a healthy mind is powerful indeed.
Grants a Mindpower bonus equal to 25%% of your Strength.
Additionally, you treat all weapons as having an additional 40%% willpower modifier.]])
:format()
end,
}
Code: Select all
if self:knowTalent(self.T_SUPERPOWER) then
totstat = totstat + self:getStat("wil") * 0.4
end
Code: Select all
if self:knowTalent(self.T_SUPERPOWER) then
add = add + 25 * self:getStr() / 100
end
Also adjusted the main list I made with tweaks to skills I made while coding them and with some of DarkGod's comments on them-probably going to have to add new ideas.
I'm shooting for releasing an addon when I hit 12(two of each), for DarkGod to look over and see if he likes stuff out of. 18 would be better, but with the changes to the list, it's getting harder to pull off before I need another round of brainstorming skills.
Of course, if other people keep making new skills, there'll be 18 skills from this thread even if I only get 12 up.

Re: Prodigy ideas
idea for a Con one: be invulnerable during your turn, instant cast, 10 cooldown. This would allow you to prevent your own splash damage, defensive throws, retaliation damage, martyrdom, etc...
Re: Prodigy ideas
In /uber/wil.lua:
Another easy one down. I nerfed it a bit more-on reflection, people can stack a lot of damage bonuses(even if they are kinda rare for Mind) when they only rely on one element, which probably means that, even in spite of the possible saving against the damage, it's better than it sounds. Should still be pretty good.
Code: Select all
uberTalent{
name = "Mental Tyranny",
mode = "sustained",
require = { },
cooldown = 20,
tactical = { BUFF = 2 },
activate = function(self, t)
game:playSoundNear(self, "talents/distortion")
return {
converttype = self:addTemporaryValue("all_damage_convert", DamageType.MIND),
convertamount = self:addTemporaryValue("all_damage_convert_percent", 100),
dam = self:addTemporaryValue("inc_damage", {[DamageType.MIND] = 10}),
resist = self:addTemporaryValue("resists_pen", {[DamageType.MIND] = 30}),
}
end,
deactivate = function(self, t, p)
self:removeTemporaryValue("all_damage_convert", p.converttype)
self:removeTemporaryValue("all_damage_convert_percent", p.convertamount)
self:removeTemporaryValue("inc_damage", p.dam)
self:removeTemporaryValue("resists_pen", p.resist)
return true
end,
info = function(self, t)
return ([[Transcend the physical and rule over all with an iron will.
While this sustain is active, all of your damage is converted into Mind damage.
Additionally, you gain 30%% Mind resistance penetration, and +10%% Mind damage. ]]):
format()
end,
}
Re: Prodigy ideas
In /uber/str.lua:
In timed_effects/physical.lua:
You know, I kinda feel like this Prodigy has been here all the time and I just now found it.
The values could be tweaked if it's too powerful/weak, and if it turns out to be a bad idea...well, it took like twenty minutes to code.
But I've seen enough people lament the lack of physical resistance penetration in the game to think it'll have value to some, even if I'm not sure who I personally would grab it for.
Code: Select all
uberTalent{
name = "Unstoppable Strike",
mode = "activated",
require = { },
cooldown = 25,
tactical = { ATTACK = 4 },
no_energy = true,
action = function(self, t)
self:setEffect(self.EFF_UNSTOPPABLE_STRIKE, 4, {power=100})
return true
end,
info = function(self, t)
return ([[Utterly shatter your enemy's guard.
You strike your enemy so hard that they cannot possibly defend against it, gaining 100%% Physical resistance penetration.
The enemy's armor is also nothing to you for this time, granting you +100 Armor Penetration.
This effect lasts five turns, and takes no time to use.]]):
format()
end,
}
Code: Select all
newEffect{
name = "UNSTOPPABLE_STRIKE", image = "talents/unstoppable_strike.png",
desc = "Unstoppable Strike",
long_desc = function(self, eff) return ("The target's armour penetration is increased by %d, and their physical resistance penetration is increased by %d%%."):format(eff.power, eff.power) end,
type = "physical",
subtype = { focus=true },
status = "beneficial",
parameters = { power=100 },
on_gain = function(self, err) return "#Target# begins crushing defenses!" end,
on_lose = function(self, err) return "#Target# can no longer maintain the effort of crushing defenses." end,
activate = function(self, eff)
eff.tmpapr = self:addTemporaryValue("combat_apr", eff.power)
eff.tmprespen = self:addTemporaryValue("resists_pen", {[DamageType.PHYSICAL] = eff.power})
end,
deactivate = function(self, eff)
self:removeTemporaryValue("combat_apr", eff.tmpapr)
self:removeTemporaryValue("resists_pen", eff.tmprespen)
end,
}
The values could be tweaked if it's too powerful/weak, and if it turns out to be a bad idea...well, it took like twenty minutes to code.
But I've seen enough people lament the lack of physical resistance penetration in the game to think it'll have value to some, even if I'm not sure who I personally would grab it for.
Re: Prodigy ideas
In /uber/str.lua:
In combat.lua, just below Cleave's code:
In combat.lua, just below Repel's code:
It's basically a Talent Level 1 Surge/Repel/Cleave, without the secondary weapon-specific effects, that can be stacked on top of those skills. And has a unique effect to keep it from getting out of control when stacked with Cleave, which was basically converting a not-horribly-overpowered bug into a feature in a neat way.
Considering that, even at L1, stacking all three of those skills is reasonably powerful, I think it'll be a neat option.
Code: Select all
uberTalent{
name = "Reckless Abandon",
mode = "sustained",
require = { },
cooldown = 20,
tactical = { BUFF = 3 },
no_energy = true,
getCleaveChance = function(self, t) return 20 + self:getStr() / 3 end,
getRepel = function(self, t) return 5 + self:getStr() / 10 end,
getSurge = function(self, t) return (10 + self:getWil() / 2) / 100 end,
on_attackTarget = function(self, t, target)
if inCleave then return end
inCleave = true
local chance = t.getCleaveChance(self, t)
if self:isTalentActive(self.T_CLEAVE) then
chance = chance/3
end
if rng.percent(chance) then
local start = rng.range(0, 8)
for i = start, start + 8 do
local x = self.x + (i % 3) - 1
local y = self.y + math.floor((i % 9) / 3) - 1
local secondTarget = game.level.map(x, y, Map.ACTOR)
if secondTarget and secondTarget ~= target and self:reactionToward(secondTarget) < 0 then
game.logSeen(self, "%s cleaves through %s!", self.name:capitalize(), secondTarget.name)
self:attackTarget(secondTarget, nil, 0.7, true)
inCleave = false
return
end
end
end
inCleave = false
end,
isRepelled = function(self, t)
local chance = t.getRepel(self, t)
return rng.percent(chance)
end,
activate = function(self, t)
return {
surge = self:addTemporaryValue("movement_speed", t.getSurge(self, t)),
luck = self:addTemporaryValue("inc_stats", {[self.STAT_LCK] = -10})
}
end,
deactivate = function(self, t, p)
self:removeTemporaryValue("movement_speed", p.surge)
self:removeTemporaryValue("inc_stats", p.luck)
return true
end,
info = function(self, t)
local deflect = t.getRepel(self, t)
local cleave = t.getCleaveChance(self, t)
local move = t.getSurge(self, t)
return ([[Slaughter your enemies with all of your hatred.
While active, you have %d%% chance of repelling physical attacks, taking no damage from them.
Additionally, you have a %d%% chance of cleaving through your enemies, striking a second target for 70%%.
Finally, your movement speed is raised by %d%%.
The extreme recklessness of your actions brings you great misfortune (-10 Luck).
Your repel chance and cleaving chance are raised with the Strength stat, and your movement speed is raised by the Willpower stat.
(Note: This skill does not conflict with Repel, Surge or Cleave.
Cleaves from this talent occur at a greatly reduced(33%%) rate while Cleave is active, but may be triggered off other cleaving attacks.)]]):
format(deflect, cleave, move * 100)
end,
}
Code: Select all
-- different source of Cleave
if self:isTalentActive(self.T_RECKLESS_ABANDON) then
local t = self:getTalentFromId(self.T_RECKLESS_ABANDON)
t.on_attackTarget(self, t, target)
end
Code: Select all
-- check repel from Reckless Abandon
if repelled == false then
if target:isTalentActive(target.T_RECKLESS_ABANDON) then
local t = target:getTalentFromId(target.T_RECKLESS_ABANDON)
repelled = t.isRepelled(target, t)
end
else end
Considering that, even at L1, stacking all three of those skills is reasonably powerful, I think it'll be a neat option.
Re: Prodigy ideas
In /uber/dex.lua
In /interface/archery.lua:
Easier than I expected.
Edit: Added a negligable(10) sustain cost so that it actually turns off when you hit 0 from its cost. It wasn't doing that before, which was meaning you could spam it forever. You just wouldn't have any stamina left. Oops.
Code: Select all
uberTalent{
name = "Sonic Gale",
mode = "sustained",
require = { },
cooldown = 25,
sustain_stamina = 10,
tactical = { ATTACKAREA = { weapon = 1 } },
activate = function(self, t)
return {
dam = self:addTemporaryValue("sonic_gale", 0.7),
}
end,
deactivate = function(self, t, p)
self:removeTemporaryValue("sonic_gale", p.dam)
return true
end,
info = function(self, t)
return ([[Fire your arrows with incredible speed.
Every arrow you fire will, on impact, produce 2 radius sonic blasts, dealing 70%% weapon damage to all caught in them, in addition to their normal damage.
This strenuous technique consumes 10 Stamina with every shot.]]):
format()
end,
}
Code: Select all
-- Sonic Gale
if hitted and weapon and self:attr("sonic_gale") and (not self.sonic_gale_last_turn or self.sonic_gale_last_turn < game.turn) then
local dam = dam * self.sonic_gale
self:project({type="ball", radius=2, selffire=false}, target.x, target.y, DamageType.PHYSICAL, dam)
self:incStamina(-10)
self.sonic_gale_last_turn = game.turn
end
Edit: Added a negligable(10) sustain cost so that it actually turns off when you hit 0 from its cost. It wasn't doing that before, which was meaning you could spam it forever. You just wouldn't have any stamina left. Oops.
Re: Prodigy ideas
In /uber/const.lua:
In Combat.lua(four places, in the Defense, physical save, magical save and mental save calculations):
This ended up unbelievably simple. I think it's kinda cool though, and the less complex flat-rate life bonus makes it more interesting to those swapping for Con. I could see a no-Con Archmage working with this...maybe. Then again, it works better with Con, obviously.
Code: Select all
uberTalent{
name = "Corrupted Shell",
mode = "passive",
on_learn = function(self, t)
self.max_life = self.max_life + 150
end,
info = function(self, t)
return ([[Thanks to your newfound knowledge of corruption, you've learned some tricks for toughening your body. If you are healthy enough to withstand them.
Improves your Life by 150, your Defense by %d, and your saves by %d, as your natural toughness and reflexes are pushed beyond their normal limits.
Your saves and defense will raise with the Constitution stat.]])
:format(self:getCon() / 3, self:getCon() / 3)
end,
}
Code: Select all
if self:knowTalent(self.T_CORRUPTED_SHELL) then
add = add + self:getCon() / 3
end
Re: Prodigy ideas
In /uber/wil.lua:
In combat.lua:
Another simple one. Feels really appropriate, though.
Code: Select all
uberTalent{
name = "Walls of the Mind",
mode = "passive",
on_learn = function(self, t)
self.slow_projectiles = (self.slow_projectiles or 0) + 50
end,
info = function(self, t)
return ([[The dexterous dodge weapons. Those with true strength simply don't get hit.
Increases your Defense by %d, and permanently slows all projectiles by 50%%, as your will hinders all attacks upon you.]])
:format(20 + self:getWil() / 4)
end,
}
Code: Select all
if self:knowTalent(self.T_WALLS_OF_THE_MIND) then
add = add + 20 + self:getWil() / 4
end
Re: Prodigy ideas
Just to prevent bugs from downstream balance changes, you may want to generalize the scaling functions and reference them in Combat.lua instead of copying the formula. A language nitpick: "Thanks to your newfound knowledge of corruption, you've learned some tricks for toughening your body. If you are healthy enough to withstand them." The latter is a sentence fragment. Maybe instead: "The touch of corruption has mutated and toughened your body."
A silly thought for this or another talent; becoming "corrupted" could forbid you from using infusions (and remove current infusions), so the prodigy sort of turns you into a ghoul/horror. Could also come with a regeneration/heal mod bonus to compensate for the lack of infusions.
A silly thought for this or another talent; becoming "corrupted" could forbid you from using infusions (and remove current infusions), so the prodigy sort of turns you into a ghoul/horror. Could also come with a regeneration/heal mod bonus to compensate for the lack of infusions.
Sorry about all the parentheses (sometimes I like to clarify things).
Re: Prodigy ideas
get a golem, or get a second golem
Re: Prodigy ideas
"But only if you are healthy enough to withstand the strain from the changes." is how I changed that in the on-HD version of the skill. You're right, it was more awkward before.
In /uber/const.lua:
lukep's idea, a bit more generalized. I think it's pretty interesting.
In /uber/magic.lua:
Not really something I did-DarkGod actually coded the Elemental Mastery function in damage_types, which was the only hard part. I figure coding the actual talent for it makes life easier for him though.
In /uber/const.lua:
Code: Select all
uberTalent{
name = "Adamant",
mode = "activated",
require = { },
cooldown = 15,
tactical = { BUFF = 4 },
no_energy = true,
action = function(self, t)
self:setEffect(self.EFF_VICTORY_RUSH_ZIGUR, 1, {power=1})
return true
end,
info = function(self, t)
return ([[If you see the pain coming, you can take it.
You are invulnerable for two turns. All damage during this time is completely nulled.]]):
format()
end,
}
In /uber/magic.lua:
Code: Select all
uberTalent{
name = "Elemental Mastery",
mode = "sustained",
require = { },
cooldown = 20,
tactical = { BUFF = 3 },
activate = function(self, t)
game:playSoundNear(self, "talents/arcane")
return {
mastery = self:addTemporaryValue("elemental_mastery", 1),
}
end,
deactivate = function(self, t, p)
self:removeTemporaryValue("elemental_mastery", p.mastery)
return true
end,
info = function(self, t)
return ([[Invoke your elemental mastery, and use it to split your damage into a prismatic blast.
All of your damage will be split into 30%% of its original value in Arcane damage, 30%% in Fire, 30%% in Cold and 30%% in Lightning, for a net gain of 20%% additional damage.]])
:format()
end,
}
Last edited by SageAcrin on Wed Dec 19, 2012 2:43 am, edited 1 time in total.