set_duration(d) { call_out("dispel",d); } reset() { call_out("heal",2); } heal() { if(environment()->query_hp()==environment()->query_max_hp()) { destruct(this_object()); return; } environment()->reduce_hit_point(-1); call_out("heal",5); } dispel() { remove_call_out("heal"); destruct(this_object()); } query_spell_name() { return "regeneration"; }