Spellsword (formerly Addon reworking Arcane Blade Class)
Moderator: Moderator
Re: Spellsword (formerly Addon reworking Arcane Blade Class)
Is this 1.4 friendly? *will prolly do another run anyway and find out*
ToME Tips - auto-generated spoilers for ToME. - someone else made. I find super awesome, so spreading as well.
Re: Spellsword (formerly Addon reworking Arcane Blade Class)
Think there is a minor bad chunk of lua somewhere. I've gotten through the whole game, but I do sometimes see a:
Lua Error: attempt to call a nil value
At [C]:-1
And a friend tried it recently and mentioned he suddenly got that on char creation after turning this on. Possibly another addon, but at least two pointers toward this one.
Lua Error: attempt to call a nil value
At [C]:-1
And a friend tried it recently and mentioned he suddenly got that on char creation after turning this on. Possibly another addon, but at least two pointers toward this one.
ToME Tips - auto-generated spoilers for ToME. - someone else made. I find super awesome, so spreading as well.
Re: Spellsword (formerly Addon reworking Arcane Blade Class)
I'm not sure about the bugs people are seeing with the old 1.3.3 version. Given Darkgod has moved onto 1.5.3 in the time I've been neglecting this addon, I'm going to simply say if people still are interested in this addon, try the 1.5.3 compatible version I just uploaded.
I've just done a straight forward compatibility update. No balance changes or other tweaks. I still need to sit down and play with some more classes in 1.5 to get a feel for how things have changed in the last year or so. Hopefully I didn't introduce any bugs in when updating it, but feel free to let me know in this thread if you run into any.

I've just done a straight forward compatibility update. No balance changes or other tweaks. I still need to sit down and play with some more classes in 1.5 to get a feel for how things have changed in the last year or so. Hopefully I didn't introduce any bugs in when updating it, but feel free to let me know in this thread if you run into any.
Re: Spellsword (formerly Addon reworking Arcane Blade Class)
I haven't had a chance to try out the addon, but I do appreciate your continued support for it 

Re: Spellsword (formerly Addon reworking Arcane Blade Class)
Thanks for the comment.
So I've been re-reading the last few pages of this thread, trying to figure out where I left off.
Things I'm getting are:
1) I tend to play all-element style, grabbing all the strikes. Other players do not necessarily.
2) People note mana generation may not be up for sustaining a mono or dual-elemental build using the closed spell trees.
3) The trees that needed the most work were the 2 generic trees. People seemed more or less happy with the class tree options and selection.
Comparing to some other classes, I've noticed some things:
1) Feather Wind is now doing a lot, not only providing 15% fatigue reduction, but 100% pinning resistance, over 50% stunning resistance, plus ranged defense, some trap immunity and movement speed. Oh and its original purpose of increasing carrying capacity is still in there somewhere...
2) Stone skin not only provides armor, but a cooldown reduction effect (possibly quite powerful on Stone Wall).
3) Automated Cloak Tessellation provides flat damage reduction against all types of effect, plus a flat chance to do something not unlike Master Deflection all the time.
Which makes me think Arcane Armor needs a rework.
At 5/5 Arcane armor currently is:
-15% fatigue
up to 24 armor (depends on worm armor, helps massive armor the most)
So one option I'm thinking of is turning the armor portion of Arcane Armor into a flat reduction against everything like Automated Cloak Tessellation, decouple it from worn armor (to allow people to go light armor if they so choose), and have some small fraction of the absorbed damage be converted to mana. Something like at 5/5 and level 50 stats, reducing all damage by 25 and generating something like 0.1 mana per point of damage absorbed in this way. (Each independent hit/proc effectively producing up to 2.5 mana late game). It would retain its fatigue reducing effects as well.
Similarly, looking at Mana Focus, which at 5/5 currently is:
0.83 mana/turn
2.0 mana returned on melee hit
Comparing against the Arcane Blade and Shadowblade equivalent talents which are:
0.89 mana/turn
Physical/Spell Crit +14%
or
1.41 mana/turn
13.7% attack/spell speed
It seems to be a bit lack luster. The other two seem to be trying to increase overall damage per turn by 7-15% (depending on crit mod - possibly more). +2 to +4 mana per turn while in melee hitting stuff doesn't quite feel the same, especially for a 5/5 generic investment. Given the class is in the Mage category these days, it starts with 0.5 mana generation, unlike the Arcane Blade and Shadowblade, so even the mana/turn isn't as crucial. I'm tempted to remove the mana/turn and just make the mana on hit be very large, and possibly doubled for two-handed weapons, to even it out with dual-wielding. Something like at 5/5, 10 mana per melee hit dual wielding, 20 with a two-hander, and 15 with a weapon and shield. So if you're in the thick of combat, its more, but if you're hiding around a corner not really anything.
So you do lose out on the bonus mana from mana surge. At high level, say 1300% every 25 turns, which is 10.79 for 10 turns out of every 25. 107.9/25 or about 4.36 extra per turn. This would increase mana for dual-wielding by 16 mana per turn, every turn that you are swinging those weapons. Lets say in combat that is every other turn, for about 8 extra mana/turn average.
Both changes combined results in a class which generates more resources when actively in the thick of things at the expense of when running away or hiding, which I think may be a good thing.
I still also want to consider some changes to the other generic talents but this is what I've got so far for ideas. Comments and suggestions welcome.
So I've been re-reading the last few pages of this thread, trying to figure out where I left off.
Things I'm getting are:
1) I tend to play all-element style, grabbing all the strikes. Other players do not necessarily.
2) People note mana generation may not be up for sustaining a mono or dual-elemental build using the closed spell trees.
3) The trees that needed the most work were the 2 generic trees. People seemed more or less happy with the class tree options and selection.
Comparing to some other classes, I've noticed some things:
1) Feather Wind is now doing a lot, not only providing 15% fatigue reduction, but 100% pinning resistance, over 50% stunning resistance, plus ranged defense, some trap immunity and movement speed. Oh and its original purpose of increasing carrying capacity is still in there somewhere...
2) Stone skin not only provides armor, but a cooldown reduction effect (possibly quite powerful on Stone Wall).
3) Automated Cloak Tessellation provides flat damage reduction against all types of effect, plus a flat chance to do something not unlike Master Deflection all the time.
Which makes me think Arcane Armor needs a rework.
At 5/5 Arcane armor currently is:
-15% fatigue
up to 24 armor (depends on worm armor, helps massive armor the most)
So one option I'm thinking of is turning the armor portion of Arcane Armor into a flat reduction against everything like Automated Cloak Tessellation, decouple it from worn armor (to allow people to go light armor if they so choose), and have some small fraction of the absorbed damage be converted to mana. Something like at 5/5 and level 50 stats, reducing all damage by 25 and generating something like 0.1 mana per point of damage absorbed in this way. (Each independent hit/proc effectively producing up to 2.5 mana late game). It would retain its fatigue reducing effects as well.
Similarly, looking at Mana Focus, which at 5/5 currently is:
0.83 mana/turn
2.0 mana returned on melee hit
Comparing against the Arcane Blade and Shadowblade equivalent talents which are:
0.89 mana/turn
Physical/Spell Crit +14%
or
1.41 mana/turn
13.7% attack/spell speed
It seems to be a bit lack luster. The other two seem to be trying to increase overall damage per turn by 7-15% (depending on crit mod - possibly more). +2 to +4 mana per turn while in melee hitting stuff doesn't quite feel the same, especially for a 5/5 generic investment. Given the class is in the Mage category these days, it starts with 0.5 mana generation, unlike the Arcane Blade and Shadowblade, so even the mana/turn isn't as crucial. I'm tempted to remove the mana/turn and just make the mana on hit be very large, and possibly doubled for two-handed weapons, to even it out with dual-wielding. Something like at 5/5, 10 mana per melee hit dual wielding, 20 with a two-hander, and 15 with a weapon and shield. So if you're in the thick of combat, its more, but if you're hiding around a corner not really anything.
So you do lose out on the bonus mana from mana surge. At high level, say 1300% every 25 turns, which is 10.79 for 10 turns out of every 25. 107.9/25 or about 4.36 extra per turn. This would increase mana for dual-wielding by 16 mana per turn, every turn that you are swinging those weapons. Lets say in combat that is every other turn, for about 8 extra mana/turn average.
Both changes combined results in a class which generates more resources when actively in the thick of things at the expense of when running away or hiding, which I think may be a good thing.
I still also want to consider some changes to the other generic talents but this is what I've got so far for ideas. Comments and suggestions welcome.
-
- Archmage
- Posts: 318
- Joined: Fri Oct 09, 2015 2:27 pm
Re: Spellsword (formerly Addon reworking Arcane Blade Class)
Guilty. Unless I'm playing Ogre, usually Fire in particular doesn't get much from me due to the two-hand focus. Then I just have a one-hand/Dagger and on another set one-hand/Shield. Sometimes I'll pick up swift hands, sometimes not (depends partially on charm availability). This is unless I find a really good two-hander early, in which Air doesn't get much.I tend to play all-element style, grabbing all the strikes. Other players do not necessarily
With Ogre I just use a two-hander in both sets and focus all elements.
Re: Spellsword (formerly Addon reworking Arcane Blade Class)
In the interest of improving the resource tree, Arcane Veteran I've pushed the changes I was considering earlier.
Mana Focus now returns 2/4/6/8/10 mana per hit, doubled when wielding two-handed weapons, and x1.5 when wielding a shield.
Arcane Armor still reduces fatigue by 3/6/9/12/15, but now reduces damage by a flat amount, using the same scaling as Automated Cloak Tessellation (from the Avoidance tree). It also returns between 5% and 11% of the damage reduced as mana. So at 5/5, and if you take 100 damage, and its reduced by 20 damage to 80, then you'll get back 20*0.11 = 2.2 mana.
We'll see if these need to be tuned down later. Although if you've spent 10 of your 40-50ish generic points(depending on race) on mana regen, you probably deserve not to have mana problems.
Mana Focus now returns 2/4/6/8/10 mana per hit, doubled when wielding two-handed weapons, and x1.5 when wielding a shield.
Arcane Armor still reduces fatigue by 3/6/9/12/15, but now reduces damage by a flat amount, using the same scaling as Automated Cloak Tessellation (from the Avoidance tree). It also returns between 5% and 11% of the damage reduced as mana. So at 5/5, and if you take 100 damage, and its reduced by 20 damage to 80, then you'll get back 20*0.11 = 2.2 mana.
We'll see if these need to be tuned down later. Although if you've spent 10 of your 40-50ish generic points(depending on race) on mana regen, you probably deserve not to have mana problems.
Re: Spellsword (formerly Addon reworking Arcane Blade Class)
So I have been playing around with the class after the Arcane Veteran tree changes, and I think I like the change. It may still need some numerical tweaks but it feels like it rewards getting into the thick of things.
However, at low levels I'm finding there isn't much to spend mana on. So I've been doing some counting of open and closed talent trees on the classes and I'm noticing more recent class reworks tend to have more talent trees and more talent trees open. Also hybrid classes tend to have even more than that.
For example, Archer starts with 9 open trees, and 14 trees total. Rogue starts with 10 open trees and 15 total. Arcane blade starts with 11 trees open and 17 total, while Shadowblade starts with a whopping 12 open and 16 total.
Spellsword starts with a more modest 8 open trees and 15 total. Some classes which are older have less than this. For example Berserkers and Bulwarks begin with 7 open trees and 13 total. Or the poor Cursed who starts with 6 open trees and 10 total.
Anyways, what I'm considering is increasing the number of open trees. The easiest way to do so would be to simply have the class start with an additional category point, allowing you to open a single magic tree (Fire, Air, Earth or Water) or the Combat Techniques tree (for Rush) which provides a way to deal with ranged enemies as well as possibly spending mana.
Now the category point could also be used to open the Survival Tree, increase a category multiplier, or even buy an additional rune slot. Maybe that is okay. Alternatively, I could try to figure out how to get a dialog box to open at level 1 which asks the player what they'd like to specialize in, allowing only one of those category to be opened instead of giving complete freedom.
This would put the class at 9 open and 15 total categories (when compared to say, Archmage's 9 open categories and 17 total). It would certainly give those people who want to try playing a single or dual element build an easier start by allowing access to the magic tree at 1st.
However, at low levels I'm finding there isn't much to spend mana on. So I've been doing some counting of open and closed talent trees on the classes and I'm noticing more recent class reworks tend to have more talent trees and more talent trees open. Also hybrid classes tend to have even more than that.
For example, Archer starts with 9 open trees, and 14 trees total. Rogue starts with 10 open trees and 15 total. Arcane blade starts with 11 trees open and 17 total, while Shadowblade starts with a whopping 12 open and 16 total.
Spellsword starts with a more modest 8 open trees and 15 total. Some classes which are older have less than this. For example Berserkers and Bulwarks begin with 7 open trees and 13 total. Or the poor Cursed who starts with 6 open trees and 10 total.
Anyways, what I'm considering is increasing the number of open trees. The easiest way to do so would be to simply have the class start with an additional category point, allowing you to open a single magic tree (Fire, Air, Earth or Water) or the Combat Techniques tree (for Rush) which provides a way to deal with ranged enemies as well as possibly spending mana.
Now the category point could also be used to open the Survival Tree, increase a category multiplier, or even buy an additional rune slot. Maybe that is okay. Alternatively, I could try to figure out how to get a dialog box to open at level 1 which asks the player what they'd like to specialize in, allowing only one of those category to be opened instead of giving complete freedom.
This would put the class at 9 open and 15 total categories (when compared to say, Archmage's 9 open categories and 17 total). It would certainly give those people who want to try playing a single or dual element build an easier start by allowing access to the magic tree at 1st.
Re: Spellsword (formerly Addon reworking Arcane Blade Class)
Sounds good.
ToME Tips - auto-generated spoilers for ToME. - someone else made. I find super awesome, so spreading as well.
Re: Spellsword (formerly Addon reworking Arcane Blade Class)
So I pushed the addon with an extra talent category point at birth. We'll see how it does. Trying setup a pop-up window just felt really clunky, especially when starting with different modes.
Re: Spellsword (formerly Addon reworking Arcane Blade Class)
In 1.6 (and onward) this breaks Elemental Woes/Surge (which is sad since that has good synergy here).
The problem is in the superload of actor.lua:
I had the same problem in autorest reload, so I can at least pass along what the probable fix is (or at least something really close, not testing deeply at the second). Basically the function isn't very friendly to copy function/add. That said you're only seeming to just want to add a force unsustain on top of usual act behavior, so checking it twice shouldn't be a problem.
The problem is in the superload of actor.lua:
Code: Select all
function _M:act()
if not engine.Actor.act(self) then return end
self.changed = true
self.turn_procs = {}
-- Break some sustains if certain resources are too low
-- Note: force_talent_ignore_ressources has no effect here
-- consider replacing the minimum resource value of 1 with a number based on the talent and resource
for tid, p in pairs(self.sustain_talents) do
local deact, t = false, self.talents_def[tid]
-- check each possible resource the talent uses
for res, res_def in ipairs(_M.resources_def) do
if (t.remove_on_zero == nil and res_def.depleted_unsustain) or (t.remove_on_zero ~= nil and util.getval(t.remove_on_zero, self, t)) then
if t[res_def.sustain_prop] then
if res == self.RS_STAMINA and (self:hasEffect(self.EFF_ADRENALINE_SURGE) or self:hasEffect(self.EFF_MARTIAL_MAGIC)) then
elseif res == self.RS_MANA and self:hasEffect(self.EFF_MARTIAL_MAGIC) then
else
if res_def.invert_values then
if self[res_def.maxname] and (self[res_def.maxname] - self[res_def.short_name]) < 1 then
deact = true break
end
else
if self[res_def.minname] and (self[res_def.short_name] - self[res_def.minname]) < 1 then
deact = true break
end
end
end
end
end
end
if deact then self:forceUseTalent(tid, {ignore_energy=true}) end
end
-- clear grappling
if self:hasEffect(self.EFF_GRAPPLING) and self.stamina < 1 and not self:hasEffect(self.EFF_ADRENALINE_SURGE) then
self:removeEffect(self.EFF_GRAPPLING)
end
-- disable spell sustains
if self:attr("spell_failure") then
for tid, _ in pairs(self.sustain_talents) do
local t = self:getTalentFromId(tid)
if t.is_spell and rng.percent(self:attr("spell_failure")/10)then
self:forceUseTalent(tid, {ignore_energy=true})
if not silent then game.logSeen(self, "%s has been disrupted by #ORCHID#anti-magic forces#LAST#!", t.name) end
end
end
end
if self:attr("paralyzed") then
self.paralyzed_counter = (self.paralyzed_counter or 0) + (self:attr("stun_immune") or 0) * 100
if self.paralyzed_counter < 100 then
self.energy.value = 0
else
-- We are saved for this turn
self.paralyzed_counter = self.paralyzed_counter - 100
game.logSeen(self, "%s temporarily fights the paralyzation.", self.name:capitalize())
end
end
if self:attr("stoned") then self.energy.value = 0 end
if self:attr("dont_act") then self.energy.value = 0 end
if self:attr("time_stun") then self.energy.value = 0 end
if self:attr("time_prison") then self.energy.value = 0 end
-- Regain natural balance?
local equilibrium_level = game.level.map:checkEntity(self.x, self.y, Map.TERRAIN, "equilibrium_level")
if equilibrium_level then self:incEquilibrium(equilibrium_level) end
-- Do stuff to things standing in the fire
game.level.map:checkEntity(self.x, self.y, Map.TERRAIN, "on_stand", self)
-- Still enough energy to act ?
if self.energy.value < game.energy_to_act then return false end
-- Still not dead ?
if self.dead then return false end
-- Register life for this turn
self.old_life = self.life
-- Ok reset the seen cache
self:resetCanSeeCache()
if self.on_act then self:on_act() end
if self:attr("never_act") then return false end
if not game.zone.wilderness and not self:attr("confused") and not self:attr("terrified") then self:automaticTalents() end
-- Compute bonuses based on actors in FOV
if self:knowTalent(self.T_MILITANT_MIND) and not self:hasEffect(self.EFF_MILITANT_MIND) then
local nb_foes = 0
local act
for i = 1, #self.fov.actors_dist do
act = self.fov.actors_dist[i]
if act and self:reactionToward(act) < 0 and self:canSee(act) then nb_foes = nb_foes + 1 end
end
if nb_foes > 1 then
nb_foes = math.min(nb_foes, 5)
self:setEffect(self.EFF_MILITANT_MIND, 4, {power=self:getTalentLevel(self.T_MILITANT_MIND) * nb_foes * 1.5})
end
end
-- Beckon (chance to move actor and consume energy)
if self:hasEffect(self.EFF_BECKONED) then
self.tempeffect_def[self.EFF_BECKONED].do_act(self, self:hasEffect(self.EFF_BECKONED))
end
-- Paranoid (chance to attack anyone nearby)
if self:hasEffect(self.EFF_PARANOID) then
self.tempeffect_def[self.EFF_PARANOID].do_act(self, self:hasEffect(self.EFF_PARANOID))
end
-- Panicked (chance to run away)
if self:hasEffect(self.EFF_PANICKED) then
self.tempeffect_def[self.EFF_PANICKED].do_act(self, self:hasEffect(self.EFF_PANICKED))
end
self:fireTalentCheck("callbackOnAct")
-- Still enough energy to act ?
if self.energy.value < game.energy_to_act then return false end
if self.sound_random and rng.chance(self.sound_random_chance or 15) then game:playSoundNear(self, self.sound_random) end
-- Cauterize ?
if self:hasEffect(self.EFF_CAUTERIZE) then
local eff = self:hasEffect(self.EFF_CAUTERIZE)
if eff.invulnerable then eff.invulnerable = nil end
end
return true
end
Code: Select all
-- store the original act function
-- store the original act function
local act = _M.act
function _M:act()
local ret = act(self)
-- Break some sustains if certain resources are too low
-- Note: force_talent_ignore_ressources has no effect here
-- consider replacing the minimum resource value of 1 with a number based on the talent and resource
for tid, p in pairs(self.sustain_talents) do
local deact, t = false, self.talents_def[tid]
-- check each possible resource the talent uses
for res, res_def in ipairs(_M.resources_def) do
if (t.remove_on_zero == nil and res_def.depleted_unsustain) or (t.remove_on_zero ~= nil and util.getval(t.remove_on_zero, self, t)) then
if t[res_def.sustain_prop] then
if res == self.RS_STAMINA and (self:hasEffect(self.EFF_ADRENALINE_SURGE) or self:hasEffect(self.EFF_MARTIAL_MAGIC)) then
elseif res == self.RS_MANA and self:hasEffect(self.EFF_MARTIAL_MAGIC) then
else
if res_def.invert_values then
if self[res_def.maxname] and (self[res_def.maxname] - self[res_def.short_name]) < 1 then
deact = true break
end
else
if self[res_def.minname] and (self[res_def.short_name] - self[res_def.minname]) < 1 then
deact = true break
end
end
end
end
end
end
if deact then self:forceUseTalent(tid, {ignore_energy=true}) end
end
return ret
end
ToME Tips - auto-generated spoilers for ToME. - someone else made. I find super awesome, so spreading as well.
Re: Spellsword (formerly Addon reworking Arcane Blade Class)
Not digging in at the moment, but at a glance this should be able to be done just as effectively and much more cleanly with a simple callbackOnAct in the relevant talent. Check if the talent is active > check the resource > force use the talent if the resource is too low.