Class idea: Cryomancer

Any new ideas that you'd like to see in the next version of ToME 2.x.x post here

Moderator: Moderator

Post Reply
Message
Author
Lord Estraven
Uruivellas
Posts: 718
Joined: Tue Dec 13, 2005 12:35 am

Class idea: Cryomancer

#1 Post by Lord Estraven »

Since cold-based spells are a bit underrepresented in the schools system, I came up with a warrior-mage class that uses ice magic. The skills tree would be as follows:

Code: Select all

Combat: +1, 0.8
- Weaponmastery: +1, 0.8

Sneakiness: +1, 0.9
- Stealth: +1, 0.4
- Disarming: +1, 0.9

Magic: +1, 0.8
- Magic-device: +1, 1
- Cryomancy: +1, 1

Spirituality: 0, 0.3
- Prayer: 0, 0.5

Monster-lore: 0, 0.5
Cryomancy would have its own mkey. It would be based on INT and contain the following spells, which would not be affected by spell power...

1. Sense Heat (level 1, 3 SP)
Detects monsters up to 25 spaces around the player, and gives enhanced infravision for (skill level) + d10 turns.
At skill level 5 it detects traps, doors, and stairs.
At skill level 10 it detects invisible monsters.
At skill level 15 it grants See Invisible for (skill level) + d10 turns.

2. Frostbite (level 3, 8 SP)
Imbues your attacks with cold damage for (skill level / 2) + d20 turns. Damage per attack is (skill level) + d25.
At skill level 15 it becomes ice damage.
At skill level 25 it splashes to the spaces adjacent to the targeted monster.

3. Frozen Blade (level 7, 12 SP)
Conjures a temporary weapon made of ice - a sword, a spear, a mace, or an axe (all 25% chance, all 2d6). The weapon has a (skill level / 2)% chance of being a randart and a (skill level)% chance of being a double ego, otherwise it will be ego; ego attributes may NOT include "Flaming" or "Elemental".

4. Song of Winter (level 14, 16 SP)
Heals 30% of max HP. Can be cast while blind or confused.
At skill level 18 it cures poison.
At skill level 22 it cures cuts and stunning
At skill level 25 it cures confusion and blindness, and identifies your equipment and inventory items.

5. Icy Armor (level 20, 20 SP)
Creates a shield of ice around your body. The shield lasts (skill level) + d25 turns, during which time it gives resistance to acid, cold, and electricity, and retaliates against foes for (skill level) + d15 damage.
At skill level 25 the shield gives resistance to poison.
At skill level 30 the shield finally gives resistance to fire.

6. Iceheart (level 25, 25 SP)
Grants heroism and gives a speed bonus of (skill level / 10) for (skill level / 2) + d10 turns.
At skill level 35 it also makes you berserk.
At skill level 40 it also makes you more accurate in combat.


As you can see this would be a melee oriented class, with no direct attack spells and no archery. The major weakness would probably be ranged combat.

Also, Cryomancy skill would have another quirk. It would grant resistance to cold at level 10 and immunity at level 30, but any level of Cryomancy would give the character fire vulnerability.

(I was thinking it could also prevent fire immunity by any means, but that would make Mount Doom unfeasible, so I think it would be a non-starter.)

How does this sound? Does it fit sanely into the magic system? Any changes needed?

(I could set up a git branch for this, but I kind of want to wait until the magic stuff is ported to C++, so as not to make more work for AH.)

AnonymousHero
Spiderkin
Posts: 482
Joined: Sat Mar 18, 2006 12:48 pm

Re: Class idea: Cryomancer

#2 Post by AnonymousHero »

I'll just say straight off that I'm not likely to want to put more work into porting Lua spells. I'm pretty close to having ported all the existing ones (at least the major bits of them, namely the actual spell effects) and I'm about ready to claw my eyes out :).

I have written a little tool to help automate some of the most tedious bits, but it's still a pain.

Hopefully, I'll have gotten rid of the Lua-based spells entirely sometime during the weekend. (No promises, though.)

As for the class: It looks kind of interesting; a sort of cold-based warrior type.

I think you're right that preventing Fire Immunity would basically make Mt. Doom (and perhaps some of the special levels too) impossible. Perhaps the cryomancer could have a spell which would let him turn any adjacent tiles into Ice tiles? That would make Mt. Doom much more difficult ("wasting" turns), but not completely impossible.

Lord Estraven
Uruivellas
Posts: 718
Joined: Tue Dec 13, 2005 12:35 am

Re: Class idea: Cryomancer

#3 Post by Lord Estraven »

Hmm that's an interesting idea. Maybe it could be a short-range attack spell that, as a side effect, lays down ice around you. On the other hand ice is very problematic for low-level characters, they slip and slide and bang their heads on it. :P But I think fire vulnerability in the early to mid game would keep them from being too strong. As for late game, everyone in the late game has to be crazily powerful, what with the monster leveling.

And sorry the porting is proving to be such a pain. :| I'd try to help out, but I literally know nothing at all of C++.

Lord Estraven
Uruivellas
Posts: 718
Joined: Tue Dec 13, 2005 12:35 am

Re: Class idea: Cryomancer

#4 Post by Lord Estraven »

Hey wow, I had no idea the C++ port made things so simple. This is great. :shock:

I'm going to see if I can set up the Cryomancer class in a branch of cpp-porting and get it to work...

Lord Estraven
Uruivellas
Posts: 718
Joined: Tue Dec 13, 2005 12:35 am

Re: Class idea: Cryomancer

#5 Post by Lord Estraven »

Aaand done. Or so it seems. The updated spells3.cc file compiles fine, so the hardcoded end of things probably works; but I wasn't able to test for bugs in the edit and lua files, due to GCC choking on lua_bind.cc...

Code: Select all

/home/proteus/Games/tome2-cryomancer/src/lua_bind.cc: In function ‘bool_ lua_item_tester(object_type*)’:
/home/proteus/Games/tome2-cryomancer/src/lua_bind.cc:141:57: warning: deprecated conversion from string constant to ‘char*’
/home/proteus/Games/tome2-cryomancer/src/lua_bind.cc: In function ‘int get_random_spell(const char*, int)’:
/home/proteus/Games/tome2-cryomancer/src/lua_bind.cc:246:50: error: new declaration ‘int get_random_spell(const char*, int)’
/home/proteus/Games/tome2-cryomancer/src/externs.h:1807:13: error: ambiguates old declaration ‘s32b get_random_spell(const char*, int)’
/home/proteus/Games/tome2-cryomancer/src/lua_bind.cc: In function ‘char* lua_input_box(const char*, int)’:
/home/proteus/Games/tome2-cryomancer/src/lua_bind.cc:515:10: warning: deprecated conversion from string constant to ‘char*’
make[2]: *** [src/CMakeFiles/tome.dir/lua_bind.cc.o] Error 1
make[1]: *** [src/CMakeFiles/tome.dir/all] Error 2
make: *** [all] Error 2
Not sure if that's a bug, or necessary stuff just not being implemented yet.

Edit: wait a minute, you said "get rid of Lua basd spells entirely"... Do you mean the descriptions too? Gah. Well, at least I'll get another chance to look the code over for bugs.

Edit 2: D'oh I'm an idiot, the above failure is a bug and not hard to fix... Just make the function an int in externs.h. Duh.

Edit 3: Well that failed spectacularly. Compiled, but crashed on runtime... Looks like it's not in a working state yet, which I frankly should have expected given the nature of the T2 code.

Yeah, never mind for now.

AnonymousHero
Spiderkin
Posts: 482
Joined: Sat Mar 18, 2006 12:48 pm

Re: Class idea: Cryomancer

#6 Post by AnonymousHero »

You may have just got the code at a bad commit; I do do full builds once in a while, but mostly it's incremental builds. I'm not sure how good CMake's generated makefiles are at detecting what needs to be rebuilt.

Oh, and yes: *Everything* spell related is going to be moved to C++ soon. I've just completed moving all the "info" functions. I think that's the last major hurdle to just moving everything else over in bulk. (But there are some extra things which might be a little tricky... sticks, for example.)

I'll push those changes now... they should at least compile and ToME should at least be semi-playable. There's some issue with spell descriptions in Theme, but I won't bother fixing it since all the spell-related stuff is basically just a load of hacks. I'll focus on getting moving the rest of the code... which would enable me to get rid of those hacks.

Lord Estraven
Uruivellas
Posts: 718
Joined: Tue Dec 13, 2005 12:35 am

Re: Class idea: Cryomancer

#7 Post by Lord Estraven »

Ah thanks. I guess I'll try porting the rest of the Cryomancer stuff once that's done; maybe separate some spells, and/or add some more that involve conjuring stuff out of ice.

Lord Estraven
Uruivellas
Posts: 718
Joined: Tue Dec 13, 2005 12:35 am

Re: Class idea: Cryomancer

#8 Post by Lord Estraven »

Hmm. Seeing as the spell costs are constant, I'm thinking I'll implement this in cmd7.c and tables.c, like Mindcraft and Necromancy. Not as "nice" as doing it like the schools, and more work for me, but this way it should be possible to pull it in without causing problems with the C++ port stuff.

AnonymousHero
Spiderkin
Posts: 482
Joined: Sat Mar 18, 2006 12:48 pm

Re: Class idea: Cryomancer

#9 Post by AnonymousHero »

If you want to try to minimise the "disruption", you might have a look at the sp_water.cc and sp_water.hpp files that have just been pushed to the cpp-porting branch.

Right now, only the "invoke()" and "short_info()" methods are actually used, but once I complete moving all the spells into a "spell" subclass, I'll rip out most of s_aux.lua and start using all the spell member functions/variables.

(Oh, and beware bugs... I'm trying to keep up momentum and not really doing much testing until I can replace the spell related stuff in s_aux.lua.)

Lord Estraven
Uruivellas
Posts: 718
Joined: Tue Dec 13, 2005 12:35 am

Re: Class idea: Cryomancer

#10 Post by Lord Estraven »

Hmm thanks. I'm already mostly done with the Mindcraft-style reworking though, so I think I'll keep that.

Lord Estraven
Uruivellas
Posts: 718
Joined: Tue Dec 13, 2005 12:35 am

Re: Class idea: Cryomancer

#11 Post by Lord Estraven »

Hmmf. Frozen Blade doesn't seem to be very useful. Maybe because the Ice Sword is too heavy, maybe because of the lack of intrinsic Vampirism as with Necromantic Teeth. It's thematically nice but I think I may remove it.

Post Reply