#include <mudlib.h>
inherit MAGIC_ARMOUR;
int active = 0;
int counter = 0;
int left = 0;
object user;
reset(arg) {
if(arg) return;
set_name("amulet");
set_type("amulet");
set_short("Glowing Amulet");
set_long("The amulet has a pulsating glow to it.\n"+
"It looks very magical. An old rune reads, 'activate'\n");
set_info("This Amulet has a special kind of Leprechaun magic!\n");
set_ac(1);
set_weight(1);
set_value(10000);
set_armour_material("glass");
}
void init() {
::init();
add_action("activate", "activate");
}
status activate(string what) {
int tmp;
user = this_player();
if (!what) {
notify_fail("You can't just 'activate'\n");
return 0;
}
if(!present(what, user)) {
notify_fail("You don't have a "+what+".\n");
return 0;
}
if (what == "amulet") {
if (!worn) {
notify_fail("You must wear it first.\n");
return 0;
}
if(active == 1) {
notify_fail("You can't do it again!\n");
return 0;
}
active = 1;
write("You chant, 'ACTIVATE AMULET', bringing it to life!\n");
say(user->query_name()+ " chants 'ACTIVATE AMULET'\n"+
"An amulet around "+user->query_possessive()+
" neck seems to come to life!\n");
set_heart_beat(1);
return 1;
}
return 0;
}
drop () {
set_heart_beat(0);
active = 0;
return 0;
}
void heart_beat(){
int tmp;
left = left + 1;
counter = counter + 1;
if (!worn) {
active = 0;
set_heart_beat(0);
return;
}
if (worn_by != user) {
active = 0;
set_heart_beat(0);
return;
}
if (counter >= 5) {
counter = 0;
tmp = user->query_max_hp() - user->query_hp();
if (tmp >= 3)
user->adj_hp(3);
else
user->adj_hp(tmp);
if (tmp != 0) tell_object (user,
"The magic of the Leprechauns has blessed you!\n");
return;
}
if (left > 4000) {
tell_object (user,
"The Leprechaun magic seems to wear off\n"+
"as the amulet dissolves before your eyes!\n");
destruct(this_object());
return;
}
return;
}