The natural attack and armour fields allow you to set the NPC to do damage like a certain type of weapons and to defend like a certain type of armour respectively. Let's say you had a metal cougar; it would have an attack type of claw and an armour type of plate while a normal dog would have an armour type of leather and an attack type of bite. The 'NATURAL_DEF' macro is what allows you to set these fields. This macro is defined in wmacros.h and looks like this.
#define NATURAL_DEF(weapon_category, armour_category) \ armour armour_category \ attack weapon_category
The word natural can sometimes be a little confusing since you can set any of the weapons types you like on the NPC. It doesn't exactly make sense to have a dog that attacks as if it uses a long sword but if you wish it you can do it. The following is a short list of just the natural weapon types but you can find a full list in the appendix called weapon definitions in values.h or in the values.h of your mud just in case you have added some weapon types.
#define WPN_FIST 34 #define WPN_KICK 35 #define WPN_BITE 36 #define WPN_STING 37 #define WPN_CLAW 38 #define WPN_CRUSH 39
Again you don't have to use leather for dogs as we have already mentioned with our metal cat idea you could make a cloth dragon if you really want but it's up to you to keep some sanity on your VME. The following is the list of armour types that can be set. You will see that the list is exactly the same as the list you will find later when making armour.
#define ARM_CLOTHES 0 /*Same as a Human in jeans and a T-shirt*/ #define ARM_LEATHER 1 /* A soft flexible leather base armour */ #define ARM_HLEATHER 2 /* A hard inflexible leather base armour */ #define ARM_CHAIN 3 /* A flexible armour composed of interlocking rings */ #define ARM_PLATE 4 /* An inflexible plate armour. */
Now that you have the defines to work with we will return to our metal cat and normal dog. The definitions for them would look something like this.
You should know that the weight of the monster determines the maximum amount of damage it can give when using a natural attack. The weight is categorized as follows:
By default monsters are medium. So make sure you take this into account when you are creating your NPC.
There comes a time when you may want to make your NPC super naturally powerful. It is for those times that the offense and defense fields are available for you to set. Normally they default to 0 but you can set them from 0 to 5000. The higher you set the offense number the harder you will hit people you a re in combat with. The higher you set the defense the harder it will be for people to hit your NPC. The following macro allows you to set both the offense and defense.
Using this macro is rather easy you just put the value you want for each and you're all done
All abilities are in the range [1..200]. Players usually have a maximum of 150, modified by magic... 200 is considered divine. When creating a monster you can not directly specify the size of the abilities, instead you specify a percentage distribution of points. The amount of points are then distributed by the computer according to the specified level. The 'MSET_ABILITY' macro is available for this purpose, and is defined as:
#define MSET_ABILITY(str,dex,con,hpp,bra,cha,mag,div) \ ability[ABIL_STR] str \ ability[ABIL_DEX] dex \ ability[ABIL_CON] con \ ability[ABIL_HP] hpp \ ability[ABIL_BRA] bra \ ability[ABIL_MAG] mag \ ability[ABIL_DIV] div \ ability[ABIL_CHA] cha
Note the sum of the ability values must be 100%. This is therefore an example of an ability distribution:
The amount of points distributed depends directly upon the level of the monster and the percentage. If the percentage is too high and the level is also set high some ability points may be lost since a NPC gets all abilities over 255 cut off. For example a level 199 monster with an ability percentage a bit above 20% will make an ability above the 255 points maximum. In the current combat system in the VME 2.0 it is not necessary to spend points on both 'mag' and 'div' on the NPC since only one or the other is ever used depending on which is higher.
NPCs know about weapons and spells but not at the same detailed level as the player. For NPCs the spell and weapon group are used. Thus the axe/hammer category defines all defense and all attack for all kinds of axes and hammers, whereas the player would have to train individually in each axe and hammer type. The same is true for spells. Thus if a monster has 25 points in the weapon sword category it will fight (and defend) with all sword-like weapons at skill 25. When you define weapon and spell skills (monsters have no skill skills) you also define these as percentages, and the program automatically distributes the points. Use the pre-defined macros:
#define MSET_WEAPON(axe_ham, sword, club_mace, pole, unarmed, special) \ weapon[WPN_AXE_HAM] axe_ham \ weapon[WPN_SWORD] sword \ weapon[WPN_CLUB_MACE] club_mace \ weapon[WPN_POLEARM] pole \ weapon[WPN_UNARMED] unarmed \ weapon[WPN_SPECIAL] special
Table 6. MSET_WEAPON arguments
|axe_ham||any hammer or axe|
|sword||any sword like weapon, including dagger and rapier, etc.|
|club_mace||any club or mace like weapon, flails, morning star, etc.|
|polearm||any spear or pole like weapon: spear, trident, sickle, scythe etc.|
|unarmed||Is any bite, claw, sting or other natural attack.|
|special||any very peculiar weapon, currently only whip.|
#define MSET_SPELL(div, pro, det, sum, cre, min, hea, col, cel, int, ext) \ spell[SPL_DIVINE] div \ spell[SPL_PROTECTION] pro \ spell[SPL_DETECTION] det \ spell[SPL_SUMMONING] sum \ spell[SPL_CREATION] cre \ spell[SPL_MIND] min \ spell[SPL_HEAT] hea \ spell[SPL_COLD] col \ spell[SPL_CELL] cel \ spell[SPL_INTERNAL] int \ spell[SPL_EXTERNAL] ext
Table 7. MSET_SPELL arguments
|div||Covers all divine sphere spell.|
|pro||Covers all protection sphere spells.|
|det||Covers all detection sphere spells.|
|sum||Covers all summoning spells.|
|Cre||Covers all creation spells.|
|min||Covers all mind spells.|
|hea||Covers all heat spells (fireball, etc.)|
|col||Covers all cold spells (frostball, etc.)|
|cel||Covers all cell (electricity) spells (lightning bolt, etc.)|
|int||Covers all internal (poison) spells (toxicate, etc.)|
|ext||Covers all external (acid) spells (acid ball etc).|
If you're not sure what your weapon or spell is categorized as you can look in the weapons.def or the spells.def for that you are using for your VME server.
The sum of all spell and weapon skills must be 100%. For example, the following would be a legal setting of weapons and spells.
// 75% Total, Club/Mace is primary MSET_WEAPON(10,10,20,5,15,5) // 25% Total, Fire is primary MSET_SPELL(8,0,0,3,0,3,2,3,3,3,3)
Remember that the groups define both attack and defense. So if you make an orc that has 0% in the flail group it can only use its dexterity to defend itself. Likewise with spell groups. For this reason the groups are both "resistance" as well as attack groups.
The file composed.h contains many standard monsters. It is a good idea to study these definitions, as they form the basis of many different monsters. Note that the definitions by no means are perfect, but we are hoping to make a more or less complete monster compendium. If you create certain (general) monsters, please design it as a macro so it can be incorporated in the file. The more monsters created by using these macros the easier it will be for your builders to create NPCs. If you think you have a really all inclusive Composed.h and want to share it with the rest of the VME servers running out there on the internet. Feel free to submit it to the VME staff and we will put it in the contribution directories on our release site.
For more information on how to use the composed.h when building your NPC see the Section called Building your first NPC.