/* Filename : hornofhell.c
* Description : a unique enchanted horn
*
* written : 05-10-1996 - Gunner
* last modified : 28-05-1998 - Gunner
* HTML-Version : 06-02-2000 - Ghorwin
*/
#include <mudlib.h>
inherit I_ITEM;
#define FUNC "/doc/crashcourse/course09/hornfuncs"
create()
{
::create();
set_name("horn of hell");
add_id(({"horn","dark horn","cold horn","evil horn","hellhorn"}));
set_short("A dark horn");
set_long("The horn is dark and cold. You can feel evil lurking "
"inside it.\n");
set_weight(3);
set_value(1000+random(1000));
add_trigger("blow",(:call_other,FUNC,"blow_horn",this_object():));
add_property(({"hidden","magic","cold","stone"}));
replace_program(I_ITEM);
}
/* Filename : hornfuncs.c
* Description : the functionfile for hornofhell.c
*
* written : 05-10-1996 - Gunner
* last modified : 28-05-1998 - Gunner
* HTML-Version : 06-02-2000 - Ghorwin
*/
#include <mudlib.h>
#include "/doc/crashcourse/defs.h"
inherit I_DAEMON;
#define DEMON "/doc/crashcourse/course09/demon"
/*
* blow_horn : Called by the 'blow' trigger in hornofhell.c
*/
int
blow_horn(object horn, string arg)
{
object demon,
room = ENV(TP);
if (!arg || !horn->query_id(arg))
NOT_FAIL("Blow what?\n");
if (!room) return; // Something is fishy here...
if (Q_NOTELEIN(room) || Q_NOMAGIC(room))
NOT_FAIL("Not a sound is heard from the horn...\n");
tell_object(TP,"As you blow the horn, a terrible scream is heard. "
"When the scream fades, a ball of flame appears in "
"front of you. As the fire dies...\n");
tell_room(room,"As " + Q_NAME(TP) + " blows a horn, a terrible scream "
"is heard. When the scream fades, a ball of flame appears "
"in front of " + Q_OBJ(TP) + ". As the fire dies...\n",({TP}));
demon = clone_object(DEMON);
demon->add_property("owner_name",Q_RNAME(TP));
demon->move_player("Z",room);
horn->destroy(); // The horn vanishes...
return 1;
}