Cool lets do it together!
I started familiarizing myself with the related functions, the reason there is no CW spell currently is because the spell routines do not handle arguments.
That is, if you type 'cast "spellname" argument' the functions treat argument as either a target object or character.
So the first changes required would be to allow arguments being passed through to spells that can be 'worse' 'better' and so on. A bigger change than I originally thought but it does expand the possibilities for future spells.
Example:
add
char *argument to call_magic, MANUAL_SPELL, and ASPELL definitions.
Code:
int call_magic(struct char_data *caster, struct char_data *cvict, struct obj_data *ovict, int spellnum, int level, int casttype, char *argument)
#define MANUAL_SPELL(spellname, argument) spellname(level, caster, cvict, ovict, argument);
Then update each ASPELL to be ASPELL(spell_name,
argument)
This works in the brief testing I've done.
But is there a better way to go about this before I get too far in ?