/**************************************************************************** * ResortMUD Version 5.0 was mainly programmed by Ntanel, Garinan, Josh, * * Badastaz, Digifuzz, Senir, Kratas, Scion, Shogar and Tagith. * * ------------------------------------------------------------------------ * * Copyright (C) 1996 - 2001 Haslage Net Electronics: MudWorld of Lorain, * * Ohio. ALL RIGHTS RESERVED See /doc/RMLicense.txt for more details. * ****************************************************************************/ /* * Inferno spell * Author: Rantic (supfly@geocities.com) * of FrozenMUD (empire.digiunix.net 4000) * * Permission to use and distribute this code is granted provided * this header is retained and unaltered, and the distribution * package contains all the original files unmodified. * If you modify this code and use/distribute modified versions * you must give credit to the original author(s). */ ch_ret spell_inferno( int sn, int level, CHAR_DATA *ch, void *vo) { CHAR_DATA *vch; CHAR_DATA *vch_next; bool ch_died; int dam; int hpch; ch_ret retcode; ch_died = FALSE; retcode = rNONE; if ( IS_SET( ch->in_room->room_flags, ROOM_SAFE ) ) { set_char_color( AT_MAGIC, ch ); send_to_char( "Magical forces extinguish your inferno.\n\r", ch ); return rNONE; } hpch = UMAX( 10, ch->hit ); dam = number_range( hpch/15, hpch/6 ); act( AT_MAGIC, "A hellish inferno rises at your command!", ch, NULL, NULL, TO_CHAR ); act( AT_MAGIC, "A hellish inferno rises at $n's command!", ch, NULL, NULL, TO_ROOM ); for ( vch = ch->in_room->first_person; vch; vch = vch_next ) { vch_next = vch->next_in_room; if ( !vch->in_room ) continue; if ( !IS_NPC( vch ) && xIS_SET( vch->act, PLR_WIZINVIS ) && vch->pcdata->wizinvis >= LEVEL_IMMORTAL ) continue; if ( vch != ch && ( IS_NPC(ch) ? !IS_NPC(vch) : IS_NPC(vch) ) ) { if ( saves_spell_staff( level, vch ) ) /* small fix, --Cronel */ retcode = damage( ch, vch, dam/2, sn ); else retcode = damage( ch, vch, dam, sn ); } if ( retcode == rCHAR_DIED || char_died(ch) ) { ch_died = TRUE; continue; } if ( char_died(vch) ) { act( AT_BLOOD, "$N is engulfed by the inferno's scorching flame, burning $M to a crisp.", ch, NULL, vch, TO_CHAR ); act( AT_BLOOD, "$N is engulfed by the inferno's scorching flame, burning $M to a crisp.", ch, NULL, vch, TO_ROOM ); continue; } if ( !ch_died ) { set_char_color( AT_MAGIC, vch ); send_to_char( "The inferno scorches everything it touches.\n\r", vch ); } } if ( ch_died ) return rCHAR_DIED; else return rNONE; }