/
lib/banish/
lib/d/coronos/
lib/d/coronos/w/alena/
lib/d/coronos/w/angel/
lib/d/coronos/w/angel/caves/
lib/d/coronos/w/angel/caves/monst/
lib/d/coronos/w/angel/city/chambers/
lib/d/coronos/w/angel/city/monst/
lib/d/coronos/w/angel/city/obj/
lib/d/coronos/w/angel/city/streets/
lib/d/coronos/w/angel/farms/plains/
lib/d/coronos/w/angel/monst/
lib/d/tempus/
lib/d/tempus/w/angel/
lib/d/tempus/w/kingbill/
lib/d/tempus/w/mirak/
lib/d/tempus/w/mirak/monst/
lib/d/tempus/w/mirak/obj/
lib/d/tempus/w/relgar/planes/baat/
lib/d/tempus/w/sarak/
lib/d/tempus/w/serepion/mon/
lib/d/tempus/w/valrejn/
lib/doc/
lib/doc/domains/
lib/doc/efun/
lib/include/fn_specs/
lib/info/
lib/inherit/base/
lib/log/
lib/log/mailbox/
lib/log/main/
lib/news/
lib/obj/party/
lib/objects/componen/
lib/open/
lib/open/party/
lib/open/paste/
lib/open/spells/
lib/open/valrejn/
lib/players/
lib/players/alena/
lib/players/alena/obj/
lib/players/alena/open/
lib/players/alena/private/
lib/players/angel/
lib/players/angel/obj/
lib/players/ash/
lib/players/biggs/
lib/players/biggs/food/
lib/players/biggs/gobkeep/
lib/players/biggs/mnstr/
lib/players/biggs/town/caves/
lib/players/biggs/town/tower/
lib/players/biggs/wpns/
lib/players/calris/
lib/players/deathurg/
lib/players/deathurg/open/
lib/players/deathurg/private/thief/
lib/players/dogberry/
lib/players/dogberry/library/
lib/players/dogberry/open/
lib/players/epsilon/
lib/players/epsilon/private/
lib/players/farewell/
lib/players/hippo/
lib/players/hippo/open/
lib/players/hippo/tools/
lib/players/jimpa/
lib/players/josh/
lib/players/josh/room/
lib/players/josh/room/mage/dungeon/
lib/players/josh/room/mage/dungeon/obj/
lib/players/josh/wep/
lib/players/kingbill/
lib/players/metatron/
lib/players/miette/
lib/players/mirak/
lib/players/mirak/open/
lib/players/parsilan/
lib/players/relgar/
lib/players/relgar/private/
lib/players/sarak/
lib/players/sarak/bugs/
lib/players/sarak/feelings/
lib/players/sarak/magical/
lib/players/sarak/minotaur/island/
lib/players/sarak/open/
lib/players/sarak/private/
lib/players/serepion/
lib/players/serepion/open/
lib/players/serepion/private/
lib/players/spike/
lib/players/spike/open/
lib/players/spike/private/
lib/players/spike/seaworld/
lib/players/valrejn/
lib/players/valrejn/open/
lib/players/valrejn/private/
lib/players/virus/
lib/players/wrath/
lib/players/wrath/arm/
lib/players/wrath/mon/
lib/players/wrath/room/
lib/players/wrath/room/entry/
lib/players/wrath/room/zolgath/
lib/players/wrath/weap/
lib/players/zil/
lib/room/
lib/room/city/arena/
lib/room/city/creator/
lib/room/city/garden/monst/
lib/room/city/library/
lib/room/city/library/open/books/
lib/room/city/shop/
lib/room/death/
lib/room/death/open/
lib/room/island/
lib/room/keeps/
lib/room/registry/
lib/room/ships/crew/
lib/room/ships/open/
lib/room/ships/open/types/bounty/
lib/room/ships/open/types/nebula/
lib/room/ships/open/types/phoenix/
lib/secure/udp_cmd_/
lib/skills/
lib/skills/fighter/
lib/skills/psionici/
lib/skills/thief/
lib/usr/
lib/usr/creators/
lib/usr/no_banis/
lib/usr/players/
::: Monster Documentation :::

Introduction
------------
Monsters form one of the central functions of any mud, and that is for
players to kill. Some Creators can get quite creative and make monsters
that are for the purpose of interaction. With the diversity of this
mudlib the later is preferable, especially by players. 8)

It is important that a creator is able to create a monster that is in line
with other monsters of similar power about the mud. Players then are
able to learn that an orc in one area is about the same ability of other
orcs around other areas; they will learn that a monster of 5th level in
the city is similar to another monster of 5th level.


Table 1: Legal Monster Stats            Level is the best indicator of
----------------------------            the general difficulty of the
Level  HP  WC  AC   MONEY               monster, and also of the area
----------------------------            that the monster is found.
 1     50   5   3    30
 2     55   6   3    60                 WC is the same as the player stat
 3     60   7   4   100                 but is INDEPENDANT of any weapon
 4     70   8   4   150                 that they may wield. If you make a
 5     80   9   5   200                 monster wield a weapon set their WC
 6     95  10   5   250                 AFTER it. 
 7    110  11   6   300
 8    130  12   7   350                 AC is also independent of armour.
 9    150  13   7   400                 Set a monsters AC AFTER you make it
10    175  14   8   700                 wear its armour (if any).
11    200  15   9   900
12    230  16   9  1000                 Money is the general treasure or
13    260  17  10  1200                 coinage given to a player after he
14    300  18  11  1400                 kills it. It is independent of armour
15    350  20  12  1600                 or weapons he may gain from it. Note
16    450  22  13  1800		  that these are absolute maximum values.
17    600  24  14  2000
18    800  26  15  2200
19   1100  27  16  2400
20   1500  30  17  2600
21+  1700  30  17  2800
-----------------------------------------------------------------------------

Monster stats are permitted to be +/- 20% dependant upon the Creators
needs for the area that the monster is placed. Any deviations from this
will be noted when a QC checks the area. Use of the 'stat' function from
the standard 'creator' powers will also inform you what monsters are legal
and what monsters are illegal.

Monsters after 21st level are expected to have extensive spell ability, and
several class abilities. These monsters are the typical ones that have special
armour and weapon types.


Monster Equipment
-----------------

ARMOUR: Any monster is allowed to have armour of the type to wear. Humanoids
often have chainmail, helms, gloves, etc, that perform protective functions.
A monster who wears a ring of protection is protected from fire! Some, however,
don't have need for wearing armour. 

Dragons don't wear armour. Dragon hide as an armour type for it to wear,
and hence for the player to obtain, is NOT valid armour. A player already
has the ability to skin the dragon and turn the hide into armour. A wolf's
pelt is a similar example of what NOT to set armour to. See also 'man armour'.

WEAPONS: Humanoids defend themselves mostly with swords, hammers, maces,
and other weapons. When a monster has one, make sure he wields it. Set the
WC after you do this. As with armour, a dragon, or similar monster, does
NOT have a weapon to wield. Don't make a dragon's claw a weapon for a
dragon to wield. A player can always hack the claw off to use for other
purposes, even sell!


Functions
---------
object set_heart_ob(object ob);
object set_dead_ob(object ob);
object set_init_ob(object ob);
Comment: These fn's allow you to use a heart_beat(), second_life(), and init()
in an alternative object ob.

E.g.  void reset(status arg) {
	::reset(arg);
	if(arg) return;
	
	set_name("giant");
	set_heart_ob(this_object());
	...etc...
      }

      void monster_heart_beat() {
	if(present("angel", environment())) 
	  tell_room(environment(), "Giant says: Hi Angel!\n");
      }

'set_dead_ob' works the same, however, this function is called when a monster
dies. This way you can have a fire elemental burn into nothingness, rather than
leave a corpse. This is good since a living flame ain't gonna leave a body behind;
he ain't got one to start off with 8).

int set_random_pick(int r);
Comment: If there is a gettable object in the room, the monster has r% chance
to pick it up each heart beat. Put this function along with all the other sets,
like set_name, set_level, etc.

status set_move_at_reset(status i);
Comment: set_move_at_reset(1) will cause the monster to move every reset.

status set_aggressive(status a);
Comment: set_aggressive(1) will cause the monster to fight automatically when
a player enters the room.

string set_name(string n);
Comment: This will set living name automatically. 
  
void add_spell_immunity(string type);
status query_spell_immunity(string type);
Comment: Spell immunities allow a player or monster to be immune to certain
types of spell and other attacks. The monster can also be immune to
non enchanted weapons, or weapons of certain types.

E.g. add_spell_immunity("non enchanted weapons"); ...will make a monster
immune to those weapons that DONT have set_enchanted(), however, you
can also add_spell_immunity("slash"); ..etc...

void set_level(int l);  
Comment: This will set the minimum requirements for level l. By setting the
level wc, ac, & hp are also set to an appromimate amount. It is suggested,
however, that you set these things as well.

void set_wander(int chance, int time);
Comment: the monster has chance% to move each heart beat after waiting time
heart beats.

void set_attack_msg(({ string *array }));
Comment: the monster is able to attack with 7 messages from least hard hit
to hardest hit. It makes the monsters attack more realistic if it is not
wielding a weapon. For non-human monsters it is recommended that you set
the attack message. After all, you don't want rabbits and lizards kicking
you!
     E.g. set_attack_msg(({
               "bruises softly",   "with its nose",
               "grazes lightly",   "with its tail",
               ...etc
          }));
  

Undead Monsters
---------------
Monsters can be undead. An undead monster has a few more abilities it
is able to use against a player. To make an undead monster, inherit
UNDEAD, rather than MONSTER at the top of your file.

Since undead monsters have standard protections (like cold, energy 
drain.. etc) you are permitted to make them as low as -30% from 
their original suggested stats.

int set_chill_chance(int chance);
int set_chill_dam(int damage);
Comment: This gives the undead monster %chance to damage to a player 
through a chilling touch. A liches touch is deadly cold.

int set_drain_chance(int chance);
Comment: This gives the undead monster %chance to drain one level from a
player. In this case restoration of that level is possible, but it will
only place the player at the beginning of the level (exp wise) that he lost).
Many drain life energy levels including vampires, liches, wraiths. The %chance
should not be set very high, say, 5%

int set_disease_chance(int chance);
Comment: Mummies and other undead carry dreaded disease which passes to the
player giving him cold-like symptoms at first, but ending up in weighing the
player down, not being able to eat or drink as much while he is under its
effects. The disease is also contagious from monster to monster and player
to player.


Spells & Abilities
------------------
All monsters, as they gain in levels, should be given some form of
spell-like attack. Players find it much more of a challenge if they
have to use their spells for immunities against monsters spells, and
find the rewards from the battle much more rewarding.   

It is EXPECTED that appropriate humanoid monsters have spell-like attacks.


int set_chance(int c);
int set_spell_dam(int d);
  
string set_spell_mess1(string m);
string set_spell_mess2(string m);
string set_spell_type(string t);  /* like fire, lightning, etc */
 
string set_spell_skill_type(string str);

Comment: This is the old way (dated from circa 2.4.5).
This is not used any more but is left for compatibility.
 
This old spell type can also be used for, say, a red dragon's breath
weapon (fire), or a black dragon's acid breath weapon, or even a
minotaur's head butt!


The new spell system allows monsters to utilise the same spells and
skills as players. Firstly, make sure you 'add_class(string class)'
for the appropriate spell types. E.g. 'add_class("cleric");' for a
monster who can cast healing spells on itself, or cast curse spells
on its attacker.


void set_spell(mixed *arr);
Comment: this loads a default spell, in a fashion the same as load_spell().
See spell2.doc. (This replaces above functions).

/* can call player spells */

void load_spells(int c, string *s);
Comment: *s is a list of spells (by there bin name). There is a c% chance per
heart to cast a spell. It is important to note the monster must be of a
level capable of casting the spell. Set the c% to approximately 2% per level
as a rule of thumb (only). 

Eg. load_spells(10,({ "cure light wounds", "magic missile", }));

  
/**************************************************************************/ 

 
status init_command(string cmd);
Comment: commands the monster to 'cmd'. This must be used if a monster has
an item that it is able to either wear or wield. This feature can also be
used for any action you want the monster to take when someone walks into
the room and initialises the monster. 

/***************************************************************************/ 
/***   Load Chats and Attack chats.   ***/  
 
void load_chat(int chance, string *strs);
Comment: there is a chance% chance per heart beart to say a chat string. 
Monsters almost always have something to say, and so this enables the
player to interact with it on some limited level.

Eg. load_chat(10,({ "Bob says: Hi.\n", "Bob peers into the distance.\n", }));


void load_a_chat(int chance, string *strs);
Comment: If the monster is attacking is will use attack chats instead of chats.
  
  
void load_l_chat(int chance, string lang, string *strs);
Comment: same as load_chat(), but spoken in language lang. This is useful
if the monster is an elf, and only people who know elvish will understand
the monster. 
  

void load_monster(mixed name, int lev, string race);
Comment: This is another format for loading monsters. You will have to look at
the function in /inherit/monster.c. to see a complete listing of how to use
this feature, or ask an ELDER.


A complete listing of valid monster stats can be found in /include/fn/stat.h
This file is required to be changed if the ADMIN decide to alter the legal
values and statistics of not only monsters, but also weapons and armour.

					Angel, July 1996.