/* Filename : amulet.c
* Description : a magical amulet
*
* written : 02-10-1996 - Gunner
* last modified : 26-05-1998 - Gunner
* HTML-Version : 01-02-2000 - Ghorwin
*/
#include <mudlib.h>
inherit I_ARMOUR;
#define FUNC "/doc/crashcourse/course05/amuletfuncs"
create()
{
::create();
set_name("burnt amulet");
add_id(({"amulet","wooden amulet","strange amulet"}));
set_short("A burnt amulet");
set_long("This wooden amulet seems kinda burnt. Wonder why it "
"hasn't burnt up?\n");
set_weight(1);
set_type("amulet");
set_value(200+random(200));
set_ac(1);
// Set a special infotext which only spells and special
// abilities will display. All special items should
// use this.
set_info("A magical amulet which contains some powers of fire. "
"'cast fireball' seems like a good idea.\n");
// magic = all magical items should have this property
add_property(({"hidden","magic","wood"}));
// Let's call the 'cast_fireball' function if the player
// uses the cast command
add_trigger("cast",(:call_other,FUNC,"cast_fireball":));
replace_program(I_ARMOUR);
}
/* Filename : amuletfuncs.c
* Description : the functionfile for amulet.c
*
* written : 02-10-1996 - Gunner
* last modified : 05-11-1997 - Gunner
* HTML-Version : 01-02-2000 - Ghorwin
*/
#include <mudlib.h>
/* Let's also include our new definitionsfile.. */
#include "/doc/crashcourse/defs.h"
inherit I_DAEMON;
/* NOTE! This kind of attack "weapons" would not get past */
/* QC since it's much too strong. It is only meant as */
/* an example. */
/*
* cast_fireball : called by the trigger 'cast' in amulet.c
*/
int
cast_fireball(string arg)
{
object attacker;
// If the player typed something else but 'cast fireball'
// then nothing shall happen
if (!arg || arg != "fireball")
NOT_FAIL("Cast what?\n");
attacker = TP->query_attack(); // Who is attacking the player?
if (!attacker) // Noone??
return notify_fail("Nothing happens.\n");
// Okay, the player has typed the correct sentence and is
// under attack. Let's make things happen.
tell_object(TP,"A fireball shoots out of the amulet and hits " +
attacker->query_name() + "!\n");
tell_object(attacker, "A fireball shoots out of " + TP->query_name() +
"'s amulet and hits you!\n");
tell_room(environment(TP),"A fireball shoot out of " + TP->query_name() +
"'s amulet and hits " + attacker->query_name() + "!\n",({TP,attacker}));
// Hit the attacker with fire damage!
attacker->hit_player(20+random(10),"fire",TP);
return 1;
}