/***************************************************************************
* 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. *
* *
* Dystopia Mud improvements copyright (C) 2000, 2001 by Brian Graversen *
* *
* 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. *
***************************************************************************/
/***************************************************************************
* _/ _/ *
* _/_/_/ _/_/ _/_/_/ _/ _/_/ _/ _/ _/_/_/ *
* _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ *
* _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ *
* _/ _/ _/ _/_/_/ _/ _/_/ _/_/_/ _/_/_/ *
***************************************************************************
* Mindcloud Copyright 2001-2003 by Jeff Boschee (Zarius), *
* Additional credits are in the help file CODECREDITS *
* All Rights Reserved. *
***************************************************************************/
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "merc.h"
#include "interp.h"
void do_tribe(CHAR_DATA * ch, char *argument)
{
char buf[MAX_STRING_LENGTH];
CHAR_DATA *gch;
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
send_to_char("Huh?\n\r", ch);
return;
}
send_to_char("#C -*- The Tribe of Gaia -*-#n\n\r", ch);
send_to_char
("#w[#CName #w] [#C Hp #w] [#C Mana #w] [#C Move #w]#n\n\r",
ch);
for (gch = char_list; gch != NULL; gch = gch->next)
{
if (IS_NPC(gch))
continue;
if (!IS_CLASS(gch, CLASS_WEREWOLF))
continue;
xprintf(buf, "#w[%-20s] [%-7d] [%-7d] [%-7d]#n\n\r",
capitalize(gch->name), gch->hit, gch->mana,
gch->move);
send_to_char(buf, ch);
}
return;
}
void do_klaive(CHAR_DATA * ch, char *argument)
{
OBJ_DATA *obj;
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
send_to_char("Huh?\n\r", ch);
return;
}
if (60 > ch->practice)
{
send_to_char
("It costs 60 points of primal to create a Lesser Klaive.\n\r",
ch);
return;
}
ch->practice -= 60;
obj = create_object(get_obj_index(OBJ_VNUM_LKLAIVE), 0);
SET_BIT(obj->quest, QUEST_RELIC);
obj->value[1] = 30;
obj->value[2] = 60;
obj->questowner = str_dup(ch->pcdata->switchname);
obj->ownerid = ch->pcdata->playerid;
SET_BIT(obj->spectype, SITEM_WOLFWEAPON);
obj_to_char(obj, ch);
act("A Lesser Klaive appears in your hands in a flash of light.", ch,
NULL, NULL, TO_CHAR);
act("A Lesser Klaive appears in $n's hands in a flash of light.", ch,
NULL, NULL, TO_ROOM);
return;
}
void do_gklaive(CHAR_DATA * ch, char *argument)
{
OBJ_DATA *obj;
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
send_to_char("Huh?\n\r", ch);
return;
}
if (ch->power[DISC_WERE_LUNA] < 7)
{
send_to_char
("You need to obtain level 7 in Luna to make a Greater Klaive.\n\r",
ch);
return;
}
if (200 > ch->practice)
{
send_to_char
("It costs 200 points of primal to create a Greater Klaive.\n\r",
ch);
return;
}
ch->practice -= 200;
obj = create_object(get_obj_index(OBJ_VNUM_GKLAIVE), 0);
SET_BIT(obj->quest, QUEST_RELIC);
obj->value[1] = 30;
obj->value[2] = 60;
obj->questowner = str_dup(ch->pcdata->switchname);
obj->ownerid = ch->pcdata->playerid;
SET_BIT(obj->spectype, SITEM_WOLFWEAPON);
obj_to_char(obj, ch);
act("A Greater Klaive appears in your hands in a flash of light.", ch,
NULL, NULL, TO_CHAR);
act("A Greater Klaive appears in $n's hands in a flash of light.", ch,
NULL, NULL, TO_ROOM);
return;
}
void do_sclaws(CHAR_DATA * ch, char *argument)
{
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
send_to_char("What?\n\r", ch);
return;
}
if (ch->power[DISC_WERE_LUNA] < 5)
{
send_to_char
("You need level 5 in Luna to use Silver Claws.\n\r",
ch);
return;
}
if (!IS_SET(ch->newbits, NEW_SCLAWS))
{
send_to_char("Your claws turn into pure silver!\n\r", ch);
act("$n's claws turn to pure silver!", ch, NULL, NULL,
TO_ROOM);
SET_BIT(ch->newbits, NEW_SCLAWS);
return;
}
if (IS_SET(ch->newbits, NEW_SCLAWS))
{
send_to_char("Your claws return to their normal state.\n\r",
ch);
act("$n's claws are no longer composed of pure silver.\n\r",
ch, NULL, NULL, TO_ROOM);
REMOVE_BIT(ch->newbits, NEW_SCLAWS);
return;
}
}
void do_moonbeam(CHAR_DATA * ch, char *argument)
{
CHAR_DATA *victim;
char arg1[MAX_INPUT_LENGTH];
argument = one_argument(argument, arg1);
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
send_to_char("Huh?\n\r", ch);
return;
}
if (ch->power[DISC_WERE_LUNA] < 8)
{
send_to_char
("You need to obtain level 8 in Luna to use Moonbeam.\n\r",
ch);
return;
}
if (ch->mana < 500)
{
send_to_char
("You do not have enough energy to summon a Moonbeam.\n\r",
ch);
return;
}
if (arg1[0] == '\0')
{
send_to_char("Who do you wish to strike?\n\r", ch);
return;
}
if ((victim = get_char_room(ch, NULL, arg1)) == NULL)
{
send_to_char("They aren't here.\n\r", ch);
return;
}
if (ch == victim)
return;
if (is_safe(ch, victim) == TRUE)
return;
if (ch->fighting == NULL)
set_fighting(ch, victim, TRUE);
update_pos(victim);
act("$N is struck by a huge moonbeam.", ch, NULL, victim, TO_CHAR);
act("$N is struck by a deadly beam of moonlight from $n.", ch, NULL,
victim, TO_NOTVICT);
act("You are struck by a deadly beam of moonlight!", ch, NULL, victim,
TO_VICT);
if (IS_GOOD(victim))
hurt_person(ch, victim, 500);
if (IS_EVIL(victim))
hurt_person(ch, victim, 1000);
if (IS_NEUTRAL(victim))
hurt_person(ch, victim, 750);
ch->mana -= 500;
WAIT_STATE(ch, 12);
return;
}
void do_moongate(CHAR_DATA * ch, char *argument)
{
CHAR_DATA *victim;
OBJ_DATA *obj;
char arg[MAX_INPUT_LENGTH];
one_argument(argument, arg);
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
send_to_char("Huh?\n\r", ch);
return;
}
if ((ch->power[DISC_WERE_LUNA] < 6) && IS_CLASS(ch, CLASS_WEREWOLF))
{
send_to_char
("You need to obtain level 6 Luna to use moongate.\n\r",
ch);
return;
}
if ((ch->gnosis[GCURRENT] < 2))
{
stc("You need two points of Gnosis to use this power.\n\r",
ch);
return;
}
if (arg[0] == '\0')
{
send_to_char("Who do you wish to gate to?\n\r", ch);
return;
}
if ((victim = get_char_world(ch, arg)) == NULL)
{
send_to_char("They arent here.\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("Your room is not connected to the astral plane.\n\r",
ch);
return;
}
if ((victim == ch)
|| victim->in_room == NULL
|| (!IS_NPC(victim) && !IS_IMMUNE(victim, IMM_SUMMON))
|| IS_SET(ch->in_room->room_flags, ROOM_PRIVATE)
|| IS_SET(ch->in_room->room_flags, ROOM_SOLITARY)
|| IS_SET(ch->in_room->room_flags, ROOM_NO_RECALL)
|| IS_SET(victim->in_room->room_flags, ROOM_PRIVATE)
|| IS_SET(victim->in_room->room_flags, ROOM_SOLITARY)
|| IS_SET(victim->in_room->room_flags, ROOM_NO_RECALL)
|| victim->in_room->vnum == ch->in_room->vnum)
{
send_to_char("You failed.\n\r", ch);
return;
}
obj = create_object(get_obj_index(OBJ_VNUM_GATE2), 0);
obj->value[0] = victim->in_room->vnum;
obj->value[3] = ch->in_room->vnum;
obj->timer = 5;
if (IS_AFFECTED(ch, AFF_SHADOWPLANE))
obj->extra_flags = ITEM_SHADOWPLANE;
obj_to_room(obj, ch->in_room);
obj = create_object(get_obj_index(OBJ_VNUM_GATE2), 0);
obj->value[0] = ch->in_room->vnum;
obj->value[3] = victim->in_room->vnum;
obj->timer = 5;
if (IS_AFFECTED(victim, AFF_SHADOWPLANE))
obj->extra_flags = ITEM_SHADOWPLANE;
obj_to_room(obj, victim->in_room);
act("A look of concentration passes over $n's face.", ch, NULL, NULL,
TO_ROOM);
send_to_char("A look of concentration passes over your face.\n\r",
ch);
act("$p appears in front of $n in a beam of moonlight.", ch, obj,
NULL, TO_ROOM);
act("$p appears in front of you in a beam of moonlight.", ch, obj,
NULL, TO_CHAR);
act("$p appears in front of $n in a beam of moonlight.", victim, obj,
NULL, TO_ROOM);
act("$p appears in front of you in a beam of moonlight.", ch, obj,
victim, TO_VICT);
return;
}
void do_gmotherstouch(CHAR_DATA * ch, char *argument)
{
CHAR_DATA *victim;
char arg1[MAX_INPUT_LENGTH];
argument = one_argument(argument, arg1);
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
send_to_char("Huh?\n\r", ch);
return;
}
if (ch->power[DISC_WERE_LUNA] < 4)
{
send_to_char
("You need to obtain level 4 in Luna to use Grandmother's Touch.\n\r",
ch);
return;
}
if (arg1[0] == '\0')
{
send_to_char("Who is in need of your touch?\n\r", ch);
return;
}
if ((victim = get_char_room(ch, NULL, arg1)) == NULL)
{
send_to_char("They aren't here.\n\r", ch);
return;
}
if (ch->mana < 100 && ch->fighting != NULL)
{
send_to_char
("You do not have enough energy to summon the Grandmother's Touch.\n\r",
ch);
return;
}
if (ch->fighting != NULL)
{
act("$N is filled with a feeling of warmth.", ch, NULL,
victim, TO_CHAR);
act("$N is surrounded by a beam of moonlight from $n's touch.", ch, NULL, victim, TO_NOTVICT);
act("You are surrounded by a beam of moonlight, and feel restored.", ch, NULL, victim, TO_VICT);
victim->hit += 200;
ch->mana -= 100;
update_pos(victim);
WAIT_STATE(ch, 16);
return;
}
if (ch->mana < 300 && ch->fighting == NULL)
{
send_to_char
("You do not have enough energy to summon the Grandmother's Touch.\n\r",
ch);
return;
}
if (ch->fighting == NULL)
{
act("$N is filled with a feeling of warmth.", ch, NULL,
victim, TO_CHAR);
act("$N is surrounded by a beam of moonlight from $n's touch.", ch, NULL, victim, TO_NOTVICT);
act("You are surrounded by a beam of moonlight, and feel restored.", ch, NULL, victim, TO_VICT);
victim->hit += 600;
ch->mana -= 300;
update_pos(victim);
WAIT_STATE(ch, 6);
return;
}
}
void do_motherstouch(CHAR_DATA * ch, char *argument)
{
CHAR_DATA *victim;
char arg1[MAX_INPUT_LENGTH];
argument = one_argument(argument, arg1);
if (IS_NPC(ch))
return;
if (ch->power[DISC_WERE_LUNA] < 3)
{
send_to_char
("You need to obtain level 3 in Luna to use Mother's Touch.\n\r",
ch);
return;
}
if (arg1[0] == '\0')
{
send_to_char("Who is in need of your touch?\n\r", ch);
return;
}
if ((victim = get_char_room(ch, NULL, arg1)) == NULL)
{
send_to_char("They aren't here.\n\r", ch);
return;
}
if (ch->mana < 50 && ch->fighting != NULL)
{
send_to_char
("You don't have enough energy to use Mother's Touch.\n\r",
ch);
return;
}
if (ch->fighting != NULL)
{
act("$N is filled with a feeling of warmth.", ch, NULL,
victim, TO_CHAR);
act("$N is surrounded by a beam of moonlight from $n's touch.", ch, NULL, victim, TO_NOTVICT);
act("You are surrounded by a beam of moonlight, and feel restored.", ch, NULL, victim, TO_VICT);
victim->hit += 100;
ch->mana -= 50;
update_pos(victim);
WAIT_STATE(ch, 16);
return;
}
if (ch->mana < 250 && ch->fighting == NULL)
{
send_to_char
("You don't have enough energy to use Mother's Touch.\n\r",
ch);
return;
}
if (ch->fighting == NULL)
{
act("$N is filled with a feeling of warmth.", ch, NULL,
victim, TO_CHAR);
act("$N is surrounded by a beam of moonlight from $n's touch.", ch, NULL, victim, TO_NOTVICT);
act("You are surrounded by a beam of moonlight, and feel restored.", ch, NULL, victim, TO_VICT);
victim->hit += 500;
ch->mana -= 250;
update_pos(victim);
WAIT_STATE(ch, 8);
return;
}
}
void do_flameclaws(CHAR_DATA * ch, char *argument)
{
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
send_to_char("What?\n\r", ch);
return;
}
if (ch->power[DISC_WERE_LUNA] < 1)
{
send_to_char
("You need to obtain level 1 in luna to use flame claws.\n\r",
ch);
return;
}
if (IS_SET(ch->newbits, NEW_MONKFLAME))
{
send_to_char("The flames surrounding your claws fade.\n\r",
ch);
act("The flames surrounding $n's claws fade.\n\r", ch, NULL,
NULL, TO_ROOM);
REMOVE_BIT(ch->newbits, NEW_MONKFLAME);
return;
}
if (!IS_SET(ch->newbits, NEW_MONKFLAME))
{
send_to_char
("Your claws are surrounded by blazing flames.\n\r",
ch);
act("$n's claws are surrounded by blazing flames.\n\r", ch,
NULL, NULL, TO_ROOM);
SET_BIT(ch->newbits, NEW_MONKFLAME);
return;
}
}
void do_moonarmour(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_WEREWOLF))
{
send_to_char("Huh?\n\r", ch);
return;
}
if (ch->power[DISC_WERE_LUNA] < 2)
{
send_to_char
("You must attain level 2 in Luna before you can create moon armour.\n\r",
ch);
return;
}
if (arg[0] == '\0')
{
send_to_char
("What piece of moon armour do you wish to create?\n\r"
"Ring Collar Plate Helmet Leggings Boots Gloves Sleeves Cape Belt Bracer Mask.\n\r",
ch);
return;
}
if (!str_cmp(arg, "ring"))
vnum = 33100;
else if (!str_cmp(arg, "belt"))
vnum = 33104;
else if (!str_cmp(arg, "plate"))
vnum = 33103;
else if (!str_cmp(arg, "bracer"))
vnum = 33101;
else if (!str_cmp(arg, "collar"))
vnum = 33102;
else if (!str_cmp(arg, "helmet"))
vnum = 33105;
else if (!str_cmp(arg, "leggings"))
vnum = 33106;
else if (!str_cmp(arg, "boots"))
vnum = 33107;
else if (!str_cmp(arg, "gloves"))
vnum = 33108;
else if (!str_cmp(arg, "sleeves"))
vnum = 33109;
else if (!str_cmp(arg, "cape"))
vnum = 33110;
else if (!str_cmp(arg, "mask"))
vnum = 33111;
else
{
do_moonarmour(ch, "");
return;
}
if (ch->practice < 100)
{
send_to_char
("It costs 100 primal to create a piece of moon armour\n\r",
ch);
return;
}
if (vnum == 0 || (pObjIndex = get_obj_index(vnum)) == NULL)
{
send_to_char("Missing object, please inform Jobo.\n\r", ch);
return;
}
ch->practice -= 100;
obj = create_object(pObjIndex, 50);
obj->questowner = str_dup(ch->pcdata->switchname);
obj->ownerid = ch->pcdata->playerid;
obj_to_char(obj, ch);
act("$p appears in a beam of moonlight.", ch, obj, NULL, TO_CHAR);
act("$p appears in a beam of moonlight.", ch, obj, NULL, TO_ROOM);
return;
}
void do_rend(CHAR_DATA * ch, char *argument)
{
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
send_to_char("Huh?\n\r", ch);
return;
}
if (ch->power[DISC_WERE_BOAR] < 7)
{
send_to_char("You need Boar 7 to Rend equipment.\n\r", ch);
return;
}
if (!IS_SET(ch->newbits, NEW_REND))
{
send_to_char
("You will now ruthlessly rend your opponents eq.\n\r",
ch);
SET_BIT(ch->newbits, NEW_REND);
return;
}
else if (IS_SET(ch->newbits, NEW_REND))
{
send_to_char("Your no longer mean to your enemies eq.\n\r",
ch);
REMOVE_BIT(ch->newbits, NEW_REND);
return;
}
return;
}
void do_skin(CHAR_DATA * ch, char *argument)
{
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
send_to_char("Huh?\n\r", ch);
return;
}
if (ch->power[DISC_WERE_BEAR] < 7)
{
send_to_char("You need Bear 7 to toughen your skin.\n\r", ch);
return;
}
if (!IS_SET(ch->newbits, NEW_SKIN))
{
send_to_char("Your skin hardens.\n\r", ch);
ch->armor -= 100;
SET_BIT(ch->newbits, NEW_SKIN);
return;
}
else if (IS_SET(ch->newbits, NEW_SKIN))
{
send_to_char("Your skin softens.\n\r", ch);
ch->armor += 100;
REMOVE_BIT(ch->newbits, NEW_SKIN);
return;
}
return;
}
void do_jawlock(CHAR_DATA * ch, char *argument)
{
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
send_to_char("Huh?\n\r", ch);
return;
}
if (ch->power[DISC_WERE_RAPT] < 8)
{
send_to_char("You need Raptor 8 to use locked jaw.\n\r", ch);
return;
}
if (!IS_SET(ch->newbits, NEW_JAWLOCK))
{
send_to_char
("Your jaw grows stronger and more ready to clamp on your enemy.\n\r",
ch);
SET_BIT(ch->newbits, NEW_JAWLOCK);
return;
}
else if (IS_SET(ch->newbits, NEW_JAWLOCK))
{
send_to_char("Your jaw weakens.\n\r", ch);
REMOVE_BIT(ch->newbits, NEW_JAWLOCK);
return;
}
return;
}
void do_perception(CHAR_DATA * ch, char *argument)
{
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
send_to_char("Huh?\n\r", ch);
return;
}
if (ch->power[DISC_WERE_RAPT] < 3)
{
send_to_char
("You need Raptor 3 to heighten your Perception.\n\r",
ch);
return;
}
if (!IS_SET(ch->newbits, NEW_PERCEPTION))
{
send_to_char("You become more aware of stealthy enemies.\n\r",
ch);
SET_BIT(ch->newbits, NEW_PERCEPTION);
return;
}
else if (IS_SET(ch->newbits, NEW_PERCEPTION))
{
send_to_char("Your perception dulls.\n\r", ch);
REMOVE_BIT(ch->newbits, NEW_PERCEPTION);
return;
}
return;
}
void do_roar(CHAR_DATA * ch, char *argument)
{
CHAR_DATA *victim;
char buf[MAX_STRING_LENGTH];
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
send_to_char
("You let out an insane BeeF-powered ROAR!!!!!!!!\n\r",
ch);
return;
}
if (ch->power[DISC_WERE_BEAR] < 6)
{
send_to_char("You need bear 6 to roar.\n\r", ch);
return;
}
if ((victim = ch->fighting) == NULL)
{
send_to_char("You arent fighting anyone.\n\r", ch);
return;
}
if (number_range(1, 6) == 2)
{
xprintf(buf,
"%s roars and screams, intimidating the hell out of %s.",
ch->name, victim->name);
act(buf, ch, NULL, NULL, TO_ROOM);
xprintf(buf,
"You roar and scream, intimidating the hell out of %s.\n\r",
victim->name);
send_to_char(buf, ch);
do_flee(victim, "");
WAIT_STATE(ch, 18);
return;
}
else
{
stc("You roar loudly.\n\r", ch);
stc("Nothing happens.\n\r", ch);
act("$n roars loudly.", ch, NULL, NULL, TO_ROOM);
WAIT_STATE(ch, 12);
return;
}
}
/*
void do_quills(CHAR_DATA *ch,char *argument)
{
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch,CLASS_WEREWOLF))
{
send_to_char("Huh?\n\r",ch);
return;
}
if (ch->power[DISC_WERE_BEAR] < 5)
{
send_to_char("You need Bear 5 to extend your quills.\n\r",ch);
return;
}
if (!IS_SET(ch->newbits, NEW_QUILLS))
{
send_to_char("Sharp quills extend from your back.\n\r",ch);
SET_BIT(ch->newbits, NEW_QUILLS);
return;
}
else if (IS_SET(ch->newbits, NEW_QUILLS))
{
send_to_char("Your quills sink into your back.\n\r",ch);
REMOVE_BIT(ch->newbits,NEW_QUILLS);
return;
}
return;
}
*/
void do_slam(CHAR_DATA * ch, char *argument)
{
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
send_to_char("Huh?\n\r", ch);
return;
}
if (ch->power[DISC_WERE_BEAR] < 8)
{
send_to_char
("You need Bear 8 to attempt to shoulder slam.\n\r",
ch);
return;
}
if (!IS_SET(ch->newbits, NEW_SLAM))
{
send_to_char
("You will now shoulder slam when you get a chance.\n\r",
ch);
SET_BIT(ch->newbits, NEW_SLAM);
return;
}
else if (IS_SET(ch->newbits, NEW_SLAM))
{
send_to_char
("Your now don't shoulderslam when given a chance.\n\r",
ch);
REMOVE_BIT(ch->newbits, NEW_SLAM);
return;
}
return;
}
void do_shred(CHAR_DATA * ch, char *argument)
{
char arg[MAX_INPUT_LENGTH];
CHAR_DATA *victim;
argument = one_argument(argument, arg);
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
send_to_char("Huh?\n\r", ch);
return;
}
if (ch->power[DISC_WERE_RAPT] < 7)
{
send_to_char("You need Raptor 7 to Shred.\n\r", ch);
return;
}
if (arg[0] == '\0')
{
send_to_char("Shred 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("How can you shred yourself?\n\r", ch);
return;
}
if (victim->fighting != NULL)
{
send_to_char("You can't shred a fighting person.\n\r", ch);
return;
}
if (victim->hit < victim->max_hit)
{
act("$N is hurt and suspicious ... you can't sneak up.",
ch, NULL, victim, TO_CHAR);
return;
}
if (!IS_AFFECTED(ch, AFF_SHADOWPLANE))
{
send_to_char("You must be ShadowPlaned to Shred!\n\r", ch);
return;
}
do_shadowplane(ch, "");
if (is_safe(ch, victim))
return;
WAIT_STATE(ch, 24);
one_hit(ch, victim, gsn_shred, 1);
one_hit(ch, victim, gsn_shred, 1);
one_hit(ch, victim, gsn_shred, 1);
one_hit(ch, victim, gsn_shred, 1);
if (ch->power[DISC_WERE_RAPT] > 6)
one_hit(ch, victim, gsn_shred, 1);
if (ch->power[DISC_WERE_RAPT] > 7)
one_hit(ch, victim, gsn_shred, 1);
if (ch->power[DISC_WERE_RAPT] > 9)
one_hit(ch, victim, gsn_shred, 1);
return;
}
void do_talons(CHAR_DATA * ch, char *argument)
{
CHAR_DATA *victim;
char buf[MAX_STRING_LENGTH];
int dam;
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF)
&& !IS_SET(ch->itemaffect, ITEMA_TALON))
{
send_to_char("Huh?\n\r", ch);
return;
}
if (ch->power[DISC_WERE_RAPT] < 10
&& !IS_SET(ch->itemaffect, ITEMA_TALON))
{
send_to_char("You need level 10 Raptor to use talons.\n\r",
ch);
return;
}
if ((victim = ch->fighting) == NULL)
{
send_to_char("You aren't fighting anyone.\n\r", ch);
return;
}
WAIT_STATE(ch, 12);
if (IS_NPC(victim))
dam = number_range(400, 600);
else
dam = number_range(3000, 5000);
xprintf(buf, "Your talons strike $N incredibly hard! [%d]\n\r", dam);
act(buf, ch, NULL, victim, TO_CHAR);
xprintf(buf, "$n's talons strike you incredibly hard! [%d]\n\r", dam);
act(buf, ch, NULL, victim, TO_VICT);
xprintf(buf, "$n's talons strike $N incredibly hard! [%d]\n\r", dam);
act(buf, ch, NULL, victim, TO_NOTVICT);
hurt_person(ch, victim, dam);
return;
}
void do_devour(CHAR_DATA * ch, char *argument)
{
char arg[MAX_INPUT_LENGTH];
OBJ_DATA *obj;
char buf[MAX_INPUT_LENGTH];
int hpgain;
one_argument(argument, arg);
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
send_to_char("Huh?\n\r", ch);
return;
}
if (ch->power[DISC_WERE_RAPT] < 5)
{
send_to_char("You require Raptor 5 to devour.\n\r", ch);
return;
}
if (arg[0] == '\0')
{
send_to_char("Devour what?\n\r", ch);
return;
}
obj = get_obj_list(ch, arg, ch->in_room->contents);
if (obj == NULL)
{
send_to_char("You can't find it.\n\r", ch);
return;
}
if (obj->item_type != ITEM_CORPSE_NPC)
{
act("You are unable to devour $p.", ch, obj, 0, TO_CHAR);
return;
}
else if (obj->chobj != NULL && !IS_NPC(obj->chobj) &&
obj->chobj->pcdata->obj_vnum != 0)
{
act("You are unable to devour $p.", ch, obj, 0, TO_CHAR);
return;
}
hpgain = number_range(100, 250);
ch->hit += hpgain;
if (ch->hit > ch->max_hit)
{
ch->hit = ch->max_hit;
}
xprintf(buf, "You devour %d hp of life from $p.", hpgain);
act(buf, ch, obj, NULL, TO_CHAR);
act("You devour $p.", ch, obj, NULL, TO_CHAR);
act("$p is devoured by $n.", ch, obj, NULL, TO_ROOM);
extract_obj(obj);
return;
}
void do_staredown(CHAR_DATA * ch, char *argument)
{
CHAR_DATA *victim;
char arg[MAX_INPUT_LENGTH];
char buf[MAX_STRING_LENGTH];
argument = one_argument(argument, arg);
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
stc("Huh?\n\r", ch);
return;
}
if (ch->power[DISC_WERE_OWL] < 5)
{
stc("Your power in owl is not great enough.\n\r", ch);
return;
}
if ((victim = get_char_room(ch, NULL, arg)) == NULL)
{
stc("They aren't here.\n\r", ch);
return;
}
arg[0] = UPPER(arg[0]);
if (ch->fighting == NULL)
{
stc("You must be fighting to use the gift of Staredown.\n\r",
ch);
return;
}
if (victim->fighting == NULL)
{
xprintf(buf, "%s is not fighting anyone.", arg);
stc(buf, ch);
return;
}
WAIT_STATE(ch, 16);
if (IS_NPC(victim))
{
if (ch->power[DISC_WERE_OWL] < 6)
{
if (number_range(1, 3) != 1)
{
act("You stare deeply into $N's eyes, but nothing happens.", ch, NULL, victim, TO_CHAR);
act("$n stares deeply into your eyes.", ch,
NULL, victim, TO_VICT);
act("$n stares deeply into $N's eyes, but nothing happens.", ch, NULL, victim, TO_NOTVICT);
return;
}
}
act("You stare into $N's eyes, and $E flees in terror.", ch,
NULL, victim, TO_CHAR);
act("$n stares deeply into your eyes, and you are filled with terror.", ch, NULL, victim, TO_VICT);
act("$n stares deeply into $N's eyes, and $E flees in terror.", ch, NULL, victim, TO_NOTVICT);
do_flee(victim, "");
return;
}
else
{
if (ch->power[DISC_WERE_OWL] < 7)
{
if (number_range(1, 4) != 2)
{
act("You stare deeply into $N's eyes, but nothing happens.", ch, NULL, victim, TO_CHAR);
act("$n stares deeply into your eyes.", ch,
NULL, victim, TO_VICT);
act("$n stares deeply into $N's eyes, but nothing happens.", ch, NULL, victim, TO_NOTVICT);
return;
}
}
act("You stare into $N's eyes, and $E flees in terror.", ch,
NULL, victim, TO_CHAR);
act("$n stares deeply into your eyes, and you are filled with terror.", ch, NULL, victim, TO_VICT);
act("$n stares deeply into $N's eyes, and $E flees in terror.", ch, NULL, victim, TO_NOTVICT);
do_flee(victim, "");
return;
}
return;
}
void do_disquiet(CHAR_DATA * ch, char *argument)
{
CHAR_DATA *victim;
AFFECT_DATA af;
char arg[MAX_INPUT_LENGTH];
argument = one_argument(argument, arg);
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
send_to_char("Huh?\n\r", ch);
return;
}
if (ch->power[DISC_WERE_OWL] < 6)
{
stc("Your power in owl is not great enough.\n\r", ch);
return;
}
if ((victim = get_char_room(ch, NULL, arg)) == NULL)
{
stc("They are not here.\n\r", ch);
return;
}
if (is_safe(ch, victim))
return;
if (ch->gnosis[GCURRENT] < 1)
{
stc("You need one point of gnosis power to use the gift of Disquiet.\n\r", ch);
return;
}
af.type = skill_lookup("reserved");
af.duration = ch->power[DISC_WERE_OWL];
af.location = APPLY_DAMROLL;
af.modifier = -(ch->power[DISC_WERE_OWL] * 5);
af.bitvector = 0;
affect_to_char(victim, &af);
af.type = skill_lookup("reserved");
af.duration = ch->power[DISC_WERE_OWL];
af.location = APPLY_HITROLL;
af.modifier = -(ch->power[DISC_WERE_OWL] * 5);
af.bitvector = 0;
affect_to_char(victim, &af);
ch->gnosis[CURRENT]--;
act("Your eyes glow a sinister red as you glare at $N.", ch, NULL,
victim, TO_CHAR);
act("$n's eyes glow a sinister red as $e glares at you.\n\rYou feel odd.", ch, NULL, victim, TO_VICT);
act("$n's eyes glow a sinister red as $e glares at $N.", ch, NULL,
victim, TO_NOTVICT);
WAIT_STATE(ch, 4);
return;
}
void do_reshape(CHAR_DATA * ch, char *argument)
{
char arg1[MAX_STRING_LENGTH];
char arg2[MAX_STRING_LENGTH];
char arg3[MAX_STRING_LENGTH];
OBJ_DATA *obj;
argument = one_argument(argument, arg1);
argument = one_argument(argument, arg2);
strcpy(arg3, argument);
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
send_to_char("Huh?\n\r", ch);
return;
}
if (ch->power[DISC_WERE_OWL] < 7)
{
stc("Your power in owl is not great enough.\n\r", ch);
return;
}
if ((obj = get_obj_carry(ch, arg1, ch)) == NULL)
{
send_to_char("You don't have that item.\n\r", ch);
return;
}
if (!(!str_cmp(arg2, "short") || !str_cmp(arg2, "name")))
{
send_to_char
("syntax : reshape <item> <short/name> <newname>.\n\r",
ch);
return;
}
if (strlen(arg3) > 60 || strlen(arg3) < 3)
{
send_to_char
("The name should be between 3 and 60 characters.\n\r",
ch);
return;
}
if (has_bad_chars(ch, arg3))
{
send_to_char("Illegal chars.\n\r", ch);
return;
}
if (IS_SET(obj->quest, QUEST_ARTIFACT)
|| IS_SET(obj->quest, QUEST_PRIZE))
{
send_to_char("Not on artifacts and prizes.\n\r", ch);
return;
}
if (!str_cmp(arg2, "name"))
{
free_string(obj->name);
obj->name = str_dup(arg3);
obj->questmaker = str_dup(ch->name);
}
if (!str_cmp(arg2, "short"))
{
free_string(obj->short_descr);
obj->short_descr = str_dup(arg3);
obj->questmaker = str_dup(ch->name);
}
send_to_char("Ok.\n\r", ch);
return;
}
void do_cocoon(CHAR_DATA * ch, char *argument)
{
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
stc("Huh?\n\r", ch);
return;
}
if (ch->power[DISC_WERE_OWL] < 8)
{
stc("Your power in owl is not great enough.\n\r", ch);
return;
}
if (IS_GAR1(ch, WOLF_COCOON))
{
stc("Your cocoon breaks and falls to the ground.\n\r", ch);
act("$n's cocoon breaks and falls to the ground.", ch, NULL,
NULL, TO_ROOM);
REMOVE_BIT(ch->garou1, WOLF_COCOON);
return;
}
if (ch->gnosis[GCURRENT] < 2)
{
stc("You do not have enough gnosis to use Cocoon.\n\r", ch);
return;
}
else
{
stc("Your body is surrounded by a thick, opaque epidermis.\n\r", ch);
act("$n's body is surrounded by a thick, opaque epidermis.",
ch, NULL, NULL, TO_ROOM);
SET_BIT(ch->garou1, WOLF_COCOON);
ch->gnosis[GCURRENT]--;
return;
}
return;
}
/*
* Metis Gifts
* Level One - Gift of the Porcupine - Quills
* Level Two - Burrow - Like Demon Travel
* Level Three- Eyes of the Cat - Nightsight
* Level Four - Wither Limb - Withers a limb, easier on NPCs
* Level Five - Totem Gift - Random, Special Power. Ooo.
*/
void do_quills(CHAR_DATA * ch, char *argument)
{
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
stc("Huh?\n\r", ch);
return;
}
if (ch->power[DISC_WERE_HAWK] < 5)
{
stc("Your power in hawk is not great enough.\n\r", ch);
return;
}
if (IS_SET(ch->newbits, NEW_QUILLS))
{
stc("Your quills soften and twist into fur.\n\r", ch);
act("$n's quills soften and revert back to fur.", ch, NULL,
NULL, TO_ROOM);
REMOVE_BIT(ch->newbits, NEW_QUILLS);
return;
}
if (!IS_SET(ch->newbits, NEW_QUILLS))
{
stc("Your fur becomes bristly and sharp.\n\r", ch);
act("$n's fur becomes bristly and sharp.", ch, NULL, NULL,
TO_ROOM);
SET_BIT(ch->newbits, NEW_QUILLS);
return;
}
return;
}
void do_burrow(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_WEREWOLF))
{
send_to_char("Huh?\n\r", ch);
return;
}
if (IS_CLASS(ch, CLASS_WEREWOLF) && ch->power[DISC_WERE_HAWK] < 6)
{
stc("Your power in hawk is not great enough.\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_SET(victim->act, ACT_NOTRAVEL))
{
send_to_char("No Can Do.\n\r", ch);
return;
}
if (IS_IMMUNE(victim, IMM_TRAVEL))
{
send_to_char("I don't think they want you to do that.\n\r",
ch);
return;
}
if (!IS_NPC(victim) && IS_IMMUNE(victim, IMM_SUMMON))
{
send_to_char("I don't think they want you to do that.\n\r",
ch);
return;
}
if (victim == ch)
{
send_to_char("Nothing happens.\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 (victim->in_room == NULL)
{
send_to_char("Nothing happens.\n\r", ch);
return;
}
send_to_char("You burrow into the ground.\n\r", ch);
act("$n burrows into the ground.", ch, NULL, NULL, TO_ROOM);
char_from_room(ch);
char_to_room(ch, victim->in_room);
do_look(ch, "");
send_to_char("You burrow out of the ground.\n\r", ch);
act("$n burrows out of the ground.", ch, NULL, NULL, TO_ROOM);
return;
}
// Eyes of the Cat - Nightsight. clan.c
void do_wither(CHAR_DATA * ch, char *argument)
{
CHAR_DATA *victim;
OBJ_DATA *obj;
char arg[MAX_INPUT_LENGTH];
bool blah = FALSE;
int chance = 0;
argument = one_argument(argument, arg);
if (IS_NPC(ch))
return;
if (!IS_CLASS(ch, CLASS_WEREWOLF))
{
stc("Huh?\n\r", ch);
return;
}
if (ch->power[DISC_WERE_HAWK] < 7)
{
stc("Your power in hawk is not great enough.\n\r", ch);
return;
}
if (ch->gnosis[GCURRENT] < 1)
{
stc("You do not have enough gnosis power stored to use the gift of Wither Limb.\n\r", ch);
return;
}
if (arg[0] == '\0')
{
stc("Who's limb do you wish to wither?\n\r", ch);
return;
}
if ((victim = get_char_room(ch, NULL, arg)) == NULL)
{
stc("They aren't here.\n\r", ch);
return;
}
if (is_safe(ch, victim))
return;
if (IS_ARM_R(victim, LOST_ARM) && IS_ARM_L(victim, LOST_ARM))
{
stc("They have already lost both their arms.\n\r", ch);
return;
}
WAIT_STATE(ch, 12);
ch->gnosis[CURRENT] -= 1;
if (IS_NPC(victim))
{
chance = number_range(25, 35);
if (number_percent() > chance)
{
stc("Nothing happened.\n\r", ch);
return;
}
if (!IS_ARM_R(victim, LOST_ARM))
blah = FALSE;
else
blah = TRUE;
if (!blah)
{
if (!IS_ARM_R(victim, LOST_ARM))
SET_BIT(victim->loc_hp[3], LOST_ARM);
if (!IS_BLEEDING(victim, BLEEDING_ARM_R))
SET_BIT(victim->loc_hp[6], BLEEDING_ARM_R);
if (IS_BLEEDING(victim, BLEEDING_HAND_R))
REMOVE_BIT(victim->loc_hp[6],
BLEEDING_HAND_R);
act("You concentrate deeply and $N's arm starts to wither!", ch, NULL, victim, TO_CHAR);
act("$n's eyes glow dark red as $e gazes at you, and your arm begins withering!", ch, NULL, victim, TO_NOTVICT);
act("$n gazes evilly at $N, and $S arm begins withering!", ch, NULL, victim, TO_VICT);
make_part(victim, "arm");
if (IS_ARM_L(victim, LOST_ARM)
&& IS_ARM_R(victim, LOST_ARM))
{
if ((obj =
get_eq_char(victim, WEAR_ARMS)) != NULL)
take_item(victim, obj);
}
if ((obj = get_eq_char(victim, WEAR_WIELD)) != NULL)
take_item(victim, obj);
if ((obj = get_eq_char(victim, WEAR_HANDS)) != NULL)
take_item(victim, obj);
if ((obj = get_eq_char(victim, WEAR_WRIST_R)) != NULL)
take_item(victim, obj);
if ((obj =
get_eq_char(victim, WEAR_FINGER_R)) != NULL)
take_item(victim, obj);
return;
}
else if (blah)
{
if (!IS_ARM_L(victim, LOST_ARM))
SET_BIT(victim->loc_hp[2], LOST_ARM);
else
blah = TRUE;
if (!IS_BLEEDING(victim, BLEEDING_ARM_L))
SET_BIT(victim->loc_hp[6], BLEEDING_ARM_L);
if (IS_BLEEDING(victim, BLEEDING_HAND_L))
REMOVE_BIT(victim->loc_hp[6],
BLEEDING_HAND_L);
act("You concentrate deeply and $N's arm starts to wither!", ch, NULL, victim, TO_CHAR);
act("$n's eyes glow dark red as $e gazes at you, and your arm begins withering!", ch, NULL, victim, TO_NOTVICT);
act("$n gazes evilly at $N, and $S arm begins withering!", ch, NULL, victim, TO_VICT);
make_part(victim, "arm");
if (IS_ARM_L(victim, LOST_ARM)
&& IS_ARM_R(victim, LOST_ARM))
{
if ((obj =
get_eq_char(victim, WEAR_ARMS)) != NULL)
take_item(victim, obj);
}
if ((obj = get_eq_char(victim, WEAR_WIELD)) != NULL)
take_item(victim, obj);
if ((obj = get_eq_char(victim, WEAR_HANDS)) != NULL)
take_item(victim, obj);
if ((obj = get_eq_char(victim, WEAR_WRIST_L)) != NULL)
take_item(victim, obj);
if ((obj =
get_eq_char(victim, WEAR_FINGER_L)) != NULL)
take_item(victim, obj);
return;
}
}
else if (!IS_NPC(victim))
{
chance = 15;
if (number_percent() > chance)
{
act("You gaze intently at $N.\n\rNothing happens.",
ch, NULL, victim, TO_CHAR);
act("$n gazes eerily at you.\n\rNothing happens.", ch,
NULL, victim, TO_VICT);
act("$n gazes eerily at $N.", ch, NULL, victim,
TO_NOTVICT);
return;
}
if (!IS_ARM_R(victim, LOST_ARM))
blah = FALSE;
else
blah = TRUE;
if (!blah)
{
if (!IS_ARM_R(victim, LOST_ARM))
SET_BIT(victim->loc_hp[3], LOST_ARM);
if (!IS_BLEEDING(victim, BLEEDING_ARM_R))
SET_BIT(victim->loc_hp[6], BLEEDING_ARM_R);
if (IS_BLEEDING(victim, BLEEDING_HAND_R))
REMOVE_BIT(victim->loc_hp[6],
BLEEDING_HAND_R);
act("You concentrate deeply and $N's arm starts to wither!", ch, NULL, victim, TO_CHAR);
act("$n's eyes glow dark red as $e gazes at you, and your arm begins withering!", ch, NULL, victim, TO_NOTVICT);
act("$n gazes evilly at $N, and $S arm begins withering!", ch, NULL, victim, TO_VICT);
make_part(victim, "arm");
if (IS_ARM_L(victim, LOST_ARM)
&& IS_ARM_R(victim, LOST_ARM))
{
if ((obj =
get_eq_char(victim, WEAR_ARMS)) != NULL)
take_item(victim, obj);
}
if ((obj = get_eq_char(victim, WEAR_WIELD)) != NULL)
take_item(victim, obj);
if ((obj = get_eq_char(victim, WEAR_HANDS)) != NULL)
take_item(victim, obj);
if ((obj = get_eq_char(victim, WEAR_WRIST_R)) != NULL)
take_item(victim, obj);
if ((obj =
get_eq_char(victim, WEAR_FINGER_R)) != NULL)
take_item(victim, obj);
return;
}
else if (blah)
{
if (!IS_ARM_L(victim, LOST_ARM))
SET_BIT(victim->loc_hp[2], LOST_ARM);
else
blah = TRUE;
if (!IS_BLEEDING(victim, BLEEDING_ARM_L))
SET_BIT(victim->loc_hp[6], BLEEDING_ARM_L);
if (IS_BLEEDING(victim, BLEEDING_HAND_L))
REMOVE_BIT(victim->loc_hp[6],
BLEEDING_HAND_L);
act("You concentrate deeply and $N's arm starts to wither!", ch, NULL, victim, TO_CHAR);
act("$n's eyes glow dark red as $e gazes at you, and your arm begins withering!", ch, NULL, victim, TO_NOTVICT);
act("$n gazes evilly at $N, and $S arm begins withering!", ch, NULL, victim, TO_VICT);
make_part(victim, "arm");
if (IS_ARM_L(victim, LOST_ARM)
&& IS_ARM_R(victim, LOST_ARM))
{
if ((obj =
get_eq_char(victim, WEAR_ARMS)) != NULL)
take_item(victim, obj);
}
if ((obj = get_eq_char(victim, WEAR_WIELD)) != NULL)
take_item(victim, obj);
if ((obj = get_eq_char(victim, WEAR_HANDS)) != NULL)
take_item(victim, obj);
if ((obj = get_eq_char(victim, WEAR_WRIST_L)) != NULL)
take_item(victim, obj);
if ((obj =
get_eq_char(victim, WEAR_FINGER_L)) != NULL)
take_item(victim, obj);
return;
}
}
return;
}
/*
* Ahroun Gifts
*/
void do_razorclaws(CHAR_DATA * ch, char *argument)
{
if (ch->power[DISC_WERE_WOLF] < 4)
{
stc("Huh?\n\r", ch);
return;
}
if (!IS_VAMPAFF(ch, VAM_CLAWS))
{
stc("Your talons aren't even extended!\n\r", ch);
return;
}
if (IS_GAR1(ch, WOLF_RAZORCLAWS))
{
stc("Your claws lose their razor-sharp edge.\n\r", ch);
act("$n's claws lose their razor-sharp edge.", ch, NULL, NULL,
TO_ROOM);
REMOVE_BIT(ch->garou1, WOLF_RAZORCLAWS);
}
else
{
send_to_char("You hone your claws to a razor sharpness.\n\r",
ch);
act("$n hones $s claws to a razor sharpness.", ch, NULL, NULL,
TO_ROOM);
SET_BIT(ch->garou1, WOLF_RAZORCLAWS);
}
return;
}