/************************************************************************** * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. * * * * Merc Diku Mud improvements copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * * * In order to use any part of this Merc Diku Mud, you must comply with * * both the original Diku license in 'license.doc' as well the Merc * * license in 'license.txt'. In particular, you may not remove either of * * these copyright notices. * * * * Much time and thought has gone into this software and you are * * benefiting. We hope that you share your changes too. What goes * * around, comes around. * *************************************************************************** * ROM 2.4 is copyright 1993-1998 Russ Taylor * * ROM has been brought to you by the ROM consortium * * Russ Taylor (rtaylor@hypercube.org) * * Gabrielle Taylor (gtaylor@hypercube.org) * * Brian Moore (zump@rom.org) * * By using this code, you have agreed to follow the terms of the * * ROM license, in the file Rom24/doc/rom.license * *************************************************************************** * 1stMud ROM Derivative (c) 2001-2004 by Markanth * * http://www.firstmud.com/ <markanth@firstmud.com> * * By using this code you have agreed to follow the term of * * the 1stMud license in ../doc/1stMud/LICENSE * ***************************************************************************/ #include "merc.h" #include "magic.h" #include "interp.h" const struct healer_type { char *name; char *descr; Spell_F *spell; char *words; money_t cost; } healer_table[] = { { "light", "cure light wounds", spell_cure_light, "judicandus dies", 10} , { "serious", "cure serious wounds", spell_cure_serious, "judicandus gzfuajg", 16} , { "critical", "cure critical wounds", spell_cure_critical, "judicandus qfuhuqar", 25} , { "heal", "healing spell", spell_heal, "pzar", 50} , { "blindness", "cure blindness", spell_cure_blindness, "judicandus noselacri", 20} , { "disease", "cure disease", spell_cure_disease, "judicandus eugzagz", 15} , { "poison", "cure poison", spell_cure_poison, "judicandus sausabru", 25} , { "uncurse", "remove a curse", spell_remove_curse, "candussido judifgz", 50} , { "refresh", "restore movement", spell_refresh, "candusima", 5} , { "mana", "restore mana", NULL, "energizer", 10} , { NULL, NULL, NULL, 0} }; Do_Fun (do_heal) { CharData *mob; char arg[MAX_INPUT_LENGTH]; int sn, i; for (mob = ch->in_room->person_first; mob; mob = mob->next_in_room) { if (IsNPC (mob) && IsSet (mob->act, ACT_IS_HEALER)) break; } if (mob == NULL) { chprintln (ch, "You can't do that here."); return; } one_argument (argument, arg); if (NullStr (arg)) { act ("$N says 'I offer the following spells:'", ch, NULL, mob, TO_CHAR); for (i = 0; healer_table[i].name != NULL; i++) chprintlnf (ch, "\t%12s: %24s %ld gold", healer_table[i].name, healer_table[i].descr, healer_table[i].cost); chprintln (ch, "\tType heal <type> to be healed."); return; } for (i = 0; healer_table[i].name != NULL; i++) { if (!str_prefix (arg, healer_table[i].name)) break; } if (healer_table[i].name == NULL) { act ("$N says 'Type 'heal' for a list of spells.'", ch, NULL, mob, TO_CHAR); return; } if (!check_worth (ch, healer_table[i].cost, VALUE_GOLD)) { act ("$N says 'You do not have enough gold for my services.'", ch, NULL, mob, TO_CHAR); return; } WaitState (ch, PULSE_VIOLENCE); deduct_cost (ch, healer_table[i].cost, VALUE_GOLD); add_cost (mob, healer_table[i].cost, VALUE_GOLD); act ("$n utters the words '$T'.", mob, NULL, healer_table[i].words, TO_ROOM); if (healer_table[i].spell == NULL) { ch->mana += dice (2, 8) + mob->level / 3; ch->mana = Min (ch->mana, ch->max_mana); chprintln (ch, "A warm glow passes through you."); return; } if ((sn = spell_lookup (healer_table[i].spell)) == -1) return; (*healer_table[i].spell) (sn, mob->level, mob, ch, TARGET_CHAR); }