/*************************************************************************** * 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. * ***************************************************************************/ /********************************************* * Assassin, 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_dtrick(CHAR_DATA * ch, char *argument) { CHAR_DATA *victim; OBJ_DATA *obj; char arg1[MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; int randnum; int successchance; argument = one_argument(argument, arg1); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_ASSASSIN) && !IS_CLASS(ch, CLASS_UNDEAD_ASSASSIN) && !IS_CLASS(ch, CLASS_BLACK_ASSASSIN) && !IS_CLASS(ch, CLASS_HELLS_SOLDIER)) { stc("Huh?\n\r", ch); return; } if (ch->move < 2500) { stc("#0You don't have the required amount of move to preform a Dirty Trick!#n\n\r", ch); return; } if (arg1[0] == '\0') { stc("#0Preform a Dirty Trick on whom?#n\n\r", ch); return; } if ((victim = get_char_room(ch, arg1)) == NULL) { send_to_char("#0They aren't here.#n\n\r", ch); return; } randnum = number_range(1, 4); //Disarm, Trip, Foot Stomp, Hilt Smash. if (randnum == 1) //<----Disarm { if (((obj = get_eq_char(victim, WEAR_WIELD)) == NULL) || obj->item_type != ITEM_WEAPON) { if (((obj = get_eq_char(victim, WEAR_HOLD)) == NULL) || obj->item_type != ITEM_WEAPON) stc("They're not wielding anything to disarm!!#n\n\r", ch); return; } if (IS_IMMUNE(victim, IMM_DISARM)) { successchance = number_range(1, 75); } else { successchance = number_range(1, 100); } if (successchance < 50) { stc("#0You try to preform a dirty trick, but fail!#n\n\r", ch); ch->move -= 500; WAIT_STATE(ch, 1 * PULSE_VIOLENCE); return; } if (successchance >= 50) { sprintf(buf, "#R$n #0slices $s #7dagger #0sneakily accross your wrist, causing you too lose your grip!#n\n\r"); act(buf, ch, NULL, victim, TO_VICT); sprintf(buf, "#0You sneakily slice your dagger across #R$N's #0wrist, causing them to lose their grip!#n\n\r"); act(buf, ch, NULL, victim, TO_CHAR); obj_from_char(obj); obj_to_room(obj, victim->in_room); ch->move -= 2500; hurt_person(ch, victim, 250); WAIT_STATE(ch, 1 * PULSE_VIOLENCE); return; } } else if (randnum == 2) //<----Trip { if (IS_AFFECTED(victim, AFF_FLYING)) return; successchance = number_range(1, 100); if (successchance < 50) { stc("#0You attempt a dirty trick but fail!#n\n\r", ch); ch->move -= 500; WAIT_STATE(ch, 1 * PULSE_VIOLENCE); return; } if (successchance >= 50 && victim->wait == 0) { sprintf(buf, "#R$n #0kicks your shins, causing your legs to buckle!#n\n\r"); act(buf, ch, NULL, victim, TO_VICT); sprintf(buf, "#0You kick #R$N #0in the shins, causing $S legs to buckle!#n\n\r"); act(buf, ch, NULL, victim, TO_CHAR); sprintf(buf, "#R$n #0kicks #R$N #0in the shins, causing $S legs to buckle!#n\n\r"); act(buf, ch, NULL, victim, TO_NOTVICT); ch->move -= 2500; WAIT_STATE(ch, 1 * PULSE_VIOLENCE); hurt_person(ch, victim, 500); WAIT_STATE(victim, 2 * PULSE_VIOLENCE); victim->position = POS_RESTING; return; } } else if (randnum == 3) //<---Foot Stomp { if (IS_AFFECTED(victim, AFF_FLYING)) return; successchance = number_range(1, 100); if (successchance < 50) { stc("#0You attempt to preform a Dirty Trick but fail!#n\n\r", ch); ch->move -= 500; WAIT_STATE(ch, 1 * PULSE_VIOLENCE); return; } if (successchance >= 50) { sprintf(buf, "#R$n #0stomps on your feet! OW!#n\n\r"); act(buf, ch, NULL, victim, TO_VICT); sprintf(buf, "#0You stomp on #R$N's #0feet!#n\n\r"); act(buf, ch, NULL, victim, TO_CHAR); sprintf(buf, "#R$n #0stomps on #R$N's #0feet!#n\n\r"); act(buf, ch, NULL, victim, TO_NOTVICT); ch->move -= 2500; WAIT_STATE(ch, 1 * PULSE_VIOLENCE); hurt_person(ch, victim, 500); WAIT_STATE(victim, 3 * PULSE_VIOLENCE); return; } } else if (randnum == 4) //<---Hilt Bash { successchance = number_range(1, 100); { if (successchance < 50) { stc("#0You attempt a Dirty Trick, but fail!#n\n\r", ch); ch->move -= 500; WAIT_STATE(ch, 1 * PULSE_VIOLENCE); return; } if (successchance >= 50) { sprintf(buf, "#R$n BASHES #0his jeweled dagger hilt into your face! You reel back, stunned!#n\n\r"); act(buf, ch, NULL, victim, TO_VICT); sprintf(buf, "#0You BASH your dagger hilt into #R$N's #0face!#n\n\r"); act(buf, ch, NULL, victim, TO_CHAR); sprintf(buf, "#R$n #RBASHES #0his dagger hilt into #R$N's #0face, causing them to reel back stunned!#n\n\r"); act(buf, ch, NULL, victim, TO_NOTVICT); act("Your nose shatters under the impact of the blow!", victim, NULL, NULL, TO_CHAR); act("$n's nose shatters under the impact of the blow!", victim, NULL, NULL, TO_ROOM); SET_BIT(victim->loc_hp[LOC_HEAD], BROKEN_NOSE); ch->move -= 2500; hurt_person(ch, victim, 1000); WAIT_STATE(ch, 1 * PULSE_VIOLENCE); WAIT_STATE(victim, 1 * PULSE_VIOLENCE); victim->position = POS_STUNNED; return; } return; } } } void do_poisonblade(CHAR_DATA * ch, char *argument) { OBJ_DATA *obj; char arg[MAX_INPUT_LENGTH]; argument = one_argument(argument, arg); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_ASSASSIN) && !IS_CLASS(ch, CLASS_UNDEAD_ASSASSIN) && !IS_CLASS(ch, CLASS_BLACK_ASSASSIN) && !IS_CLASS(ch, CLASS_HELLS_SOLDIER)) { stc("Huh?\n\r", ch); return; } if (arg[0] == '\0') { stc("Poison What?\n\r", ch); return; } if ((obj = get_obj_carry(ch, arg)) == NULL) { send_to_char("You dont have that item.\n\r", ch); return; } if (obj->item_type != ITEM_WEAPON) { send_to_char("You can only poison weapons!\n\r", ch); return; } if (IS_SET(obj->quest2, QUEST2_WWPOISON)) { send_to_char ("#0This item has already been #gP#Goisone#gd!#n.\n\r", ch); return; } SET_BIT(obj->quest2, QUEST2_WWPOISON); stc("#0You coat your weapon in foul smelling #gp#Goiso#gn!#n\n\r", ch); obj->timer = 35; return; } void do_enhance(CHAR_DATA *ch, char *argument) { // char buf[MAX_STRING_LENGTH]; char arg[MAX_INPUT_LENGTH]; argument = one_argument(argument, arg); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_ASSASSIN) && !IS_CLASS(ch, CLASS_UNDEAD_ASSASSIN) && !IS_CLASS(ch, CLASS_BLACK_ASSASSIN) && !IS_CLASS(ch, CLASS_HELLS_SOLDIER)) { send_to_char("Huh?\n\r",ch); return; } if (arg[0] == '\0') { send_to_char("Learn what [combat knowledge or power]\n\r",ch); return; } if (!str_cmp(arg, "combat")) { if (ch->pcdata->powers[ASSASSIN_COMBAT] > 4) { send_to_char("You already have all 5 levels of combat.\n\r",ch); return; } if (ch->practice < (ch->pcdata->powers[ASSASSIN_COMBAT]+1)*150) { send_to_char("You don't have enough primal.\n\r",ch); return; } ch->pcdata->powers[ASSASSIN_COMBAT]++; ch->practice -= ch->pcdata->powers[ASSASSIN_COMBAT]*150; send_to_char("Your understanding of combat has become more powerful.\n\r",ch); } else if (!str_cmp(arg, "knowledge")) { if (ch->pcdata->powers[ASSASSIN_KNOWLEDGE] > 4) { send_to_char("You already have all 5 levels of knowledge.\n\r",ch); return; } if (ch->practice < (ch->pcdata->powers[ASSASSIN_KNOWLEDGE]+1)*150) { send_to_char("You don't have enough primal.\n\r",ch); return; } ch->pcdata->powers[ASSASSIN_KNOWLEDGE]++; ch->practice -= ch->pcdata->powers[ASSASSIN_KNOWLEDGE]*150; send_to_char("Your understanding of knowledge has become more powerful.\n\r",ch); } else if (!str_cmp(arg, "power")) { if (ch->pcdata->powers[ASSASSIN_POWER] > 9) { send_to_char("You already have all 10 levels of power.\n\r",ch); return; } if (ch->practice < (ch->pcdata->powers[ASSASSIN_POWER]+1)*150) { send_to_char("You don't have enough primal.\n\r",ch); return; } ch->pcdata->powers[ASSASSIN_POWER]++; ch->practice -= ch->pcdata->powers[ASSASSIN_POWER]*150; send_to_char("You have become more powerful.\n\r",ch); } else { send_to_char("Sorry, you cannot learn this.\n\r",ch); return; } return; } void do_ironclaw(CHAR_DATA *ch, char *argument) { if (IS_NPC(ch)) return; if (ch->pcdata->powers[ASSASSIN_COMBAT] < 1) { send_to_char("Huh?\n\r", ch ); return;} if (IS_VAMPAFF(ch, VAM_CLAWS)) { send_to_char("You remove the IronClaws from your wrists.\n\r", ch ); REMOVE_BIT(ch->pcdata->stats[UNI_AFF], VAM_CLAWS); return;} send_to_char("You attach IronClaws to your wrists.\n\r", ch ); SET_BIT(ch->pcdata->stats[UNI_AFF], VAM_CLAWS); return; } void do_strangle(CHAR_DATA *ch, char *argument) { char arg[MAX_INPUT_LENGTH]; CHAR_DATA *victim; int chance; one_argument(argument, arg); chance = number_percent(); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_ASSASSIN) && !IS_CLASS(ch, CLASS_UNDEAD_ASSASSIN) && !IS_CLASS(ch, CLASS_BLACK_ASSASSIN) && !IS_CLASS(ch, CLASS_HELLS_SOLDIER)) { send_to_char("Huh?\n\r",ch); return; } if (ch->pcdata->powers[ASSASSIN_COMBAT] < 2) { send_to_char("You do not have that power yet.\n\r",ch); return; } if ((victim = get_char_room(ch, arg)) == NULL) { send_to_char("Assassinate whom?\n\r", ch ); return; } if (victim == ch) { send_to_char("That would be a bad idea.\n\r", ch ); return; } if (victim->hit < victim->max_hit) { send_to_char("They are to hurt, you cannot get near enough.\n\r",ch); return; } if (is_safe(ch, victim)) return; act("$n stabs $N in the back, causing great damage.",ch,NULL,victim,TO_NOTVICT); act("You backstab $N.",ch,NULL,victim,TO_CHAR); act("You suddenly feel a great pain and notice $n pulling out a dagger from your back.",ch,NULL,victim,TO_VICT); if (victim->position == POS_STANDING) { one_hit(ch, victim, gsn_backstab,1); one_hit(ch, victim, gsn_backstab,1); one_hit(ch, victim, gsn_backstab,1); one_hit(ch, victim, gsn_backstab,1); one_hit(ch, victim, gsn_backstab,1); one_hit(ch, victim, gsn_backstab,1); WAIT_STATE(ch, 12); } else if (victim->position == POS_SLEEPING) { one_hit(ch, victim, gsn_backstab,1); one_hit(ch, victim, gsn_backstab,1); one_hit(ch, victim, gsn_backstab,1); one_hit(ch, victim, gsn_backstab,1); one_hit(ch, victim, gsn_backstab,1); one_hit(ch, victim, gsn_backstab,1); one_hit(ch, victim, gsn_backstab,1); WAIT_STATE(ch, 12); } else { send_to_char("You failed your attempt.\n\r",ch); one_hit(ch, victim, gsn_backstab,1); one_hit(ch, victim, gsn_backstab,1); one_hit(ch, victim, gsn_backstab,1); WAIT_STATE(ch, 12); } return; } void do_shadowtravel(CHAR_DATA *ch, char *argument) { char arg[MAX_INPUT_LENGTH]; CHAR_DATA *victim; ROOM_INDEX_DATA *location; one_argument (argument, arg); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_ASSASSIN) && !IS_CLASS(ch, CLASS_ANTIPALADIN) && !IS_CLASS(ch, CLASS_BLACK_ASSASSIN) && !IS_CLASS(ch, CLASS_HELLS_SOLDIER)) { send_to_char("#0This is an assassin and antipaladin only skill#n\n\r", ch ); return; } if (IS_CLASS(ch, CLASS_ASSASSIN) && ch->pcdata->powers[ASSASSIN_KNOWLEDGE] < 1) { send_to_char("You need level 1 in knowledge before you can shadowtravel.\n\r",ch); return; } if ((victim = get_char_world(ch, arg)) == NULL) { send_to_char("You are unable to find them.\n\r", ch ); return; } if (IS_SET(victim->in_room->room_flags, ROOM_ASTRAL)) { send_to_char( "You cannot enter the Astral sphere.\n\r",ch); return; } if (IS_IMMUNE(victim, IMM_TRAVEL) && victim->fight_timer < 1 ) { send_to_char("You cannot travel to them, they are immune.\n\r",ch); return; } if (ch->move < 250) { send_to_char("Your to tired to shadowtravel.\n\r", ch ); return; } location = victim->in_room; act("You concentrate on the journey ahead.", ch, NULL, NULL, TO_CHAR); act("$n steps into a shadow and disappears.", ch, NULL, NULL, TO_ROOM); ch->move -= 250; char_from_room(ch); char_to_room(ch, location); do_look(ch, ""); act("You materialize.", ch, NULL, NULL, TO_CHAR); act("$n steps out of a shadow.", ch, NULL, NULL, TO_ROOM); return; } void do_shouldercharge( CHAR_DATA *ch, char *argument ) { char arg[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; char buf1[MAX_STRING_LENGTH]; char buf2[MAX_STRING_LENGTH]; char buf3[MAX_STRING_LENGTH]; AFFECT_DATA af; CHAR_DATA *ich; CHAR_DATA *ich_next; CHAR_DATA *victim; OBJ_DATA *obj; argument = one_argument( argument, arg ); argument = one_argument( argument, arg2 ); if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_UNDEAD_ASSASSIN) && !IS_CLASS(ch, CLASS_ASSASSIN) && !IS_CLASS(ch, CLASS_BLACK_ASSASSIN) && !IS_CLASS(ch, CLASS_HELLS_SOLDIER)) { send_to_char("Huh.\n\r",ch); return; } if (!(arg2[0] == '\0') || ch->fighting != NULL) { if (arg2[0] == '\0') victim = ch->fighting; else if ((victim = get_char_room(ch, arg2)) == NULL) { send_to_char("They are not here.\n\r", ch ); return; } } if (is_safe(ch, victim)) return; if (number_range(1,3)==1) { send_to_char("Failed\n\r",ch); return; } act("You take a step back, then launch yourself straight at $N...",ch,NULL,victim,TO_CHAR); act("$n takes a step back, then launches $mself straight at you...",ch,NULL,victim,TO_VICT); act("$n takes a step back, then launches $mself straight at $N...",ch,NULL,victim,TO_NOTVICT); if ( number_range(1,4) == 4 ) { act("$N sidesteps, leaving you wide open!",ch,NULL,victim,TO_CHAR); act("You sidestep, leaving $n wide open!",ch,NULL,victim,TO_VICT); act("$N sidesteps, leaving $n wide open!",ch,NULL,victim,TO_NOTVICT); if ( number_range(1,2) == 1 ) { act("$N takes the opportunity to strike back!",ch,NULL,victim,TO_CHAR); act("You take the opportunity to strike back!",ch,NULL,victim,TO_VICT); act("$N takes the opportunity to strike back!",ch,NULL,victim,TO_NOTVICT); multi_hit(victim,ch,TYPE_UNDEFINED); } else { act("You recover yourself before $N can strike back.",ch,NULL,victim,TO_CHAR); act("$n recovers $mself before you can strike back.",ch,NULL,victim,TO_VICT); act("$n recovers $mself before $N can strike back.",ch,NULL,victim,TO_NOTVICT); } return; } if ( number_range(1,4) == 4 ) { if ( IS_LEG_L(victim,LOST_LEG) && IS_LEG_R(victim,LOST_LEG) ) { act("Your body hits nothing but air.",ch,NULL,victim,TO_CHAR); act("$n hits nothing but air.",ch,NULL,victim,TO_ROOM); return; } act("You collide with $N, tearing away $S legs.",ch,NULL,victim,TO_CHAR); act("$n collides with you, tearing away your legs.",ch,NULL,victim,TO_VICT); act("$n collides with $N, tearing away $S legs.",ch,NULL,victim,TO_NOTVICT); if ( !IS_LEG_L(victim,LOST_LEG) ) { SET_BIT(victim->loc_hp[4], LOST_LEG); if ( IS_BLEEDING(victim, BLEEDING_LEG_L) ) REMOVE_BIT(victim->loc_hp[6], BLEEDING_LEG_L); if ( IS_BLEEDING(victim, BLEEDING_FOOT_L) ) REMOVE_BIT(victim->loc_hp[6], BLEEDING_FOOT_L); } if ( !IS_LEG_R(victim,LOST_LEG) ) { SET_BIT(victim->loc_hp[5], LOST_LEG); if ( IS_BLEEDING(victim, BLEEDING_LEG_R) ) REMOVE_BIT(victim->loc_hp[6], BLEEDING_LEG_R); if ( IS_BLEEDING(victim, BLEEDING_FOOT_R) ) REMOVE_BIT(victim->loc_hp[6], BLEEDING_FOOT_R); } if ( (obj = get_eq_char(victim,WEAR_LEGS)) != NULL ) take_item(victim,obj); if ( (obj = get_eq_char(victim,WEAR_FEET)) != NULL ) take_item(victim,obj); } else { send_to_char("Bash whom?\n\r",ch); return; } WAIT_STATE(victim, 24); WAIT_STATE(ch, 18); return; } void do_assassinarmor( 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_ASSASSIN) && !IS_CLASS(ch, CLASS_UNDEAD_ASSASSIN) && !IS_CLASS(ch, CLASS_BLACK_ASSASSIN) && !IS_CLASS(ch, CLASS_HELLS_SOLDIER)) { send_to_char("Huh?\n\r", ch ); return; } if (arg[0] == '\0') { send_to_char("Please specify which piece of demon armor you wish to make: Ring Neckguard Plate Helmet Leggings BootsGauntlets Vambraces Shroud Belt Wristguard Mask Dagger Shortsword.\n\r",ch); return; } else if (!str_cmp(arg,"ring" )) vnum = 94004; else if (!str_cmp(arg,"neckguard" )) vnum = 94006; else if (!str_cmp(arg,"plate" )) vnum = 94007; else if (!str_cmp(arg,"helmet" )) vnum = 94002; else if (!str_cmp(arg,"leggings" )) vnum = 94012; else if (!str_cmp(arg,"boots" )) vnum = 94013; else if (!str_cmp(arg,"gauntlets")) vnum = 94010; else if (!str_cmp(arg,"vambraces" )) vnum = 94009; else if (!str_cmp(arg,"shroud" )) vnum = 94008; else if (!str_cmp(arg,"belt" )) vnum = 94011; else if (!str_cmp(arg,"wristguard" )) vnum = 94005; else if (!str_cmp(arg,"mask" )) vnum = 94003; else if (!str_cmp(arg,"dagger")) vnum = 94000; else if (!str_cmp(arg,"shortsword")) vnum = 94001; else { do_assassinarmor(ch,""); return; } if (ch->practice < 60) { send_to_char("It costs 60 points of primal to create a piece of assassin armor.\n\r",ch); return; } if ( vnum == 0 || (pObjIndex = get_obj_index( vnum )) == NULL) { send_to_char("Missing object, please inform Xrakisis.\n\r",ch); return; } ch->practice -= 60; obj = create_object(pObjIndex, 50); obj->questowner = str_dup(ch->pcdata->switchname); obj_to_char(obj, ch); act("$p appears in your hands in a blast of flames.",ch,obj,NULL,TO_CHAR); act("$p appears in $n's hands in a blast of flames.",ch,obj,NULL,TO_ROOM); return; } void do_desanc (CHAR_DATA *ch, char *argument) { char arg[MAX_STRING_LENGTH]; CHAR_DATA *victim; int sn, random, level; argument=one_argument(argument,arg); level = ch->spl[RED_MAGIC]/4; if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_ASSASSIN) && !IS_CLASS(ch, CLASS_UNDEAD_ASSASSIN) && !IS_CLASS(ch, CLASS_BLACK_ASSASSIN) && !IS_CLASS(ch, CLASS_HELLS_SOLDIER)) { send_to_char("Huh?\n\r",ch); return; } WAIT_STATE(ch,10); if (ch->pcdata->powers[ASSASSIN_COMBAT] < 1) { send_to_char("Not yet, not yet.\n\r",ch); return; } if (ch->mana < 1500) { send_to_char("You need more mana.\n\r",ch); return; } if (arg[0] == '\0' && ch->fighting != NULL) victim = ch->fighting; else if ((victim = get_char_room(ch, arg)) == NULL) { send_to_char("They are not here.\n\r", ch ); return; } if(is_safe(ch, victim)) return; random = number_range(1,4); if (random == 1) sn = skill_lookup("desanct"); else if (random >= 2) { send_to_char("Failed.\n\r",ch); return; } // do_force(ch,"all save"); // // else sn = 0; // if (sn > 0) (*skill_table[sn].spell_fun) (sn,level,ch,victim); REMOVE_BIT (victim->affected_by, AFF_SANCTUARY); stc("You feel your opponents dagger pierce your aura of protection!\n\r",victim); ch->mana -= 1500; WAIT_STATE(ch,8); return; } void do_corner (CHAR_DATA *ch, char *argument) { if (IS_NPC(ch)) return; if (!IS_CLASS(ch, CLASS_ASSASSIN) && !IS_CLASS(ch, CLASS_UNDEAD_ASSASSIN) && !IS_CLASS(ch, CLASS_BLACK_ASSASSIN) && !IS_CLASS(ch, CLASS_HELLS_SOLDIER)) { send_to_char("Huh?\n\r",ch); return; } if (ch->pcdata->powers[ASSASSIN_COMBAT] < 5) { send_to_char("You need to train your combat to 5 before using this.\n\r",ch); return; } if (!IS_SET(ch->newbits2, NEW2_CORNERED)) { SET_BIT(ch->newbits2, NEW2_CORNERED); send_to_char("You will now attempt to corner your prey.\n\r",ch); return; } else if (IS_SET(ch->newbits2, NEW2_CORNERED)) { REMOVE_BIT(ch->newbits2, NEW2_CORNERED); send_to_char("You will no longer attempt to corner your prey.\n\r",ch); return; } return; }