tmi2_fluffos_v2/
tmi2_fluffos_v2/bin/
tmi2_fluffos_v2/etc/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/ChangeLog.old/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/Win32/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/compat/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/compat/simuls/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/include/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/clone/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/command/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/data/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/etc/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/include/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/inherit/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/inherit/master/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/log/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/single/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/single/tests/compiler/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/single/tests/efuns/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/single/tests/operators/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/u/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/tmp/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/windows/
tmi2_fluffos_v2/lib/
tmi2_fluffos_v2/lib/adm/
tmi2_fluffos_v2/lib/adm/daemons/languages/
tmi2_fluffos_v2/lib/adm/daemons/network/I3/
tmi2_fluffos_v2/lib/adm/daemons/virtual/
tmi2_fluffos_v2/lib/adm/daemons/virtual/template/
tmi2_fluffos_v2/lib/adm/news/
tmi2_fluffos_v2/lib/adm/obj/
tmi2_fluffos_v2/lib/adm/obj/master/
tmi2_fluffos_v2/lib/adm/priv/
tmi2_fluffos_v2/lib/adm/shell/
tmi2_fluffos_v2/lib/adm/tmp/
tmi2_fluffos_v2/lib/cmds/
tmi2_fluffos_v2/lib/d/
tmi2_fluffos_v2/lib/d/Conf/
tmi2_fluffos_v2/lib/d/Conf/adm/
tmi2_fluffos_v2/lib/d/Conf/boards/
tmi2_fluffos_v2/lib/d/Conf/cmds/
tmi2_fluffos_v2/lib/d/Conf/data/
tmi2_fluffos_v2/lib/d/Conf/logs/
tmi2_fluffos_v2/lib/d/Conf/obj/
tmi2_fluffos_v2/lib/d/Conf/text/help/
tmi2_fluffos_v2/lib/d/Fooland/adm/
tmi2_fluffos_v2/lib/d/Fooland/data/
tmi2_fluffos_v2/lib/d/Fooland/data/attic/
tmi2_fluffos_v2/lib/d/Fooland/items/
tmi2_fluffos_v2/lib/d/TMI/
tmi2_fluffos_v2/lib/d/TMI/adm/
tmi2_fluffos_v2/lib/d/TMI/boards/
tmi2_fluffos_v2/lib/d/TMI/data/
tmi2_fluffos_v2/lib/d/TMI/rooms/
tmi2_fluffos_v2/lib/d/grid/
tmi2_fluffos_v2/lib/d/grid/adm/
tmi2_fluffos_v2/lib/d/grid/data/
tmi2_fluffos_v2/lib/d/std/
tmi2_fluffos_v2/lib/d/std/adm/
tmi2_fluffos_v2/lib/data/adm/
tmi2_fluffos_v2/lib/data/adm/daemons/
tmi2_fluffos_v2/lib/data/adm/daemons/doc_d/
tmi2_fluffos_v2/lib/data/adm/daemons/emoted/
tmi2_fluffos_v2/lib/data/adm/daemons/network/http/
tmi2_fluffos_v2/lib/data/adm/daemons/network/services/mail_q/
tmi2_fluffos_v2/lib/data/adm/daemons/network/smtp/
tmi2_fluffos_v2/lib/data/adm/daemons/news/archives/
tmi2_fluffos_v2/lib/data/attic/connection/
tmi2_fluffos_v2/lib/data/attic/user/
tmi2_fluffos_v2/lib/data/std/connection/b/
tmi2_fluffos_v2/lib/data/std/connection/l/
tmi2_fluffos_v2/lib/data/std/user/a/
tmi2_fluffos_v2/lib/data/std/user/b/
tmi2_fluffos_v2/lib/data/std/user/d/
tmi2_fluffos_v2/lib/data/std/user/f/
tmi2_fluffos_v2/lib/data/std/user/l/
tmi2_fluffos_v2/lib/data/std/user/x/
tmi2_fluffos_v2/lib/data/u/d/dm/working/doc_d/
tmi2_fluffos_v2/lib/data/u/l/leto/doc_d/
tmi2_fluffos_v2/lib/data/u/l/leto/smtp/
tmi2_fluffos_v2/lib/doc/
tmi2_fluffos_v2/lib/doc/driverdoc/applies/
tmi2_fluffos_v2/lib/doc/driverdoc/applies/interactive/
tmi2_fluffos_v2/lib/doc/driverdoc/concepts/
tmi2_fluffos_v2/lib/doc/driverdoc/driver/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/arrays/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/buffers/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/compile/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/ed/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/filesystem/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/floats/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/functions/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/general/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/mappings/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/numbers/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/parsing/
tmi2_fluffos_v2/lib/doc/driverdoc/lpc/constructs/
tmi2_fluffos_v2/lib/doc/driverdoc/lpc/preprocessor/
tmi2_fluffos_v2/lib/doc/driverdoc/lpc/types/
tmi2_fluffos_v2/lib/doc/driverdoc/platforms/
tmi2_fluffos_v2/lib/doc/mudlib/
tmi2_fluffos_v2/lib/ftp/
tmi2_fluffos_v2/lib/include/driver/
tmi2_fluffos_v2/lib/log/
tmi2_fluffos_v2/lib/log/driver/
tmi2_fluffos_v2/lib/obj/net/
tmi2_fluffos_v2/lib/obj/shells/
tmi2_fluffos_v2/lib/obj/tools/
tmi2_fluffos_v2/lib/std/adt/
tmi2_fluffos_v2/lib/std/board/
tmi2_fluffos_v2/lib/std/body/
tmi2_fluffos_v2/lib/std/fun/
tmi2_fluffos_v2/lib/std/living/
tmi2_fluffos_v2/lib/std/object/
tmi2_fluffos_v2/lib/std/shop/
tmi2_fluffos_v2/lib/std/socket/
tmi2_fluffos_v2/lib/std/user/
tmi2_fluffos_v2/lib/std/virtual/
tmi2_fluffos_v2/lib/student/
tmi2_fluffos_v2/lib/student/kalypso/
tmi2_fluffos_v2/lib/student/kalypso/armor/
tmi2_fluffos_v2/lib/student/kalypso/rooms/
tmi2_fluffos_v2/lib/student/kalypso/weapons/
tmi2_fluffos_v2/lib/u/l/leto/
tmi2_fluffos_v2/lib/u/l/leto/cmds/
tmi2_fluffos_v2/lib/www/errors/
tmi2_fluffos_v2/lib/www/gateways/
tmi2_fluffos_v2/lib/www/images/
tmi2_fluffos_v2/old/
tmi2_fluffos_v2/win32/
// foobird.c
// An example monster, heavily documented to explain what all of its various
// properties do.
// Created by Mobydick, 8-28-92

#include <mudlib.h>

inherit MONSTER ;

void create () {
	::create();
	seteuid(getuid()) ;
	set("short", "a mighty foobird") ;
	set("long", "If you don't know the joke about the foobird, just \"ask\".\n") ;
	set ("id", ({ "bird", "foobird" }) ) ;
// Monsters need to set mass and bulk, so that when they die we'll know what
// the mass and bulk of the corpse need to be.
// For reference, the mass of a human player is 7500, and the bulk is
// 500.
	set ("mass", 3000) ;
	set ("bulk", 300) ;
// Any monster that's going to carry objects needs to set a capacity and
// volume. For a human players, the capacity is 5000 and the volume is 500.
	set ("capacity", 2500) ;
	set ("volume", 100) ;
// You must also set the max_cap and max_vol properties, so that inventory
// is handled properly. If you don't set these, then the monster's inventory
// won't show the proper weight of items if a wizard takes the body over.
	set ("max_cap", 2500) ;
	set ("max_vol", 100) ;
// All monsters need to set a name for combat messages. This also takes care
// of setting cap_name.
	set_name ("foobird") ;
// Living_name is the name by which the find_living efun can find it.
	set_living_name("foobird") ;
	enable_commands() ;
// The monster should have a gender set.
	set ("gender", "neuter") ;
// The number of hit points the monster has.
	set ("hit_points", 30) ;
// The monster's armor class.
	set ("armor_class", 2) ;
// The maximum hit points the monster can heal to. If you don't want monsters
// to heal, take the heal_up call out of their heart_beat, and you won't need
// this property anymore.
	set ("max_hp", 30) ;
// Aggressive monsters will attack any player that enters their room. If you
// set "aggressive" to 1, the monster is aggressive, otherwise he is not.
	set ("aggressive", 0) ;
// The weapon Class of the monster's barehanded attack. If the monster
// has a weapon this isn't used.
	set ("attack_strength", 6) ;
// The damage range of the monster's attack. As above.
	set ("damage", ({ 2,6 }) ) ;
// The word to be used in describing the thing the monster attacks with.
// Printed in messages of the form "The foobird attacks you with its "+name
// so it should not contain articles.
	set ("weapon_name", "mighty beak") ;
// Monsters have statistics and skills just like players do.
	set ("stat/strength", 10) ;
	set ("stat/dexterity", 6) ;
	set_skill ("attack", 5, "strength") ;
	set_skill ("defense", 5, "dexterity") ;
// The verbs to be used in describing the monster's attack. They are
// conjugated by adding an "s" to the FIRST word in the string. They are
// printed in messages of the form "The foobird "+verb+" you" so if they
// require prepositions those need to be in the string.
	set_verbs( ({ "swipe at" , "slash at", "chew on" }) ) ;
// In the case of irregular conjugations, you can use set_verbs2() to set
// the correct conjugations. In this case, "slash at" would conjugate to
// "slashs at" which isn't correct. So we call set_verbs2 to get the
// proper form. If all the verbs in the list are correctly conjugated by
// adding an s to the first word, then you do not need to call this.
	set_verbs2( ({ "swipes at", "slashes at", "chews on" }) ) ;
// Set the spell the monster will cast, and the chance that it will do so
// on any given attack.
	spell_cast("missile",30) ;
// If you wish the monster to be able to output messages (ie: talk) define
// chat_chance as to the chance between 1 - 100 that the monster will give
// a chat at heartbeat. It will select the output from the chat_output
// array. It will use those found in the att_chat_output if the monster
// is in battle.
	set("chat_chance", 10);
	set("chat_output", ({
	 	"The Foobird warbles merrily at you.\n",
		"The Foobird flaps its wings noisily.\n"
			}));
	set("att_chat_output", ({
		"The Foobird screams angrily at you.\n",
		"The Foobird tries to fly away to avoid the battle.\n",
			}));
}

void init() {
	add_action ("ask", "ask") ;
}

int ask (string str) {
	write (
"  Many years ago a famous explorer went to deepest darkest Africa in\n"+
"search of the mighty foobird. He made contact with members of a remote\n"+
"tribe deep in the jungle, and asked them to show him the foobird. They\n"+
"agreed, but warned him that if the foobird should excrete on him, he\n"+
"must never wipe it off or else he would die! The explorer disregarded\n"+
"this as native superstition, but he agreed to their condition and was\n"+
"taken into the jungle to see the foobird. They came upon the foobird\n"+
"and sure, enough, the foobird excreted directly upon the famous explorer.\n"+
"Seeing a chance to debunk the native's silly superstitions, he wiped it\n"+
"off, and immediately fell over dead!\n"+
"The story has a moral:\n\n"+
"If the foo shits, wear it.\n") ;
	return 1 ;
}