/* remove curse */
#define SPELLNAME (string)caster->query_spell_name()
status remove(string spell_type, mixed alt_type) {
int i;
string file;
string targ;
string spell_name;
int spell_level;
if(!spell_type) {
notify_fail("remove curse?\n");
return 0;
}
if(!alt_type) alt_type = "abjuration";
file = file_name(this_object());
sscanf(file, "%s#%d", file, i);
sscanf(spell_type,"%s %s", spell_type, targ);
spell_type = lower_case(spell_type);
switch(spell_type) {
case "curse":
spell_name = "Remove Curse";
spell_level = 6;
break;
default:
notify_fail("remove curse?\n");
return 0;
break;
}
this_player()->load_spell(({
"target", targ,
"name", spell_name,
"sphere", alt_type,
"cost", spell_level,
"level", spell_level,
"cast time", 1,
"spell object", file,
"passive",
}));
return 1;
}
/*******************************************************************/
/* called when this is cloned to target */
status cast_spell(object caster,object target,object prev,int dmg) {
object ob;
status flag;
if(SPELLNAME == "Remove Curse") {
while((ob = present("Curse", target))) {
flag = 1;
destruct(ob);
}
if(target->id("Curse")) {
flag = 1;
destruct(target);
}
if(!flag) {
write("There is no curse.\n");
}
else {
write("You remove the curse.\n");
if(caster != target) {
tell_object(target,caster->query_name()+" removes your curse.\n");
}
say(caster->query_name() +" removes a curse on "+ target->query_name()
+".\n", target);
}
}
destruct(this_object());
return 1;
}
status id(string str) { return str == "spell"; }
/* Native Mode Move */
#include <move.h>