Improvements to the Alchemist Class
Posted: Tue Dec 28, 2010 12:27 am
I've been trying to get an alchemist in the end game for quite a while now (finally got one in the high peak in b13), but the class suffers from some serious shortcomings. The main weaknesses of the class are that it's as fragile as the other mage classes, but has no inherent escape, healing, detection, or significant crowd control talents. The class can still be viable (and interesting) if it's other abilities make up the slack, but that is not currently the case.
The first issue is the golem. An alchemist is pretty crippled without it's melee-oriented permanent pet, but the pet creates a number of frustrating problems for the player. The first obvious problem is that the golem gets in the way of the alchemists attacks in a typical combat:
-------------
A gMMMM
-------------
The dilemma is that either the alchemist needs to be in front of the golem, yielding the pet useless, or must give up on alchemist bombs (depending on terrain, and talents) and his channel staff ability. On many turns the player will not have any useful abilities to employ and can only skip his move. To get around this I propose:
A: Make the Channel Staff talent an indirect ability that can fire over the golem and increase it's range to 20 (like most other mage abilities)
This will guarantee that, resources permitting, the alchemist can almost always do something useful with each round of combat. I have included code below that effects this change in staff-combat.lua.
The biggest problem the golem creates, however, is danger to the alchemist. Outside of a few talents, the player has no direct control over the golem, which aggressively pursues all monsters it sees whether within sight of the alchemist or not. The result is that the golem will frequently attract hostile mobs from off screen (a good way to get killed by your pet), get itself damaged or killed , and generally be out of position when it's really needed. The talents, Golem Knockback, Golem Crush, and Invoke Golem become mandatory to mitigate these problems, but are not nearly enough to keep the pet from getting its master killed. I have posted a summary of needed pet management changes (for all classes, not just alchemists) at http://forums.te4.org//viewtopic.php?f=39&t=23349. The danger to the alchemist can be at least somewhat reduced with one simple change:
B. At a minimum implement a leash (~3 spaces) on the golem to keep it from running too far away from the player.
The next issue is that the golem creates a new vulnerability for the alchemist versus AOE damage. Currently the golem gets some fire resistance as it levels, but otherwise has minimal defense against magic. The result is that in AOE situations, the golem takes more damage than the player so that the character+pet combination takes more than twice as much damage as a single player alone would. For example, a storm drake breath that would normally do 100 points of damage to a single actor will usually hit both the alchemist and the golem for 200 points of total damage. All of this damage must eventually be healed, but the tools to heal the golem are limited (and slow), generally dooming the golem to death before the end of longer fights such as bosses or more involved encounters in the end game. To add insult to injury, with the golem following him, the alchemist is approximately four times a vulnerable to aoe traps (that appear frequently in the later dungeons) as other characters, particularly in corridors: The alchemist sets off the trap and hits himself and the golem. The golem, following the alchemist, then runs over the same trap hitting itself and the alchemist each again, so that both actors take trap damage twice.
In order to mitigate these problems, I propose:
C: Give the golem half the resistances of the player (with any from armor added on top) and enable the talents in the cunning/survival tree at character creation.
With the new infusion/rune system, the alchemist is in desperate need of slots dedicated to healing and escape at a minimum and for mana regeneration as a priority. The talent category point to get the trap avoidance skills is a huge cost to this class.
The alchemist has no real built in mana recovery skills, besides using certain gems with bombs to restore some mana at the expense of damage or other effects. As a result, it can be tricky keeping mana up in longer fights. Several crucial abilities have huge mana costs that are just not viable within this balance however:
D: Reduce the mana cost of Stone Touch (~50), and Blunt Thrust (~10), and Shockwave Bomb (~30). Increase the damage of Shockwave Bomb (~10%) to reflect it's longer cooldown compared to the Throw Bomb talent.
The last issue addresses one of the more interesting talents in the Alchemist repertoir: Mount Golem. This talent has always seemed to me to be a bit cumbersome to use because once mounted, you're stuck for the duration. (It is quite useful, however, for keeping your golem under control.) This can be resolved by making the talent a sustained ability. By the end game, however, a mounted alchemist can will have around 3000 hit points, and with the improvements I have proposed here, this talent may be unbalanced. To compensate for this, the alchemists long range AOE abilities Throw Bomb and Shockwave Bomb should be disabled while mounted, to require the character to close range with enemies in a much more melee-centric fashion. Channel staff should stay enabled to ensure there is always a viable action for each move. The level in the Mount Golem talent would effect how well melee abilities are used:
E: Make Mount Golem a sustained ability, and limit the talent level (while mounted) of the Golem Knockback, Golem Crush, and Golem Pound talents to be no more than the talent level of Mount Golem.
As one of the first available classes in the game, I believe it's important that the Alchemist be viable in every zone from the Trollmire to the High Peak. I hope the changes I've suggested here will help move the class in that direction.
My LUA skills are pretty limited, but I have managed to work out how to change the code for channel staff.
Updated channel staff code:
The first issue is the golem. An alchemist is pretty crippled without it's melee-oriented permanent pet, but the pet creates a number of frustrating problems for the player. The first obvious problem is that the golem gets in the way of the alchemists attacks in a typical combat:
-------------
A gMMMM
-------------
The dilemma is that either the alchemist needs to be in front of the golem, yielding the pet useless, or must give up on alchemist bombs (depending on terrain, and talents) and his channel staff ability. On many turns the player will not have any useful abilities to employ and can only skip his move. To get around this I propose:
A: Make the Channel Staff talent an indirect ability that can fire over the golem and increase it's range to 20 (like most other mage abilities)
This will guarantee that, resources permitting, the alchemist can almost always do something useful with each round of combat. I have included code below that effects this change in staff-combat.lua.
The biggest problem the golem creates, however, is danger to the alchemist. Outside of a few talents, the player has no direct control over the golem, which aggressively pursues all monsters it sees whether within sight of the alchemist or not. The result is that the golem will frequently attract hostile mobs from off screen (a good way to get killed by your pet), get itself damaged or killed , and generally be out of position when it's really needed. The talents, Golem Knockback, Golem Crush, and Invoke Golem become mandatory to mitigate these problems, but are not nearly enough to keep the pet from getting its master killed. I have posted a summary of needed pet management changes (for all classes, not just alchemists) at http://forums.te4.org//viewtopic.php?f=39&t=23349. The danger to the alchemist can be at least somewhat reduced with one simple change:
B. At a minimum implement a leash (~3 spaces) on the golem to keep it from running too far away from the player.
The next issue is that the golem creates a new vulnerability for the alchemist versus AOE damage. Currently the golem gets some fire resistance as it levels, but otherwise has minimal defense against magic. The result is that in AOE situations, the golem takes more damage than the player so that the character+pet combination takes more than twice as much damage as a single player alone would. For example, a storm drake breath that would normally do 100 points of damage to a single actor will usually hit both the alchemist and the golem for 200 points of total damage. All of this damage must eventually be healed, but the tools to heal the golem are limited (and slow), generally dooming the golem to death before the end of longer fights such as bosses or more involved encounters in the end game. To add insult to injury, with the golem following him, the alchemist is approximately four times a vulnerable to aoe traps (that appear frequently in the later dungeons) as other characters, particularly in corridors: The alchemist sets off the trap and hits himself and the golem. The golem, following the alchemist, then runs over the same trap hitting itself and the alchemist each again, so that both actors take trap damage twice.
In order to mitigate these problems, I propose:
C: Give the golem half the resistances of the player (with any from armor added on top) and enable the talents in the cunning/survival tree at character creation.
With the new infusion/rune system, the alchemist is in desperate need of slots dedicated to healing and escape at a minimum and for mana regeneration as a priority. The talent category point to get the trap avoidance skills is a huge cost to this class.
The alchemist has no real built in mana recovery skills, besides using certain gems with bombs to restore some mana at the expense of damage or other effects. As a result, it can be tricky keeping mana up in longer fights. Several crucial abilities have huge mana costs that are just not viable within this balance however:
D: Reduce the mana cost of Stone Touch (~50), and Blunt Thrust (~10), and Shockwave Bomb (~30). Increase the damage of Shockwave Bomb (~10%) to reflect it's longer cooldown compared to the Throw Bomb talent.
The last issue addresses one of the more interesting talents in the Alchemist repertoir: Mount Golem. This talent has always seemed to me to be a bit cumbersome to use because once mounted, you're stuck for the duration. (It is quite useful, however, for keeping your golem under control.) This can be resolved by making the talent a sustained ability. By the end game, however, a mounted alchemist can will have around 3000 hit points, and with the improvements I have proposed here, this talent may be unbalanced. To compensate for this, the alchemists long range AOE abilities Throw Bomb and Shockwave Bomb should be disabled while mounted, to require the character to close range with enemies in a much more melee-centric fashion. Channel staff should stay enabled to ensure there is always a viable action for each move. The level in the Mount Golem talent would effect how well melee abilities are used:
E: Make Mount Golem a sustained ability, and limit the talent level (while mounted) of the Golem Knockback, Golem Crush, and Golem Pound talents to be no more than the talent level of Mount Golem.
As one of the first available classes in the game, I believe it's important that the Alchemist be viable in every zone from the Trollmire to the High Peak. I hope the changes I've suggested here will help move the class in that direction.
My LUA skills are pretty limited, but I have managed to work out how to change the code for channel staff.
Updated channel staff code:
Code: Select all
newTalent{
name = "Channel Staff",
type = {"spell/staff-combat", 1},
require = spells_req1,
points = 5,
mana = 5,
tactical = {
ATTACK = 10,
},
range = 20, --INCREASE RANGE
direct_hit = true, --MAKE NONPROJECTILE
reflectable = true,
-- proj_speed = 20, -- MAKE NONPROJECTILE
requires_target = true,
getDamageMod = function(self, t) return self:combatTalentWeaponDamage(t, 0.4, 1.1) end,
action = function(self, t)
local weapon = self:hasStaffWeapon()
if not weapon then
game.logPlayer(self, "You need a staff to use this spell.")
return
end
local combat = weapon.combat
local trail = "firetrail"
local particle = "bolt_fire"
local explosion = "flame"
local damtype = combat.damtype
if damtype == DamageType.COLD then explosion = "freeze" particle = "ice_shards" trail = "icetrail"
elseif damtype == DamageType.ACID then explosion = "acid" particle = "bolt_acid" trail = "acidtrail"
elseif damtype == DamageType.LIGHTNING then explosion = "lightning_explosion" particle = "bolt_lightning" trail = "lightningtrail"
elseif damtype == DamageType.LIGHT then explosion = "light" particle = "bolt_light" trail = "lighttrail"
elseif damtype == DamageType.DARKNESS then explosion = "dark" particle = "bolt_dark" trail = "darktrail"
elseif damtype == DamageType.NATURE then explosion = "slime" particle = "bolt_slime" trail = "slimetrail"
elseif damtype == DamageType.BLIGHT then explosion = "slime" particle = "bolt_slime" trail = "slimetrail"
else explosion = "manathrust" particle = "bolt_arcane" trail = "arcanetrail" damtype = DamageType.ARCANE
end
local tg = {type="hit", range=self:getTalentRange(t), talent=t} -- MAKE INDIRECT
local x, y = self:getTarget(tg)
if not x or not y then return nil end
-- Compute damage
local dam = self:combatDamage(combat)
local damrange = self:combatDamageRange(combat)
dam = rng.range(dam, dam * damrange)
dam = self:spellCrit(dam)
dam = dam * t.getDamageMod(self, t)
self:project(tg, x, y, damtype, dam, {type=explosion}) -- MAKE INDIRECT
game:playSoundNear(self, "talents/arcane")
return true
end,
info = function(self, t)
local damagemod = t.getDamageMod(self, t)
return ([[Channel raw mana through your staff, calling down a bolt of your staff's damage type doing %d%% staff damage.
This attack always has a 100%% chance to hit and ignores target armour.]]):
format(damagemod * 100)
end,
}