/
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/
::: Weapons document :::


Introduction
~~~~~~~~~~~~~
Weapons are just one of the many tools utilised by players in the
game. It is very important to understand the usage of them so
that global conformity can be maintained. All over it will mean
a better MUD, and better play for the players who visit.

void set_short(string short)
  When a player sees an item first, in a room, or in a monsters
  inventory this is what he sees. The short of the sword should
  be simply the type of weapon it is, and perhaps a small amount
  of description. EG - set_short("A golden shortsword");


void set_long(string long)
  Simply put, this is what the player sees when he looks
  at the weapon. This should be where the information about
  what it looks like, its condition, etc is. HOWEVER, if the
  weapon is magical in nature do not give away its properties
  or its use in the long. This kind of information goes into
  the set_info(string info). Hints, however, can be given. EG -
  a longsword may have in its blade the word 'orc slayer' or
  'demon bane' or 'dragon slayer' etched into the blade. The
  exact nature of the item should only be granted through
  the use of magics which give access to query_info()

void set_info(string info)
  This contains the special player information within a weapon.
  It should tell the player about magical command words for
  special spells the weapon can cast, or special spells or
  abilities is grants the wielder.

void set_type(string valid_type)
string query_type()
  There are several weapon types, each giving messages according 
  to the type of damage it deals out. If a valid_type is not set 
  then the attack messages given are those of hand to hand     
  combat. 
 
Table 1. Table of valid weapon types. 
-----------------------------------------------------
  Name              Descriptions
 Thrust        Spears, polearms, lance, etc
 Crush         Mace, flail, club
 Slash         Typical swords
 Cleave        Two handed swords, bastard swords
-----------------------------------------------------

string *set_attack_msg(string *msg) 
string *query_attack_msg()
  When you set the type, there are default weapon attack messages. If
  however you wish to customise your own weapon attack messages, use 
  set_attack_msg(({  "missed", "",
                     "smashed", "with a mighty blow",
                     "devastated", "\b, almost severing a limb",
                     verb,   clause,
                     verb2,  clause2,
                     etc...
  }));

  Notes: The backspace char '\b' so the comma ends up in right position.
         All sentences are appended automatically with ".\n"
         The array can be any size with the format,
          attacker +" "+ verb +" "+ victim +" "+ clause +".\n"
         You should still set type of weapon.           

void set_length(int i)
int query_length()
  The length of a weapon is set in inches, and used in         
  conjunction with two-weapon use, and the persons race.
  Those races under 5' (gnomes, dwarves, halfling, etc)
  cannot employ weapons over 60" in length. When a player
  tried to wield two weapons (if he has a skill in 2 weapon
  use) both lengths are added and divided by 6. If the total
  is equal to, or less than the 2 weapon skill, then he is
  allowed to wield both weapons.

Note: I don't think the racial length restriction is used any more?

void set_name(string name)
void set_alias(string othername)
  All players have access to certain weapons depending on the  
  classes that they are currently in. Fighters are allowed to  
  wield anything, thieves only weapons they can wield in one hand
  like short swords, daggers, longswords, and not two handed   
  swords, etc. Clerics can only wield crushing weapons, and mages
  can hardly wield any weapons at all, save the staff and dagger.

  When the name of the weapon is set it should be one of the   
  following (c.f table 2) valid names, and not, for example,   
  given as 'a short sword' or 'a short sword of light and      
  darkness'. The name is simply the name, and nothing else.

  If the name of a weapon is not set properly then it can effect
  many things, the weapons he has trained with, his specialised
  weapons, he may not be able to wield it because of specific
  class restrictions (a thief can't wield a tray because tray is
  just NOT in the list of allowable weapons!), just to name a few.

void set_wc(int wc)
void set_weight(int weight)
void set_value(int amount)

  Making weapons similar in nature is also important. Players like
  to know that when they pick up a longsword it will be very like
  any other longsword they find. The WC given is a guideline, but
  can be modified in either of the following ways -

     1) If the description says it looks old, or rusty or badly 
        treated in some way, the WC can be lowered by as much
        as 5.

     2) If the weapon is magical, then for each 'plus' of the  
        weapon you may add 1 to the WC to a maximum of 5. The  
        only exception is a 'defender' or 'holy avenger' weapons 
        which may be up to +6.

     3) With regards to hit functions you must not make the   
        weapon have a total WC of more than double its original.
	 That is, a wc15 weapon can not return more than an 
	 additional 15 in the hit functions. 

        The only cases for hit functions are against the       
        following monsters -
          a) Certain alignment.
          b) Certain races.
          c) Certain name.
          d) Spell casters
          e) Where certain monsters are immune to a spell type.

  EG - A sword might be a +1 longsword (wc13+1), but be +3 
  against fire immune creatures (wc13+3) and be double damage 
  against fire elementals (wc13+3 x 2) while also giving the player 
  immunity to fire. Such a sword is a total of 16 (wc13+3). It does, 
  however return a total WC of 16x2. The maximum WC allotment is but
  21, so the longsword can be calculated as WC21+, and with a weight
  between 6 and 9, would cost approximately  12000 - 7600. The lighter 
  the weapon is, then obviously, the more expensive the weapon will be.
  
  Your QC may suggest you raise or lower the price depending on how
  usable (in the mud) the weapon's abilities are.

  Magical weapons of this nature (infact any weapon over WC 15) 
  should be RARE and SCARCE, either being UNIQUE, part of a quest, 
  or on a very hard monster (level 15+) who also wields the weapon
  (or at the very least guards the weapon). You should never have 
  more than a few such weapons in all your files and areas.

Table 2. Table of valid weapon names by length and WC
--------------------------------------------------------------
TYPE      NAME              LENGTH           WC       Classes  
--------------------------------------------------------------
SLASH     Sickle              24"             9          
          Dagger              15"             8        M,T 
          Knife               12"             6        M,T
          Scimitar            36"            10        T
          Sword,  
               Broad          42"            12        T
               Long           45"            13        T
               Short          24"            10        T

          Falchion            38"            12        T
          Khopesh             38"            11        T
          Rapier              48"            12        T 
          Sabre               45"            10        T
          Cutlass             36"            11        T

PIERCE    Halberd             60"            13
          Lance               120"-168"      10
          Ranseur             96"            11
          Spear               60"-156"       10
          Trident             48"-96"        10
          Javelin             60"-160"       10

THRUST    Dirk                                         M,T


CRUSH     Club                36"             9        C
          Mace                36"            12        C
          Flail               48"            10        C
          Hammer              24"            11        C
          War Hammer
          Staff               72"-96"        12        M,C 
          Rod                 40"-75"        10        M
          Sap                  6"             8        C,T
          
             

CLEAVE    Battle Axe          48"            12         
          Hand Axe            24"             8
          Sword,              
               Two Handed     72"            14
               Bastard        54"            13
          Morning Star        24"             9
          Claymore            72"            14

CUSTOMISE (yourself with set_attack_msg()) 
          Blowgun & darts*  1000"             5        M,T
          Sling & stones*   1000"             7        M,C
          Garrot            1000"             8        T
          Lasso              180"             ?        C
          Bow & Arrows*     1000"            10
           

*Range weapons- very limited usage may be allow, use is limited
                amount of ammunition. Ammunition can NOT be bought in
                shops. (Thus it must sell destruct).
*1000"        - set the length to a ridiculous number, 1000, to indicate
                that the weapon requires 2 hands to wield, and thus the
                player cannot use two weapons.

Classes       - Fighters can use any weapons. Mages are restricted to
                weapons name has been set to those marked with M, similarly,
                T for Thief, and C for Cleric.
-------------------------------------------------------------

Note: When setting the name it is to be in lower case, and in the
example of a space in the name do the following -
'set_name("bastardsword")' or 'set_name("battleaxe")'


Table 3. Weapon class of weapon by weight and value.
------------------------------------------------------
WC  1    2      3    4     5      6     7    8     9
------------------------------------------------------
 3  20   16    12   10     -     -     -     -     -
 4  40   32    25   20     -     -     -     -     -
 5  ?    80    64   50    40     -     -     -     -
 6  ?   140   110   90    70     -     -     -     -
 7  ?   200   160  130   100     -     -     -     -
 8  ?   350   280  275   180     -     -     -     -
 9       ?    500  400   320    260    -     -     -
10       ?    800  650   520    420    -     -     -
11       ?   1200  960   770    620    -     -     -
12       ?   1700 1300  1100    870    -     -     -
13            ?   2300  1800   1500  1180    -     -
14            ?   3100  2500   2000  1600    -     -
15            ?   4000  3200   2600  2100    -     -
16            ?   5000  4000   3300  2600    -     -
17                  ?   6200   4400  3800  3000    - 
18                  ?   7300   5900  5000  4100    -
19                  ?   8500   7000  6300  5300    -
20                  ?  10000   9000  7700  6600    -
21+                      ?    12000  9600  8200  6700
-------------------------------------------------------
NOTES -  ?          Possible ONLY with permission from QC.
         -          Not possible WC for this weight.

void set_modified(status flag)
  If you change the weapon from the way it was originally
  coded then you must set this flag. This includes sharpening
  or even blessing the weapon, increasing or decreasing the WC
  weight, or value by any amount.

void set_enchanted(status flag)
  If the weapon has a higher WC value than that suggested in
  the table then it is obviously of fine quality, or magical
  in some way. If this is true, or the weapon has some other
  ability that it can use, or grant to the wielder then this
  flag should be set.

void set_sell_destruct(stauts flag)
status query_sell_destruct()
  All magical items, quest items, and the like should be
  destructed when sold at the shop. If you wish a certain
  item to do this, then this flag should be set. Note that
  in some cases such items default to return true when 
  sell_destruct is queried.

set_hit_func(this_object())
int weapon_hit(target) { function(); }
  This enables different things to happen while the players
  is in combat with this weapon. An increase in the damage of
  the weapon as given in the example above can be coded here.

Note:
  Calling hit_player() in weapon_hit() { } function in the weapon 
  is ILLEGAL!! It has a potential of stopping the players heart beat.
  Any weapons which have it are to be removed. Ask your QC how to 
  do direct damage to a player in the hit routine.



                              Angel, August 1993. Revised July 1996.