/************************************************************** * Myth Mud improvements ALL by David Spink aka Morglum. * * This mud is NOT to be copied in whole or in part! No one * * has the permission to authorise the use of this code. * * In order to use this code you MUST comply with the terms * * and conditions in 'license.myth' (as shipped). * **************************************************************/ #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 <unistd.h> #include "merc.h" DO_COM( do_truedisguise ) { 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_VAMPIRE(ch) && !IS_GHOUL(ch)) { send_to_char( "Huh?\n\r", ch ); return; } if (get_disc(ch,DISC_OBFUSCATE) < 3) { send_to_char("You require level 3 Obfuscate to use True Disguise.\n\r",ch); return; } if ( arg[0] == '\0' ) { send_to_char( "Change to look like whom?\n\r", ch ); return; } if (IS_AFFECTED(ch,AFF_POLYMORPH) && !IS_VAMPAFF(ch,VAM_DISGUISED)) { send_to_char( "Not while polymorphed.\n\r", ch ); return; } if (IS_EXTRA(ch, EXTRA_VICISSITUDE)) { send_to_char( "You are unable to change your appearance.\n\r", ch ); return; } if ( ( victim = get_char_room( ch, arg ) ) == NULL ) { send_to_char( "They aren't here.\n\r", ch ); return; } if ( IS_IMMORTAL(victim) && victim != ch ) { send_to_char( "You cannot disguise yourself as them.\n\r", ch ); return; } if ( ch == victim ) { if (!IS_AFFECTED(ch,AFF_POLYMORPH) && !IS_VAMPAFF(ch,VAM_DISGUISED)) { send_to_char( "You already look like yourself!\n\r", ch ); return; } if (!IS_POLYAFF(ch, POLY_TRUE)) { send_to_char("Nothing happens.\n\r",ch); return; } sprintf(buf,"$n's form shifts into an image of %s.",ch->name); act(buf,ch,NULL,NULL,TO_ROOM); REMOVE_BIT(ch->affected_by, AFF_POLYMORPH); REMOVE_BIT(ch->vampaff, VAM_DISGUISED); REMOVE_BIT(ch->polyaff, POLY_TRUE); free_string( ch->morph ); ch->morph = str_dup( "" ); act("Your form shifts into an image of $n.",ch,NULL,NULL,TO_CHAR); free_string( ch->long_descr ); ch->long_descr = str_dup( "" ); return; } if (IS_VAMPAFF(ch,VAM_DISGUISED)) { if (!IS_POLYAFF(ch, POLY_TRUE)) { send_to_char("Nothing happens.\n\r",ch); return; } act("Your form shifts into an image of $N.",ch,NULL,victim,TO_CHAR); act("$n's form shifts into an image of you.",ch,NULL,victim,TO_VICT); act("$n's form shifts into an image of $N.",ch,NULL,victim,TO_NOTVICT); free_string( ch->morph ); if (IS_NPC(victim)) { ch->morph = str_dup( victim->short_descr ); free_string( ch->long_descr ); ch->long_descr = str_dup( victim->long_descr ); } else { ch->morph = str_dup( victim->name ); free_string( ch->long_descr ); ch->long_descr = str_dup( "" ); } return; } act("Your form shifts into an image of $N.",ch,NULL,victim,TO_CHAR); act("$n's form shifts into an image of you.",ch,NULL,victim,TO_VICT); act("$n's form shifts into an image of $N.",ch,NULL,victim,TO_NOTVICT); SET_BIT(ch->affected_by, AFF_POLYMORPH); SET_BIT(ch->vampaff, VAM_DISGUISED); SET_BIT(ch->polyaff, POLY_TRUE); free_string( ch->morph ); if (IS_NPC(victim)) { ch->morph = str_dup( victim->short_descr ); free_string( ch->long_descr ); ch->long_descr = str_dup( victim->long_descr ); } else { ch->morph = str_dup( victim->name ); free_string( ch->long_descr ); ch->long_descr = str_dup( "" ); } return; } DO_COM( do_mindblast ) { CHAR_DATA *victim; char arg [MAX_INPUT_LENGTH]; int damage; argument = one_argument( argument, arg ); if (IS_NPC(ch)) return; if (!IS_VAMPIRE(ch) && !IS_GHOUL(ch)) { send_to_char( "Huh?\n\r", ch ); return; } if (get_disc(ch,DISC_DOMINATE) < 5) { send_to_char("You require level 5 Dominate to use a Mind Blast.\n\r",ch); return; } if (IS_ITEMAFF(ch, ITEMA_PEACE)) do_majesty(ch,""); if ( arg[0] == '\0' ) { send_to_char( "Who do you want to Mind Blast?\n\r", ch ); return; } if ( ( victim = get_char_room( ch, arg ) ) == NULL ) { send_to_char( "They are not here.\n\r", ch ); return; } if (victim->position != POS_FIGHTING && victim->hit < victim->max_hit) { send_to_char( "Nothing happens.\n\r", ch ); if (!IS_NPC(victim) && ch != victim && IS_MORE(victim, MORE_GUARDIAN)) { guardian_message( victim ); act("$n just failed to use Mind Blast on you.",ch,NULL,victim,TO_VICT); } return; } if (IS_IMMUNE(victim,IMM_SHIELDED) ) { send_to_char( "Nothing happens.\n\r", ch ); if (!IS_NPC(victim) && ch != victim && IS_MORE(victim, MORE_GUARDIAN)) { guardian_message( victim ); act("$n just failed to use Mind Blast on you.",ch,NULL,victim,TO_VICT); } return; } if (is_safe(ch,victim)) { if (!IS_NPC(victim) && ch != victim && IS_MORE(victim, MORE_GUARDIAN)) { guardian_message( victim ); act("$n just failed to use Mind Blast on you.",ch,NULL,victim,TO_VICT); } return; } damage = victim->max_hit * 0.1; act( "A look of concentration crosses $n's face.", ch, NULL, NULL, TO_ROOM ); send_to_char("You clutch your head as your mind seems to explode!\n\r",victim); act("$n clutches $s head in agony!",victim,NULL,NULL,TO_ROOM); if (!IS_NPC(victim) && ch != victim && IS_MORE(victim, MORE_GUARDIAN)) { guardian_message( victim ); act("$n just used Mind Blast on you.",ch,NULL,victim,TO_VICT); } victim->hit -= damage; if ((IS_NPC(victim) && victim->hit < 1) || (!IS_NPC(victim) && victim->hit < -10)) { act("$n's body falls limply to the ground.",victim,NULL,NULL,TO_ROOM); demon_gain(ch,victim); group_gain(ch,victim); victim->form = 8; killperson(ch,victim); WAIT_STATE( ch, 12 ); return; } stop_fighting(victim,TRUE); update_pos(victim); if (victim->position > POS_STUNNED) victim->position = POS_STUNNED; if (IS_NPC(victim)) do_kill(victim,ch->name); WAIT_STATE( ch, 12 ); return; } DO_COM( do_spiritform ) { if (IS_NPC(ch)) return; if (!IS_VAMPIRE(ch) && !IS_GHOUL(ch)) { send_to_char("Huh?\n\r",ch); return; } if (get_disc(ch,DISC_PROTEAN) < 5) { send_to_char("You require level 5 Protean to transform into Spirit Form.\n\r",ch); return; } if (IS_AFFECTED(ch, AFF_POLYMORPH)) { if (!IS_POLYAFF(ch,POLY_SPIRIT)) { send_to_char( "You cannot change from this form.\n\r", ch ); return; } act( "Your body regains its substance.", ch, NULL, NULL, TO_CHAR ); act( "$n's ethereal body regains its substance.", ch, NULL, NULL, TO_ROOM ); REMOVE_BIT(ch->affected_by, AFF_POLYMORPH); REMOVE_BIT(ch->affected_by, AFF_ETHEREAL); REMOVE_BIT(ch->polyaff, POLY_SPIRIT); REMOVE_BIT(ch->extra, EXTRA_VICISSITUDE); REMOVE_BIT(ch->vampaff, VAM_DISGUISED); REMOVE_BIT(ch->vampaff, VAM_FLYING); free_string( ch->morph ); ch->morph = str_dup( "" ); return; } act( "You body becomes translucent and insubstancial.", ch, NULL, NULL, TO_CHAR ); act( "$n's body becomes translucent and insubstancial.", ch, NULL, NULL, TO_ROOM ); if (IS_EXTRA(ch, TIED_UP)) { act("The ropes binding you fall through your ethereal form.",ch,NULL,NULL,TO_CHAR); act("The ropes binding $n fall through $s ethereal form.",ch,NULL,NULL,TO_ROOM); REMOVE_BIT(ch->extra, TIED_UP); REMOVE_BIT(ch->extra, GAGGED); REMOVE_BIT(ch->extra, BLINDFOLDED); } if (is_affected(ch, gsn_web)) { act("The webbing entrapping $n falls through $s ethereal form.",ch,NULL,NULL,TO_ROOM); send_to_char("The webbing entrapping you falls through your ethereal form.\n\r",ch); affect_strip(ch, gsn_web); } if (IS_AFFECTED(ch, AFF_WEBBED)) { act("The webbing entrapping $n falls through $s ethereal form.",ch,NULL,NULL,TO_ROOM); send_to_char("The webbing entrapping you falls through your ethereal form.\n\r",ch); REMOVE_BIT(ch->affected_by, AFF_WEBBED); } if (is_affected(ch, gsn_tendrils)) { act("The tendrils of darkness entrapping $n fall through $s ethereal form.",ch,NULL,NULL,TO_ROOM); send_to_char("The tendrils of darkness entrapping you fall through your ethereal form.\n\r",ch); affect_strip(ch, gsn_tendrils); } if (IS_AFFECTED(ch, AFF_SHADOW)) { act("The tendrils of darkness entrapping $n fall through $s ethereal form.",ch,NULL,NULL,TO_ROOM); send_to_char("The tendrils of darkness entrapping you fall through your ethereal form.\n\r",ch); REMOVE_BIT(ch->affected_by, AFF_SHADOW); } if (is_affected(ch, gsn_jail)) { act("The band of water entrapping $n splash to the ground.",ch,NULL,NULL,TO_ROOM); send_to_char("The bands of water entrapping you splash to the ground.\n\r",ch); affect_strip(ch, gsn_jail); } if (IS_AFFECTED(ch, AFF_JAIL)) { act("The band of water entrapping $n splash to the ground.",ch,NULL,NULL,TO_ROOM); send_to_char("The bands of water entrapping you splash to the ground.\n\r",ch); REMOVE_BIT(ch->affected_by, AFF_JAIL); } SET_BIT(ch->affected_by, AFF_POLYMORPH); SET_BIT(ch->affected_by, AFF_ETHEREAL); SET_BIT(ch->polyaff, POLY_SPIRIT); SET_BIT(ch->extra, EXTRA_VICISSITUDE); SET_BIT(ch->vampaff, VAM_DISGUISED); SET_BIT(ch->vampaff, VAM_FLYING); free_string( ch->morph ); ch->morph = str_dup( ch->name ); return; } DO_COM( do_spiriteyes ) { char arg [MAX_INPUT_LENGTH]; argument = one_argument( argument, arg ); if (IS_NPC(ch)) return; if (!IS_VAMPIRE(ch) && !IS_GHOUL(ch) ) { send_to_char("Huh?\n\r",ch); return; } if (get_disc(ch,DISC_LAMIA) < 1) { send_to_char("You require level 1 Lamia to use Spirit Eyes.\n\r",ch); return; } if (IS_VAMPAFF(ch,VAM_SPIRITEYES) ) { send_to_char("You can no longer sense things in the shadowlands.\n\r",ch); REMOVE_BIT(ch->vampaff, VAM_SPIRITEYES); return; } send_to_char("You can now sense things in the shadowlands.\n\r",ch); SET_BIT(ch->vampaff, VAM_SPIRITEYES); return; } DO_COM( do_succulence ) { char arg[MAX_INPUT_LENGTH]; AFFECT_DATA af; CHAR_DATA *victim; int sn; one_argument( argument, arg ); if (IS_NPC(ch)) return; if (!IS_VAMPIRE(ch) && !IS_GHOUL(ch)) { send_to_char( "Huh?\n\r", ch ); return; } if (get_disc(ch,DISC_LAMIA) < 2) { send_to_char("You require level 2 Lamia to use Succulence.\n\r",ch); return; } if ( arg[0] == '\0' ) { send_to_char( "Who do you wish to use Succulence on?\n\r", ch ); return; } if ( ( victim = get_char_room( ch, arg ) ) == NULL ) { send_to_char( "They aren't here.\n\r", ch ); return; } if ( ch == victim ) { send_to_char( "Not on yourself.\n\r", ch ); return; } if (!IS_NPC(victim)) { send_to_char( "Not on players.\n\r", ch ); return; } if (is_affected(victim, gsn_potency)) { send_to_char("You are unable to make them any more succulent.\n\r",ch); return; } if ( ( sn = skill_lookup( "blood potency" ) ) < 0 ) { send_to_char( "Bug - please inform Morglum.\n\r", ch ); return; } af.type = sn; af.duration = get_disc(ch,DISC_ANIMALISM) * 10; af.location = APPLY_BLOOD_POT; af.modifier = victim->blood[BLOOD_POTENCY]; af.bitvector = 0; affect_to_char( victim, &af ); af.location = APPLY_BLOOD_MAX; af.modifier = victim->blood[BLOOD_POOL]; affect_to_char( victim, &af ); victim->blood[BLOOD_CURRENT] *= 2; act( "A look of concentration crosses $n's face.", ch, NULL, NULL, TO_ROOM ); send_to_char("You increase the quality of their blood.\n\r",ch); return; } DO_COM( do_omnipotence ) { char arg [MAX_INPUT_LENGTH]; CHAR_DATA *eye; CHAR_DATA *victim; one_argument( argument, arg ); if (IS_NPC(ch)) return; if (!IS_VAMPIRE(ch) && !IS_GHOUL(ch) ) { send_to_char("Huh?\n\r",ch); return; } if (get_disc(ch,DISC_LAMIA) < 3) { send_to_char("You require level 3 Lamia to use Omnipotence.\n\r",ch); return; } if ( arg[0] == '\0' ) { if ( ( eye = ch->pcdata->familiar ) != NULL && eye->pIndexData->vnum == MOB_VNUM_EYE) { send_to_char( "You are no longer using your Omnipotence.\n\r",ch ); ch->pcdata->familiar = NULL; eye->wizard = NULL; extract_char(eye, TRUE); return; } send_to_char( "Who do you wish to use Omnipotence on?\n\r", ch ); return; } if ( ( victim = get_char_world( ch, arg ) ) == NULL ) { send_to_char( "They aren't here.\n\r", ch ); return; } if ( ch == victim ) { send_to_char( "Now that would be completely pointless.\n\r", ch ); return; } if (IS_IMMORTAL(victim) || IS_IMMUNE(victim,IMM_SHIELDED)) { send_to_char( "You are unable to locate them.\n\r", ch ); return; } if ( IS_SET(victim->in_room->room_flags, ROOM_PRIVATE) || IS_SET(victim->in_room->room_flags, ROOM_SOLITARY) ) { send_to_char( "Nothing happens.\n\r", ch ); return; } if ( ( eye = ch->pcdata->familiar ) != NULL ) { if ( eye->pIndexData->vnum == MOB_VNUM_EYE ) { send_to_char( "You have switched the target of your Omnipotence.\n\r",ch ); char_from_room( eye ); char_to_room( eye, victim->in_room ); if ( eye->master != NULL ) stop_follower( eye ); eye->master = victim; eye->leader = NULL; } else send_to_char("Nothing happens.\n\r",ch); return; } if (ch->pcdata->followers > 4 || victim->in_room == NULL) { send_to_char("Nothing happens.\n\r",ch); return; } ch->pcdata->followers++; eye=create_mobile( get_mob_index( MOB_VNUM_EYE ) ); eye->level = 1; eye->hit = 1; eye->max_hit = 1; eye->hitroll = 0; eye->damroll = 0; eye->armor = 100; eye->alignment = 0; free_string(eye->name); eye->name = str_dup("eye eyeball"); free_string(eye->short_descr); eye->short_descr = str_dup("a small spectral eye"); free_string(eye->long_descr); eye->long_descr = str_dup("A small spectral eye floats here.\n\r"); free_string(eye->lord); eye->lord = str_dup(ch->name); send_to_char( "You are now using your Omnipotence.\n\r",ch ); char_to_room( eye, victim->in_room ); ch->pcdata->familiar = eye; eye->wizard = ch; if ( eye->master != NULL ) { send_to_char( "Bug - please inform Morglum.\n\r", ch ); return; } eye->master = victim; eye->leader = NULL; SET_BIT(eye->more, MORE_SPIRIT); SET_BIT(eye->vampaff, VAM_SPIRITEYES); SET_BIT(eye->act, ACT_NOEXP); SET_BIT(eye->act, ACT_NOPARTS); SET_BIT(eye->affected_by, AFF_ETHEREAL); SET_BIT(eye->affected_by, AFF_FLYING); return; } DO_COM( do_baal ) { AFFECT_DATA af; int sn, blood, potence, celerity, fortitude; if (IS_NPC(ch)) return; if (!IS_VAMPIRE(ch) && !IS_GHOUL(ch)) { send_to_char( "Huh?\n\r", ch ); return; } if (get_disc(ch,DISC_LAMIA) < 4) { send_to_char("You require level 4 Lamia to become Baal's Avatar.\n\r",ch); return; } if (is_affected(ch, gsn_demon)) { send_to_char("You are already possessed by the spirit of Baal.\n\r",ch); return; } if (get_disc(ch,DISC_POTENCE) < 5) potence = 5 - get_disc(ch,DISC_POTENCE); else if (get_disc(ch,DISC_POTENCE) < 10) potence = 1; else potence = 0; if (get_disc(ch,DISC_CELERITY) < 5) celerity = 5 - get_disc(ch,DISC_CELERITY); else if (get_disc(ch,DISC_CELERITY) < 10) celerity = 1; else celerity = 0; if (get_disc(ch,DISC_FORTITUDE) < 5) fortitude = 5 - get_disc(ch,DISC_FORTITUDE); else if (get_disc(ch,DISC_FORTITUDE) < 10) fortitude = 1; else fortitude = 0; blood = (potence + celerity + fortitude) * 10; if (blood < 1) { send_to_char("The spirit of Baal doesn't answer your call.\n\r",ch); return; } if (ch->blood[0] < blood) { send_to_char("You have insufficient blood.\n\r",ch); return; } ch->blood[0] -= blood; if ( ( sn = skill_lookup( "demonic possession" ) ) < 0 ) return; af.type = sn; af.duration = get_disc(ch,DISC_DAIMOINON); af.bitvector = 0; if (potence > 0) { af.location = APPLY_POTENCE; af.modifier = potence; affect_to_char( ch, &af ); } if (celerity > 0) { af.location = APPLY_CELERITY; af.modifier = celerity; affect_to_char( ch, &af ); } if (fortitude > 0) { af.location = APPLY_FORTITUDE; af.modifier = fortitude; affect_to_char( ch, &af ); } act( "$n's eyes burn with unholy strength!", ch, NULL, NULL, TO_ROOM ); send_to_char("Your eyes glow as you are infused with some of the power of Baal!\n\r",ch); WAIT_STATE( ch, 12 ); return; } DO_COM( do_servant ) { char buf [MAX_INPUT_LENGTH]; CHAR_DATA *victim; AFFECT_DATA af; int sn; if (IS_NPC(ch)) return; if (!IS_VAMPIRE(ch) && !IS_GHOUL(ch)) { send_to_char( "Huh?\n\r", ch ); return; } if (get_disc(ch,DISC_DAIMOINON) < 8) { send_to_char("You require level 8 Daimoinon to summon a Demonic Servant.\n\r",ch); return; } if (ch->pcdata->followers > 4) { send_to_char("Nothing happens.\n\r",ch); return; } ch->pcdata->followers++; victim=create_mobile( get_mob_index( MOB_VNUM_GUARDIAN ) ); char_to_room(victim,get_room_index(ROOM_VNUM_DISCONNECTION)); free_string(victim->lord); victim->lord = str_dup(ch->name); free_string(victim->name); victim->name = str_dup("demon servant"); free_string(victim->short_descr); victim->short_descr = str_dup("a demonic servant"); free_string(victim->long_descr); victim->long_descr = str_dup("A demonic servant stands here, awaiting orders.\n\r"); victim->sex = 1; victim->alignment = -1000; free_string(victim->description); victim->description = str_dup("He looks extremely powerful.\n\r"); victim->level = 100; victim->hit = 30000; victim->max_hit = 30000; victim->mana = 0; victim->max_mana = 1000; victim->move = 1000; victim->max_move = 1000; victim->hitroll = char_hitroll(ch) - 20; victim->damroll = char_damroll(ch) - 20; victim->armor = char_ac(ch) + 100; char_from_room(victim); char_to_room(victim,ch->in_room); strcpy(buf,"Come forth, creature of darkness, and do my bidding!"); do_say( ch, buf ); send_to_char( "A demon bursts from the ground and bows before you.\n\r",ch ); act( "$N bursts from the ground and bows before $n.", ch, NULL, victim, TO_ROOM ); if ( ( sn = skill_lookup( "guardian" ) ) < 0 ) { send_to_char( "Bug - please inform Morglum.\n\r", ch ); return; } add_follower( victim, ch ); af.type = sn; af.duration = 6666; af.location = APPLY_NONE; af.modifier = 0; af.bitvector = AFF_CHARM; affect_to_char( victim, &af ); return; } DO_COM( do_frenzy ) { if (IS_NPC(ch)) return; if (!IS_VAMPIRE(ch) && !IS_GHOUL(ch) ) { send_to_char("Huh?\n\r",ch); return; } if (get_disc(ch,DISC_ANIMALISM) < 7) { send_to_char("You require level 7 Animalism to use Frenzy Trigger.\n\r",ch); return; } if ( ch->pcdata->wolf > 0 ) { send_to_char("You take a deep breath and force back your inner beast.\n\r",ch); act("$n takes a deep breath and forces back $s inner beast.",ch,NULL,NULL,TO_ROOM); ch->pcdata->wolf = 0; if (IS_VAMPAFF(ch, VAM_NIGHTSIGHT) && get_disc(ch,DISC_PROTEAN) > 0) do_nightsight(ch,""); if (IS_VAMPAFF(ch, VAM_FANGS)) do_fangs(ch,""); if (IS_VAMPAFF(ch, VAM_CLAWS) && get_disc(ch,DISC_PROTEAN) > 1) do_claws(ch,""); WAIT_STATE(ch,12); return; } if (!IS_VAMPAFF(ch, VAM_NIGHTSIGHT) && get_disc(ch,DISC_PROTEAN) > 0) do_nightsight(ch,""); if (!IS_VAMPAFF(ch, VAM_FANGS)) do_fangs(ch,""); if (!IS_VAMPAFF(ch, VAM_CLAWS) && get_disc(ch,DISC_PROTEAN) > 1) do_claws(ch,""); send_to_char("You bare yours fangs and growl as your inner beast consumes you.\n\r",ch); act("$n bares $s fangs and growls as $s inner beast consumes $m.",ch,NULL,NULL,TO_ROOM); ch->pcdata->wolf += number_range(10,20); WAIT_STATE(ch,12); return; } DO_COM( do_flames ) { CHAR_DATA *victim; int dam, hp, sn; char arg[MAX_INPUT_LENGTH]; one_argument( argument, arg ); if (IS_NPC(ch)) return; if (!IS_VAMPIRE(ch)) { send_to_char("Huh?\n\r",ch); return; } if (get_disc(ch,DISC_DAIMOINON) < 7) { send_to_char("You require level 7 Daimoinon to use Flames of the Nether World.\n\r",ch); return; } if (IS_ITEMAFF(ch, ITEMA_PEACE)) do_majesty(ch,""); if (arg[0] == '\0' && ch->fighting == NULL) { send_to_char( "Who do you wish to strike with the Flames of the Nether World?\n\r", ch ); return; } if ( ( victim = ch->fighting ) == NULL ) { if ( ( victim = get_char_room( ch, arg ) ) == NULL ) { send_to_char( "They aren't here.\n\r", ch ); return; } } if ( is_safe(ch, victim) ) { if (!IS_NPC(victim) && ch != victim && IS_MORE(victim, MORE_GUARDIAN)) { guardian_message( victim ); act("$n just failed to use Flames of the Nether World on you.",ch,NULL,victim,TO_VICT); } return; } if ( ch == victim ) { send_to_char( "Now that would be just plain stupid.\n\r", ch ); return; } if ( ( sn = skill_lookup( "flame bolt" ) ) < 0 ) { send_to_char( "Bug - please inform Morglum.\n\r", ch ); return; } act( "A look of concentration crosses $n's face.", ch, NULL, NULL, TO_ROOM ); if (IS_ITEMAFF(victim, ITEMA_FIRESHIELD)) { send_to_char("Nothing happens.\n\r",ch); WAIT_STATE(ch, 6); return; } if (!IS_NPC(victim) && victim->pcdata->atm >= number_percent()) { send_to_char("Nothing happens.\n\r",ch); WAIT_STATE(ch, 6); return; } dam = number_range(50,100) * get_disc(ch,DISC_DAIMOINON); hp = victim->hit; if (!IS_NPC(victim) && IS_VAMPIRE(victim) ) damage( ch, victim, (dam*2), sn ); else damage( ch, victim, dam, sn ); WAIT_STATE(ch, 6); if (victim == NULL || victim->position == POS_DEAD) return; else if (!IS_MORE(victim, MORE_FLAMES)) { send_to_char("You are engulfed in infernal flames!\n\r",victim); act("$n is engulfed in infernal flames!",victim,NULL,NULL,TO_ROOM); SET_BIT(victim->affected_by, AFF_FLAMING); SET_BIT(victim->more, MORE_FLAMES); } update_pos(victim); return; }