/**********************************************************************/
/* magic weapon that can imbue magic protection and cast spells when */
/* wielded */
#include <mudlib.h>
inherit WEAPON;
inherit WAND;
string protection;
string query_object_type() { return "Magic Weapon"; }
string query_protection() { return protection; }
string set_protection(string str) { return protection = str; }
int query_value() { return weapon::query_value()+wand::query_value(); }
mapping query_specs() {
return ([
"protection" : protection,
])
+ weapon::query_specs() + wand::query_specs();
}
status drop(status silently) {
if(protection) environment()->remove_spell_immunity(protection);
return weapon::drop(silently);
}
status wield(string wielding) {
status flag;
flag = weapon::wield(wielding);
if(wielded) {
if(protection) environment()->add_spell_immunity(protection);
wand::init();
}
return flag;
}
void init() {
if(environment()) weapon::init();
}
/* for info */
string query_protection_string() {
if(protection) {
return "The "+ query_name() +" will protect you from "+
protection +" when it is wielded.\n";
}
}