/* wraith form */
inherit "inherit/timer";
status wraith(string targ, mixed alt_type) {
int time, i;
string file;
if(targ != "form") {
notify_fail("wraith form?\n");
return 0;
}
if(!alt_type) alt_type = "necromancy";
time = (objectp(alt_type))
? (int)alt_type->query_cast_level()
: (int)call_other(this_player(),"query_"+alt_type);
file = file_name(this_object());
sscanf(file,"%s#%d",file,i);
this_player()->load_spell(({
"target", this_player(),
"name", "Wraith Form",
"sphere", alt_type,
"cost", 7,
"damage", time,
"level", 7,
"cast time", 1,
"spell object", file,
"passive",
}));
return 1;
}
/***************************************************************************/
/* when object cloned to target */
status cast_spell(object caster,object target,object prev,int level) {
object wraith;
if(wraith = present("wraith form 2", target)) {
write("You extend the time of your wraithform spell.\n");
wraith->adj_time(level * 60);
destruct(this_object());
return 1;
}
if(!target->query_ghost()) {
write("Your body turns ghost like...\n");
say(target->query_name() +"'s body becomes ghostlike...\n");
target->toggle_ghost();
}
else {
write("You are already dead..\n");
}
return 1;
}
status drop(status quit) {
if(quit) time_out();
return 1;
}
void time_out() {
if(environment()->query_ghost()) {
environment()->toggle_ghost();
}
::time_out();
}
void dispel_magic() { /* std spell fn to clean up */
time_out();
}
status id(string str) {
return str == "spell"
|| str == "wraith form";
}
void init() {
add_action("dispel", "dispel");
}
status dispel(string str) {
if(str != "wraith form") return 0;
time_out();
return 1;
}
/* Native Mode Move */
#include <move.h>