/***************************************************************************
* God Wars Mud originally written by KaVir aka Richard Woolcock. *
* Changes done to the code done by Sage aka Walter Howard, this mud is *
* for the public, however if you run this code it means you agree *
* to the license.low, license.gw, and license.merc have fun. :) *
***************************************************************************/
#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 set_fighting args(( CHAR_DATA *ch, CHAR_DATA *victim));
void animalism_disc( CHAR_DATA *ch )
{
if (IS_NPC(ch) ) return;
if ( ch->pcdata->powers[VAM_ANIM] == 0 )
{
stc(" Animalism: None.\n\r",ch);
return;
}
if ( ch->pcdata->powers[VAM_ANIM] >= 1 )
stc(" Animalism: Beckon",ch);
if ( ch->pcdata->powers[VAM_ANIM] >= 2 )
stc(" Serenity",ch);
if ( ch->pcdata->powers[VAM_ANIM] >= 3 )
stc(" Pigeon",ch);
if ( ch->pcdata->powers[VAM_ANIM] >= 4 )
stc(" Share",ch);
if ( ch->pcdata->powers[VAM_ANIM] >= 5 )
stc(" Frenzy",ch);
stc("\n\r",ch);
return;
}
void obtenebration_disc( CHAR_DATA *ch )
{
if (IS_NPC(ch) ) return;
if ( ch->pcdata->powers[VAM_OBTE] == 0 )
{
stc(" Obtenebration: None.\n\r",ch);
return;
}
if ( ch->pcdata->powers[VAM_OBTE] >= 1 )
stc(" Obtenebration: Shroud",ch);
if ( ch->pcdata->powers[VAM_OBTE] >= 2 )
stc(" Shroudnight",ch);
if ( ch->pcdata->powers[VAM_OBTE] >= 3 )
stc(" NightSight",ch);
if ( ch->pcdata->powers[VAM_OBTE] >= 4 )
stc(" Shadowstep",ch);
if ( ch->pcdata->powers[VAM_OBTE] >= 5 )
stc(" Lamprey",ch);
stc("\n\r",ch);
return;
}
void thaumaturgy_disc( CHAR_DATA *ch )
{
if (IS_NPC(ch) ) return;
if ( ch->pcdata->powers[VAM_THAU] == 0 )
{
stc(" Thaumaturgy: None.\n\r",ch);
return;
}
if ( ch->pcdata->powers[VAM_THAU] >= 1 )
stc(" Thaumaturgy: Taste",ch);
if ( ch->pcdata->powers[VAM_THAU] >= 2 )
stc(" Cauldron",ch);
if ( ch->pcdata->powers[VAM_THAU] >= 3 )
stc(" Potency",ch);
if ( ch->pcdata->powers[VAM_THAU] >= 4 )
stc(" Theft",ch);
if ( ch->pcdata->powers[VAM_THAU] >= 5 )
stc(" Tide",ch);
stc("\n\r",ch);
return;
}
void obfuscate_disc( CHAR_DATA *ch )
{
if (IS_NPC(ch) ) return;
if ( ch->pcdata->powers[VAM_OBFU] == 0 )
{
stc(" Obfuscate: None.\n\r",ch);
return;
}
if ( ch->pcdata->powers[VAM_OBFU] >= 1 )
stc(" Obfuscate: Vanish",ch);
if ( ch->pcdata->powers[VAM_OBFU] >= 2 )
stc(" Shield",ch);
if ( ch->pcdata->powers[VAM_OBFU] >= 3 )
stc(" Mask",ch);
if ( ch->pcdata->powers[VAM_OBFU] >= 4 )
stc(" Mortal",ch);
if ( ch->pcdata->powers[VAM_OBFU] >= 5 )
stc(" Conceal",ch);
stc("\n\r",ch);
return;
}
void serpentis_disc( CHAR_DATA *ch )
{
if (IS_NPC(ch) ) return;
if ( ch->pcdata->powers[VAM_SERP] == 0 )
{
stc(" Serpentis: None.\n\r",ch);
return;
}
if ( ch->pcdata->powers[VAM_SERP] >= 1 )
stc(" Serpentis: Darkheart",ch);
if ( ch->pcdata->powers[VAM_SERP] >= 2 )
stc(" SerpentForm",ch);
if ( ch->pcdata->powers[VAM_SERP] >= 3 )
stc(" Poison",ch);
if ( ch->pcdata->powers[VAM_SERP] >= 4 )
stc(" Breath",ch);
if ( ch->pcdata->powers[VAM_SERP] >= 5 )
stc(" Tongue",ch);
stc("\n\r",ch);
return;
}
void chimerstry_disc( CHAR_DATA *ch )
{
if (IS_NPC(ch) ) return;
if ( ch->pcdata->powers[VAM_CHIM] == 0 )
{
stc(" Chimerstry: None.\n\r",ch);
return;
}
if ( ch->pcdata->powers[VAM_CHIM] >= 1 )
stc(" Chimerstry: Mirror",ch);
if ( ch->pcdata->powers[VAM_CHIM] >= 2 )
stc(" Formillusion",ch);
if ( ch->pcdata->powers[VAM_CHIM] >= 3 )
stc(" Clone",ch);
if ( ch->pcdata->powers[VAM_CHIM] >= 4 )
stc(" Control",ch);
if ( ch->pcdata->powers[VAM_CHIM] >= 5 )
stc(" Objectmask",ch);
stc("\n\r",ch);
return;
}
void necromancy_disc( CHAR_DATA *ch )
{
if (IS_NPC(ch) ) return;
if ( ch->pcdata->powers[VAM_NECR] == 0 )
{
stc(" Necromancy: None.\n\r",ch);
return;
}
if ( ch->pcdata->powers[VAM_NECR] >= 1 )
stc(" Necromancy: BloodWater",ch);
if ( ch->pcdata->powers[VAM_NECR] >= 2 )
stc(" Preserve",ch);
if ( ch->pcdata->powers[VAM_NECR] >= 3 )
stc(" Spiritgate",ch);
if ( ch->pcdata->powers[VAM_NECR] >= 4 )
stc(" SpiritGuardian",ch);
if ( ch->pcdata->powers[VAM_NECR] >= 5 )
stc(" Zombie",ch);
stc("\n\r",ch);
return;
}
void celerity_disc( CHAR_DATA *ch )
{
if (IS_NPC(ch) ) return;
if ( ch->pcdata->powers[VAM_CELE] == 0 )
{
stc(" Celerity: None.\n\r",ch);
return;
}
if ( ch->pcdata->powers[VAM_CELE] >= 1 )
stc(" Celerity: 1",ch);
if ( ch->pcdata->powers[VAM_CELE] >= 2 )
stc(" 2",ch);
if ( ch->pcdata->powers[VAM_CELE] >= 3 )
stc(" 3",ch);
if ( ch->pcdata->powers[VAM_CELE] >= 4 )
stc(" 4",ch);
if ( ch->pcdata->powers[VAM_CELE] >= 5 )
stc(" 5",ch);
stc("\n\r",ch);
return;
}
void presence_disc( CHAR_DATA *ch )
{
if (IS_NPC(ch) ) return;
if ( ch->pcdata->powers[VAM_PRES] == 0 )
{
stc(" Presence: None.\n\r",ch);
return;
}
if ( ch->pcdata->powers[VAM_PRES] >= 1 )
stc(" Presence: Awe",ch);
if ( ch->pcdata->powers[VAM_PRES] >= 2 )
stc(" Mindblast",ch);
if ( ch->pcdata->powers[VAM_PRES] >= 3 )
stc(" Entrance",ch);
if ( ch->pcdata->powers[VAM_PRES] >= 4 )
stc(" Summoning",ch);
if ( ch->pcdata->powers[VAM_PRES] >= 5 )
stc(" Majesty",ch);
stc("\n\r",ch);
return;
}
void auspex_disc( CHAR_DATA *ch )
{
if (IS_NPC(ch) ) return;
if ( ch->pcdata->powers[VAM_AUSP] == 0 )
{
stc(" Auspex: None.\n\r",ch);
return;
}
if ( ch->pcdata->powers[VAM_AUSP] >= 1 )
stc(" Auspex: Truesight",ch);
if ( ch->pcdata->powers[VAM_AUSP] >= 2 )
stc(" Scry",ch);
if ( ch->pcdata->powers[VAM_AUSP] >= 3 )
stc(" Unveil",ch);
if ( ch->pcdata->powers[VAM_AUSP] >= 4 )
stc(" Astral Walk",ch);
if ( ch->pcdata->powers[VAM_AUSP] >= 5 )
stc(" Readaura",ch);
stc("\n\r",ch);
return;
}
void potence_disc( CHAR_DATA *ch )
{
if (IS_NPC(ch) ) return;
if ( ch->pcdata->powers[VAM_POTE] == 0 )
{
stc(" Potence: None.\n\r",ch);
return;
}
if ( ch->pcdata->powers[VAM_POTE] >= 1 )
stc(" Potence: 1",ch);
if ( ch->pcdata->powers[VAM_POTE] >= 2 )
stc(" 2",ch);
if ( ch->pcdata->powers[VAM_POTE] >= 3 )
stc(" 3",ch);
if ( ch->pcdata->powers[VAM_POTE] >= 4 )
stc(" 4",ch);
if ( ch->pcdata->powers[VAM_POTE] >= 5 )
stc(" 5",ch);
stc("\n\r",ch);
return;
}
void vicissitude_disc( CHAR_DATA *ch )
{
if (IS_NPC(ch) ) return;
if ( ch->pcdata->powers[VAM_VICI] == 0 )
{
stc(" Vicissitude: None.\n\r",ch);
return;
}
if ( ch->pcdata->powers[VAM_VICI] >= 1 )
stc(" Vicissitude: Zuloform",ch);
if ( ch->pcdata->powers[VAM_VICI] >= 2 )
stc(" Fleshcraft",ch);
if ( ch->pcdata->powers[VAM_VICI] >= 3 )
stc(" Bonemod",ch);
if ( ch->pcdata->powers[VAM_VICI] >= 4 )
stc(" DragonForm",ch);
if ( ch->pcdata->powers[VAM_VICI] >= 5 )
stc(" Plasma",ch);
stc("\n\r",ch);
return;
}
void obeah_disc( CHAR_DATA *ch )
{
if (IS_NPC(ch) ) return;
if ( ch->pcdata->powers[VAM_OBEA] == 0 )
{
stc(" Obeah: None.\n\r",ch);
return;
}
if ( ch->pcdata->powers[VAM_OBEA] >= 1 )
stc(" Obeah: Obeah",ch);
if ( ch->pcdata->powers[VAM_OBEA] >= 2 )
stc(" Panacea",ch);
if ( ch->pcdata->powers[VAM_OBEA] >= 3 )
stc(" anesthetic",ch);
if ( ch->pcdata->powers[VAM_OBEA] >= 4 )
stc(" neutral",ch);
if ( ch->pcdata->powers[VAM_OBEA] >= 5 )
stc(" renew",ch);
stc("\n\r",ch);
return;
}
void fortitude_disc( CHAR_DATA *ch )
{
if (IS_NPC(ch) ) return;
if ( ch->pcdata->powers[VAM_FORT] == 0 )
{
stc(" Fortitude: None.\n\r",ch);
return;
}
if ( ch->pcdata->powers[VAM_FORT] >= 1 )
stc(" Fortitude: 1",ch);
if ( ch->pcdata->powers[VAM_FORT] >= 2 )
stc(" 2",ch);
if ( ch->pcdata->powers[VAM_FORT] >= 3 )
stc(" 3",ch);
if ( ch->pcdata->powers[VAM_FORT] >= 4 )
stc(" 4",ch);
if ( ch->pcdata->powers[VAM_FORT] >= 5 )
stc(" 5",ch);
stc("\n\r",ch);
return;
}
void quietus_disc( CHAR_DATA *ch )
{
if (IS_NPC(ch) ) return;
if ( ch->pcdata->powers[VAM_QUIE] == 0 )
{
stc(" Quietus: None.\n\r",ch);
return;
}
if ( ch->pcdata->powers[VAM_QUIE] >= 1 )
stc(" Quietus: Spit",ch);
if ( ch->pcdata->powers[VAM_QUIE] >= 2 )
stc(" Infirmity",ch);
if ( ch->pcdata->powers[VAM_QUIE] >= 3 )
stc(" Bloodagony",ch);
if ( ch->pcdata->powers[VAM_QUIE] >= 4 )
stc(" Assassinate",ch);
if ( ch->pcdata->powers[VAM_QUIE] >= 5 )
stc(" silencedeath",ch);
stc("\n\r",ch);
return;
}
void dominate_disc( CHAR_DATA *ch )
{
if (IS_NPC(ch) ) return;
if ( ch->pcdata->powers[VAM_DOMI] == 0 )
{
stc(" Dominate: None.\n\r",ch);
return;
}
if ( ch->pcdata->powers[VAM_DOMI] >= 1 )
stc(" Dominate: Command",ch);
if ( ch->pcdata->powers[VAM_DOMI] >= 2 )
stc(" Mesmerise",ch);
if ( ch->pcdata->powers[VAM_DOMI] >= 3 )
stc(" Possession",ch);
if ( ch->pcdata->powers[VAM_DOMI] >= 4 )
stc(" Acid",ch);
if ( ch->pcdata->powers[VAM_DOMI] >= 5 )
stc(" Coil",ch);
stc("\n\r",ch);
return;
}
void protean_disc( CHAR_DATA *ch )
{
if (IS_NPC(ch) ) return;
if ( ch->pcdata->powers[VAM_PROT] == 0 )
{
stc(" Protean: None.\n\r",ch);
return;
}
if ( ch->pcdata->powers[VAM_PROT] >= 1 )
stc(" Protean: Umbravision",ch);
if ( ch->pcdata->powers[VAM_PROT] >= 2 )
stc(" Claws",ch);
if ( ch->pcdata->powers[VAM_PROT] >= 3 )
stc(" Change",ch);
if ( ch->pcdata->powers[VAM_PROT] >= 4 )
stc(" Earthmeld",ch);
if ( ch->pcdata->powers[VAM_PROT] >= 5 )
stc(" Flamehands",ch);
stc("\n\r",ch);
return;
}
void daimoinon_disc( CHAR_DATA *ch )
{
if (IS_NPC(ch) ) return;
if ( ch->pcdata->powers[VAM_DAIM] == 0 )
{
stc(" Daimoinon: None.\n\r",ch);
return;
}
if ( ch->pcdata->powers[VAM_DAIM] >= 1 )
stc(" Daimoinon: Guardian",ch);
if ( ch->pcdata->powers[VAM_DAIM] >= 2 )
stc(" Blood Wall",ch);
if ( ch->pcdata->powers[VAM_DAIM] >= 3 )
stc(" Gate",ch);
if ( ch->pcdata->powers[VAM_DAIM] >= 4 )
stc(" Vtwist",ch);
if ( ch->pcdata->powers[VAM_DAIM] >= 5 )
stc(" Fear",ch);
stc("\n\r",ch);
return;
}
void melpominee_disc( CHAR_DATA *ch )
{
if (IS_NPC(ch) ) return;
if ( ch->pcdata->powers[VAM_MELP] == 0 )
{
stc(" Melpominee: None.\n\r",ch);
return;
}
if ( ch->pcdata->powers[VAM_MELP] >= 1 )
stc(" Melpominee: Scream",ch);
if ( ch->pcdata->powers[VAM_MELP] >= 2 )
stc(" Gourge",ch);
if ( ch->pcdata->powers[VAM_MELP] >= 3 )
stc(" Love",ch);
if ( ch->pcdata->powers[VAM_MELP] >= 4 )
stc(" Reina",ch);
if ( ch->pcdata->powers[VAM_MELP] >= 5 )
stc(" Courage",ch);
stc("\n\r",ch);
return;
}
void thanatosis_disc( CHAR_DATA *ch )
{
if (IS_NPC(ch) ) return;
if ( ch->pcdata->powers[VAM_THAN] == 0 )
{
stc(" Thanatosis: None.\n\r",ch);
return;
}
if ( ch->pcdata->powers[VAM_THAN] >= 1 )
stc(" Thanatosis: Hagswrinkles",ch);
if ( ch->pcdata->powers[VAM_THAN] >= 2 )
stc(" Putrefaction",ch);
if ( ch->pcdata->powers[VAM_THAN] >= 3 )
stc(" Ashes",ch);
if ( ch->pcdata->powers[VAM_THAN] >= 4 )
stc(" Wither",ch);
if ( ch->pcdata->powers[VAM_THAN] >= 5 )
stc(" Drain",ch);
stc("\n\r",ch);
return;
}
/*embrace*/
void do_obeah(CHAR_DATA *ch, char *argument)
{
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_VAMPIRE) && !IS_CLASS(ch, CLASS_ABOMINATION))
{
send_to_char("Huh?\n\r",ch);
return;
}
/* if (get_disc(ch, DISC_OBEAH) == 0)
{
send_to_char("Huh?\n\r",ch);
return;
}
*/
if (ch->pcdata->powers[VAM_OBEA] < 1)
{
send_to_char("You must obtain at least level 1 in Obeah to use Obeah.\n\r",ch);
return;
}
if (IS_SET(ch->newbits, NEW_OBEAH))
{
if (ch->obeah_timer > 0)
{
send_to_char("You cannot close your eye until it stops glowing!\n\r",ch);
return;
}
send_to_char("You close the eye on your forehead.\n\r",ch);
act("$n closes the eye on $s forehead.", ch, NULL, NULL, TO_ROOM);
REMOVE_BIT(ch->newbits, NEW_OBEAH);
return;
}
send_to_char("Your third eye opens in your forehead.\n\r",ch);
act("A third eye opens in $n's forehead.", ch, NULL, NULL, TO_ROOM);
SET_BIT(ch->newbits, NEW_OBEAH);
return;
}
void do_panacea(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_VAMPIRE) && !IS_CLASS(ch, CLASS_ABOMINATION))
{
send_to_char("Huh?\n\r", ch);
return;
}
if (ch->pcdata->powers[VAM_OBEA] < 2)
{
send_to_char("You must obtain at least level 2 in Obeah to use Panacea.\n\r",ch);
return;
}
if (ch->obeah_timer > 0) {
if (ch->obeah_timer > 1)
sprintf(buf,"You cannot call upon your Obeah powers for another %d seconds.\n\r",ch->obeah_timer);
else
sprintf(buf,"You cannot call upon your Obeah powers for another 1 second.\n\r");
send_to_char(buf,ch);
return;
}
if (arg[0] == '\0') {
send_to_char("Who do you want to heal with Panacea?\n\r", ch);
return;
}
if ((victim = get_char_room(ch, arg)) == NULL) {
send_to_char("They are not here.\n\r", ch);
return;
}
if (!IS_SET(ch->newbits, NEW_OBEAH)) do_obeah(ch,"");
if (victim->loc_hp[6] > 0) {
int sn = skill_lookup("clot");
act("$n's third eye begins to glow with an intense white light.", ch, NULL, NULL, TO_ROOM);
send_to_char("Your third eye begins to glow with an intense white light.\n\r", ch);
ch->obeah_timer = 5;
(*skill_table[sn].spell_fun) (sn,ch->level,ch,victim);
}
if ((victim->loc_hp[0] + victim->loc_hp[1] + victim->loc_hp[2] +
victim->loc_hp[3] + victim->loc_hp[4] + victim->loc_hp[5]) != 0) {
act("$n's third eye begins to glow with an intense white light.", ch, NULL, NULL, TO_ROOM);
send_to_char("Your third eye begins to glow with an intense white light.\n\r", ch);
ch->obeah_timer = 10;
reg_mend(victim);
} else if (victim->hit < victim->max_hit) {
victim->hit += 3000;
if (victim->hit > victim->max_hit) {
victim->hit = victim->max_hit;
}
victim->agg -= victim->agg / 3.5;
if (victim->agg < 0) victim->agg = 0;
act("$n's third eye begins to glow with an intense white light.", ch, NULL, NULL, TO_ROOM);
send_to_char("Your third eye begins to glow with an intense white light.\n\r", ch);
ch->obeah_timer = 30;
update_pos(victim);
if (victim->hit >= victim->max_hit) {
victim->hit = victim->max_hit;
send_to_char("You have been completely healed!\n\r",victim);
act("$n's wounds have been completely healed!",victim,NULL,NULL,TO_ROOM);
} else {
send_to_char("Your wounds begin to heal!\n\r",victim);
act("$n's wounds begin to heal!",victim,NULL,NULL,TO_ROOM);
}
} else {
send_to_char("They don't require any healing.\n\r",ch);
return;
}
}
void do_anesthetic(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_VAMPIRE) && !IS_CLASS(ch, CLASS_ABOMINATION))
{
send_to_char("Huh?\n\r", ch);
return;
}
if (ch->pcdata->powers[VAM_OBEA] < 3)
{
send_to_char("You must obtain at least level 3 in Obeah to use Anesthetic.\n\r",ch);
return;
}
if (ch->obeah_timer > 0)
{
if (ch->obeah_timer > 1)
sprintf(buf,"You cannot call upon your Obeah powers for another %d seconds.\n\r",ch->obeah_timer);
else
sprintf(buf,"You cannot call upon your Obeah powers for another 1 second.\n\r");
send_to_char(buf,ch);
return;
}
if (arg[0] == '\0')
{
send_to_char("Who do you want to use Anesthetic Touch on?\n\r", ch);
return;
}
if ((victim = get_char_room(ch, arg)) == NULL)
{
send_to_char("They are not here.\n\r", ch);
return;
}
if (!IS_SET(ch->newbits, NEW_OBEAH)) do_obeah(ch,"");
act("$n's third eye begins to glow with an intense white light.", ch, NULL, NULL, TO_ROOM);
send_to_char("Your third eye begins to glow with an intense white light.\n\r", ch);
ch->obeah_timer = 30;
if (IS_SET(victim->newbits, NEW_CALM))
{
send_to_char("You remove their immunity to pain.\n\r",ch);
send_to_char("You no longer feel so oblivious to pain.\n\r",victim);
REMOVE_BIT(victim->newbits, NEW_NOPAIN);
send_to_char("You make them immune to pain.\n\r",ch);
send_to_char("You feel completely oblivious to pain.\n\r",victim);
SET_BIT(victim->newbits, NEW_NOPAIN);
}
return;
}
void do_neutral(CHAR_DATA *ch, char *argument)
{
char buf [MAX_INPUT_LENGTH];
CHAR_DATA *rch;
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_VAMPIRE))
{
send_to_char("Huh?\n\r", ch);
return;
}
if (ch->pcdata->powers[VAM_OBEA] < 4)
{
send_to_char("You must obtain at least level 4 in Obeah to create a Neutral Guard\n\r",ch);
return;
}
if (ch->obeah_timer > 0 && !IS_SET(ch->newbits, NEW_NEUTRAL))
{
if (ch->obeah_timer > 1)
sprintf(buf,"You cannot call upon your Obeah powers for another %d seconds.\n\r",ch->obeah_timer);
else
sprintf(buf,"You cannot call upon your Obeah powers for another 1 second.\n\r");
send_to_char(buf,ch);
return;
}
if (ch->in_room == NULL)
{
send_to_char("Nothing happens.\n\r",ch);
return;
}
if (IS_SET(ch->newbits, NEW_REINA))
{
send_to_char("Nothing happens.\n\r",ch);
return;
}
if (IS_SET(ch->newbits, NEW_NEUTRAL))
{
REMOVE_BIT(ch->newbits, NEW_NEUTRAL);
REMOVE_BIT(ch->in_room->room_flags, ROOM_SAFE);
act("A look of concentration crosses $n's face.", ch, NULL, NULL, TO_ROOM);
send_to_char("The peaceful harmony in the air gradually fades away to nothing.\n\r", ch);
act("The peaceful harmony in the air gradually fades away to nothing.",ch,NULL,NULL,TO_ROOM);
ch->obeah_timer = 30;
return;
}
if (IS_SET(ch->in_room->room_flags, ROOM_SAFE))
{
send_to_char("You are unable to create a Neutral Guard here.\n\r", ch);
return;
}
SET_BIT(ch->in_room->room_flags, ROOM_SAFE);
SET_BIT(ch->newbits, NEW_NEUTRAL);
act("$n's third eye begins to glow with an intense white light.", ch, NULL, NULL, TO_ROOM);
send_to_char("Your third eye begins to glow with an intense white light.\n\r", ch);
ch->obeah_timer = 30;
send_to_char("The air is filled with peaceful harmony.\n\r", ch);
act("The air is filled with peaceful harmony.",ch,NULL,NULL,TO_ROOM);
for (rch = ch->in_room->people; rch != NULL; rch = rch->next_in_room)
{
if (rch->fighting != NULL)
stop_fighting(rch, TRUE);
}
return;
}
void do_renew(CHAR_DATA *ch, char *argument)
{
CHAR_DATA *victim;
char arg [MAX_INPUT_LENGTH];
char buf [MAX_STRING_LENGTH];
int sn, check, oldcheck;
argument = one_argument(argument, arg);
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_VAMPIRE))
{
send_to_char("Huh?\n\r", ch);
return;
}
if (!IS_NPC(ch) && ch->position == POS_STUNNED)
{
send_to_char("Not while you are mortally wounded!.\n\r", ch);
return;
}
if (ch->pcdata->powers[VAM_OBEA] < 5)
{
send_to_char("You require level 5 Obeah to use Renewed Vigor.\n\r",ch);
return;
}
if (ch->position == POS_FIGHTING)
{
send_to_char("No way! You are still fighting!\n\r",ch);
return;
}
if (ch->obeah_timer> 0)
{
if (ch->obeah_timer > 1)
sprintf(buf,"You cannot call upon your Obeah powers for another %d seconds.\n\r",ch->obeah_timer);
else
sprintf(buf,"You cannot call upon your Obeah powers for another 1 second.\n\r");
send_to_char(buf,ch);
return;
}
if (arg[0] == '\0')
{
send_to_char("Who do you want to use Renewed Vigor on?\n\r", ch);
return;
}
if ((victim = get_char_room(ch, arg)) == NULL)
{
send_to_char("They are not here.\n\r", ch);
return;
}
if (!IS_SET(ch->newbits, NEW_OBEAH)) do_obeah(ch,"");
if ((victim->loc_hp[0] + victim->loc_hp[1] + victim->loc_hp[2] +
victim->loc_hp[3] + victim->loc_hp[4] + victim->loc_hp[5] +
victim->loc_hp[6]) == 0 && victim->hit == victim->max_hit)
{
send_to_char("They don't require any healing.\n\r",ch);
return;
}
act("$n's third eye begins to glow with an intense white light.", ch, NULL, NULL, TO_ROOM);
send_to_char("Your third eye begins to glow with an intense white light.\n\r", ch);
ch->obeah_timer = 60;
if ((check = victim->loc_hp[6]) > 0)
{
oldcheck = 0;
sn = skill_lookup("clot");
while (oldcheck != (check = victim->loc_hp[6]))
{
oldcheck = check;
(*skill_table[sn].spell_fun) (sn,ch->level,ch,victim);
}
}
if ((check = (victim->loc_hp[0] + victim->loc_hp[1] + victim->loc_hp[2] +
victim->loc_hp[3] + victim->loc_hp[4] + victim->loc_hp[5])) > 0)
{
oldcheck = 0;
while (oldcheck != (check = victim->loc_hp[0] + victim->loc_hp[1] +
victim->loc_hp[2] + victim->loc_hp[3] + victim->loc_hp[4] +
victim->loc_hp[5]))
{
oldcheck = check;
reg_mend(victim);
}
}
if (victim->hit < victim->max_hit)
{
victim->hit = victim->max_hit;
// victim->agg = 0;
send_to_char("You have been completely healed!\n\r",victim);
act("$n's wounds have been completely healed!",victim,NULL,NULL,TO_ROOM);
update_pos(victim);
}
return;
}
void do_willpower( CHAR_DATA *ch, char *argument )
{
char arg[MAX_INPUT_LENGTH];
char buf[MAX_INPUT_LENGTH];
argument = one_argument( argument, arg );
if ( IS_NPC(ch) )
return;
if (arg[0] == '\0')
{
send_to_char("--------------------------------------------------------------------------------\n\r",ch);
send_to_char(" -= Will Power =-\n\r",ch);
send_to_char("--------------------------------------------------------------------------------\n\r",ch);
if (IS_WILLPOWER(ch, RES_ANIMALISM))
send_to_char("Animalism: You automatically try to resist Beast Within and Song of Serenity.\n\r",ch);
else
send_to_char("Animalism: You don't try to resist Beast Within and Song of Serenity.\n\r",ch);
if (IS_WILLPOWER(ch, RES_AUSPEX))
send_to_char("Auspex: You automatically try to resist Unveil the Shrouded Mind.\n\r",ch);
else
send_to_char("Auspex: You don't try to resist Unveil the Shrouded Mind.\n\r",ch);
if (IS_WILLPOWER(ch, RES_DOMINATE))
send_to_char("Dominate: You automatically try to resist Dominate attempts.\n\r",ch);
else
send_to_char("Dominate: You don't try to resist Dominate attempts.\n\r",ch);
if (IS_WILLPOWER(ch, RES_PRESENCE))
send_to_char("Presence: You automatically try to resist Dread Gaze and Entrancement.\n\r",ch);
else
send_to_char("Presence: You don't try to resist Dread Gaze and Entrancement.\n\r",ch);
if (IS_WILLPOWER(ch, RES_TOGGLE))
send_to_char("Toggle: You automatically keep burning willpower to resist attempts.\n\r",ch);
else
send_to_char("Toggle: You will only burn willpower to resist each first attempt.\n\r",ch);
send_to_char("--------------------------------------------------------------------------------\n\r",ch);
send_to_char("You may change any of the above by typing: willpower <value>\n\r",ch);
send_to_char("--------------------------------------------------------------------------------\n\r",ch);
send_to_char("Remaining resistance in seconds:\n\r", ch );
sprintf( buf,"Animalism: %d. Auspex: %d. Presence: %d. Dominate: %d.\n\r",
ch->pcdata->resist[WILL_ANIMALISM], ch->pcdata->resist[WILL_AUSPEX],
ch->pcdata->resist[WILL_PRESENCE], ch->pcdata->resist[WILL_DOMINATE]);
send_to_char( buf, ch );
send_to_char("--------------------------------------------------------------------------------\n\r",ch);
return;
}
if (!str_cmp(arg,"animalism"))
{
if (IS_WILLPOWER(ch, RES_ANIMALISM))
{
send_to_char("You will no longer try to resist Beast Within and Song of Serenity.\n\r",ch);
REMOVE_BIT(ch->pcdata->resist[0], RES_ANIMALISM);
}
else
{
send_to_char("You will now automatically try to resist Beast Within and Song of Serenity.\n\r",ch);
SET_BIT(ch->pcdata->resist[0], RES_ANIMALISM);
}
}
else if (!str_cmp(arg,"auspex"))
{
if (IS_WILLPOWER(ch, RES_AUSPEX))
{
send_to_char("You will no longer try to resist Unveil the Shrouded Mind.\n\r",ch);
REMOVE_BIT(ch->pcdata->resist[0], RES_AUSPEX);
}
else
{
send_to_char("You will now automatically try to resist Unveil the Shrouded Mind.\n\r",ch);
SET_BIT(ch->pcdata->resist[0], RES_AUSPEX);
}
}
else if (!str_cmp(arg,"dominate"))
{
if (IS_WILLPOWER(ch, RES_DOMINATE))
{
send_to_char("You will no longer try to resist Domination attempts.\n\r",ch);
REMOVE_BIT(ch->pcdata->resist[0], RES_DOMINATE);
}
else
{
send_to_char("You will now automatically try to resist Domination attempts.\n\r",ch);
SET_BIT(ch->pcdata->resist[0], RES_DOMINATE);
}
}
else if (!str_cmp(arg,"presence"))
{
if (IS_WILLPOWER(ch, RES_PRESENCE))
{
send_to_char("You will no longer try to resist Dread Gaze and Entrancement.\n\r",ch);
REMOVE_BIT(ch->pcdata->resist[0], RES_PRESENCE);
}
else
{
send_to_char("You will now automatically try to resist Dread Gaze and Entrancement.\n\r",ch);
SET_BIT(ch->pcdata->resist[0], RES_PRESENCE);
}
}
else if (!str_cmp(arg,"toggle"))
{
if (IS_WILLPOWER(ch, RES_TOGGLE))
{
send_to_char("You will now only burn willpower to resist each first attempt.\n\r",ch);
REMOVE_BIT(ch->pcdata->resist[0], RES_TOGGLE);
}
else
{
send_to_char("You will now automatically keep burning willpower to resist attempts.\n\r",ch);
SET_BIT(ch->pcdata->resist[0], RES_TOGGLE);
}
}
else
{
send_to_char("--------------------------------------------------------------------------------\n\r",ch);
send_to_char(" -= Will Power =-\n\r",ch);
send_to_char("--------------------------------------------------------------------------------\n\r",ch);
if (IS_WILLPOWER(ch, RES_ANIMALISM))
send_to_char("Animalism: You automatically try to resist Beast Within and Song of Serenity.\n\r",ch);
else
send_to_char("Animalism: You don't try to resist Beast Within and Song of Serenity.\n\r",ch);
if (IS_WILLPOWER(ch, RES_AUSPEX))
send_to_char("Auspex: You automatically try to resist Unveil the Shrouded Mind.\n\r",ch);
else
send_to_char("Auspex: You don't try to resist Unveil the Shrouded Mind.\n\r",ch);
if (IS_WILLPOWER(ch, RES_DOMINATE))
send_to_char("Dominate: You automatically try to resist Dominate attempts.\n\r",ch);
else
send_to_char("Dominate: You don't try to resist Dominate attempts.\n\r",ch);
if (IS_WILLPOWER(ch, RES_PRESENCE))
send_to_char("Presence: You automatically try to resist Dread Gaze and Entrancement.\n\r",ch);
else
send_to_char("Presence: You don't try to resist Dread Gaze and Entrancement.\n\r",ch);
if (IS_WILLPOWER(ch, RES_TOGGLE))
send_to_char("Toggle: You automatically keep burning willpower to resist attempts.\n\r",ch);
else
send_to_char("Toggle: You will only burn willpower to resist each first attempt.\n\r",ch);
send_to_char("--------------------------------------------------------------------------------\n\r",ch);
send_to_char("You may change any of the above by typing: willpower <value>\n\r",ch);
send_to_char("--------------------------------------------------------------------------------\n\r",ch);
send_to_char("Remaining resistance in seconds:\n\r", ch );
sprintf( buf,"Animalism: %d. Auspex: %d. Presence: %d. Dominate: %d.\n\r",
ch->pcdata->resist[WILL_ANIMALISM], ch->pcdata->resist[WILL_AUSPEX],
ch->pcdata->resist[WILL_PRESENCE], ch->pcdata->resist[WILL_DOMINATE]);
send_to_char( buf, ch );
send_to_char("--------------------------------------------------------------------------------\n\r",ch);
return;
}
return;
}
void do_reina( CHAR_DATA *ch, char *argument )
{
char buf [MAX_INPUT_LENGTH];
CHAR_DATA *rch;
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_VAMPIRE))
{
send_to_char( "Huh?\n\r", ch );
return;
}
if ( ch->hit <= -10 )
{
stc("Not while mortally wounded!\n\r", ch );
return;
}
if (ch->fight_timer >0) {
send_to_char("Not until your fight timer expires.\n\r", ch );
return;}
if (ch->pcdata->powers[VAM_MELP] < 4)
{
send_to_char("You need Melpominee 4 to use the song of Reina.\n\r",ch);
return;
}
if (ch->in_room == NULL)
{
send_to_char("Nothing happens.\n\r",ch);
return;
}
if (IS_SET(ch->newbits, NEW_NEUTRAL))
{
send_to_char("Nothing happens.\n\r",ch);
return;
}
if (IS_SET(ch->newbits, NEW_REINA))
{
REMOVE_BIT(ch->newbits, NEW_REINA);
REMOVE_BIT(ch->in_room->room_flags, ROOM_SAFE);
send_to_char("The peaceful harmony in the air gradually fades away to nothing.\n\r", ch);
act("A look of concentration crosses $n's face.", ch, NULL, NULL, TO_ROOM );
act("The peaceful harmony in the air gradually fades away to nothing.",ch,NULL,NULL,TO_ROOM);
ch->reina_timer = 60;
return;
}
if (IS_SET(ch->in_room->room_flags, ROOM_SAFE))
{
send_to_char("You are unable to sing the Song of Reina here.\n\r", ch);
return;
}
if (ch->reina_timer > 0)
{
if (ch->reina_timer > 1)
sprintf(buf,"Your voice will not recover for another %d seconds.\n\r",ch->reina_timer);
else
sprintf(buf,"Your voice will not recover for another 1 second.\n\r");
send_to_char(buf,ch);
return;
}
SET_BIT(ch->in_room->room_flags, ROOM_SAFE);
SET_BIT(ch->newbits, NEW_REINA);
ch->reina_timer = 60;
send_to_char("You sing the Song of Reina.\n\r", ch);
act("$n sings a beautiful, haunting song.", ch, NULL, NULL, TO_ROOM );
send_to_char("The air is filled with peaceful harmony.\n\r", ch);
act("The air is filled with peaceful harmony.",ch,NULL,NULL,TO_ROOM);
for ( rch = ch->in_room->people; rch != NULL; rch = rch->next_in_room )
{
if ( rch->fighting != NULL )
stop_fighting( rch, TRUE );
}
return;
}
void do_shroudnight( CHAR_DATA *ch, char *argument )
{
char buf [MAX_INPUT_LENGTH];
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch,CLASS_VAMPIRE) && !IS_CLASS(ch, CLASS_WEREWOLF) && !IS_CLASS(ch, CLASS_ABOMINATION))
{
send_to_char("Huh?\n\r",ch);
return;
}
if ((IS_CLASS(ch, CLASS_VAMPIRE) || IS_CLASS(ch, CLASS_ABOMINATION)) && (ch->pcdata->powers[VAM_OBTE] < 2))
{
send_to_char("You need level 2 Obtenebration to use shroud of the night.\n\r",ch);
return;
}
if (IS_CLASS(ch, CLASS_WEREWOLF) && ch->gifts[UKTENA] < 1 )
{
stc("You must obtain the first gift of the Uktena to use Dark Shroud.\n\r",ch);
return;
}
if (ch->in_room == NULL)
{
send_to_char("Nothing happens.\n\r",ch);
return;
}
if (IS_SET(ch->newbits, NEW_DARKNESS))
{
REMOVE_BIT(ch->newbits, NEW_DARKNESS);
REMOVE_BIT(ch->in_room->room_flags, ROOM_TOTAL_DARKNESS);
send_to_char("You banish the darkness from the room!\n\r", ch);
act("A look of concentration crosses $n's face.", ch, NULL, NULL, TO_ROOM );
act("$n banishes the darkness from the room!",ch,NULL,NULL,TO_ROOM);
ch->darkness_timer = 60;
return;
}
if (IS_SET(ch->in_room->room_flags, ROOM_TOTAL_DARKNESS))
{
send_to_char("The room is already in darkness.\n\r", ch);
return;
}
if (ch->darkness_timer > 0)
{
if (ch->darkness_timer > 1)
sprintf(buf,"You cannot call upon the Shroud of Night for another %d seconds.\n\r",ch->darkness_timer);
else
sprintf(buf,"You cannot call upon the Shroud of Night for another 1 second.\n\r");
send_to_char(buf,ch);
return;
}
SET_BIT(ch->in_room->room_flags, ROOM_TOTAL_DARKNESS);
SET_BIT(ch->newbits, NEW_DARKNESS);
send_to_char("You call forth the Shroud of Night to darken the room!\n\r", ch);
act("A look of concentration crosses $n's face.", ch, NULL, NULL, TO_ROOM );
act("The room is filled with darkness!",ch,NULL,NULL,TO_ROOM);
ch->darkness_timer = 60;
return;
}