rm6/
rm6/clans/
rm6/councils/
rm6/deity/
rm6/doc/mudprogs/
rm6/exchange/
rm6/gods/
rm6/homes/
rm6/nations/
rm6/player/
rm6/player/a/
rm6/src/RCS/
rm6/src/dmalloc/
rm6/src/dmalloc/bin/
rm6/src/dmalloc/include/
rm6/src/dmalloc/lib/
rm6/src/scripts/
rm6/src/utils/
/***************************************************************************
*	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			   *
***************************************************************************/

/***************************************************************************
*    Ported to Smaug 1.4 by Desden, el Chaman Tibetano in November 1998    *
*           ( Jose Luis Sogorb ) Email: jlalbatros@retemail.es          *
*                                                                          *
***************************************************************************/

#include "mud.h"

void do_heal( CHAR_DATA * ch, char *argument )
{
   CHAR_DATA *mob;
   char arg[MAX_INPUT_LENGTH];
   int cost, sn;
   SPELL_FUN *spell;
   char *words;

   /*
    * Search for an act_healer 
    */
   for( mob = ch->in_room->first_person; mob; mob = mob->next_in_room )
   {
      if( IS_NPC( mob ) && xIS_SET( mob->act, ACT_HEALER ) )
         break;
   }

   if( mob == NULL )
   {
      send_to_char( "You can't do that here.\r\n", ch );
      return;
   }

   one_argument( argument, arg );

   if( arg[0] == '\0' )
   {
      /*
       * display price list 
       */
      act( AT_PLAIN, "$N says 'I offer the following spells:'", ch, NULL, mob, TO_CHAR );
      send_to_char( "  light: cure light wounds          25 silver\r\n", ch );
      send_to_char( "  serious: cure serious wounds      30 silver\r\n", ch );
      send_to_char( "  critical: cure critical wounds    35 silver\r\n", ch );
      send_to_char( "  heal: healing spell               40 silver\r\n", ch );
      send_to_char( "  blind: cure blindness             20 silver\r\n", ch );
      send_to_char( "  poison:  cure poison              20 silver\r\n", ch );
      send_to_char( "  curse: remove curse               20 silver\r\n", ch );
      send_to_char( "  refresh: restore movement         30 silver\r\n", ch );
      send_to_char( "  mana:  restore mana	          35 silver\r\n", ch );
      send_to_char( "  life:  life force                 60 silver\r\n", ch );
      send_to_char( "  armor: armor                      20 silver\r\n", ch );
      send_to_char( "  bless: bless                      20 silver\r\n", ch );
      send_to_char( "  blur:  blur                       20 silver\r\n", ch );
      send_to_char( "  devil: devils might               25 silver\r\n", ch );
      send_to_char( "  dragon: dragon wit                30 silver\r\n", ch );
      send_to_char( "  elven: elven beauty               30 silver\r\n", ch );
      send_to_char( "  fire: fireshield                  32 silver\r\n", ch );
      send_to_char( "  flight: flight                    10 silver\r\n", ch );
      send_to_char( "  float: float                      10 silver\r\n", ch );
      send_to_char( "  haste: haste                      35 silver\r\n", ch );
      send_to_char( "  ices: iceshield                   32 silver\r\n", ch );
      send_to_char( "  invis: invis                      15 silver\r\n", ch );
      send_to_char( "  kindr: kindred strength           20 silver\r\n", ch );
      send_to_char( "  lepre: leprechaun fortune         25 silver\r\n", ch );
      send_to_char( "  sagac: sagacity                   30 silver\r\n", ch );
      send_to_char( "  sanc: sanctuary                   90 silver\r\n", ch );
      send_to_char( "  shield: shield                    32 silver\r\n", ch );
      send_to_char( "  slink:  slink                     30 silver\r\n", ch );
      send_to_char( "  troll: trollish vigor             30 silver\r\n", ch );
      send_to_char( "  vali: valiance                    30 silver\r\n", ch );
      send_to_char( " Type heal <type> to be healed.\r\n", ch );
      return;
   }

   if( !str_cmp( arg, "light" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "cure light" );
      words = "judicandus dies";
      cost = 25;
   }

   else if( !str_cmp( arg, "serious" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "cure serious" );
      words = "judicandus gzfuajg";
      cost = 30;
   }

   else if( !str_cmp( arg, "critical" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "cure critical" );
      words = "judicandus qfuhuqar";
      cost = 35;
   }

   else if( !str_cmp( arg, "heal" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "heal" );
      words = "pzar";
      cost = 40;
   }

   else if( !str_cmp( arg, "blind" ) )
   {
      spell = spell_cure_blindness;
      sn = skill_lookup( "cure blindness" );
      words = "judicandus noselacri";
      cost = 20;
   }

   else if( !str_cmp( arg, "poison" ) )
   {
      spell = spell_cure_poison;
      sn = skill_lookup( "cure poison" );
      words = "judicandus sausabru";
      cost = 20;
   }

   else if( !str_cmp( arg, "curse" ) )
   {
      spell = spell_remove_curse;
      sn = skill_lookup( "remove curse" );
      words = "candussido judifgz";
      cost = 20;
   }

   else if( !str_cmp( arg, "mana" ) )
   {
      spell = NULL;
      sn = -1;
      words = "energizer";
      cost = 35;
   }

   else if( !str_cmp( arg, "refresh" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "refresh" );
      words = "candusima";
      cost = 30;
   }

   else if( !str_cmp( arg, "life" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "life force" );
      words = "woedsajus";
      cost = 60;
   }

   else if( !str_cmp( arg, "armor" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "armor" );
      words = "woedsajuse";
      cost = 20;
   }

   else if( !str_cmp( arg, "bless" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "bless" );
      words = "woedsajusw";
      cost = 20;
   }

   else if( !str_cmp( arg, "blur" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "blur" );
      words = "woedsajusq";
      cost = 20;
   }

   else if( !str_cmp( arg, "devil" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "devils might" );
      words = "woedsajustr";
      cost = 25;
   }

   else if( !str_cmp( arg, "dragon" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "dragon wit" );
      words = "woedsajuste";
      cost = 30;
   }

   else if( !str_cmp( arg, "elven" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "elven beauty" );
      words = "woedsajustw";
      cost = 30;
   }

   else if( !str_cmp( arg, "fire" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "fireshield" );
      words = "woedsajustq";
      cost = 32;
   }

   else if( !str_cmp( arg, "flight" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "flight" );
      words = "woedsajusta";
      cost = 10;
   }

   else if( !str_cmp( arg, "float" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "float" );
      words = "woedsajustz";
      cost = 10;
   }

   else if( !str_cmp( arg, "haste" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "haste" );
      words = "woedsajustc";
      cost = 35;
   }

   else if( !str_cmp( arg, "ices" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "iceshield" );
      words = "woedsajustx";
      cost = 35;
   }

   else if( !str_cmp( arg, "invis" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "invis" );
      words = "woedsajustn";
      cost = 15;
   }

   else if( !str_cmp( arg, "kindr" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "kindred strength" );
      words = "woedsajustl";
      cost = 20;
   }

   else if( !str_cmp( arg, "lepre" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "leprechaun fortune" );
      words = "woedsajustm";
      cost = 25;
   }

   else if( !str_cmp( arg, "sagac" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "sagacity" );
      words = "woedsajustmz";
      cost = 30;
   }

   else if( !str_cmp( arg, "sanc" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "sanctuary" );
      words = "woedsajustmx";
      cost = 90;
   }

   else if( !str_cmp( arg, "shield" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "shield" );
      words = "woedsajustmb";
      cost = 32;
   }

   else if( !str_cmp( arg, "slink" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "slink" );
      words = "woedsajustmw";
      cost = 30;
   }

   else if( !str_cmp( arg, "troll" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "trollish vigor" );
      words = "woedsajustme";
      cost = 30;
   }

   else if( !str_cmp( arg, "vali" ) )
   {
      spell = spell_smaug;
      sn = skill_lookup( "valiance" );
      words = "woedsajustmd";
      cost = 30;
   }

   else
   {
      act( AT_PLAIN, "$N says ' Type 'heal' for a list of spells.'", ch, NULL, mob, TO_CHAR );
      return;
   }

   if( cost > ch->silver )
   {
      act( AT_PLAIN, "$N says 'You do not have enough money for my services.'", ch, NULL, mob, TO_CHAR );
      return;
   }

   WAIT_STATE( ch, PULSE_VIOLENCE );
   ch->silver -= cost;
   act( AT_PLAIN, "$n utters the words '$T'.", mob, NULL, words, TO_ROOM );

   if( spell == NULL )
   {
      ch->mana += dice( 2, 8 ) + ch->level / 3;
      ch->mana += UMIN( ch->level, ch->max_mana - ch->mana );
      send_to_char( "A warm glow passes through you.\r\n", ch );
      return;
   }

   if( sn == -1 )
      return;

   spell( sn, ch->level, mob, ch );
}

/*********   End of code *****************************************/