Was looking through the locate object spell declaration, and
noticed it said it was broken. Here's a fix, and a simple way to get
arguments to a spell w/o target, etc.
I'm only curious why this hadn't been done before.
Okay, in structs.h, right under last_tell (in the player_specials)
section, add the line
*spellarg;
In utils.h, in the macros, add a define;
#define GET_LAST_SPELL(ch) (ch->player_specials->spellarg)
In spells.c, remove the line which reads:
strcpy(name,fname(i->name));
and replace it with .....
strcpy(name,GET_LAST_SPELL(ch));
And, in spell_parser.c in the ACMD(do_cast), right under the part which
has something like..
/* Find the target */
if(t != NULL) {
}
Anyway, ticked away inside those if braces, preferably as the last
statement, add the line
GET_LAST_SPELL(ch)=str_dup(t);
Thats it.. 4 lines, you're all done. Plus, you get to use it
later for neat spell args.... If you're curious, do cast looks for
arguments, so, you'll never have to worry about GET_SPELL_LAST(ch) being
set to NULL, as long as you say that the spell requires an argument.
PjD
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST