/* stoneskin */ #define NAME "@@query_name:$this_player()$@@" status stoneskin(string targ, mixed alt_type) { int level, i; string file; if(!alt_type) alt_type = "abjuration"; level = (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", "Stoneskin", "sphere", alt_type, "cost", 14, "level", 14, "damage", level, "cast time", 2, "spell object", file, "casting msg", "You feel your skin turning brittle.\n", "casting msg room", NAME +"'s skin turns to a stony colour.\n", "passive", })); return 1; } /*******************************************************************/ /* called when this is cloned to target */ status cast_spell(object caster,object target,object prev,int dmg) { object ob; if((ob = (object)target->query_stoneskin_object())) { destruct(ob); } write("Your skin takes on a stony quality.\n"); clone_object("obj/shadows/stoneskin")->stoneskin(target,2+(dmg/3)); destruct(this_object()); return 1; } status id(string str) { return str == "spell"; } /* Native Mode Move */ #include <move.h>