/***************************************************************************
* 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. *
***************************************************************************/
/*********************************************
* Hydra, another class by Xrakisis *
*********************************************/
#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"
void do_hydraform( CHAR_DATA *ch, char *argument )
{
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_HYDRA) && !IS_CLASS(ch, CLASS_NAZGUL))
{
send_to_char("Hydra Only?\n\r",ch);
return;
}
if (IS_POLYAFF(ch, POLY_ZULOFORM))
{
REMOVE_BIT(ch->polyaff, POLY_ZULOFORM);
REMOVE_BIT(ch->affected_by, AFF_POLYMORPH);
act( "You Transform into a Lesser Serpent.", ch, NULL, NULL, TO_CHAR );
act( "$n's Transforms into a Lesser Serpent.", ch, NULL, NULL, TO_ROOM);
ch->damroll -= 400;
ch->hitroll -= 400;
ch->armor += 500;
free_string( ch->morph );
ch->morph = str_dup( "" );
return;
}
else if (IS_AFFECTED(ch,AFF_POLYMORPH))
{
send_to_char("#0You Cant Hydra Form While Changed#n.\n\r",ch);
return;
}
if (ch->stance[0] != -1) do_stance(ch,"");
if (ch->mounted == IS_RIDING) do_dismount(ch,"");
act( "You Grow Into a Massive #RH#rY#7D#rR#RA#n.", ch, NULL, NULL, TO_CHAR);
act( "$n's Grows into an Imposing Multi-Headed #RH#rY#7D#rR#RA#n.", ch, NULL, NULL, TO_ROOM );
SET_BIT(ch->polyaff, POLY_ZULOFORM);
SET_BIT(ch->affected_by, AFF_POLYMORPH);
sprintf(buf, "%s The Monstrous Hydra", ch->name);
free_string( ch->morph );
ch->morph = str_dup( buf );
ch->damroll += 400;
ch->hitroll += 400;
ch->armor -= 500;
return;
}
void do_scalebuy( 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_HYDRA) && !IS_CLASS(ch, CLASS_TYPHON)
&& !IS_CLASS(ch, CLASS_NAZGUL) && !IS_CLASS(ch, CLASS_BAATEZU))
{
send_to_char("Huh.\n\r",ch);
return;
}
if (arg[0] == '\0')
{
send_to_char("Type the Gemtype for each Scale #n\n\r",ch);
send_to_char("Diamond Onyx Emerald Sapphire Ruby #n\n\r",ch);
send_to_char("Jade Pearl Topaz Amethyst Opal #n\n\r",ch);
send_to_char("Lazuli Chaos Dark Beast #n\n\r",ch);
return;
}
if ( ch->pcdata->quest < 40000 )
{
send_to_char("You don't have the 40K qps needed.\n\r",ch);
return;
}
if (!str_cmp(arg,"diamond" )) vnum = 94084;
else if (!str_cmp(arg,"onyx" )) vnum = 94085;
else if (!str_cmp(arg,"emerald" )) vnum = 94086;
else if (!str_cmp(arg,"sapphire" )) vnum = 94087;
else if (!str_cmp(arg,"ruby" )) vnum = 94088;
else if (!str_cmp(arg,"jade" )) vnum = 94089;
else if (!str_cmp(arg,"pearl" )) vnum = 94090;
else if (!str_cmp(arg,"topaz" )) vnum = 94091;
else if (!str_cmp(arg,"amethyst" )) vnum = 94092;
else if (!str_cmp(arg,"opal" )) vnum = 94093;
else if (!str_cmp(arg,"lazuli" )) vnum = 94094;
else if (!str_cmp(arg,"chaos" )) vnum = 94095;
else if (!str_cmp(arg,"dark" )) vnum = 94096;
else if (!str_cmp(arg,"beast" )) vnum = 94097;
else
{
do_scalebuy(ch,"");
return;
}
if ( vnum == 0 || (pObjIndex = get_obj_index( vnum )) == NULL)
{
send_to_char("Missing object, please inform Xrakisis .\n\r",ch);
return;
}
if(!IS_IMMORTAL(ch)) ch->pcdata->quest -= 40000;
obj = create_object(pObjIndex, 50);
obj->questowner = str_dup(ch->pcdata->switchname);
obj_to_char(obj, ch);
act("You transform the 40K qp into $p.",ch,obj,NULL,TO_CHAR);
act("$n forms $p out of 40K qp.",ch,obj,NULL,TO_ROOM);
return;
}
void do_hydragain (CHAR_DATA *ch, char *argument)
{
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_HYDRA))
{
send_to_char("#0This is a Hydra Ability#n\n\r",ch);
return;
}
if (arg[0] == '\0')
{
if (ch->pcdata->powers[HYDRA_POWER] == 0)
send_to_char("#0Power #0[#R**********#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_POWER] == 1)
send_to_char("#0Power #0[#G*#R*********#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_POWER] == 2)
send_to_char("#0Power #0[#G**#R********#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_POWER] == 3)
send_to_char("#0Power #0[#G***#R*******#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_POWER] == 4)
send_to_char("#0Power #0[#G****#R******#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_POWER] == 5)
send_to_char("#0Power #0[#G*****#R*****#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_POWER] == 6)
send_to_char("#0Power #0[#G******#R****#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_POWER] == 7)
send_to_char("#0Power #0[#G*******#R***#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_POWER] == 8)
send_to_char("#0Power #0[#G********#R**#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_POWER] == 9)
send_to_char("#0Power #0[#G*********#R*#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_POWER] == 10)
send_to_char("#0Power #0[#G**********#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_MAGIC] == 0)
send_to_char("#0Magic #0[#R**********#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_MAGIC] == 1)
send_to_char("#0Magic #0[#G*#R*********#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_MAGIC] == 2)
send_to_char("#0Magic #0[#G**#R********#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_MAGIC] == 3)
send_to_char("#0Magic #0[#G***#R*******#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_MAGIC] == 4)
send_to_char("#0Magic #0[#G****#R******#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_MAGIC] == 5)
send_to_char("#0Magic #0[#G*****#R*****#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_MAGIC] == 6)
send_to_char("#0Magic #0[#G******#R****#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_MAGIC] == 7)
send_to_char("#0Magic #0[#G*******#R***#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_MAGIC] == 8)
send_to_char("#0Magic #0[#G********#R**#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_MAGIC] == 9)
send_to_char("#0Magic #0[#G*********#R*#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_MAGIC] == 10)
send_to_char("#0Magic #0[#G**********#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_ATTACK] == 0)
send_to_char("#0Attack #0[#R**********#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_ATTACK] == 1)
send_to_char("#0Attack #0[#G*#R*********#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_ATTACK] == 2)
send_to_char("#0Attack #0[#G**#R********#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_ATTACK] == 3)
send_to_char("#0Attack #0[#G***#R*******#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_ATTACK] == 4)
send_to_char("#0Attack #0[#G****#R******#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_ATTACK] == 5)
send_to_char("#0Attack #0[#G*****#R*****#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_ATTACK] == 6)
send_to_char("#0Attack #0[#G******#R****#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_ATTACK] == 7)
send_to_char("#0Attack #0[#G*******#R***#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_ATTACK] == 8)
send_to_char("#0Attack #0[#G********#R**#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_ATTACK] == 9)
send_to_char("#0Attack #0[#G*********#R*#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_ATTACK] == 10)
send_to_char("#0Attack #0[#G**********#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_DEFENSE] == 0)
send_to_char("#0Defense #0[#R**********#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_DEFENSE] == 1)
send_to_char("#0Defense #0[#G*#R*********#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_DEFENSE] == 2)
send_to_char("#0Defense #0[#G**#R********#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_DEFENSE] == 3)
send_to_char("#0Defense #0[#G***#R*******#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_DEFENSE] == 4)
send_to_char("#0Defense #0[#G****#R******#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_DEFENSE] == 5)
send_to_char("#0Defense #0[#G*****#R*****#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_DEFENSE] == 6)
send_to_char("#0Defense #0[#G******#R****#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_DEFENSE] == 7)
send_to_char("#0Defense #0[#G*******#R***#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_DEFENSE] == 8)
send_to_char("#0Defense #0[#G********#R**#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_DEFENSE] == 9)
send_to_char("#0Defense #0[#G*********#R*#0]#n\n\r",ch);
if (ch->pcdata->powers[HYDRA_DEFENSE] == 10)
send_to_char("#0Defense #0[#G**********#0]#n\n\r",ch);
send_to_char("Choose a Hydra Power to Increase: Power, Magic, Attack, Defense.\n\r",ch);
return;
}
if (!str_cmp(arg,"power"))
{
if (ch->pcdata->powers[HYDRA_POWER]>9)
{
send_to_char("You Have Full Power.\n\r",ch);
return;
}
else if (ch->practice < ch->pcdata->powers[HYDRA_POWER] * 60 + 60)
{
send_to_char("You are not ready to increase your power.\n\r",ch);
return;
}
else
{
ch->practice -= ch->pcdata->powers[HYDRA_POWER] * 60 + 60;
send_to_char("You have become more powerful.\n\r",ch);
ch->pcdata->powers[HYDRA_POWER] += 1;
return;
}
}
else if (!str_cmp(arg,"magic"))
{
if (ch->pcdata->powers[HYDRA_MAGIC]>9)
{
send_to_char("You are already a master of the Arcane.\n\r",ch);
return;
}
else if (ch->practice < ch->pcdata->powers[HYDRA_MAGIC] * 60 + 60)
{
send_to_char("You are not ready to learn more of the Arcane.\n\r",ch);
return;
}
else
{
ch->practice -= ch->pcdata->powers[HYDRA_MAGIC] * 60 + 60;
send_to_char("Your mastery of the ancient arts increase.\n\r",ch);
ch->pcdata->powers[HYDRA_MAGIC] += 1;
return;
}
}
else if (!str_cmp(arg,"attack"))
{
if (ch->pcdata->powers[HYDRA_ATTACK] > 9)
{
send_to_char("You have mastered Attack.\n\r",ch);
return;
}
if (ch->practice < ch->pcdata->powers[HYDRA_ATTACK] * 60 + 60)
{
send_to_char("You may not learn more of Melee yet.\n\r",ch);
return;
}
else
{
ch->practice -= ch->pcdata->powers[HYDRA_ATTACK] * 60 + 60;
send_to_char("Knowledge flows into you and you gain a better understanding of Combat.\n\r",ch);
ch->pcdata->powers[HYDRA_ATTACK] += 1;
return;
}
}
else if (!str_cmp(arg,"defense"))
{
if (ch->pcdata->powers[HYDRA_DEFENSE] > 9)
{
send_to_char("You have Mastered the art of Defense.\n\r",ch);
return;
}
if (ch->practice < ch->pcdata->powers[HYDRA_DEFENSE] * 60 + 60)
{
send_to_char("You can not learn more of Defense yet.\n\r",ch);
return;
}
else
{
ch->practice -= ch->pcdata->powers[HYDRA_DEFENSE] * 60 + 60;
send_to_char("You Learn more of Defense.\n\r",ch);
ch->pcdata->powers[HYDRA_DEFENSE] += 1;
return;
}
}
return;
}
void do_growth (CHAR_DATA *ch, char *argument)
{
char buf[MAX_STRING_LENGTH];
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_HYDRA) && !IS_CLASS(ch, CLASS_TYPHON)
&& !IS_CLASS(ch, CLASS_NAZGUL) && !IS_CLASS(ch, CLASS_BAATEZU))
{
send_to_char("Only Hydras may grow more heads.\n\r",ch);
return;
}
if (ch->pcdata->powers[HYDRA_HEADS] > 17)
{
send_to_char("You Already Have 18 Heads.\n\r",ch);
return;
}
if (ch->practice < ch->pcdata->powers[HYDRA_HEADS]*60 + 60)
{
send_to_char("You are not ready to grow another head.\n\r",ch);
return;
}
else
{
ch->practice -= ch->pcdata->powers[HYDRA_HEADS]*60 + 60;
send_to_char("A stump begins growing from your body, it forms into a neck, then a head slowly grows.\n\r",ch);
// sprintf(buf,"%s the #C***#yHydra#C***#n has Grown another Head.\n\r",ch->pcdata->switchname);
// do_info(ch,buf);
ch->pcdata->powers[HYDRA_HEADS] += 1;
return;
}
}
void do_stomp( CHAR_DATA *ch, char *argument )
{
CHAR_DATA *victim;
OBJ_DATA *obj;
int limb;
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_HYDRA) && !IS_CLASS(ch, CLASS_TYPHON)
&& !IS_CLASS(ch, CLASS_NAZGUL) && !IS_CLASS(ch, CLASS_BAATEZU))
{
send_to_char("What?\n\r",ch);
return;
}
if (ch->pcdata->powers[HYDRA_ATTACK] < 5)
{
send_to_char("You Need To get Your Attack Higher.\n\r",ch);
return;
}
if (( victim = ch->fighting ) == NULL )
{
send_to_char( "You aren't fighting anyone.\n\r", ch );
return;
}
act("You throw $N to the ground and tramples $S to a bloody pulp.",ch,NULL,victim,TO_CHAR);
act("$n throws you to the ground and #RSTOMPS#n on you.",ch,NULL,victim,TO_VICT);
act("$n throws $N to the ground and tramples $S to a bloody pulp.",ch,NULL,victim,TO_NOTVICT);
hurt_person(ch,victim,500);
limb = number_range(1,4);
if (number_range(1,100) > 60 && !IS_NPC(victim)) {
if (limb < 3)
{
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);
if (IS_BLEEDING(victim,BLEEDING_ELBOW_R)) REMOVE_BIT(victim->loc_hp[6],BLEEDING_ELBOW_R);
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);
}
else
{
if (!IS_ARM_L(victim,LOST_ARM)) SET_BIT(victim->loc_hp[2],LOST_ARM);
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);
if (IS_BLEEDING(victim,BLEEDING_ELBOW_L)) REMOVE_BIT(victim->loc_hp[6],BLEEDING_ELBOW_L);
if ((obj = get_eq_char( victim, WEAR_ARMS )) != NULL) take_item(victim,obj);
if ((obj = get_eq_char( victim, WEAR_HOLD )) != 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);
}
}
WAIT_STATE(ch,24);
return;
}
void do_breath( CHAR_DATA *ch, char *argument )
{
CHAR_DATA *victim;
int sn;
int level = 40;
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_HYDRA) && !IS_CLASS(ch, CLASS_TYPHON)
&& !IS_CLASS(ch, CLASS_NAZGUL) && !IS_CLASS(ch, CLASS_BAATEZU))
{
send_to_char("What?\n\r",ch);
return;
}
if (( victim = ch->fighting ) == NULL )
{
send_to_char( "You aren't fighting anyone.\n\r", ch );
return;
}
if (!((sn = skill_lookup( "fire breath" )) > 0)) return;
(*skill_table[sn].spell_fun) (sn,level,ch,victim);
if (ch->pcdata->powers[HYDRA_LEVEL] > 0) (*skill_table[sn].spell_fun) (sn,level,ch,victim);
if (ch->pcdata->powers[HYDRA_LEVEL] > 1) (*skill_table[sn].spell_fun) (sn,level,ch,victim);
if (ch->pcdata->powers[HYDRA_LEVEL] > 3) (*skill_table[sn].spell_fun) (sn,level,ch,victim);
if (ch->pcdata->powers[HYDRA_LEVEL] > 4) (*skill_table[sn].spell_fun) (sn,level,ch,victim);
WAIT_STATE(ch, 24);
return;
}
void do_mistwalk(CHAR_DATA *ch, char *argument)
{
char arg[MAX_INPUT_LENGTH];
ROOM_INDEX_DATA *location;
CHAR_DATA *victim;
one_argument (argument, arg);
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_HYDRA) && !IS_CLASS(ch, CLASS_TYPHON)
&& !IS_CLASS(ch, CLASS_NAZGUL) && !IS_CLASS(ch, CLASS_BAATEZU))
{
send_to_char("Huh?\n\r", ch );
return;
}
if (ch->pcdata->powers[HYDRA_POWER] < 2)
{
send_to_char("You need level 2 Hydra Power.\n\r",ch);
return;
}
if ((victim = get_char_world(ch, arg)) == NULL)
{
send_to_char("Mistwalk to whom?\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_IMMUNE(victim, IMM_TRAVEL) && !IS_NPC(victim))
{
send_to_char("I don't think they want you to do that.\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;
}
location = victim->in_room;
if (ch->move < 250)
{
send_to_char("You are too tired to reform into mist.\n\r", ch );
return;
}
act("You reform into thin mist and seep into the floor.", ch, NULL, NULL, TO_CHAR);
act("$n reforms into thin mist and seeps into the floor.", ch, NULL, NULL, TO_ROOM);
ch->move -= 250;
char_from_room(ch);
char_to_room(ch, location);
do_look(ch, "auto");
act("You seep up from the floor and reform into your body.", ch, NULL, NULL, TO_CHAR);
act("A fine mist seeps up from the floor and reforms into $n.", ch, NULL, NULL, TO_ROOM);
return;
}
void do_shaperoar (CHAR_DATA *ch, char *argument)
{
CHAR_DATA *victim;
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_HYDRA) && !IS_CLASS(ch, CLASS_TYPHON)
&& !IS_CLASS(ch, CLASS_NAZGUL) && !IS_CLASS(ch, CLASS_BAATEZU))
{
if (IS_CLASS(ch, CLASS_WEREWOLF) || IS_CLASS(ch, CLASS_UNDEAD_LYCAN)) do_roar(ch,argument);
else send_to_char("Huh?\n\r",ch);
return;
}
if (ch->pcdata->powers[HYDRA_DEFENSE] < 3)
{
send_to_char("Your Hydra Defense isnt high enough.\n\r",ch);
return;
}
if ( ch->fighting == NULL )
{
send_to_char("You must be fighting to #RROAR!!!!#n.\n\r",ch);
return;
}
if ( (victim = ch->fighting) == NULL ) return;
WAIT_STATE( ch, 16 );
if ( number_range( 1, 2 ) != 1 )
{
act("You let out an insane BeeF-powered #RROAR!!!!!!!!!#n to scare the shit out of $N, but it doesn't work.",ch,NULL,victim,TO_CHAR);
act("$n lets out an insane BeeF-powered #RROAR!!!!!!!!!#n, but it doesn't scare you.",ch,NULL,victim,TO_VICT);
act("$n lets out an insane BeeF-powered #RROAR!!!!!!!!!#n",ch,NULL,victim,TO_NOTVICT);
return;
}
act("You let out an insane BeeF-powered #RROAR!!!!!!!!!#n and scare the shit out of $N.",ch,NULL,victim,TO_CHAR);
act("$n lets out an insane BeeF-powered #RROAR!!!!!!!!!#n, and you are filled with terror.",ch,NULL,victim,TO_VICT);
act("$n lets out an insane BeeF-powered #RROAR!!!!!!!!!#n",ch,NULL,victim,TO_NOTVICT);
do_flee( victim, "" );
return;
}
void do_charge(CHAR_DATA *ch, char *argument)
{
CHAR_DATA *victim;
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_HYDRA) && !IS_CLASS(ch, CLASS_TYPHON)
&& !IS_CLASS(ch, CLASS_NAZGUL) && !IS_CLASS(ch, CLASS_BAATEZU))
{
send_to_char("Huh?\n\r",ch);
return;
}
if (ch->pcdata->powers[HYDRA_ATTACK] < 4)
{
send_to_char("Your Skill with Attack isnt good enough.\n\r",ch);
return;
}
if (ch->move < 2000)
{
send_to_char("This costs 2000 move.\n\r",ch);
return;
}
if ( ( victim = ch->fighting ) == NULL )
{
send_to_char( "You aren't fighting anyone.\n\r", ch );
return;
}
WAIT_STATE(ch, 18);
ch->move -= 2000;
one_hit(ch,victim,gsn_headbutt,1);
one_hit(ch,victim,gsn_hooves,1);
one_hit(ch,victim,gsn_hooves,1);
one_hit(ch,victim,gsn_hooves,1);
if (number_range(1,3)==1)
{
victim->position = POS_STUNNED;
ch->position = POS_STANDING;
act("You lift $N up by the horns and sends $M flying into the wall.",ch,NULL,victim,TO_CHAR);
act("$n lifts you up by the horns and send you flying into the wall.",ch,NULL,victim, TO_VICT);
act("$n lifts $N up by the horns and sends $M flying into the wall.",ch,NULL,victim, TO_ROOM);
}
return;
}
void do_deathaura( CHAR_DATA *ch, char *argument )
{
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_HYDRA) && !IS_CLASS(ch, CLASS_TYPHON)
&& !IS_CLASS(ch, CLASS_NAZGUL) && !IS_CLASS(ch, CLASS_BAATEZU))
{
send_to_char("Huh?\n\r",ch);
return;
}
if (ch->pcdata->powers[HYDRA_MAGIC] < 3)
{
send_to_char("You need your Magic to 3 for this.\n\r",ch);
return;
}
if (IS_SET(ch->pcdata->powers[AURAS], DEATH_AURA))
{
REMOVE_BIT(ch->pcdata->powers[AURAS], DEATH_AURA);
act("Your Death Aura dicipates.", ch, NULL, NULL, TO_CHAR);
act("$n loses their Death Aura.", ch, NULL, NULL, TO_ROOM);
return;
}
SET_BIT(ch->pcdata->powers[AURAS], DEATH_AURA);
act("An Aura of Death seeps through your Scales..", ch, NULL, NULL, TO_CHAR);
act("An Aura of DEATH seeps through $n's Scales .", ch, NULL, NULL, TO_ROOM);
return;
}