/* Barkskin */
inherit "skills/obj/sp_arm";
#define NAME "@@query_name:$this_player()$@@" /* gives greater flexibilty */
status barkskin(mixed targ, mixed alt_type) {
int cl, i;
string file;
if(!alt_type) alt_type = "nature_sphere";
cl = (objectp(alt_type))
? (int)alt_type->query_cast_level()
: (int)this_player()->query(alt_type);
file = file_name(this_object());
sscanf(file, "%s#%d", file, i);
this_player()->load_spell(({
"target", targ,
"name", "Barkskin",
"sphere", alt_type,
"cost", 7,
"level", 7,
"damage", cl,
"cast time", 4,
"spell object", file,
"component", "bark#branch#leaf#wood#timber",
"passive",
"casting msg", ({
"You draw on the power of nature.\n",
"Shades of green swirl about you.\n",
"Green leaves begin to sprout.....\n"
}),
"casting msg room", ({
NAME +" calls to nature.\n",
"Shades of green swirl about "+ NAME +".\n",
"Green leaves begin to sprout about "+ NAME +".\n"
}),
}));
return 1;
}
/* call when this object is cloned to target */
status cast_spell(object caster,object target,object prev,int level) {
object bark;
if((bark = present("barkskin",target))) {
tell_object(caster,"You extend the time of your barkskin...\n");
bark->adj_time(level);
destruct(this_object());
return 1;
}
tell_object(environment(), "Your skin becomes as tough as bark.\n");
say(environment()->query_name()+"'s skin becomes as tough as bark.\n");
set_name("barkskin");
set_listen("You hear the crackling of bark and leaves.\n");
set_smell("You smell fresh pine in the air around you.\n");
set_alt_extra_long("Your skin looks all crispy like bark.\n");
set_extra_long((string)target->query_name()+"'s skin is all green and "+
"brown and looks like bark.\n");
set_info("The barkskin makes the target's skin tough and hard.\n"+
"This barkskin has only @@query_approx_time:"+
file_name(this_object())+"@@ left before it expires.\n");
adj_time(level * 60);
level = level/4;
level += 1;
if(level > 4) level = 4;
set_ac_bonus(level);
target->recalc_ac();
return 1;
}
/* Native Mode Move */
#include <move.h>