// Fireball spell. Mobydick, 11-1-92. May be changed in the future.
#include <mudlib.h>
inherit DAEMON ;
varargs int cast (string str, int obj) {
object target ;
int sp, cost, skill ;
if (str!="NONE") {
target = present(str,environment(this_player())) ;
if (!target) {
write ("You are not in combat with anyone.\n") ;
return 1 ;
}
if (target==this_player()) {
write ("That seems like a pretty bad idea.\n") ;
return 1 ;
}
if (!living(target)) {
write("Please don't damage the furniture.\n") ;
return 1 ;
}
if ((int)target->query("no_attack")==1) {
write ("You cannot attack that.\n") ;
return 1 ;
}
}
// If obj==1, it means the call came from an object, not the cast command,
// and we don't want to charge spell point cost.
if (obj!=1) {
sp = this_player()->query("spell_points") ;
skill = this_player()->query_skill("Combat spells") ;
cost = 300/(skill+10) ;
if (sp<cost) {
write ("You haven't got enough spell points to cast it.\n") ;
return 1 ;
}
this_player()->set ("spell_points", sp-cost) ;
}
if (str!="NONE") {
write ("You attack "+str+"!\n") ;
this_player()->kill_ob(target) ;
}
this_player()->fireball_cast(target) ;
this_player()->improve_skill("Combat spells", 10) ;
return 1 ;
}