/* Do not remove the headers from this file! see /USAGE for more info. */
inherit SPELL;
inherit COMBAT_SPELL;
void setup()
{
set_spell_name("fireball");
set_combat_messages("combat-torch");
set_damage_type("magic");
}
int calculate_damage()
{
return random(5) + 1;
}
void cast_spell(object ob, object reagent)
{
object array targets;
if ( !ob )
{
targets = filter(all_inventory(environment(this_body())),
(: $1 != this_body() && $1->is_living() :));
this_body()->simple_action("$N $vcast a fireball spell!");
}
else
{
targets = ({ ob });
this_body()->targetted_action("$N $vcast a fireball spell at $t1.", ob);
}
foreach ( object item in targets )
{
/* okay... we won't have the fireball hit the caster... :-) */
if ( item == this_body() )
continue;
//reduce hit points here
do_spell_damage(item, (: calculate_damage :));
}
}
mixed valid_target(object ob)
{
/* a fireball can always be cast... */
return 1;
}
mixed valid_reagent(object ob)
{
return !ob || "That wouldn't help the spell any.\n";
}