fallen/
fallen/new_stuff/
fallen/player/
fallen/player/backup/
fallen/player/store/
/***************************************************************************
 *  Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer,        *
 *  Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe.   *
 *                                                                         *
 *  Merc Diku Mud improvments 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          *
 *  benefitting.  We hope that you share your changes too.  What goes      *
 *  around, comes around.                                                  *
 ***************************************************************************/

#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "merc.h"
#include "player.h"

void do_guide( CHAR_DATA *ch, char *argument )
{
    CHAR_DATA *victim;
    char      arg [MAX_INPUT_LENGTH];

    argument = one_argument( argument, arg );

    if (IS_NPC(ch)) return;

    if (!IS_CLASS(ch, CLASS_MONK) )
    {
	send_to_char("Huh?\n\r",ch);
	return;
    }

    if ( arg[0] == '\0' )
    {
	send_to_char( "Guide whom?\n\r", ch );
	return;
    }
    
    if ( ( victim = get_char_room( ch, arg ) ) == NULL )
    {
	send_to_char( "They aren't here.\n\r", ch );
	return;
    }

    if ( IS_NPC(victim) )
    {
	send_to_char( "Not on NPC's.\n\r", ch );
	return;
    }

    if ( IS_IMMORTAL(victim) )
    {
	send_to_char( "Not on Immortals's.\n\r", ch );
	return;
    }

    if ( ch == victim )
    {
	send_to_char( "You cannot guide yourself.\n\r", ch );
	return;
    }

    if (IS_CLASS(victim, CLASS_MONK))
    {
	send_to_char( "They are already guided.\n\r", ch );
	return;
    }

    if ( victim->level != LEVEL_AVATAR && !IS_IMMORTAL(victim) )
    {
	send_to_char( "You can only guide avatars.\n\r", ch );
	return;
    }

    if (IS_CLASS(victim, CLASS_VAMPIRE) || IS_SET(victim->pcdata->stats[UNI_AFF], VAM_MORTAL))
    {
	send_to_char( "You are unable to guide vampires!\n\r", ch );
	return;
    }

    if (IS_CLASS(victim, CLASS_WEREWOLF))
    {
	send_to_char( "You are unable to guide werewolves!\n\r", ch );
	return;
    }

    if (IS_CLASS(victim, CLASS_DEMON) || IS_SET(victim->special, SPC_CHAMPION))
    {
	send_to_char( "You are unable to guide demons!\n\r", ch );
	return;
    }

    if (IS_CLASS(victim, CLASS_HIGHLANDER))
    {
	send_to_char( "You are unable to guide highlanders.\n\r", ch );
	return;
    }  

	if (IS_CLASS(victim, CLASS_NINJA))
	{
	send_to_char( "You are unable to guide ninjas.\n\r", ch);
	return;
	}

    if (!IS_IMMUNE(victim,IMM_VAMPIRE))
    {
	send_to_char( "You cannot guide an unwilling person.\n\r", ch );
	return;
    }

    if (ch->exp < 50000)
    {
	send_to_char("You cannot afford the 50000 exp required to guide them.\n\r",ch);
	return;
    }

    if (victim->exp < 50000)
    {
	send_to_char("They cannot afford the 50000 exp required to be guided from you.\n\r",ch);
	return;
    }

    ch->exp -= 50000;
    victim->exp -= 50000;

    act("You guide $N in the ways of god.", ch, NULL, victim, TO_CHAR);
    act("$n guide $N in the ways of god.", ch, NULL, victim, TO_NOTVICT);
    act("$n guide you in the way of god.", ch, NULL, victim, TO_VICT);
    victim->level = LEVEL_MONK;
    victim->trust = LEVEL_MONK;
    send_to_char( "You are now a monk.\n\r", victim );
    free_string(victim->lord);
    free_string(victim->clan);
	victim->clan=str_dup(ch->clan);
    victim->lord = str_dup(ch->name);
    victim->class    = CLASS_MONK;
    victim->pcdata->stats[UNI_GEN] = ch->pcdata->stats[UNI_GEN]+1;
    save_char_obj(ch);
    save_char_obj(victim);
    return;
}

void do_mantra( CHAR_DATA *ch, char *argument )
{
    char arg1 [MAX_INPUT_LENGTH];
    char buf[MAX_STRING_LENGTH];
    int improve;
    improve = PMONK; 
    
    argument = one_argument( argument, arg1 );
    
    if (IS_NPC(ch)) return;

    if (!IS_CLASS(ch, CLASS_MONK))
    {
	send_to_char("Huh?\n\r",ch);
	return;
    }

    if (arg1[0] == '\0')
    {
	    send_to_char("     Mantras.\n\r",ch);
	    send_to_char("- Remember to put single quotes ( ' ) around the power.\n\r", ch);
	    if ( ch->pcdata->powers[PMONK] < 1 ) send_to_char("Eyes of God\n\r", ch);
	    if ( ch->pcdata->powers[PMONK] < 2 ) send_to_char("Trio Mantra\n\r", ch);
	    if ( ch->pcdata->powers[PMONK] < 3 ) send_to_char("Sacred Invis\n\r", ch);
	    if ( ch->pcdata->powers[PMONK] < 4 ) send_to_char("Heart of Oak\n\r", ch);
	    if ( ch->pcdata->powers[PMONK] < 5 ) send_to_char("Adamantium Hands\n\r", ch);
	    if ( ch->pcdata->powers[PMONK] < 6 ) send_to_char("Steel Shield\n\r", ch);
	    if ( ch->pcdata->powers[PMONK] < 7 ) send_to_char("Almighty Favor\n\r", ch);
	    if ( ch->pcdata->powers[PMONK] < 8 ) send_to_char("Dark Blaze\n\r", ch);
	    if ( ch->pcdata->powers[PMONK] < 9 ) send_to_char("Celestial Path\n\r", ch);
	    if ( ch->pcdata->powers[PMONK] < 10) send_to_char("Prayer of the Ages\n\r", ch);
	    if ( ch->pcdata->powers[PMONK] < 11) send_to_char("Cloak of Life\n\r", ch);
		return;
    }


	if (!str_cmp(arg1,"eyes of god")) 
    {
    	if ( ch->pcdata->powers[PMONK] > 0 )
    		send_to_char("You already have the Eyes of God Mantra.\n\r", ch);
    	else if ( ch->practice < 10)
    		send_to_char("You don't have the 10 required primal.\n\r", ch);
    	else
    	{
    		ch->pcdata->powers[improve] += 1;
    		ch->practice -= 10;
    		send_to_char("You master the Eyes of God Mantra.\n\r", ch);
    	}
    	return;
    }
    else if (!str_cmp(arg1,"trio mantra"))
    {
    	if ( ch->pcdata->powers[PMONK] > 1 )
    		send_to_char("You already have the Trio Mantra.\n\r", ch);
    	else if ( ch->pcdata->powers[PMONK] < 1 )
    		send_to_char("You need all the mantras before this one to receive this power.\n\r", ch);
    	else if ( ch->practice < 20)
    		send_to_char("You don't have the 20 required primal.\n\r", ch);
    	else
    	{
    		ch->pcdata->powers[improve] += 1;
    		ch->practice -= 20;
    		send_to_char("You master the Trio Mantra.\n\r", ch);
    	}
    	return;
    }
    else if (!str_cmp(arg1,"sacred invis"))
    {
    	if ( ch->pcdata->powers[PMONK] > 2 )
    		send_to_char("You already have the Sacred Invis Mantra.\n\r", ch);
    	else if ( ch->pcdata->powers[PMONK] < 2 )
    		send_to_char("You need all the mantras before this one to receive this power.\n\r", ch);
    	else if ( ch->practice < 30)
    		send_to_char("You don't have the 30 required primal.\n\r", ch);
    	else
    	{
    		ch->pcdata->powers[improve] += 1;
    		ch->practice -= 30;
    		send_to_char("You master the Sacred Invis Mantra.\n\r", ch);
    	}
    	return;
    }
    else if (!str_cmp(arg1,"heart of oak"))
    {
    	if ( ch->pcdata->powers[PMONK] > 3 )
    		send_to_char("You already have the Heart of Oak Mantra.\n\r", ch);
    	else if ( ch->pcdata->powers[PMONK] < 3 )
    		send_to_char("You need all the mantras before this one to receive this power.\n\r", ch);
    	else if ( ch->practice < 40)
    		send_to_char("You don't have the 40 required primal.\n\r", ch);
    	else
    	{
    		ch->pcdata->powers[improve] += 1;
    		ch->practice -= 40;
    		send_to_char("You master the Heart of Oak Mantra.\n\r", ch);
    	}
    	return;
    }
    else if (!str_cmp(arg1,"adamantium hands"))
    {
    	if ( ch->pcdata->powers[PMONK] > 4 )
    		send_to_char("You already have the Adamantium Hands Mantra.\n\r", ch);
    	else if ( ch->pcdata->powers[PMONK] < 4 )
    		send_to_char("You need all the mantras before this one to receive this power.\n\r", ch);
    	else if ( ch->practice < 50)
    		send_to_char("You don't have the 50 required primal.\n\r", ch);
    	else
    	{
    		ch->pcdata->powers[improve] += 1;
    		ch->practice -= 50;
    		send_to_char("You master the Adamantium Hands Mantra.\n\r", ch);
    	}
    	return;
    }
    else if (!str_cmp(arg1,"steel shield"))
    {
    	if ( ch->pcdata->powers[PMONK] > 5 )
    		send_to_char("You already have the Steel Shield Mantra.\n\r", ch);
    	else if ( ch->pcdata->powers[PMONK] < 5 )
    		send_to_char("You need all the mantras before this one to receive this power.\n\r", ch);
    	else if ( ch->practice < 60)
    		send_to_char("You don't have the 60 required primal.\n\r", ch);
    	else
    	{
    		ch->pcdata->powers[improve] += 1;
    		ch->practice -= 60;
    		send_to_char("You master the Steel Shield Mantra.\n\r", ch);
    	}
    	return;
    }
    else if (!str_cmp(arg1,"almighty favor"))
    {
    	if ( ch->pcdata->powers[PMONK] > 6 )
    		send_to_char("You already have the Almighty Favor Mantra.\n\r", ch);
    	else if ( ch->pcdata->powers[PMONK] < 6 )
    		send_to_char("You need all the mantras before this one to receive this power.\n\r", ch);
    	else if ( ch->practice < 70)
    		send_to_char("You don't have the 70 required primal.\n\r", ch);
    	else
    	{
    		ch->pcdata->powers[improve] += 1;
    		ch->practice -= 70;
    		send_to_char("You master the Almighty Favor Mantra.\n\r", ch);
    	}
    	return;
    }
    else if (!str_cmp(arg1,"dark blaze"))
    {
    	if ( ch->pcdata->powers[PMONK] > 7 )
    		send_to_char("You already have the Dark Blaze Mantra.\n\r", ch);
    	else if ( ch->pcdata->powers[PMONK] < 7 )
    		send_to_char("You need all the mantras before this one to receive this power.\n\r", ch);
    	else if ( ch->practice < 80)
    		send_to_char("You don't have the 80 required primal.\n\r", ch);
    	else
    	{
    		ch->pcdata->powers[improve] += 1;
    		ch->practice -= 80;
    		send_to_char("You master the Dark Blaze Mantra.\n\r", ch);
    	}
    	return;
    }
    else if (!str_cmp(arg1,"celestial path"))
    {
    	if ( ch->pcdata->powers[PMONK] > 8 )
    		send_to_char("You already have the Celestial Path Mantra.\n\r", ch);
    	else if ( ch->pcdata->powers[PMONK] < 8 )
    		send_to_char("You need all the mantras before this one to receive this power.\n\r", ch);
    	else if ( ch->practice < 90)
    		send_to_char("You don't have the 90 required primal.\n\r", ch);
    	else
    	{
    		ch->pcdata->powers[improve] += 1;
    		ch->practice -= 90;
    		send_to_char("You master the Celestial Path Mantra.\n\r", ch);
    	}
    	return;
    }
    else if (!str_cmp(arg1,"prayer of the ages"))
    {
    	if ( ch->pcdata->powers[PMONK] > 9 )
    		send_to_char("You already have the Prayer of the Ages Mantra.\n\r", ch);
    	else if ( ch->pcdata->powers[PMONK] < 9 )
    		send_to_char("You need all the mantras before this one to receive this power.\n\r", ch);
    	else if ( ch->practice < 100)
    		send_to_char("You don't have the 100 required primal.\n\r", ch);
    	else
    	{
    		ch->pcdata->powers[improve] += 1;
    		ch->practice -= 100;
    		send_to_char("You master the Prayer of the Ages Mantra.\n\r", ch);
    	}
    	return;
    }
    else if (!str_cmp(arg1,"cloak of life"))
    {
    	if ( ch->pcdata->powers[PMONK] > 10 )
    		send_to_char("You already have the Cloak of Life Mantra.\n\r", ch);
    	else if ( ch->pcdata->powers[PMONK] < 10 )
    		send_to_char("You need all the mantras before this one to receive this power.\n\r", ch);
    	else if ( ch->practice < 100)
    		send_to_char("You don't have the 100 required primal.\n\r", ch);
    	else
    	{
    		ch->pcdata->powers[improve] += 1;
    		ch->practice -= 100;
    		send_to_char("You master the Cloak of Life Mantra.\n\r", ch);
    	}
    	return;
    }
	sprintf(buf,"Mantras Learned (%d).\n\r", ch->pcdata->powers[PMONK]);
	send_to_char(buf,ch);

	return;
}

void do_eyesofgod( CHAR_DATA *ch, char *argument )
{
    if ( IS_NPC(ch) )
	return;
  
  	if ( !IS_CLASS(ch, CLASS_MONK) )
  	{
  	send_to_char("Huh?\n\r", ch);
  	return;
  	}
  	
  	if ( ch->pcdata->powers[PMONK] < 1 )
  	{
  	  send_to_char("You have not learned the Eyes of God Mantra.\n\r", ch);
  	  return;
  	}
  
    if ( IS_SET(ch->act, PLR_HOLYLIGHT) )
    {
	REMOVE_BIT(ch->act, PLR_HOLYLIGHT);
	send_to_char( "Your view shimmers into mortal vision.\n\r", ch );
    }
    else
    {
	send_to_char( "God answers your prayers and gives you his vision.\n\r", ch );
	SET_BIT(ch->act, PLR_HOLYLIGHT);
    }
    return;
}

void do_steelshield( CHAR_DATA *ch, char *argument )
{
    if ( IS_NPC(ch) )
	return;
  
  	if (!IS_CLASS(ch, CLASS_MONK) )
  	{
  	send_to_char("Huh?\n\r", ch);
  	return;
  	}
  	
  	if ( ch->pcdata->powers[PMONK] < 6 )
  	{
  	  send_to_char("You have not learned the Steel Shield Mantra.\n\r", ch);
  	  return;
  	}

/* Remove steel shield in handler.c */
  
    if ( IS_AFFECTED(ch, AFF_STEELSHIELD) )
    {
	REMOVE_BIT( ch->affected_by, AFF_STEELSHIELD );
	send_to_char( "Your steel shield disappears.\n\r", ch );
    }
    else
    {
	send_to_char( "You are surrounded by a steel shield\n\r", ch );
	SET_BIT(ch->affected_by, AFF_STEELSHIELD);
    }
    return;
}

/* Monk Targeting in ninja.c */

void do_almightyfavour( CHAR_DATA *ch, char *argument ) 
{
    int sn;
    int level;
    int spelltype;

	if (IS_NPC(ch)) return;

	if(!IS_CLASS(ch, CLASS_MONK) ) 
	{
		send_to_char("Huh?\n\r", ch );
		return;
	}
	
  	if ( IS_CLASS(ch, CLASS_MONK) && ch->pcdata->powers[PMONK] < 7 )
  	{
  	send_to_char("You have not learned the Almighty Favor Mantra.\n\r", ch);
  	return;
  	}

	if (ch->mana < 1000) 
	{
		send_to_char("You don't have enough mana.\n\r", ch );
		return;
	}

    if ( ( sn = skill_lookup( "godbless" ) ) < 0 ) return;
    spelltype = skill_table[sn].target;
    level = ch->spl[spelltype] * 0.5;
    (*skill_table[sn].spell_fun) ( sn, level, ch, ch );
    WAIT_STATE( ch, 12 );
	ch->mana = ch->mana - 1000;
    return;
}

void do_darkblaze( CHAR_DATA *ch, char *argument )
{
    CHAR_DATA *victim;
    char arg [MAX_INPUT_LENGTH];
    
    argument = one_argument( argument, arg );
    
    if ( arg[0] == '\0' )
    {
      send_to_char("DarkBlaze who?\n\r", ch);
     return;
    }

  	if (!IS_CLASS(ch, CLASS_MONK) )
  	{
  	send_to_char("Huh?\n\r", ch);
  	return;
  	}
  	
  	if ( IS_CLASS(ch, CLASS_MONK) && ch->pcdata->powers[PMONK] < 8 )
  	{
  	send_to_char("You have not learned the Dark Blaze Mantra.\n\r", ch);
  	return;
  	}
  	
  	if (ch->mana < 1000) 
  	{
	send_to_char("You don't have enough mana.\n\r", ch );
	return;
	}
  	
    if ( ( victim = get_char_room( ch, arg ) ) == NULL )
    {
	send_to_char( "They aren't here.\n\r", ch );
	return;
    }


    if (victim == ch )
    {
	send_to_char( "You cannot DarkBlaze yourself!\n\r", ch );
	return;
    }


    if ( !IS_SET(victim->affected_by, AFF_TOTALBLIND) )
    {
    	act("You pray to God and a flash of light blinds $N.",ch,NULL,victim,TO_CHAR);
    	act("$n prays to God and a flash of light blinds $N",ch,NULL,victim,TO_NOTVICT);
    	act("$n prays to God and a flash of light blinds you.",ch,NULL,victim,TO_VICT);
    	SET_BIT(victim->affected_by, AFF_TOTALBLIND);
    	ch->mana -= 1000;
    	return;
    }
    else
        send_to_char("They are already blinded!\n\r", ch);
    return;
}

void do_mclan( CHAR_DATA *ch, char *argument )
{
    char buf[MAX_STRING_LENGTH];
    CHAR_DATA *gch;

    if (IS_NPC(ch)) return;
    if (!IS_CLASS(ch, CLASS_MONK) )
    {
	send_to_char("Huh?\n\r",ch);
	return;
    }

    if (strlen(ch->clan) < 2)
    {
	send_to_char("You are an outcast!\n\r",ch);
	return;
    }

    sprintf( buf, "%s Monks:\n\r", ch->clan );
    send_to_char( buf, ch );
    send_to_char("[      Name      ] [ Hits  % ] [ Mana  % ] [ Move  % ]\n\r", ch );
    for ( gch = char_list; gch != NULL; gch = gch->next )
    {
	if ( IS_NPC(gch) ) continue;
	if ( !IS_CLASS(gch, CLASS_MONK) ) continue;
	if ( !str_cmp(ch->clan,gch->clan) )
	{
	    sprintf( buf,
	    "[%-16s] [%-6d%3d] [%-6d%3d] [%-6d%3d]\n\r",
		capitalize( gch->name ),
		gch->hit,  (gch->hit  * 100 / gch->max_hit ),
		gch->mana, (gch->mana * 100 / gch->max_mana),
		gch->move, (gch->move * 100 / gch->max_move) );
		send_to_char( buf, ch );
	}
    }
    return;
}

void do_sacredinvisibility( CHAR_DATA *ch, char *argument )
{
    if (IS_NPC(ch)) return;
	
	if (!IS_CLASS(ch, CLASS_MONK) )
	{
		send_to_char("Huh?\n\r", ch);
		return;
	}
	
	if (IS_CLASS(ch, CLASS_MONK) && ch->pcdata->powers[PMONK] < 3 )
	{
	  send_to_char("You have not learned the Sacred Invisibility Mantra.\n\r", ch);
	  return;
	}

    if ( IS_SET(ch->act, PLR_WIZINVIS) )
    {
	REMOVE_BIT(ch->act, PLR_WIZINVIS);
	send_to_char( "You appear from a shroud of light.\n\r", ch );
	act( "$n appears from a shroud of light.", ch, NULL, NULL, TO_ROOM );
    }
    else
    {
	send_to_char( "You shield yourself in a shroud of light.\n\r", ch );
	act( "$n is shielded in a shroud of light.", ch, NULL, NULL, TO_ROOM );
	SET_BIT(ch->act, PLR_WIZINVIS);
	ch->move -= 500; 
    }
    return;
}

void do_celestialpath( CHAR_DATA *ch, char *argument )
{
	char arg[MAX_INPUT_LENGTH];
    CHAR_DATA *victim;
    CHAR_DATA *mount;

	one_argument( argument, arg );

	if ( !IS_CLASS(ch, CLASS_MONK) )
	{
		send_to_char("Huh?\n\r", ch);
		return;
	}

	if (IS_CLASS(ch, CLASS_MONK) && ch->pcdata->powers[PMONK] < 9 )
	{
	  send_to_char("You have not learned the Celestial Path Mantra.\n\r", ch);
	  return;
	}

    if ( arg[0] == '\0' )
    {
	send_to_char( "Celestial path to where?\n\r", ch );
	return;
    }
    
    if ( ch->position == POS_FIGHTING )
    {
	send_to_char( "No way! You are fighting.\n\r", ch );
	return;
    }

    if ( ( victim = get_char_world( ch, arg ) ) == NULL )
    {
	send_to_char( "Nobody by that name.\n\r", ch );
	return;
    }

	if ( ch->move < 500 )
	{
	send_to_char( "You don't have the required 500 move.\n\r", ch);
	return;
	}

	if ( !IS_IMMUNE(victim, IMM_SUMMON) && !IS_NPC(victim))
	{
		send_to_char("They do not wish to be astraled to!\n\r", ch);
		return;
	}
	
    act( "You disappear into the celestial plane", ch, NULL, NULL, TO_CHAR );
	act( "$n disappears into the celestial plane.", ch, NULL, NULL, TO_ROOM );
	char_from_room( ch );
	char_to_room( ch, get_room_index(victim->in_room->vnum) );
    act( "You appear infront of $N", ch, NULL, victim, TO_CHAR );
	act( "$n appears infront of $N.", ch, NULL, victim, TO_ROOM );	
	ch->move -= 500;

    do_look( ch, "auto" );
    if ( (mount = victim->mount) == NULL ) return;
    char_from_room( mount );
    char_to_room( mount, get_room_index(victim->in_room->vnum) );
    do_look( mount, "auto" );
    return;
}

void do_palmthrust( CHAR_DATA *ch, char *argument )
{
	char arg[MAX_INPUT_LENGTH];
	CHAR_DATA *victim;
    	int dam;
    	int loop;
	
	one_argument( argument, arg );
	
	if ( !IS_CLASS(ch, CLASS_MONK) )
	{
	send_to_char("Huh?\n\r", ch);
	return;
	}

    	if ( arg[0] == '\0' )
    	{
	send_to_char( "Thrust what?\n\r", ch );
	return;
    	}	
        
   	if ( ( victim = get_char_room( ch, arg ) ) == NULL )
    	{
	send_to_char( "They aren't here.\n\r", ch );
	return;
    	}
    
   	if ( IS_SET(ch->in_room->room_flags,ROOM_SAFE) )
    	{
	send_to_char("Not in a safe room!\n\r", ch);
	return;
    	}

	if ( ch->move < 100 )
	{
	send_to_char( "You don't have the required 100 move.\n\r", ch);
	return;
	}
	if ( ch->mana < 100 )
	{
	send_to_char( "You don't have the required 100 mana.\n\r", ch);
	return;
	}
	
	loop = 0;
	
	while ( loop < 5 && victim->position > POS_DEAD)
	{
	 loop=loop+1;
	 dam=number_range(0,50);
	 
	 if ( dam <= 0)
         { 
           act("Your palm thrust misses $N.", ch, NULL, victim, TO_CHAR);
           act("$n's palm thrust misses you.", ch,NULL, victim, TO_VICT);
           act("$n's palm thrust misses $N.", ch,NULL, victim, TO_NOTVICT);
         }    
         else if ( dam <= 5 && dam >= 1 )
         {
           act("Your palm thrust barely hits $N.", ch, NULL, victim, TO_CHAR);
           act("$n's palm thrust barely hits you.", ch,NULL, victim, TO_VICT);
           act("$n's palm thrust barely hits $N.", ch,NULL, victim, TO_NOTVICT);
	   act("$n's eyes glow bright red for a moment.",ch,NULL,NULL,TO_ROOM);
	   spell_blindness( skill_lookup( "blindness" ), ch->level, ch, victim );
         }
         else if ( dam <= 10 && dam >= 6 )
         {
           act("Your palm thrust thrusts $N weakly.", ch, NULL, victim, TO_CHAR);
           act("$n's palm thrust thrusts you weakly.", ch,NULL, victim, TO_VICT);
           act("$n's palm thrust thrusts $N weakly.", ch,NULL, victim, TO_NOTVICT);
	   act("$n's eyes glow bright blue for a moment.",ch,NULL,NULL,TO_ROOM);
	   spell_heal( skill_lookup( "heal" ), ch->level, ch, ch );
         }
         else if ( dam <= 25 && dam >= 11 )
         {
           act("Your palm thrust thrusts $N.", ch, NULL, victim, TO_CHAR);
           act("$n's palm thrust thrusts you.", ch,NULL, victim, TO_VICT);
           act("$n's palm thrust thrusts $N.", ch,NULL, victim, TO_NOTVICT);
           act("$n's eyes glow bright red for a moment.",ch,NULL,NULL,TO_ROOM);
           spell_magic_missile( skill_lookup( "magic missile" ), ch->level, ch, victim );
         }
         else if ( dam <= 30 && dam >= 26 )
         {
          act("Your palm thrust thrusts $N hard.", ch, NULL, victim, TO_CHAR);
          act("$n's palm thrust thrusts you hard.", ch,NULL, victim, TO_VICT);
          act("$n's palm thrust thrusts $N hard.", ch,NULL, victim, TO_NOTVICT);
          act("$n's eyes glow bright red for a moment.",ch,NULL,NULL,TO_ROOM);
          spell_harm( skill_lookup( "harm" ), ch->level, ch, victim );
         }
         else if ( dam <= 40 && dam >= 31 )
         {
          act("Your palm thrust thrusts $N deeply.", ch, NULL, victim, TO_CHAR);
          act("$n's palm thrust thrusts you deeply.", ch,NULL, victim, TO_VICT);
          act("$n's palm thrust thrusts $N deeply.", ch,NULL, victim, TO_NOTVICT);
	  act("$n's eyes glow bright red for a moment.",ch,NULL,NULL,TO_ROOM);
          spell_faerie_fire( skill_lookup( "faerie fire" ), ch->level, ch, victim );
         }
        else if ( dam <= 50 && dam >= 41 )
        {
          act("Your palm thrust blasts through $N's armor.", ch, NULL, victim, TO_CHAR);
          act("$n's palm thrust blasts through your armor.", ch,NULL, victim, TO_VICT);
          act("$n's palm thrust blasts through $N's armor.", ch,NULL, victim, TO_NOTVICT);
	  act("$n's eyes glow bright red for a moment.",ch,NULL,NULL,TO_ROOM);
          spell_curse( skill_lookup( "curse" ), ch->level, ch, victim );
        }
        else
          send_to_char("Bug: Please inform Eterared.\n\r", ch);
       
        victim->hit -= dam; 
        update_pos(victim);
     }
 
 	ch->mana -= 100;
 	ch->move -= 100;
 
 	WAIT_STATE( ch, skill_table[gsn_kick].beats );
 	
    return;
}

void do_prayofages( CHAR_DATA *ch, char *argument )
{
    char      arg [MAX_INPUT_LENGTH];
    CHAR_DATA *victim;
 
    argument = one_argument( argument, arg );

    if (IS_NPC(ch)) return;
    if (IS_CLASS(ch, CLASS_MONK))
    {
        if (ch->pcdata->powers[PMONK] < 10)
        {
            send_to_char("You haven't learned the Prayer of the Ages mantra.\n\r",ch);
            return;
        }
    }

    else
    {
        send_to_char("Huh?\n\r",ch);
        return;
    }

    if (arg[0] == '\0')
    {
        send_to_char("Who do you wish to be teleported to?\n\r",ch);
        return;
    }

    if ( ( victim = get_char_world( ch, arg ) ) == NULL )
    {
        send_to_char( "Nobody by that name.\n\r", ch );
        return;
    }

    if ( IS_NPC(victim) )
    {
        send_to_char( "Not on NPC's.\n\r", ch );
        return;
    }

    if ( victim == ch )
    {
                send_to_char( "Nothing happens.\n\r", ch);
                return;
    }

    if (!IS_CLASS(victim, CLASS_MONK))
    {
        send_to_char( "Nothing happens.\n\r", ch );
        return;
    }

    if (victim->in_room == NULL)
    {
        send_to_char( "Nothing happens.\n\r", ch );
        return;
    }

    if ( victim->position != POS_STANDING )
    {
        send_to_char( "You are unable to focus on their location.\n\r", ch );
        return;
    }

    send_to_char("You pray to god and vanish in a flash of light.\n\r",ch);
    act("$n utters a prayer to god and vanishes in a flash of light.",ch,NULL,NULL,TO_ROOM);
    char_from_room(ch);
    char_to_room(ch,victim->in_room);
    do_look(ch,"");
    send_to_char("You emerge from a portal in the sky.\n\r",ch);
    act("$n appears from a portal in the sky.",ch,NULL,NULL,TO_ROOM);
    return;

}