#include <sys/types.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "merc.h"
void do_skin(CHAR_DATA *ch,char *argument)
{
if (IS_NPC(ch)) return;
if (!IS_SPHERE(ch, SPHERE_ANIMAL2))
{
send_to_char("#0You need the Animal Sphere Two for this.#n\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_sclaws(CHAR_DATA * ch, char *argument)
{
if (IS_NPC(ch))
return;
if (!IS_SPHERE(ch, SPHERE_ANIMAL))
{
send_to_char("#0You need the Animal Sphere for this.#n\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_claws(CHAR_DATA * ch, char *argument)
{
if (!IS_SPHERE(ch, SPHERE_ANIMAL))
{
send_to_char("You need the Animal Sphere for this.\n\r", ch);
return;
}
if (IS_SET(ch->pcdata->stats[UNI_AFF], VAM_CLAWS))
{
send_to_char("You retract your claws.\n\r", ch);
act("$n retracts $s claws.", ch, NULL, NULL, TO_ROOM);
REMOVE_BIT(ch->pcdata->stats[UNI_AFF], VAM_CLAWS);
}
else
{
send_to_char("Wicked claws extend from your fingers.\n\r",
ch);
act("Long sharp claws extend from $n's fingers.", ch, NULL,
NULL, TO_ROOM);
remove_obj(ch, WEAR_WIELD, TRUE);
remove_obj(ch, WEAR_HOLD, TRUE);
remove_obj(ch, WEAR_THIRD, TRUE);
remove_obj(ch, WEAR_FOURTH, TRUE);
SET_BIT(ch->pcdata->stats[UNI_AFF], VAM_CLAWS);
}
}
void do_fangs(CHAR_DATA * ch, char *argument)
{
if (!IS_SPHERE(ch, SPHERE_ANIMAL))
{
send_to_char("You need the Animal Sphere for this.\n\r", ch);
return;
}
if (IS_SET(ch->pcdata->stats[UNI_AFF], VAM_FANGS))
{
send_to_char("Your fangs slide back into your gums.\n\r", ch);
act("$n retracts $s fangs back into $s gums.", ch, NULL, NULL,
TO_ROOM);
REMOVE_BIT(ch->pcdata->stats[UNI_AFF], VAM_FANGS);
}
else
{
send_to_char("Sharp fangs slide out of your gums.\n\r", ch);
act("Sharp fangs slide out of $n's gums.", ch, NULL, NULL,
TO_ROOM);
SET_BIT(ch->pcdata->stats[UNI_AFF], VAM_FANGS);
}
}
void do_flameclaws(CHAR_DATA * ch, char *argument)
{
if (IS_NPC(ch))
return;
if (!IS_SPHERE(ch, SPHERE_ANIMAL2))
{
send_to_char("You need the second Animal Sphere for this.\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_rend(CHAR_DATA * ch, char *argument)
{
if (IS_NPC(ch))
return;
if (!IS_SPHERE(ch, SPHERE_ANIMAL))
{
send_to_char("You need the Animal Sphere for this.\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_roar(CHAR_DATA * ch, char *argument)
{
CHAR_DATA *victim;
char buf[MAX_STRING_LENGTH];
if (IS_NPC(ch))
return;
if (!IS_SPHERE(ch, SPHERE_ANIMAL2))
{
send_to_char("You need the second Animal Sphere for this.\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)
{
printf(buf,
"%s roars and screams, intimidating the hell out of %s.",
ch->name, victim->name);
act(buf, ch, NULL, NULL, TO_ROOM);
printf(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_talons(CHAR_DATA * ch, char *argument)
{
CHAR_DATA *victim;
char buf[MAX_STRING_LENGTH];
int dam;
if (IS_NPC(ch))
return;
if (!IS_SPHERE(ch, SPHERE_ANIMAL))
{
send_to_char("You need the Animal Sphere for this.\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);
sprintf(buf,"Your talons strike $N incredibly hard! [%d]\n\r",dam);
act(buf,ch,NULL,victim,TO_CHAR);
sprintf(buf,"$n's talons strike you incredibly hard! [%d]\n\r",dam);
act(buf,ch,NULL,victim,TO_VICT);
sprintf(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_quills(CHAR_DATA * ch, char *argument)
{
if (IS_NPC(ch))
return;
if (!IS_SPHERE(ch, SPHERE_ANIMAL2))
{
send_to_char("You need the second Animal Sphere for this.\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_SPHERE(ch, SPHERE_ANIMAL))
{
send_to_char("You need the Animal Sphere for this.\n\r", ch);
return;
}
if (arg[0] == '\0')
{
send_to_char("Burrow to who?\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 = get_char_world(ch, arg)) == NULL)
{
send_to_char("They are not here.\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_SET(victim->act, ACT_NOTRAVEL))
{
send_to_char("No Can Do.\n\r", ch);
return;
}
if (victim == ch)
{
send_to_char("You cannot burrow to yourself.\n\r", ch);
return;
}
if (victim->in_room == NULL)
{
send_to_char("Nothing happens.\n\r", ch);
return;
}
if (IS_SET(victim->in_room->room_flags, ROOM_ASTRAL))
{
stc("Their room is not connected to the astral plane.\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;
}