/*************************************************************************** * (c) 2000 TAKA and the GHOST DANCER MUD PROJECT TEAM * * You may use this code provided you accept it's usage agreements * * Usage agreement * 1) Is that you do not remove or modify this comment block. * 2) You must give due credit in the help files * 3) You email me at a_ghost_dancer@excite.com * this helps me judge what snippets are popular and i welcome * any ideas and if i find them worthy i may decide to code them * for GHOST and distribute them on our page. * 4) You must abid by all other ROM and MERC licences * 5) Finally any improvements/bugs you find or make please share them * so we can continue to put out quality snippets. * * Last thank you to all the ROM amd MERC folks for this wounderful code * base know as ROM. * * The Ghost Dancer MUD Project Team and me TAKA thank you * for your interest. * * You can email me at: * TAKA * a_ghost_dancer@excite.com * * All these Spells are by Taka of Ghost Dancer MUD Project team! ***************************************************************************/ /*************************************************************************** * 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. * ***************************************************************************/ /*************************************************************************** * ROM 2.4 is copyright 1993-1998 Russ Taylor * * ROM has been brought to you by the ROM consortium * * Russ Taylor (rtaylor@hypercube.org) * * Gabrielle Taylor (gtaylor@hypercube.org) * * Brian Moore (zump@rom.org) * * By using this code, you have agreed to follow the terms of the * * ROM license, in the file Rom24/doc/rom.license * ***************************************************************************/ #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" #include "interp.h" #include "magic.h" #include "recycle.h" /* SPELLS BY TAKA */ /* Stone Meld */ void spell_stone_meld (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; AFFECT_DATA af; if (is_affected (victim, sn)) { if (victim == ch) send_to_char ("Your skin is already as hard as a rock.\n\r", ch); else act ("$N is already as hard as can be.", ch, NULL, victim, TO_CHAR); return; } af.where = TO_AFFECTS; af.type = sn; af.level = level; af.duration = level; af.location = APPLY_AC; af.modifier = -40; af.bitvector = 0; affect_to_char (victim, &af); act ("$n's skin melds into stone.", victim, NULL, NULL, TO_ROOM); send_to_char ("Your skin melds into stone.\n\r", victim); return; } /* smoke screen */ void spell_screen (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; AFFECT_DATA af; if (is_affected (victim, sn)) { if (victim == ch) send_to_char ("Your are surrounded by a wall of smoke.\n\r", ch); else act ("$N is already surrounded by smoke.", ch, NULL, victim, TO_CHAR); return; } af.where = TO_AFFECTS; af.type = sn; af.level = level; af.duration = level; af.location = APPLY_AC; af.modifier = (-20 * (level / 26)); af.bitvector = 0; affect_to_char (victim, &af); act ("$n is hidden in smoke screen.", victim, NULL, NULL, TO_ROOM); send_to_char ("Your are hidden in a smoke screen.\n\r", victim); return; } /* adrenaline spell */ void spell_adrenaline (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; AFFECT_DATA af; if (is_affected (victim, sn) || IS_AFFECTED (victim, AFF_BERSERK)) { if (victim == ch) send_to_char ("You are already in a pumped up.\n\r", ch); else act ("$N is already in a pumped up.", ch, NULL, victim, TO_CHAR); return; } if (is_affected (victim, skill_lookup ("calm"))) { if (victim == ch) send_to_char ("Why don't you just relax for a while?\n\r", ch); else act ("$N doesn't look like $e wants to fight anymore.", ch, NULL, victim, TO_CHAR); return; } af.where = TO_AFFECTS; af.type = sn; af.level = level; af.duration = level / 3; af.modifier = level / 6; af.bitvector = 0; af.location = APPLY_HITROLL; affect_to_char (victim, &af); af.location = APPLY_DAMROLL; affect_to_char (victim, &af); af.modifier = 10 * (level / 36); af.location = APPLY_AC; affect_to_char (victim, &af); send_to_char ("You are pumped up!\n\r", victim); act ("$n gets a wild look in $s eyes!", victim, NULL, NULL, TO_ROOM); } /* quench thirst */ void spell_quench (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; if (IS_NPC (ch)) return; ch->pcdata->condition[COND_THIRST] = 30; send_to_char ("{RYou are no longer thirsty.{x\n\r", victim); return; } /* Eat as a spell satisfy hunger */ void spell_sate (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; if (IS_NPC (ch)) return; ch->pcdata->condition[COND_HUNGER] = 24; send_to_char ("{RYou are no longer hungery.{x\n\r", victim); return; } /* * acid rain spell by TAKA ghost dancer */ void spell_acidrain (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; int dam, i; for (i = 1; i < 8; i++) { dam = dice (level, 8); if (saves_spell (level, victim, DAM_ACID)) dam /= 2; if (victim->in_room == ch->in_room) { act ("{RDrops of {Dacid {Brain {Rshower down upon {W$N!{x", ch, NULL, victim, TO_ROOM); act ("{RDrops of {Dacid {Brain {Rshower down upon {W$N!{x", ch, NULL, victim, TO_CHAR); damage (ch, victim, dam, sn, DAM_ACID, TRUE); } } return; } /* * ice rain spell by TAKA ghost dancer */ void spell_icerain (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; int dam, i; for (i = 1; i < 8; i++) { dam = dice (level, 8); if (saves_spell (level, victim, DAM_COLD)) dam /= 2; if (victim->in_room == ch->in_room) { act ("{RDrops of {Dice {Brain {Rshower down upon {W$N!{x", ch, NULL, victim, TO_ROOM); act ("{RDrops of {Dice {Brain {Rshower down upon {W$N!{x", ch, NULL, victim, TO_CHAR); damage (ch, victim, dam, sn, DAM_COLD, TRUE); } } return; } /* * fire rain spell by TAKA ghost dancer */ void spell_firerain (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; int dam, i; for (i = 1; i < 8; i++) { dam = dice (level, 8); if (saves_spell (level, victim, DAM_FIRE)) dam /= 2; if (victim->in_room == ch->in_room) { act ("{RDrops of {rfire {Brain {Rshower down upon {W$N!{x", ch, NULL, victim, TO_ROOM); act ("{RDrops of {rfire {Brain {Rshower down upon {W$N!{x", ch, NULL, victim, TO_CHAR); damage (ch, victim, dam, sn, DAM_FIRE, TRUE); } } return; } /* * acid storm spell by TAKA ghost dancer */ void spell_acidstorm (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; int dam, i; for (i = 1; i < 4; i++) { dam = dice ((level / 2), 8); if (saves_spell (level, victim, DAM_ACID)) dam /= 2; if (victim->in_room == ch->in_room) { act ("{RDrops of {Dacid {Brain {Rshower down upon {W$N!{x", ch, NULL, victim, TO_ROOM); act ("{RDrops of {Dacid {Brain {Rshower down upon {W$N!{x", ch, NULL, victim, TO_CHAR); damage (ch, victim, dam, sn, DAM_ACID, TRUE); } } return; } /* * ice storm spell by TAKA ghost dancer */ void spell_icestorm (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; int dam, i; for (i = 1; i < 4; i++) { dam = dice ((level / 2), 8); if (saves_spell (level, victim, DAM_COLD)) dam /= 2; if (victim->in_room == ch->in_room) { act ("{RDrops of {Dice {Brain {Rshower down upon {W$N!{x", ch, NULL, victim, TO_ROOM); act ("{RDrops of {Dice {Brain {Rshower down upon {W$N!{x", ch, NULL, victim, TO_CHAR); damage (ch, victim, dam, sn, DAM_COLD, TRUE); } } return; } /* * fire storm spell by TAKA ghost dancer */ void spell_firestorm (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; int dam, i; for (i = 1; i < 4; i++) { dam = dice ((level / 2), 8); if (saves_spell (level, victim, DAM_FIRE)) dam /= 2; if (victim->in_room == ch->in_room) { act ("{RDrops of {rfire {Brain {Rshower down upon {W$N!{x", ch, NULL, victim, TO_ROOM); act ("{RDrops of {rfire {Brain {Rshower down upon {W$N!{x", ch, NULL, victim, TO_CHAR); damage (ch, victim, dam, sn, DAM_FIRE, TRUE); } } return; } /* skin spells by TAKA */ void spell_mud_skin (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; AFFECT_DATA af; if (is_affected (victim, sn)) { if (victim == ch) send_to_char ("Your skin is already as mud.\n\r", ch); else act ("$N already has the texture of mud.", ch, NULL, victim, TO_CHAR); return; } af.where = TO_AFFECTS; af.type = sn; af.level = level; af.duration = level; af.location = APPLY_AC; af.modifier = -10; af.bitvector = 0; affect_to_char (victim, &af); act ("$n's skin turns to mud.", victim, NULL, NULL, TO_ROOM); send_to_char ("Your skin turns to mud.\n\r", victim); return; } void spell_moss_skin (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; AFFECT_DATA af; if (is_affected (victim, sn)) { if (victim == ch) send_to_char ("Your skin is already covered in moss.\n\r", ch); else act ("$N already has the texture of moss.", ch, NULL, victim, TO_CHAR); return; } af.where = TO_AFFECTS; af.type = sn; af.level = level; af.duration = level; af.location = APPLY_AC; af.modifier = -15; af.bitvector = 0; affect_to_char (victim, &af); act ("$n's skin turns to moss.", victim, NULL, NULL, TO_ROOM); send_to_char ("Your skin turns to moss.\n\r", victim); return; } void spell_bark_skin (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; AFFECT_DATA af; if (is_affected (victim, sn)) { if (victim == ch) send_to_char ("Your skin is already covered in bark.\n\r", ch); else act ("$N is already as the texture of bark.", ch, NULL, victim, TO_CHAR); return; } af.where = TO_AFFECTS; af.type = sn; af.level = level; af.duration = level; af.location = APPLY_AC; af.modifier = -20; af.bitvector = 0; affect_to_char (victim, &af); act ("$n's skin is covered by bark.", victim, NULL, NULL, TO_ROOM); send_to_char ("Your skin is covered by bark.\n\r", victim); return; } void spell_steel_skin (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; AFFECT_DATA af; if (is_affected (victim, sn)) { if (victim == ch) send_to_char ("Your skin is already protected by steel.\n\r", ch); else act ("$N is already protected by steel.", ch, NULL, victim, TO_CHAR); return; } af.where = TO_AFFECTS; af.type = sn; af.level = level; af.duration = level; af.location = APPLY_AC; af.modifier = -50; af.bitvector = 0; affect_to_char (victim, &af); act ("$n's skin is covered by steel.", victim, NULL, NULL, TO_ROOM); send_to_char ("Your skin is covered by steel.\n\r", victim); return; } void spell_emerald_skin (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; AFFECT_DATA af; if (is_affected (victim, sn)) { if (victim == ch) send_to_char ("Your skin already has a green glow.\n\r", ch); else act ("$N already has a green glow.", ch, NULL, victim, TO_CHAR); return; } af.where = TO_AFFECTS; af.type = sn; af.level = level; af.duration = level; af.location = APPLY_AC; af.modifier = -60; af.bitvector = 0; affect_to_char (victim, &af); act ("$n's skin is protected by a greenish arua.", victim, NULL, NULL, TO_ROOM); send_to_char ("Your skin is protected by a greenish aura.\n\r", victim); return; } void spell_ruby_skin (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; AFFECT_DATA af; if (is_affected (victim, sn)) { if (victim == ch) send_to_char ("Your skin already has a red glow.\n\r", ch); else act ("$N already has a red glow.", ch, NULL, victim, TO_CHAR); return; } af.where = TO_AFFECTS; af.type = sn; af.level = level; af.duration = level; af.location = APPLY_AC; af.modifier = -70; af.bitvector = 0; affect_to_char (victim, &af); act ("$n's skin is protected by a redish arua.", victim, NULL, NULL, TO_ROOM); send_to_char ("Your skin is protected by a redish aura.\n\r", victim); return; } void spell_diamond_skin (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; AFFECT_DATA af; if (is_affected (victim, sn)) { if (victim == ch) send_to_char ("Your skin already has a brilliant glow.\n\r", ch); else act ("$N already has a brilliant glow.", ch, NULL, victim, TO_CHAR); return; } af.where = TO_AFFECTS; af.type = sn; af.level = level; af.duration = level; af.location = APPLY_AC; af.modifier = -80; af.bitvector = 0; affect_to_char (victim, &af); act ("$n's skin is protected by a brilliant arua.", victim, NULL, NULL, TO_ROOM); send_to_char ("Your skin is protected by a brilliant aura.\n\r", victim); return; } void spell_hit (int sn, int level, CHAR_DATA * ch, void *vo, int target) { AFFECT_DATA af; CHAR_DATA *victim = (CHAR_DATA *) vo; if (is_affected (victim, sn)) { send_to_char ("They already hit more often.\n\r", ch); return; } af.type = sn; af.duration = level / 30; af.location = APPLY_HITROLL; af.modifier = 3; af.bitvector = 0; affect_to_char (victim, &af); send_to_char ("You are luckier.\n\r", ch); return; } void spell_damage (int sn, int level, CHAR_DATA * ch, void *vo, int target) { AFFECT_DATA af; CHAR_DATA *victim = (CHAR_DATA *) vo; if (is_affected (victim, sn)) { send_to_char ("They already do more damage.\n\r", ch); return; } af.type = sn; af.duration = level / 30; af.location = APPLY_DAMROLL; af.modifier = 3; af.bitvector = 0; affect_to_char (victim, &af); send_to_char ("You are more powerful.\n\r", ch); return; } void spell_ego_whip (int sn, int level, CHAR_DATA * ch, void *vo, int target) { int dam; CHAR_DATA *victim = (CHAR_DATA *) vo; if (victim == ch) { send_to_char ("That would be dumb!", ch); return; } dam = 50 + (40 * (level / 25)); if (saves_spell (level, victim, DAM_MENTAL)) dam /= 2; damage (ch, victim, dam, sn, DAM_MENTAL, TRUE); return; } void spell_mind_flail (int sn, int level, CHAR_DATA * ch, void *vo, int target) { int dam; CHAR_DATA *victim = (CHAR_DATA *) vo; if (victim == ch) { send_to_char ("That would be dumb!", ch); return; } dam = 5 + (10 * ((level / 25) + 1)); if (saves_spell (level, victim, DAM_MENTAL)) dam /= 2; damage (ch, victim, dam, sn, DAM_MENTAL, TRUE); return; } void spell_psychic_thrust (int sn, int level, CHAR_DATA * ch, void *vo, int target) { int dam; CHAR_DATA *victim = (CHAR_DATA *) vo; if (victim == ch) { send_to_char ("That would be dumb!", ch); return; } dam = 5 + (20 * ((level / 25) + 1)); if (saves_spell (level, victim, DAM_MENTAL)) dam /= 2; damage (ch, victim, dam, sn, DAM_MENTAL, TRUE); return; } void spell_psychic_crush (int sn, int level, CHAR_DATA * ch, void *vo, int target) { int dam; CHAR_DATA *victim = (CHAR_DATA *) vo; if (victim == ch) { send_to_char ("That would be dumb!", ch); return; } dam = (level / 2) + (30 * ((level / 25) + 1)); if (saves_spell (level, victim, DAM_MENTAL)) dam /= 2; damage (ch, victim, dam, sn, DAM_MENTAL, TRUE); return; } void spell_mystic_armor (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; AFFECT_DATA af; if (is_affected (victim, sn)) { send_to_char ("They are already armored", ch); return; } af.type = sn; af.duration = 4 + (level / 3); af.location = APPLY_AC; af.modifier = -10 - (level / 8); af.bitvector = 0; affect_to_char (victim, &af); if (ch != victim) { act ("$n is surrounded by $N's mystic armour.", victim, NULL, ch, TO_ROOM); act ("$N is surrounded by your mystic armour.", ch, NULL, victim, TO_CHAR); act ("You are surrounded by $N's mystic armour.", victim, NULL, ch, TO_CHAR); } else { act ("$n is surrounded by a mystic armour.", victim, NULL, ch, TO_ROOM); send_to_char ("You are protected by a mystic armor!", ch); } return; } void spell_bloody_tears (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; if (IS_AFFECTED (victim, AFF_BLIND) || saves_spell (level, victim, DAM_OTHER) || is_affected (ch, sn)) { send_to_char ("You Failed!", ch); return; } act ("$n's eyes start bleeding!", victim, NULL, NULL, TO_ROOM); send_to_char ("Your eyes start bleeding!\n\r", victim); spell_blindness (skill_lookup ("blindness"), (level / 10), ch, vo, TARGET_CHAR); damage (ch, victim, (level / 2), sn, DAM_MENTAL, FALSE); /* -1 = no dam message */ spell_blindness (gsn_blindness, level / 3, ch, (void *) victim, TARGET_CHAR); return; } void spell_mind_bolt (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; int cnt, foo, dam; cnt = (level / 20) + 1; for (foo = 0; foo < cnt; foo++) { if (number_range (0, 99) < 20) continue; dam = number_range (level / 4, level * 2 / 3); if (saves_spell (level, victim, DAM_MENTAL)) dam /= 2; damage (ch, victim, dam, sn, DAM_MENTAL, TRUE); /* -1 = no dam message */ } return; } void spell_fighting_trance (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; AFFECT_DATA af; if (is_affected (victim, sn) || ((level * 2 / 3) > victim->level && !IS_IMMORTAL (ch))) { send_to_char ("You failed!", ch); return; } af.type = sn; af.duration = 6 + (level / 20); af.location = APPLY_HITROLL; af.modifier = level / 10; af.bitvector = AFF_SANCTUARY; affect_to_char (victim, &af); af.location = APPLY_SAVING_SPELL; af.modifier = 0 - level / 8; affect_to_char (victim, &af); af.location = APPLY_DAMROLL; af.modifier = level / 10; affect_to_char (victim, &af); af.location = APPLY_AC; af.modifier = -10 - (level / 10); affect_to_char (victim, &af); send_to_char ("You feel ready for battle.\n\r", victim); act ("$n looks ready for battle.", victim, NULL, NULL, TO_ROOM); /* if ( ch != victim ) send_to_char( "You are ready for battle.\n\r", ch ); */ return; } void spell_ice_bolt (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; int dam; dam = 150 + dice (level / 4, 12); if (saves_spell (level, victim, DAM_COLD)) dam = (dam * 100) / 120; act ("$N struck in the chest by a bolt of ice from $n!", ch, NULL, ch, TO_NOTVICT); send_to_char ("You strike $n with a large bolt of ice!\n\r", ch); damage (ch, victim, dam, sn, DAM_COLD, TRUE); return; } void spell_fire_bolt (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; int dam; dam = 150 + dice (level / 4, 12); if (saves_spell (level, victim, DAM_FIRE)) dam = (dam * 100) / 120; act ("$N struck in the chest by a bolt of fire from $n!", ch, NULL, ch, TO_NOTVICT); send_to_char ("You strike $n with a large bolt of fire!\n\r", ch); damage (ch, victim, dam, sn, DAM_FIRE, TRUE); return; } void spell_gas_bolt (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; int dam; dam = 150 + dice (level / 4, 12); if (saves_spell (level, victim, DAM_OTHER)) dam = (dam * 100) / 120; act ("$N struck in the chest by a bolt of gas from $n!", ch, NULL, ch, TO_NOTVICT); send_to_char ("You strike $n with a large bolt of gas!\n\r", ch); damage (ch, victim, dam, sn, DAM_OTHER, TRUE); return; } void spell_lightning_bolt (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; int dam; dam = 150 + dice (level / 4, 12); if (saves_spell (level, victim, DAM_LIGHTNING)) dam = (dam * 100) / 120; act ("$N struck in the chest by a bolt of lightning from $n!", ch, NULL, ch, TO_NOTVICT); send_to_char ("You strike $n with a large bolt of lightning!\n\r", ch); damage (ch, victim, dam, sn, DAM_LIGHTNING, TRUE); return; } void spell_acid_bolt (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; int dam; dam = 150 + dice (level / 4, 12); if (saves_spell (level, victim, DAM_ACID)) dam = (dam * 100) / 120; act ("$N struck in the chest by a bolt of acid from $n!", ch, NULL, ch, TO_NOTVICT); send_to_char ("You strike $n with a large bolt of acid!\n\r", ch); damage (ch, victim, dam, sn, DAM_ACID, TRUE); return; } void spell_holy_bolt (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; int dam; dam = 150 + dice (level / 4, 12); if (saves_spell (level, victim, DAM_HOLY) && saves_spell (level, victim, DAM_LIGHTNING)) dam = (dam * 100) / 120; act ("$N struck in the chest by a bolt of holy light from $n!", ch, NULL, ch, TO_NOTVICT); send_to_char ("You strike $n with a large bolt of holy light!\n\r", ch); damage (ch, victim, dam, sn, DAM_HOLY, TRUE); return; } void spell_fireblast (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; int dam; dam = (level / 2) + dice ((level / 6), 10) + dice ((level / 6), 10); act ("A blast of fire flies from $n's hands!", ch, NULL, NULL, TO_ROOM); send_to_char ("A blast of fire flies from your hands!\n\r", ch); if (saves_spell (level, victim, DAM_FIRE)) dam /= 2; act ("$n is struck by the blast of fire!!", victim, NULL, NULL, TO_ROOM); send_to_char ("You are struck by the fire blast!!\n\r", victim); damage (ch, victim, dam, sn, DAM_FIRE, TRUE); return; } void spell_iceblast (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; int dam; dam = (level / 2) + dice ((level / 6), 10) + dice ((level / 6), 10); act ("A blast of ice flies from $n's hands!", ch, NULL, NULL, TO_ROOM); send_to_char ("A blast of ice flies from your hands!\n\r", ch); if (saves_spell (level, victim, DAM_COLD)) dam /= 2; act ("$n is struck by the blast of ice!!", victim, NULL, NULL, TO_ROOM); send_to_char ("You are struck by the ice blast!!\n\r", victim); damage (ch, victim, dam, sn, DAM_COLD, TRUE); return; } void spell_gasblast (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; int dam; dam = (level / 2) + dice ((level / 6), 10) + dice ((level / 6), 10); act ("A blast of gas flies from $n's hands!", ch, NULL, NULL, TO_ROOM); send_to_char ("A blast of gas flies from your hands!\n\r", ch); if (saves_spell (level, victim, DAM_OTHER)) dam /= 2; act ("$n is struck by the blast of gas!!", victim, NULL, NULL, TO_ROOM); send_to_char ("You are struck by the gas blast!!\n\r", victim); damage (ch, victim, dam, sn, DAM_OTHER, TRUE); return; } void spell_electricblast (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; int dam; dam = (level / 2) + dice ((level / 6), 10) + dice ((level / 6), 10); act ("A blast of electricity flies from $n's hands!", ch, NULL, NULL, TO_ROOM); send_to_char ("A blast of electricity flies from your hands!\n\r", ch); if (saves_spell (level, victim, DAM_SHOCK)) dam /= 2; act ("$n is struck by the blast of electricity!!", victim, NULL, NULL, TO_ROOM); send_to_char ("You are struck by the electric blast!!\n\r", victim); damage (ch, victim, dam, sn, DAM_SHOCK, TRUE); return; } void spell_lightningblast (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; int dam; dam = (level / 2) + dice ((level / 6), 10) + dice ((level / 6), 10); act ("A blast of lightning flies from $n's hands!", ch, NULL, NULL, TO_ROOM); send_to_char ("A blast of lightning flies from your hands!\n\r", ch); if (saves_spell (level, victim, DAM_LIGHTNING)) dam /= 2; act ("$n is struck by the blast of lightning!!", victim, NULL, NULL, TO_ROOM); send_to_char ("You are struck by the lightning blast!!\n\r", victim); damage (ch, victim, dam, sn, DAM_LIGHTNING, TRUE); return; } void spell_holyblast (int sn, int level, CHAR_DATA * ch, void *vo, int target) { CHAR_DATA *victim = (CHAR_DATA *) vo; int dam; dam = (level / 2) + dice ((level / 6), 10) + dice ((level / 6), 10); act ("A blast of holy light flies from $n's hands!", ch, NULL, NULL, TO_ROOM); send_to_char ("A blast of holy light flies from your hands!\n\r", ch); if (saves_spell (level, victim, DAM_HOLY)) dam /= 2; act ("$n is struck by the blast of holy light!!", victim, NULL, NULL, TO_ROOM); send_to_char ("You are struck by the blast of holy light!!\n\r", victim); damage (ch, victim, dam, sn, DAM_HOLY, TRUE); return; }