cotn/notes/
cotn/src/
/*			  <(()Seeds of Hate:  Swords & Sorcery Edition())>					 |
|					    _\|::>< Ghoul Class ><::|/_								 |
|						  |Class Tier Number: I|								 |
|							  |Coder: Trent|									 |
|  *Ghoul is an original class made for Seeds of Hate, Swords & Sorcery Edition! |
|	Please don't copy without permission and due credit!						 |
|	Thanks.																	     |
|		 -Trent, God of PaiN!   (ASDF!)											 |
X--------------------------------------------------------------------------------X
*/
/***************************************************************************
 *                                 _/                            _/        *
 *      _/_/_/  _/_/      _/_/_/  _/    _/_/    _/    _/    _/_/_/         *
 *     _/    _/    _/  _/        _/  _/    _/  _/    _/  _/    _/          *
 *    _/    _/    _/  _/        _/  _/    _/  _/    _/  _/    _/           *
 *   _/    _/    _/    _/_/_/  _/    _/_/      _/_/_/    _/_/_/            *
 ***************************************************************************
 * Mindcloud Copyright 2001-2003 by Jeff Boschee (Zarius),                 *
 * Additional credits are in the help file CODECREDITS                     *
 * All Rights Reserved.                                                    *
 ***************************************************************************/
#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 "interp.h"

#define GPTS(ch)	(ch->pcdata->stats[GHOUL_PTS])

void do_realms(CHAR_DATA * ch, char *argument)
{
        char      arg1[MAX_INPUT_LENGTH];
        char      arg2[MAX_INPUT_LENGTH];
        char      buf[MAX_STRING_LENGTH];

        argument = one_argument(argument, arg1);
        argument = one_argument(argument, arg2);

        if (IS_NPC(ch))
                return;

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

        if (arg1[0] == '\0' && arg2[0] == '\0')
        {
                xprintf(buf,
                        "#cRealms of Power#n: #GS#chadow#n #g(#G%d#g)#n, #GZ#combie#n #g(#G%d#g), #GU#cndead #GM#cight#n #g(#G%d#g).#n\n\r",
                        ch->pcdata->powers[GPOWER_SHADOW],
                        ch->pcdata->powers[GPOWER_ZOMBIE],
                        ch->pcdata->powers[GPOWER_UNDEADMIGHT]);
                send_to_char(buf, ch);
                return;
        }
        if (arg2[0] == '\0')
        {
                if (!str_cmp(arg1, "shadow"))
                {
                        send_to_char
                                ("#cShadows - #GThe realm of darkness and night, which a ghoul thrives in.\n\r",
                                 ch);
                        if (ch->pcdata->powers[GPOWER_SHADOW] < 1)
                                send_to_char
                                        ("#cYou have no knowledge of the Shadow Realm.\n\r",
                                         ch);
                        if (ch->pcdata->powers[GPOWER_SHADOW] > 0)
                                send_to_char
                                        ("#cShadowsight - #GThe ability to see into the nether realm#n.\n\r",
                                         ch);
                        if (ch->pcdata->powers[GPOWER_SHADOW] > 1)
                                send_to_char
                                        ("#cTruesight - #GThe power to see all.#n\n\r",
                                         ch);
                        if (ch->pcdata->powers[GPOWER_SHADOW] > 2)
                                send_to_char
                                        ("#cShadowplane - #GThe ability to merge into the Shadow Realm.#n\n\r",
                                         ch);
                        if (ch->pcdata->powers[GPOWER_SHADOW] > 3)
                                stc("#cPerception  - #GThe ability to make your attacks more efficient.  Adds hit/dam.#n\n\r", ch);
                        if (ch->pcdata->powers[GPOWER_SHADOW] > 4)
                                send_to_char
                                        ("#cGore - #GA vicious attack from the Shadow Plane#n\n\r",
                                         ch);
                        return;
                }
                else if (!str_cmp(arg1, "zombie"))
                {
                        send_to_char
                                ("#cZombie - #GThe Innate gifts of the Undead.#n\n\r",
                                 ch);
                        if (ch->pcdata->powers[GPOWER_ZOMBIE] < 1)
                                send_to_char
                                        ("#cYou have no knowledge of the frightening powers the Undead possess.#n\n\r",
                                         ch);
                        if (ch->pcdata->powers[GPOWER_ZOMBIE] > 0)
                                send_to_char
                                        ("#cClaws - #GThe god of Death grants you special, razor sharp claws.#n\n\r         #gSyntax: Gcreate Claws#n\n\r",
                                         ch);
                        if (ch->pcdata->powers[GPOWER_ZOMBIE] > 1)
                                send_to_char
                                        ("#cDisease - #GYour claws infect others with the essence of disease.#n\n\r",
                                         ch);
                        if (ch->pcdata->powers[GPOWER_ZOMBIE] > 2)
                                send_to_char
                                        ("#cRavage - #GA ferenzical clawing attack.#n\n\r",
                                         ch);
                        if (ch->pcdata->powers[GPOWER_ZOMBIE] > 3)
                                send_to_char
                                        ("#cStench of Decay - #GRemoves a characters Protection.#n\n\r",
                                         ch);
                        if (ch->pcdata->powers[GPOWER_ZOMBIE] > 4)
                                send_to_char
                                        ("#cStench of Death - #GRemoves a characters Sanctuary#n.\n\r",
                                         ch);
                        return;
                }
                else if (!str_cmp(arg1, "undeadmight"))
                {
                        send_to_char
                                ("#cUndead Might - #GYour Strength from Beyond the Grave!.#n\n\r",
                                 ch);
                        if (ch->pcdata->powers[GPOWER_UNDEADMIGHT] < 1)
                                send_to_char("#cUndead Might: [     ]#n\n\r",
                                             ch);
                        else if (ch->pcdata->powers[GPOWER_UNDEADMIGHT] > 4)
                                send_to_char
                                        ("#cUndead Might: [#G*****#c]#n\n\r",
                                         ch);
                        else if (ch->pcdata->powers[GPOWER_UNDEADMIGHT] > 3)
                                send_to_char
                                        ("#cUndead Might: [#G**** #c]#n\n\r",
                                         ch);
                        else if (ch->pcdata->powers[GPOWER_UNDEADMIGHT] > 2)
                                send_to_char
                                        ("#cUndead Might: [#G***  #c]#n\n\r",
                                         ch);
                        else if (ch->pcdata->powers[GPOWER_UNDEADMIGHT] > 1)
                                send_to_char
                                        ("#cUndead Might: [#G**   #c]#n\n\r",
                                         ch);
                        else if (ch->pcdata->powers[GPOWER_UNDEADMIGHT] > 0)
                                send_to_char
                                        ("#cUndead Might: [#G*    #c]#n\n\r",
                                         ch);
                        return;
                }
                xprintf(buf,
                        "#cRealms of Power#n: #GS#chadow#n #g(#G%d#g)#n, #GZ#combie#n #g(#G%d#g), #GU#cndead #GM#cight#n #g(#G%d#g).#n\n\r",
                        ch->pcdata->powers[GPOWER_SHADOW],
                        ch->pcdata->powers[GPOWER_ZOMBIE],
                        ch->pcdata->powers[GPOWER_UNDEADMIGHT]);
                send_to_char(buf, ch);
                return;
        }
        if (!str_cmp(arg2, "manifest"))
        {
                int       improve;
                int       cost;
                int       max;

                if (!str_cmp(arg1, "shadow"))
                {
                        improve = GPOWER_SHADOW;
                        max = 5;
                }
                else if (!str_cmp(arg1, "zombie"))
                {
                        improve = GPOWER_ZOMBIE;
                        max = 5;
                }
                else if (!str_cmp(arg1, "undeadmight"))
                {
                        improve = GPOWER_UNDEADMIGHT;
                        max = 5;
                }
                else
                {
                        send_to_char
                                ("#GR#cealms#n: #GS#chadow#n, #GZ#combie#n, #GU#cndead#GM#cight#n.\n\r",
                                 ch);
                        return;
                }
                cost = (ch->pcdata->powers[improve] + 1) * 1000;
                arg1[0] = UPPER(arg1[0]);
                if (ch->pcdata->powers[improve] >= max)
                {
                        xprintf(buf,
                                "#cYou have already gained all the powers of the #0%s #crealms.#n\n\r",
                                arg1);
                        send_to_char(buf, ch);
                        return;
                }
                if (cost > ch->pcdata->stats[GHOUL_PTS])
                {
                        xprintf(buf,
                                "#cYou need #G%d #cGhoul Points to manifest in the #0%s #crealm.#n\n\r",
                                cost, arg1);
                        send_to_char(buf, ch);
                        return;
                }
                ch->pcdata->powers[improve] += 1;
                ch->pcdata->stats[GHOUL_PTS] -= cost;
                xprintf(buf,
                        "#cYou manifest deeper into the #0%s #crealm!.#n\n\r",
                        arg1);
                send_to_char(buf, ch);
        }
        else
                send_to_char
                        ("#cTo learn powers, type #Grealm <realm> manifest.#n\n\r",
                         ch);
        return;
}

void do_ghouleq(CHAR_DATA * ch, char *argument)
{
        OBJ_INDEX_DATA *pObjIndex;
        OBJ_DATA *obj;
        char      arg[MAX_INPUT_LENGTH];
        int       vnum = 0;

        argument = one_argument(argument, arg);
        if (IS_NPC(ch))
                return;
        if (!IS_CLASS(ch, CLASS_GHOUL))
        {
                send_to_char("What?\n\r", ch);
                return;
        }
        if (arg[0] == '\0')
        {
                send_to_char
                        ("#GPlease specify which piece of ghoulish armor you wish to make: #wRing Bands Choker Vest "
                         "Helmet Boots Gloves Sleeves Pants Cloak Rope Mask.\n\r",
                         ch);
                return;
        }

        if (ch->practice < 200)
        {
                send_to_char
                        ("It costs 200 points of primal to create ghoul equipment.\n\r",
                         ch);
                return;
        }

        if (!str_cmp(arg, "ring"))
                vnum = 6204;
        else if (!str_cmp(arg, "bands"))
                vnum = 6205;
        else if (!str_cmp(arg, "choker"))
                vnum = 6206;
        else if (!str_cmp(arg, "vest"))
                vnum = 6207;
        else if (!str_cmp(arg, "helmet"))
                vnum = 6208;
        else if (!str_cmp(arg, "boots"))
                vnum = 6209;
        else if (!str_cmp(arg, "gloves"))
                vnum = 6210;
        else if (!str_cmp(arg, "sleeves"))
                vnum = 6211;
        else if (!str_cmp(arg, "pants"))
                vnum = 6212;
        else if (!str_cmp(arg, "cloak"))
                vnum = 6213;
        else if (!str_cmp(arg, "rope"))
                vnum = 6214;
        else if (!str_cmp(arg, "mask"))
                vnum = 6215;
        else
        {
                do_ghouleq(ch, "");
                return;
        }

        if (vnum == 0 || (pObjIndex = get_obj_index(vnum)) == NULL)
        {
                send_to_char("Missing object, please inform a God.\n\r", ch);
                return;
        }

        ch->practice -= 200;
        obj = create_object(pObjIndex, 50);
        obj->questowner = str_dup(ch->pcdata->switchname);
        obj->ownerid = ch->pcdata->playerid;
        obj_to_char(obj, ch);
        act("You form some living flesh into $p.", ch, obj, NULL, TO_CHAR);
        act("$n forms some living flesh into $p.", ch, obj, NULL, TO_ROOM);
        return;
}


void do_gcreate(CHAR_DATA * ch, char *argument)
{
        OBJ_INDEX_DATA *pObjIndex;
        OBJ_DATA *obj;
        char      arg[MAX_INPUT_LENGTH];
        int       vnum = 0;

        argument = one_argument(argument, arg);
        if (IS_NPC(ch))
                return;
        if (!IS_CLASS(ch, CLASS_GHOUL))
        {
                send_to_char("What?\n\r", ch);
                return;
        }
        if (ch->pcdata->powers[GPOWER_ZOMBIE] < 1)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }

        if (arg[0] == '\0')
        {
                send_to_char("syntax: gcreate claws\n\r", ch);
                return;
        }
        if (ch->practice < 500)
        {
                send_to_char
                        ("It costs 500 primal to create a pair of Ghoul Claws.\n\r",
                         ch);
                return;
        }
        if (!str_cmp(arg, "claws"))
                vnum = 33015;
        else
        {
                do_gcreate(ch, "");
                return;
        }
        if (vnum == 0 || (pObjIndex = get_obj_index(vnum)) == NULL)
        {
                send_to_char("Missing object, please inform a God.\n\r", ch);
                return;
        }
        obj = create_object(pObjIndex, 50);
        obj->questowner = str_dup(ch->pcdata->switchname);
        obj->ownerid = ch->pcdata->playerid;
        obj_to_char(obj, ch);

        obj = create_object(pObjIndex, 50);
        obj->questowner = str_dup(ch->pcdata->switchname);
        obj->ownerid = ch->pcdata->playerid;
        obj_to_char(obj, ch);

        ch->practice -= 500;
        act("A pair of $p appears in your hands.", ch, obj, NULL, TO_CHAR);
        act("A pair of $p appears in $n's hands.", ch, obj, NULL, TO_ROOM);
        return;
}

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

        one_argument(argument, arg);

        if (IS_NPC(ch))
                return;

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

        if (ch->pcdata->powers[GPOWER_SHADOW] < 5)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }

        if (arg[0] == '\0')
        {
                send_to_char("Gore whom?\n\r", ch);
                return;
        }

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

        if (victim == ch)
        {
                send_to_char("#cWhatever#n\n\r", ch);
                return;
        }

        if (((obj = get_eq_char(ch, WEAR_WIELD)) == NULL
             || obj->value[3] != 5)
            && ((obj = get_eq_char(ch, WEAR_HOLD)) == NULL
                || obj->value[3] != 5))
        {
                send_to_char("#cYou cannot gore without Claws!!#n\n\r", ch);
                return;
        }

        if (!IS_AFFECTED(ch, AFF_SHADOWPLANE))
        {
                send_to_char("#cYou must be in Shadowplane to do this!#n\n\r",
                             ch);
                return;
        }

        if (ch->move < 10000)
        {
                send_to_char("#cYou need 10000 move to use this!#n\n\r", ch);
                return;
        }

        if (IS_NPC(victim))
        {
                REMOVE_BIT(ch->affected_by, AFF_SHADOWPLANE);
                send_to_char
                        ("#cYou materialize in front of your opponent and #Rgore him with your sharp claws!#n\n\r",
                         ch);
                act("#G$n #cmaterializes out of thin air, screaming wildly, and #Rgores $s opponent with $s razor sharp claws!!#n", ch, NULL, NULL, TO_ROOM);
                ch->move -= 10000;
                WAIT_STATE(ch, 3 * PULSE_VIOLENCE);
                multi_hit(ch, victim, TYPE_UNDEFINED);
                multi_hit(ch, victim, TYPE_UNDEFINED);
                multi_hit(ch, victim, TYPE_UNDEFINED);
                multi_hit(ch, victim, TYPE_UNDEFINED);
                multi_hit(ch, victim, TYPE_UNDEFINED);
                return;
        }

        REMOVE_BIT(ch->affected_by, AFF_SHADOWPLANE);
        send_to_char
                ("#cYou materialize in front of your opponent and #Rgore him with your sharp claws!#n\n\r",
                 ch);
        act("#G$n #cmaterializes out of thin air, screaming wildly, and #Rgores you with $s razor sharp claws!!#n", ch, NULL, NULL, TO_VICT);
        ch->move -= 10000;
        WAIT_STATE(ch, 3 * PULSE_VIOLENCE);
        multi_hit(ch, victim, TYPE_UNDEFINED);
        if (number_percent() > 85)
                multi_hit(ch, victim, TYPE_UNDEFINED);
        if (number_percent() > 95)
                multi_hit(ch, victim, TYPE_UNDEFINED);
        return;
}

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

        one_argument(argument, arg);

        if (IS_NPC(ch))
                return;

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

        if (ch->pcdata->powers[GPOWER_ZOMBIE] < 3)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }

        if (arg[0] == '\0')
        {
                send_to_char("Ravage Whom?\n\r", ch);
                return;
        }

        if ((victim = get_char_room(ch, NULL, arg)) == NULL)
        {
                if ((victim = ch->fighting) == NULL)
                {
                        send_to_char("They aren't here.\n\r", ch);
                        return;
                }
        }

        if (victim == ch)
        {
                send_to_char("#cWhatever#n\n\r", ch);
                return;
        }

        if (((obj = get_eq_char(ch, WEAR_WIELD)) == NULL
             || obj->value[3] != 5)
            && ((obj = get_eq_char(ch, WEAR_HOLD)) == NULL
                || obj->value[3] != 5))
        {
                send_to_char("#cYou cannot ravage without Claws!!#n\n\r", ch);
                return;
        }

        if (ch->move < 2000)
        {
                send_to_char("#cYou need 2000 move to use this!#n\n\r", ch);
                return;
        }

        if (IS_NPC(victim))
        {
                send_to_char
                        ("#cYou #rRA#RVA#rGE#c your opponent with your sharp claws!#n\n\r",
                         ch);
                act("#G$n #rRA#RVAG#rES #c$s opponent with $s razor sharp claws!!#n", ch, NULL, NULL, TO_ROOM);
                ch->move -= 2000;
                ch->hitroll += 2000;
                WAIT_STATE(ch, 24);
                multi_hit(ch, victim, TYPE_UNDEFINED);
                multi_hit(ch, victim, TYPE_UNDEFINED);
                multi_hit(ch, victim, TYPE_UNDEFINED);
                ch->hitroll -= 2000;
                return;
        }

        send_to_char
                ("#cYou #rRA#RVA#rGE#c your opponent with your sharp claws!#n\n\r",
                 ch);
        act("#G$n #rRA#RVAG#rES #cyou with $s razor sharp claws!!#n", ch,
            NULL, NULL, TO_VICT);
        ch->move -= 2000;
        ch->hitroll += 2000;
        WAIT_STATE(ch, 24);
        multi_hit(ch, victim, TYPE_UNDEFINED);
        multi_hit(ch, victim, TYPE_UNDEFINED);
        if (number_percent() > 90)
                multi_hit(ch, victim, TYPE_UNDEFINED);
        ch->hitroll -= 2000;
        return;
}

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

        one_argument(argument, arg);

        if (IS_NPC(ch))
                return;

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

        if (ch->pcdata->powers[GPOWER_ZOMBIE] < 4)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }

        if (arg[0] == '\0')
        {
                send_to_char("Use Stench of Decay upon whom?\n\r", ch);
                return;
        }

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

        if (victim == ch)
        {
                send_to_char("#cWhatever#n\n\r", ch);
                return;
        }

        if (victim->position <= POS_FIGHTING)
        {
                send_to_char("#cNot while fighting!#n\n\r", ch);
                return;
        }

        if (!IS_AFFECTED(victim, AFF_PROTECT))
        {
                send_to_char("#cThey don't have protection on!#n\n\r", ch);
                return;
        }

        if (IS_AFFECTED(ch, AFF_SHADOWPLANE))
        {
                REMOVE_BIT(ch->affected_by, AFF_SHADOWPLANE);
        }

        REMOVE_BIT(victim->affected_by, AFF_PROTECT);
        send_to_char("#cYour decaying body emits a most foul scent!#n\n\r",
                     ch);
        act("#G$n's #cdecaying body emits a most foul scent, making you gag!#n\n\r", ch, NULL, NULL, TO_VICT);
        WAIT_STATE(victim, 16);
        WAIT_STATE(ch, 8);
        return;
}

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

        one_argument(argument, arg);

        if (IS_NPC(ch))
                return;

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

        if (ch->pcdata->powers[GPOWER_ZOMBIE] < 5)
        {
                send_to_char("Huh?\n\r", ch);
                return;
        }

        if (arg[0] == '\0')
        {
                send_to_char("Use Stench of Death upon whom?\n\r", ch);
                return;
        }

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

        if (victim == ch)
        {
                send_to_char("#cWhatever#n\n\r", ch);
                return;
        }

        if (victim->position <= POS_FIGHTING)
        {
                send_to_char("#cNot while fighting!#n\n\r", ch);
                return;
        }

        if (!IS_AFFECTED(victim, AFF_SANCTUARY))
        {
                send_to_char("#cThey don't have sanctuary on!#n\n\r", ch);
                return;
        }

        if (IS_AFFECTED(ch, AFF_SHADOWPLANE))
        {
                REMOVE_BIT(ch->affected_by, AFF_SHADOWPLANE);
        }
        REMOVE_BIT(victim->affected_by, AFF_SANCTUARY);
        send_to_char("#cYour decaying body emits an #gUNGODLY #cscent!#n\n\r",
                     ch);
        act("#G$n's #cdecaying body emits an #gUNGODLY #cscent, making you want to retch!#n\n\r", ch, NULL, NULL, TO_VICT);
        WAIT_STATE(ch, 12);
        WAIT_STATE(victim, 16);
        return;
}

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

        if (IS_NPC(ch))
                return;

        argument = one_argument(argument, arg);

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

        if (arg[0] == '\0')
        {
                send_to_char("Use the swamps to find the path to whom?\n\r",
                             ch);
                return;
        }

        if ((victim = get_char_world(ch, arg)) == NULL)
        {
                send_to_char("They are not of this world.\n\r", ch);
                return;
        }

        if (ch->move < 1500)
        {
                stc("The path escapes your senses as you loose control over your inner energies.\n\r", ch);
                return;
        }

        if (IS_SET(victim->in_room->room_flags, ROOM_ASTRAL))
        {
                stc("You can't find it's room.\n\r", ch);
                return;
        }
        if (IS_SET(victim->act, ACT_NOTRAVEL))
        {
                send_to_char("No Can Do.\n\r", ch);
                return;
        }
        if (IS_SET(ch->in_room->room_flags, ROOM_ASTRAL))
        {
                stc("You cannot sense any paths leading from this room.\n\r",
                    ch);
                return;
        }

        if (ch == victim)
        {
                send_to_char("But you're already at yourself!\n\r", ch);
                return;
        }
        if (room_is_private(victim->in_room))
        {
                send_to_char("That room is private right now.\n\r", ch);
                return;
        }
        if (!IS_NPC(victim) && !IS_IMMUNE(victim, IMM_SUMMON))
        {
                send_to_char("They don't want you near them.\n\r", ch);
                return;
        }
        if (victim->in_room == ch->in_room)
        {
                send_to_char("But you're already there!\n\r", ch);
                return;
        }

        act("You follow the path to $N.", ch, NULL, victim, TO_CHAR);
        act("$n sinks into the swamps.", ch, NULL, victim, TO_ROOM);
        char_from_room(ch);
        char_to_room(ch, victim->in_room);
        ch->move -= 1500;
        act("$n rises from the swamps in front of $N.", ch, NULL, victim,
            TO_NOTVICT);
        act("$n rises from the swamps in front of you.", ch, NULL, victim,
            TO_VICT);
        do_say(ch, "BRAAAAAAAAINS...");
        do_look(ch, "auto");
        return;
}