diff urogue/rogue.h @ 256:c495a4f288c6

Import UltraRogue from the Roguelike Restoration Project (r1490)
author John "Elwin" Edwards
date Tue, 31 Jan 2017 19:56:04 -0500
parents
children c4b12d2d1dcd
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/urogue/rogue.h	Tue Jan 31 19:56:04 2017 -0500
@@ -0,0 +1,1815 @@
+/*
+    rogue.h - A very large header file
+ 
+    UltraRogue: The Ultimate Adventure in the Dungeons of Doom
+    Copyright (C) 1984, 1991, 1997 Herb Chong
+    All rights reserved.
+
+    Based on "Advanced Rogue"
+    Copyright (C) 1984, 1985 Michael Morgan, Ken Dalka
+    All rights reserved.
+
+    Based on "Rogue: Exploring the Dungeons of Doom"
+    Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman
+    All rights reserved.
+
+    See the file LICENSE.TXT for full copyright and licensing information.
+*/
+
+#include <signal.h>
+#include <stdio.h>
+#include <stdarg.h>
+
+#ifndef LINT
+#include <curses.h>
+#else
+#include "lint-curses.h"
+#endif
+
+#define SHOTPENALTY 2       /* In line of sight of missile */
+#define DOORPENALTY 1       /* Moving out of current room */
+
+/* Maximum number of different things */
+#define MAXROOMS    9   /* max rooms per normal level */
+#define MAXDOORS    4   /* max doors to a room */
+#define MAXOBJ      6   /* max number of items to find on a level */
+#define MAXTREAS    30  /* max number monsters/treasure in treasure room */
+#define MAXTRAPS    80  /* max traps per level */
+#define MAXTRPTRY   16  /* max attempts/level allowed for setting traps */
+#define MAXPURCH    8   /* max purchases per trading post visit */
+#define NUMMONST    (sizeof(monsters) / sizeof(struct monster) - 2)
+#define NUMSUMMON   48  /* number of creatures that can summon hero */
+#define NLEVMONS    8   /* number of new monsters per level */
+#define LINELEN     512 /* characters in a buffer */
+
+/* The character types */
+#define C_FIGHTER    0
+#define C_PALADIN    1
+#define C_RANGER     2
+#define C_CLERIC     3
+#define C_DRUID      4
+#define C_MAGICIAN   5
+#define C_ILLUSION   6
+#define C_THIEF      7
+#define C_ASSASIN    8
+#define C_NINJA      9
+#define C_MONSTER   10
+#define C_NOTSET    11  /* Must not be a value from above */
+
+/* used for ring stuff */
+#define LEFT_1  0
+#define LEFT_2  1
+#define LEFT_3  2
+#define LEFT_4  3
+#define LEFT_5  4
+#define RIGHT_1 5
+#define RIGHT_2 6
+#define RIGHT_3 7
+#define RIGHT_4 8
+#define RIGHT_5 9
+
+/* All the fun defines */
+#define next(ptr) ((ptr)?(ptr->l_next):NULL)
+#define prev(ptr) ((ptr)?(ptr->l_prev):NULL)
+#define identifier(ptr) (ptr->o_ident)
+#define winat(y,x) ( (char) \
+ ((mvwinch(mw,y,x) == ' ') ? mvwinch(stdscr,y,x) : winch(mw))  )
+
+#define debug if (wizard && wiz_verbose) msg
+#define verify(b) if (b) verify_function(__FILE__, __LINE__);
+#define DISTANCE(c1, c2)  ( ((c2).x - (c1).x)*((c2).x - (c1).x) + \
+                            ((c2).y - (c1).y)*((c2).y - (c1).y) )
+
+#define xyDISTANCE(y1, x1, y2, x2) ((x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1))
+#define OBJPTR(what)    ((*what).data.obj)
+#define THINGPTR(what)  ((*what).data.th)
+#define ce(a, b) ((a).x == (b).x && (a).y == (b).y)
+#define hero player.t_pos
+#define pstats player.t_stats
+#define max_stats player.maxstats
+#define pack player.t_pack
+#define attach(a, b) _attach(&a, b)
+#define detach(a, b) _detach(&a, b)
+#define free_list(a) _free_list(&a)
+#ifndef max
+#define max(a, b) ((a) > (b) ? (a) : (b))
+#define min(a, b) ((a) < (b) ? (a) : (b))
+#endif
+#define GOLDCALC (rnd(50 + 30 * level) + 2)
+#define o_charges o_ac
+#define mi_wght mi_worth
+
+/* Things that appear on the screens */
+#define WALL        ' '
+#define PASSAGE     '#'
+#define DOOR        '+'
+#define FLOOR       '.'
+#define VPLAYER     '@'
+#define IPLAYER     '_'
+#define POST        '^'
+#define LAIR        '('
+#define RUSTTRAP    ';'
+#define TRAPDOOR    '>'
+#define ARROWTRAP   '{'
+#define SLEEPTRAP   '$'
+#define BEARTRAP    '}'
+#define TELTRAP     '~'
+#define DARTTRAP    '`'
+#define POOL        '"'
+#define MAZETRAP    '\\'
+#define FIRETRAP    '<'
+#define POISONTRAP  '['
+#define ARTIFACT    ','
+#define SECRETDOOR  '&'
+#define STAIRS      '%'
+#define GOLD        '*'
+#define POTION      '!'
+#define SCROLL      '?'
+#define MAGIC       '$'
+#define BMAGIC      '>' /* Blessed magic */
+#define CMAGIC      '<' /* Cursed  magic */
+#define FOOD        ':'
+#define WEAPON      ')'
+#define ARMOR       ']'
+#define RING        '='
+#define STICK       '/'
+
+/* Various constants */
+#define HOLDTIME      2
+#define BEARTIME      3
+#define SLEEPTIME     4
+#define FREEZETIME    6
+#define STINKTIME     6
+#define CHILLTIME     (roll(2, 4))
+#define STONETIME     8
+#define SICKTIME     10
+#define CLRDURATION  15
+#define HUHDURATION  20
+#define SMELLTIME    20
+#define HEROTIME     20
+#define HEALTIME     30
+#define WANDERTIME   140
+#define GONETIME    200
+#define PHASEDURATION   300
+#define SEEDURATION 850
+
+#define STPOS         0
+#define BEFORE        1
+#define AFTER         2
+
+#define MORETIME     150
+#define HUNGERTIME  1300
+#define STOMACHSIZE 2000
+
+#define BOLT_LENGTH 10
+#define MARKLEN     20
+
+#define LINEFEED    10
+#define CARRIAGE_RETURN 13
+#define ESCAPE      27
+
+/* Adjustments for save against things */
+#define VS_POISON       0
+#define VS_PARALYZATION     0
+#define VS_DEATH        0
+#define VS_PETRIFICATION    1
+#define VS_WAND         2
+#define VS_BREATH       3
+#define VS_MAGIC        4
+
+/*attributes for treasures in dungeon */
+#define ISNORMAL    0x00000000UL /* Neither blessed nor cursed */
+#define ISCURSED    0x00000001UL /* cursed */
+#define ISKNOW      0x00000002UL /* has been identified */
+#define ISPOST      0x00000004UL /* object is in a trading post */
+#define ISMETAL     0x00000008UL /* is metallic */
+#define ISPROT      0x00000010UL /* object is protected */
+#define ISBLESSED   0x00000020UL /* blessed */
+#define ISZAPPED    0x00000040UL /* weapon has been charged by dragon */
+#define ISVORPED    0x00000080UL /* vorpalized weapon */
+#define ISSILVER    0x00000100UL /* silver weapon */
+#define ISPOISON    0x00000200UL /* poisoned weapon */
+#define CANRETURN   0x00000400UL /* weapon returns if misses */
+#define ISOWNED     0x00000800UL /* weapon returns always */
+#define ISLOST      0x00001000UL /* weapon always disappears */
+#define ISMISL      0x00002000UL /* missile weapon */
+#define ISMANY      0x00004000UL /* show up in a group */
+#define CANBURN     0x00008000UL /* burns monsters */
+#define ISSHARP     0x00010000UL /* cutting edge */
+#define ISTWOH      0x00020000UL /* needs two hands to wield */
+#define ISLITTLE    0x00040000UL /* small weapon */
+#define ISLAUNCHER  0x00080000UL /* used to throw other weapons */
+#define TYP_MAGIC_MASK  0x0f000000UL
+#define POT_MAGIC   0x01000000UL
+#define SCR_MAGIC   0x02000000UL
+#define ZAP_MAGIC   0x04000000UL
+#define SP_WIZARD   0x10000000UL /* only wizards */
+#define SP_ILLUSION 0x20000000UL /* only illusionists */
+#define SP_CLERIC   0x40000000UL /* only clerics/paladins */
+#define SP_DRUID    0x80000000UL /* only druids/rangers */
+#define SP_MAGIC    0x30000000UL /* wizard or illusionist */
+#define SP_PRAYER   0xc0000000UL /* cleric or druid */
+#define SP_ALL      0xf0000000UL /* all special classes */
+#define _TWO_       ISBLESSED   /* more powerful spell */
+
+/* Various flag bits */
+#define ISDARK      0x00000001UL
+#define ISGONE      0x00000002UL
+#define ISTREAS     0x00000004UL
+#define ISFOUND     0x00000008UL
+#define ISTHIEFSET  0x00000010UL
+#define WASDARK     0x00000020UL
+
+/* struct thing t_flags (might include player) for monster attributes */
+#define ISBLIND     0x00000001UL
+#define ISINWALL    0x00000002UL
+#define ISRUN       0x00000004UL
+#define ISFLEE      0x00000008UL
+#define ISINVIS     0x00000010UL
+#define ISMEAN      0x00000020UL
+#define ISGREED     0x00000040UL
+#define CANSHOOT    0x00000080UL
+#define ISHELD      0x00000100UL
+#define ISHUH       0x00000200UL
+#define ISREGEN     0x00000400UL
+#define CANHUH      0x00000800UL
+#define CANSEE      0x00001000UL
+#define HASFIRE     0x00002000UL
+#define ISSLOW      0x00004000UL
+#define ISHASTE     0x00008000UL
+#define ISCLEAR     0x00010000UL
+#define CANINWALL   0x00020000UL
+#define ISDISGUISE  0x00040000UL
+#define CANBLINK    0x00080000UL
+#define CANSNORE    0x00100000UL
+#define HALFDAMAGE  0x00200000UL
+#define CANSUCK     0x00400000UL
+#define CANRUST     0x00800000UL
+#define CANPOISON   0x01000000UL
+#define CANDRAIN    0x02000000UL
+#define ISUNIQUE    0x04000000UL
+#define STEALGOLD   0x08000000UL
+#define STEALMAGIC  0x10000001UL
+#define CANDISEASE  0x10000002UL
+#define HASDISEASE  0x10000004UL
+#define CANSUFFOCATE    0x10000008UL
+#define DIDSUFFOCATE    0x10000010UL
+#define BOLTDIVIDE  0x10000020UL
+#define BLOWDIVIDE  0x10000040UL
+#define NOCOLD      0x10000080UL
+#define TOUCHFEAR   0x10000100UL
+#define BMAGICHIT   0x10000200UL
+#define NOFIRE      0x10000400UL
+#define NOBOLT      0x10000800UL
+#define CARRYGOLD   0x10001000UL
+#define CANITCH     0x10002000UL
+#define HASITCH     0x10004000UL
+#define DIDDRAIN    0x10008000UL
+#define WASTURNED   0x10010000UL
+#define CANSELL     0x10020000UL
+#define CANBLIND    0x10040000UL
+#define CANBBURN    0x10080000UL
+#define ISCHARMED   0x10100000UL
+#define CANSPEAK    0x10200000UL
+#define CANFLY      0x10400000UL
+#define ISFRIENDLY  0x10800000UL
+#define CANHEAR     0x11000000UL
+#define ISDEAF      0x12000000UL
+#define CANSCENT    0x14000000UL
+#define ISUNSMELL   0x18000000UL
+#define WILLRUST    0x20000001UL
+#define WILLROT     0x20000002UL
+#define SUPEREAT    0x20000004UL
+#define PERMBLIND   0x20000008UL
+#define MAGICHIT    0x20000010UL
+#define CANINFEST   0x20000020UL
+#define HASINFEST   0x20000040UL
+#define NOMOVE      0x20000080UL
+#define CANSHRIEK   0x20000100UL
+#define CANDRAW     0x20000200UL
+#define CANSMELL    0x20000400UL
+#define CANPARALYZE 0x20000800UL
+#define CANROT      0x20001000UL
+#define ISSCAVENGE  0x20002000UL
+#define DOROT       0x20004000UL
+#define CANSTINK    0x20008000UL
+#define HASSTINK    0x20010000UL
+#define ISSHADOW    0x20020000UL
+#define CANCHILL    0x20040000UL
+#define CANHUG      0x20080000UL
+#define CANSURPRISE 0x20100000UL
+#define CANFRIGHTEN 0x20200000UL
+#define CANSUMMON   0x20400000UL
+#define TOUCHSTONE  0x20800000UL
+#define LOOKSTONE   0x21000000UL
+#define CANHOLD     0x22000000UL
+#define DIDHOLD     0x24000000UL
+#define DOUBLEDRAIN 0x28000000UL
+#define ISUNDEAD    0x30000001UL
+#define BLESSMAP    0x30000002UL
+#define BLESSGOLD   0x30000004UL
+#define BLESSMONS   0x30000008UL
+#define BLESSMAGIC  0x30000010UL
+#define BLESSFOOD   0x30000020UL
+#define CANBRANDOM  0x30000040UL /* Types of breath */
+#define CANBACID    0x30000080UL
+#define CANBFIRE    0x30000100UL
+#define CANBBOLT    0x30000200UL
+#define CANBGAS     0x30000400UL
+#define CANBICE     0x30000800UL
+#define CANBPGAS    0x30001000UL /* Paralyze gas */
+#define CANBSGAS    0x30002000UL /* Sleeping gas */
+#define CANBSLGAS   0x30004000UL /* Slow gas */
+#define CANBFGAS    0x30008000UL /* Fear gas */
+#define CANBREATHE  0x3000ffc0UL /* Can it breathe at all? */
+#define STUMBLER    0x30010000UL
+#define POWEREAT    0x30020000UL
+#define ISELECTRIC  0x30040000UL
+#define HASOXYGEN   0x30080000UL /* Doesn't need to breath air */
+#define POWERDEXT   0x30100000UL
+#define POWERSTR    0x30200000UL
+#define POWERWISDOM 0x30400000UL
+#define POWERINTEL  0x30800000UL
+#define POWERCONST  0x31000000UL
+#define SUPERHERO   0x32000000UL
+#define ISUNHERO    0x34000000UL
+#define CANCAST     0x38000000UL
+#define CANTRAMPLE  0x40000001UL
+#define CANSWIM     0x40000002UL
+#define LOOKSLOW    0x40000004UL
+#define CANWIELD    0x40000008UL
+#define CANDARKEN   0x40000010UL
+#define ISFAST      0x40000020UL
+#define CANBARGAIN  0x40000040UL
+#define NOMETAL     0x40000080UL
+#define CANSPORE    0x40000100UL
+#define NOSHARP     0x40000200UL
+#define DRAINWISDOM 0x40000400UL
+#define DRAINBRAIN  0x40000800UL
+#define ISLARGE     0x40001000UL
+#define ISSMALL     0x40002000UL
+#define CANSTAB     0x40004000UL
+#define ISFLOCK     0x40008000UL
+#define ISSWARM     0x40010000UL
+#define CANSTICK    0x40020000UL
+#define CANTANGLE   0x40040000UL
+#define DRAINMAGIC  0x40080000UL
+#define SHOOTNEEDLE 0x40100000UL
+#define CANZAP      0x40200000UL
+#define HASARMOR    0x40400000UL
+#define CANTELEPORT 0x40800000UL
+#define ISBERSERK   0x41000000UL
+#define ISFAMILIAR  0x42000000UL
+#define HASFAMILIAR 0x44000000UL
+#define SUMMONING   0x48000000UL
+#define CANREFLECT  0x50000001UL
+#define LOWFRIENDLY 0x50000002UL
+#define MEDFRIENDLY 0x50000004UL
+#define HIGHFRIENDLY    0x50000008UL
+#define MAGICATTRACT    0x50000010UL
+#define ISGOD       0x50000020UL
+#define CANLIGHT    0x50000040UL
+#define HASSHIELD   0x50000080UL
+#define HASMSHIELD  0x50000100UL
+#define LOWCAST     0x50000200UL
+#define MEDCAST     0x50000400UL
+#define HIGHCAST    0x50000800UL
+#define WASSUMMONED 0x50001000UL
+#define HASSUMMONED 0x50002000UL
+#define CANTRUESEE  0x50004000UL
+
+
+#define FLAGSHIFT       28UL
+#define FLAGINDEX       0x0000000fL
+#define FLAGMASK        0x0fffffffL
+
+/* on - check if a monster flag is on */
+#define on(th, flag) \
+        ((th).t_flags[(flag >> FLAGSHIFT) & FLAGINDEX] & (flag & FLAGMASK))
+
+/* off - check if a monster flag is off */
+#define off(th, flag) \
+        (!((th).t_flags[(flag >> FLAGSHIFT) & FLAGINDEX] & (flag & FLAGMASK)))
+
+/* turn_on - turn on a monster flag */
+#define turn_on(th, flag) \
+        ( (th).t_flags[(flag >> FLAGSHIFT) & FLAGINDEX] |= (flag & FLAGMASK))
+
+/* turn_off - turn off a monster flag */
+#define turn_off(th, flag) \
+        ( (th).t_flags[(flag >> FLAGSHIFT) & FLAGINDEX] &= ~(flag & FLAGMASK))
+
+#define SAME_POS(c1,c2) ( (c1.x == c2.x) && (c1.y == c2.y) )
+
+/* types of things */
+/* All magic spells duplicate a potion, scroll, or stick effect */
+
+#define TYP_POTION  0
+#define TYP_SCROLL  1
+#define TYP_RING    2
+#define TYP_STICK   3
+#define MAXMAGICTYPES   4   /* max number of items in magic class */
+#define MAXMAGICITEMS   50  /* max number of items in magic class */
+#define TYP_FOOD    4
+#define TYP_WEAPON  5
+#define TYP_ARMOR   6
+#define TYP_ARTIFACT    7
+#define NUMTHINGS   (sizeof(things) / sizeof(struct magic_item))
+
+/* Artifact types */
+#define TR_PURSE    0
+#define TR_PHIAL    1
+#define TR_AMULET   2
+#define TR_PALANTIR 3
+#define TR_CROWN    4
+#define TR_SCEPTRE  5
+#define TR_SILMARIL 6
+#define TR_WAND     7
+#define MAXARTIFACT (sizeof(arts) / sizeof(struct init_artifact))
+
+/* Artifact flags */
+#define ISUSED      01
+#define ISACTIVE    02
+
+/* Potion types - add also to magic_item.c and potions.c */
+#define P_CLEAR     0
+#define P_GAINABIL  1
+#define P_SEEINVIS  2
+#define P_HEALING   3
+#define P_MONSTDET  4
+#define P_TREASDET  5
+#define P_RAISELEVEL    6
+#define P_HASTE     7
+#define P_RESTORE   8
+#define P_PHASE     9
+#define P_INVIS     10
+#define P_SMELL     11
+#define P_HEAR      12
+#define P_SHERO     13
+#define P_DISGUISE  14
+#define P_FIRERESIST    15
+#define P_COLDRESIST    16
+#define P_HASOXYGEN 17
+#define P_LEVITATION    18
+#define P_REGENERATE    19
+#define P_SHIELD    20
+#define P_TRUESEE   21
+#define MAXPOTIONS  22
+
+/* Scroll types - add also to magic_item.c and scrolls.c */
+#define S_CONFUSE   0
+#define S_MAP       1
+#define S_LIGHT     2
+#define S_HOLD      3
+#define S_SLEEP     4
+#define S_ENCHANT   5
+#define S_IDENTIFY  6
+#define S_SCARE     7
+#define S_GFIND     8
+#define S_SELFTELEP 9
+#define S_CREATE    10
+#define S_REMOVECURSE   11
+#define S_PETRIFY   12
+#define S_GENOCIDE  13
+#define S_CURING    14
+#define S_MAKEITEMEM    15
+#define S_PROTECT   16
+#define S_NOTHING   17
+#define S_SILVER    18
+#define S_OWNERSHIP 19
+#define S_FOODDET   20
+#define S_ELECTRIFY 21
+#define S_CHARM     22
+#define S_SUMMON    23
+#define S_REFLECT   24
+#define S_SUMFAMILIAR   25
+#define S_FEAR      26
+#define S_MSHIELD   27
+#define MAXSCROLLS  28
+
+/* Rod/Wand/Staff types - add also to magic_item.c and sticks.c */
+#define WS_LIGHT    0
+#define WS_HIT      1
+#define WS_ELECT    2
+#define WS_FIRE     3
+#define WS_COLD     4
+#define WS_POLYMORPH    5
+#define WS_MISSILE  6
+#define WS_SLOW_M   7
+#define WS_DRAIN    8
+#define WS_CHARGE   9
+#define WS_MONSTELEP    10
+#define WS_CANCEL   11
+#define WS_CONFMON  12
+#define WS_DISINTEGRATE 13
+#define WS_ANTIMATTER   14
+#define WS_PARALYZE 15
+#define WS_XENOHEALING  16
+#define WS_NOTHING  17
+#define WS_INVIS    18
+#define WS_BLAST    19
+#define WS_WEB      20
+#define WS_KNOCK    21
+#define WS_CLOSE    22
+#define MAXSTICKS   23
+
+/* Ring types */
+#define R_PROTECT   0
+#define R_ADDSTR    1
+#define R_SUSABILITY    2
+#define R_SEARCH    3
+#define R_SEEINVIS  4
+#define R_ALERT     5
+#define R_AGGR      6
+#define R_ADDHIT    7
+#define R_ADDDAM    8
+#define R_REGEN     9
+#define R_DIGEST    10
+#define R_TELEPORT  11
+#define R_STEALTH   12
+#define R_ADDINTEL  13
+#define R_ADDWISDOM 14
+#define R_HEALTH    15
+#define R_VREGEN    16
+#define R_LIGHT     17
+#define R_DELUSION  18
+#define R_CARRYING  19
+#define R_ADORNMENT 20
+#define R_LEVITATION    21
+#define R_FIRERESIST    22
+#define R_COLDRESIST    23
+#define R_ELECTRESIST   24
+#define R_RESURRECT 25
+#define R_BREATHE   26
+#define R_FREEDOM   27
+#define R_WIZARD    28
+#define R_PIETY     29
+#define R_TELCONTROL    30
+#define R_TRUESEE   31
+#define MAXRINGS    32
+
+/* Weapon types */
+#define SLING       0   /* sling */
+#define ROCK        1   /* rocks */
+#define BULLET      2   /* sling bullet */
+#define BOW     3   /* short bow */
+#define ARROW       4   /* arrow */
+#define SILVERARROW 5   /* silver arrows */
+#define FLAMEARROW  6   /* flaming arrows */
+#define FOOTBOW     7   /* footbow */
+#define FBBOLT      8   /* footbow bolt */
+#define CROSSBOW    9   /* crossbow */
+#define BOLT        10  /* crossbow bolt */
+
+#define DART        11  /* darts */
+#define DAGGER      12  /* dagger */
+#define HAMMER      13  /* hammer */
+#define LEUKU       14  /* leuku */
+#define JAVELIN     15  /* javelin */
+#define TOMAHAWK    16  /* tomahawk */
+#define MACHETE     17  /* machete */
+#define THROW_AXE   18  /* throwing axe */
+#define SHORT_SPEAR 19  /* spear */
+#define BOOMERANG   20  /* boomerangs */
+#define LONG_SPEAR  21  /* spear */
+#define SHURIKEN    22  /* shurikens */
+#define MOLOTOV     23  /* molotov cocktails */
+#define GRENADE     24  /* grenade for explosions */
+#define CLUB        25  /* club */
+#define PITCHFORK   26  /* pitchfork */
+#define SHORT_SWORD 27  /* short sword */
+#define HAND_AXE    28  /* hand axe */
+#define PARTISAN    29  /* partisan */
+#define GRAIN_FLAIL 30  /* grain flail */
+#define SINGLESTICK 31  /* singlestick */
+#define RAPIER      32  /* rapier */
+#define SICKLE      33  /* sickle */
+#define HATCHET     34  /* hatchet */
+#define SCIMITAR    35  /* scimitar */
+#define LIGHT_MACE  36  /* mace */
+#define MORNINGSTAR 37  /* morning star */
+#define BROAD_SWORD 38  /* broad sword */
+#define MINER_PICK  39  /* miner's pick */
+#define GUISARME    40  /* guisarme */
+#define WAR_FLAIL   41  /* war flail */
+#define CRYSKNIFE   42  /* crysknife */
+#define BATTLE_AXE  43  /* battle axe */
+#define CUTLASS     44  /* cutlass sword */
+#define GLAIVE      45  /* glaive */
+#define PERTUSKA    46  /* pertuska */
+#define LONG_SWORD  47  /* long sword */
+#define LANCE       48  /* lance */
+#define RANSEUR     49  /* ranseur */
+#define SABRE       50  /* sabre */
+#define SPETUM      51  /* spetum */
+#define HALBERD     52  /* halberd */
+#define TRIDENT     53  /* trident */
+#define WAR_PICK    54  /* war pick */
+#define BARDICHE    55  /* bardiche */
+#define HEAVY_MACE  56  /* mace */
+#define SCYTHE      57  /* great scythe */
+#define QUARTERSTAFF    58  /* quarter staff */
+#define BAST_SWORD  59  /* bastard sword */
+#define PIKE        60  /* pike */
+#define TWO_FLAIL   61  /* two-handed flail */
+#define TWO_MAUL    62  /* two-handed maul */
+#define TWO_PICK    63  /* two-handed pick */
+#define TWO_SWORD   64  /* two-handed sword */
+#define CLAYMORE    65  /* claymore sword */
+#define MAXWEAPONS  (sizeof(weaps) / sizeof(struct init_weps))
+#define NONE        100 /* no weapon */
+
+/* Armor types */
+#define SOFT_LEATHER    0
+#define CUIRBOLILLI 1
+#define HEAVY_LEATHER   2
+#define RING_MAIL   3
+#define STUDDED_LEATHER 4
+#define SCALE_MAIL  5
+#define PADDED_ARMOR    6
+#define CHAIN_MAIL  7
+#define BRIGANDINE  8
+#define SPLINT_MAIL 9
+#define BANDED_MAIL 10
+#define GOOD_CHAIN  11