Skip to content

Commit

Permalink
Merge branch 'updates' into merge_updates
Browse files Browse the repository at this point in the history
  • Loading branch information
elunna committed Dec 11, 2023
2 parents e0db29d + a7db78f commit 6485df1
Show file tree
Hide file tree
Showing 87 changed files with 4,740 additions and 2,663 deletions.
2 changes: 2 additions & 0 deletions dat/opthelp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ cmdassist give help for errors on direction & other commands [True]
color use different colors for objects on screen [True for micros]
confirm ask before hitting tame or peaceful monsters [True]
dark_room show floor not in sight in different color [True]
dropped_nopick exclude dropped objects from autopickup [True]
eight_bit_tty send 8-bit characters straight to terminal [False]
extmenu tty, curses: use menu for # (extended commands) [False]
X11: menu has all commands (T) or traditional subset (F)
Expand Down Expand Up @@ -50,6 +51,7 @@ null allow nulls to be sent to your terminal [True]
try turning this option off (forcing NetHack to use its own
delay code) if moving objects seem to teleport across rooms
perm_invent keep inventory in a permanent window [False]
pickup_stolen override pickup_types for stolen objects [True]
pickup_thrown override pickup_types for thrown objects [True]
pushweapon when wielding a new weapon, put your previously [False]
wielded weapon into the secondary weapon slot
Expand Down
18 changes: 17 additions & 1 deletion doc/Guidebook.mn
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
.ds f0 \*(vr
.ds f1 \" empty
.\"DO NOT REMOVE NH_DATESUB .ds f2 DATE(%B %-d, %Y)
.ds f2 "November 17, 2023
.ds f2 December 08, 2023
.
.\" A note on some special characters:
.\" \(lq = left double quote
Expand Down Expand Up @@ -3870,6 +3870,13 @@ Show out-of-sight areas of lit rooms (default on). Persistent.
.lp "deaf "
Start the character permanently deaf (default false).
Persistent.
.lp dropped_nopick
If this option is on, items you dropped will not be automatically
picked up, even if
.op autopickup
is also on and they are in
.op pickup_types
or match a positive autopickup exception (defualt on). Persistent.
.lp disclose
Controls what information the program reveals when the game ends.
Value is a space separated list of prompting/category pairs
Expand Down Expand Up @@ -4392,6 +4399,15 @@ level (Unencumbered, Burdened, streSsed, straiNed, overTaxed,
or overLoaded), you will be asked if you want to continue.
(Default \(oqS\(cq).
Persistent.
.lp pickup_stolen
If this option is on and
.op autopickup
is also on, try to pick up things that a monster stole from you, even if they
aren't in
.op pickup_types
or match an autopickup exception.
Default is on.
Persistent.
.lp pickup_thrown
If this option is on and
.op autopickup
Expand Down
16 changes: 15 additions & 1 deletion doc/Guidebook.tex
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
\author{Original version - Eric S. Raymond\\
(Edited and expanded for 3.7.0 by Mike Stephenson and others)}
%DO NOT REMOVE NH_DATESUB \date{DATE(%B %-d, %Y)}
\date{November 27, 2023}
\date{December 08, 2023}

\maketitle

Expand Down Expand Up @@ -4227,6 +4227,12 @@ \subsection*{Customization options}
\item[\ib{deaf}]
Start the character permanently deaf (default false). Persistent.
%.lp
\item[\ib{dropped\verb+_+nopick}]
If this option is on, items you dropped will not be automatically picked up,
even if ``{\it autopickup\/}'' is also on and they are in
``{\it pickup\verb+_+types\/}'' or match a positive autopickup exception
(default on). Persistent.
%.lp
\item[\ib{disclose}]
Controls what information the program reveals when the game ends.
Value is a space separated list of prompting/category pairs
Expand Down Expand Up @@ -4812,6 +4818,14 @@ \subsection*{Customization options}
or overLoaded), you will be asked if you want to continue.
(Default `S'). Persistent.
%.lp
\item[\ib{pickup\verb+_+stolen}]
If this option is on and ``{\it autopickup\/}'' is also on, try to pick up
things that a monster stole from you, even if they aren't in
``{\it pickup\verb+_+types\/}'' or
match an autopickup exception.
Default is on.
Persistent.
%.lp
\item[\ib{pickup\verb+_+thrown}]
If this option is on and ``{\it autopickup\/}'' is also on, try to pick up
things that you threw, even if they aren't in
Expand Down
3,408 changes: 1,737 additions & 1,671 deletions doc/Guidebook.txt

Large diffs are not rendered by default.

1,170 changes: 1,141 additions & 29 deletions doc/fixes3-7-0.txt

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions include/color.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
/* color aliases used in monsters.h and display.c */
#define HI_DOMESTIC CLR_WHITE /* for player + pets */
#define HI_LORD CLR_MAGENTA /* for high-end monsters */
#define HI_OVERLORD CLR_BRIGHT_MAGENTA /* for few uniques */

/* these can be configured */
#define HI_OBJ CLR_MAGENTA
Expand Down
71 changes: 64 additions & 7 deletions include/defsym.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,15 @@
to #include defsym.h)
- in win/share/tilemap.c for processing a tile file
(define PCHAR_TILES prior to #include defsym.h).
- in src/allmain.c for setting up the dumping of several enums
(define DUMP_ENUMS_PCHAR, DUMP_ENUMS_MONSYS, DUMP_ENUMS_MONSYMS_DEFCHAR
DUMP_ENUMS_OBJCLASS_DEFCHARS, DUMP_ENUMS_OBJCLASS_DEFCHARS
DUMP_ENUMS_OBJCLASS_CLASSES, DUMP_ENUMS_OBJCLASS_SYMS)
*/

#if defined(PCHAR_S_ENUM) || defined(PCHAR_PARSE) \
|| defined(PCHAR_DRAWING) || defined(PCHAR_TILES)
|| defined(PCHAR_DRAWING) || defined(PCHAR_TILES) \
|| defined(DUMP_ENUMS_PCHAR)

/*
PCHAR(idx, ch, sym, desc, clr)
Expand Down Expand Up @@ -67,6 +72,13 @@
/* win/share/tilemap.c */
#define PCHAR(idx, ch, sym, desc, clr) { sym, desc, desc },
#define PCHAR2(idx, ch, sym, tilenm, desc, clr) { sym, tilenm, desc },

#elif defined(DUMP_ENUMS_PCHAR)
/* allmain.c */
#define PCHAR(idx, ch, sym, desc, clr) { sym, #sym },
#ifndef PCHAR2
#define PCHAR2(idx, ch, sym, tilenm, desc, clr) { sym, #sym },
#endif
#endif

/* PCHAR with extra arg */
Expand Down Expand Up @@ -229,10 +241,12 @@
PCHAR2(104, '/', S_expl_br, "explosion bottom right", "", CLR_ORANGE)
#undef PCHAR
#undef PCHAR2
#endif /* PCHAR_S_ENUM || PCHAR_PARSE || PCHAR_DRAWING || PCHAR_TILES */
#endif /* PCHAR_S_ENUM || PCHAR_PARSE || PCHAR_DRAWING || PCHAR_TILES
* || DUMP_ENUMS_PCHAR */

#if defined(MONSYMS_S_ENUM) || defined(MONSYMS_DEFCHAR_ENUM) \
|| defined(MONSYMS_PARSE) || defined(MONSYMS_DRAWING)
|| defined(MONSYMS_PARSE) || defined(MONSYMS_DRAWING) \
|| defined(DUMP_ENUMS_MONSYMS) || defined(DUMP_ENUMS_MONSYMS_DEFCHAR)

/*
MONSYM(idx, ch, sym desc)
Expand All @@ -258,6 +272,14 @@
#elif defined(MONSYMS_DRAWING)
/* drawing.c */
#define MONSYM(idx, ch, basename, sym, desc) { DEF_##basename, "", desc },

/* allmain.c */
#elif defined(DUMP_ENUMS_MONSYMS)
#define MONSYM(idx, ch, basename, sym, desc) { sym, #sym },

#elif defined(DUMP_ENUMS_MONSYMS_DEFCHAR)
#define MONSYM(idx, ch, basename, sym, desc) { DEF_##basename, "DEF_" #basename },

#endif

MONSYM( 1, 'a', ANT, S_ANT, "ant or other insect")
Expand Down Expand Up @@ -335,11 +357,14 @@

#undef MONSYM
#endif /* MONSYMS_S_ENUM || MONSYMS_DEFCHAR_ENUM || MONSYMS_PARSE
* || MONSYMS_DRAWING */
* || MONSYMS_DRAWING || DUMP_ENUMS_MONSYMS)
* || DUMP_ENUMS_MONSYMS_DEFCHAR */

#if defined(OBJCLASS_S_ENUM) || defined(OBJCLASS_DEFCHAR_ENUM) \
|| defined(OBJCLASS_CLASS_ENUM) || defined(OBJCLASS_PARSE) \
|| defined (OBJCLASS_DRAWING)
|| defined(OBJCLASS_DRAWING) || defined(DUMP_ENUMS_OBJCLASS_DEFCHARS) \
|| defined(DUMP_ENUMS_OBJCLASS_CLASSES) \
|| defined(DUMP_ENUMS_OBJCLASS_SYMS)

/*
OBJCLASS(idx, ch, basename, sym, name, explain)
Expand Down Expand Up @@ -387,6 +412,21 @@
/* drawing.c */
#define OBJCLASS(idx, ch, basename, sym, name, explain) \
{ basename##_SYM, name, explain },

#elif defined(DUMP_ENUMS_OBJCLASS_DEFCHARS)
/* allmain.c */
#define OBJCLASS(idx, ch, basename, sym, name, explain) \
{ basename##_SYM, #basename "_SYM" },

#elif defined(DUMP_ENUMS_OBJCLASS_CLASSES)
/* allmain.c */
#define OBJCLASS(idx, ch, basename, sym, name, explain) \
{ basename##_CLASS, #basename "_CLASS" },

#elif defined(DUMP_ENUMS_OBJCLASS_SYMS)
/* allmain.c */
#define OBJCLASS(idx, ch, basename, sym, name, explain) \
{ sym , #sym },
#endif

/* OBJCLASS with extra arg */
Expand All @@ -396,6 +436,15 @@
#elif defined(OBJCLASS_DRAWING)
#define OBJCLASS2(idx, ch, basename, sname, sym, name, explain) \
{ sname, name, explain },
#elif defined(DUMP_ENUMS_OBJCLASS_DEFCHARS)
#define OBJCLASS2(idx, ch, basename, sname, sym, name, explain) \
{ sname, #sname },
#elif defined(DUMP_ENUMS_OBJCLASS_CLASSES)
#define OBJCLASS2(idx, ch, basename, sname, sym, name, explain) \
{ basename##_CLASS, #basename "_CLASS" },
#elif defined(DUMP_ENUMS_OBJCLASS_SYMS)
#define OBJCLASS2(idx, ch, basename, sname, sym, name, explain) \
{ sym , #sym },
#else
#define OBJCLASS2(idx, ch, basename, sname, sym, name, explain) \
OBJCLASS(idx, ch, basename, sym, name, explain)
Expand Down Expand Up @@ -424,16 +473,24 @@
#undef OBJCLASS
#undef OBJCLASS2
#endif /* OBJCLASS_S_ENUM || OBJCLASS_DEFCHAR_ENUM || OBJCLASS_CLASS_ENUM
* || OBJCLASS_PARSE || OBJCLASS_DRAWING */
* || OBJCLASS_PARSE || OBJCLASS_DRAWING
* || DUMP_ENUMS_OBJCLASS_DEFCHARS || DUMP_ENUMS_OBJCLASS_CLASSES
* || DUMP_ENUMS_OBJCLASS_SYMS */

#ifdef DEBUG
#if !defined(PCHAR_S_ENUM) && !defined(PCHAR_DRAWING) \
&& !defined(PCHAR_PARSE) && !defined(PCHAR_TILES) \
&& !defined(DUMP_ENUMS_PCHAR) \
&& !defined(MONSYMS_S_ENUM) && !defined(MONSYMS_DEFCHAR_ENUM) \
&& !defined(MONSYMS_PARSE) && !defined(MONSYMS_DRAWING) \
&& !defined(DUMP_ENUMS_MONSYMS) \
&& !defined(DUMP_ENUMS_MONSYMS_DEFCHAR) \
&& !defined(OBJCLASS_S_ENUM) && !defined(OBJCLASS_DEFCHAR_ENUM) \
&& !defined(OBJCLASS_CLASS_ENUM) && !defined(OBJCLASS_PARSE) \
&& !defined (OBJCLASS_DRAWING)
&& !defined (OBJCLASS_DRAWING) \
&& !defined(DUMP_ENUMS_OBJCLASS_DEFCHARS) \
&& !defined(DUMP_ENUMS_OBJCLASS_CLASSES) \
&& !defined(DUMP_ENUMS_OBJCLASS_SYMS)
#error Non-productive inclusion of defsym.h
#endif
#endif /* DEBUG */
Expand Down
10 changes: 9 additions & 1 deletion include/extern.h
Original file line number Diff line number Diff line change
Expand Up @@ -2821,6 +2821,7 @@ extern void exercise_steed(void);
extern void kick_steed(void);
extern void dismount_steed(int);
extern void place_monster(struct monst *, coordxy, coordxy);
extern void poly_steed(struct monst *, struct permonst *);
extern boolean stucksteed(boolean);

/* ### symbols.c ### */
Expand Down Expand Up @@ -2952,6 +2953,8 @@ extern int tt_doppel(struct monst *);
extern void initrack(void);
extern void settrack(void);
extern coord *gettrack(coordxy, coordxy);
extern void save_track(NHFILE *);
extern void rest_track(NHFILE *);

/* ### trap.c ### */

Expand Down Expand Up @@ -3451,6 +3454,10 @@ extern void choose_windows(const char *);
void addto_windowchain(const char *s);
void commit_windowchain(void);
#endif
#ifdef TTY_GRAPHICS
extern boolean check_tty_wincap(unsigned long);
extern boolean check_tty_wincap2(unsigned long);
#endif
extern boolean genl_can_suspend_no(void);
extern boolean genl_can_suspend_yes(void);
extern char genl_message_menu(char, int, const char *);
Expand Down Expand Up @@ -3631,7 +3638,8 @@ extern void melt_ice_away(union any *, long);
extern int zap_over_floor(coordxy, coordxy, int, boolean *, boolean, short);
extern void fracture_rock(struct obj *);
extern boolean break_statue(struct obj *);
extern boolean u_adtyp_resistance_obj(int);
extern int u_adtyp_resistance_obj(int);
extern boolean inventory_resistance_check(int);
extern char *item_what(int);
extern void destroy_item(int, int);
extern int destroy_mitem(struct monst *, int, int);
Expand Down
2 changes: 2 additions & 0 deletions include/flag.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,10 @@ struct flag {
boolean mention_decor; /* give feedback for unobscured furniture */
boolean mention_walls; /* give feedback when bumping walls */
boolean nap; /* `timed_delay' option for display effects */
boolean nopick_dropped; /* items you dropped may be autopicked */
boolean null; /* OK to send nulls to the terminal */
boolean pickup; /* whether you pickup or move and look */
boolean pickup_stolen; /* auto-pickup items stolen by a monster */
boolean pickup_thrown; /* auto-pickup items you threw */
boolean pushweapon; /* When wielding, push old weapon into second slot */
boolean quick_farsight; /* True disables map browsing during random
Expand Down
3 changes: 3 additions & 0 deletions include/hack.h
Original file line number Diff line number Diff line change
Expand Up @@ -1425,6 +1425,9 @@ typedef uint32_t mmflags_nht; /* makemon MM_ flags */
/* monster shooting a wand; note: not -9 to -0 because -0 is ambiguous */
#define BZ_M_WAND(bztyp) (-30 - (bztyp)) /* -39..-30 */

/* pick a random entry from array */
#define ROLL_FROM(array) array[rn2(SIZE(array))]

#define FEATURE_NOTICE_VER(major, minor, patch) \
(((unsigned long) major << 24) | ((unsigned long) minor << 16) \
| ((unsigned long) patch << 8) | ((unsigned long) 0))
Expand Down
1 change: 1 addition & 0 deletions include/mextra.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ struct epri {
struct bill_x {
unsigned bo_id;
boolean useup;
boolean queuedpay;
long price; /* price per unit */
long bquan; /* amount used up */
};
Expand Down
1 change: 1 addition & 0 deletions include/mondata.h
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,7 @@
#define pmname(ptr,g) ((((g) == MALE || (g) == FEMALE) && (ptr)->pmnames[g]) \
? (ptr)->pmnames[g] : (ptr)->pmnames[NEUTRAL])
#endif
#define monsym(ptr) (def_monsyms[(int) (ptr)->mlet].sym)

/* The monster prefers to keep its distance rather than charging and engaging
* you in combat. This was adapted from the M3_SKITTISH flag in SporkHack;
Expand Down
18 changes: 9 additions & 9 deletions include/monsters.h
Original file line number Diff line number Diff line change
Expand Up @@ -248,13 +248,13 @@
NO_ATTK),
SIZ(500, 250, MS_BARK, MZ_MEDIUM), 0, 0,
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE | M2_FLANK,
M3_INFRAVISIBLE, 6, CLR_BROWN, WOLF),
M3_INFRAVISIBLE, 6, CLR_GRAY, WOLF),
MON("werewolf", S_DOG, LVL(5, 12, 4, 20, -7), (G_NOGEN | G_NOCORPSE),
A(ATTK(AT_BITE, AD_WERE, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
NO_ATTK),
SIZ(500, 250, MS_BARK, MZ_MEDIUM), MR_POISON, 0,
M1_NOHANDS | M1_POIS | M1_REGEN | M1_CARNIVORE,
M2_NOPOLY | M2_WERE | M2_HOSTILE, M3_INFRAVISIBLE, 7, CLR_BROWN,
M2_NOPOLY | M2_WERE | M2_HOSTILE, M3_INFRAVISIBLE, 7, CLR_GRAY,
WEREWOLF),
MON("winter wolf cub", S_DOG, LVL(5, 12, 4, 0, -5),
(G_NOHELL | G_GENO | G_SGROUP | 2),
Expand All @@ -268,7 +268,7 @@
NO_ATTK),
SIZ(850, 350, MS_BARK, MZ_MEDIUM), 0, 0,
M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE | M2_FLANK,
M3_INFRAVISIBLE, 8, CLR_BROWN, WARG),
M3_INFRAVISIBLE, 8, CLR_BLACK, WARG),
MON("winter wolf", S_DOG, LVL(7, 12, 4, 20, 0), (G_NOHELL | G_GENO | 1),
A(ATTK(AT_BITE, AD_PHYS, 2, 6), ATTK(AT_BREA, AD_COLD, 2, 6), NO_ATTK,
NO_ATTK, NO_ATTK, NO_ATTK),
Expand Down Expand Up @@ -2626,7 +2626,7 @@
| M1_TPORT | M1_TPORT_CNTRL | M1_OMNIVORE,
M2_NOPOLY | M2_HUMAN | M2_HOSTILE | M2_STRONG | M2_NASTY | M2_PRINCE
| M2_MALE | M2_MAGIC,
M3_COVETOUS | M3_WAITFORU | M3_INFRAVISIBLE, 34, CLR_BRIGHT_MAGENTA,
M3_COVETOUS | M3_WAITFORU | M3_INFRAVISIBLE, 34, HI_OVERLORD,
WIZARD_OF_YENDOR),
MON("Croesus", S_HUMAN, LVL(20, 15, 0, 40, 15), (G_UNIQ | G_NOGEN),
A(ATTK(AT_WEAP, AD_PHYS, 4, 10), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
Expand Down Expand Up @@ -2742,15 +2742,15 @@
ATTK(AT_BITE, AD_PHYS, 1, 6), NO_ATTK),
SIZ(WT_HUMAN, 400, MS_SILENT, MZ_LARGE), MR_FIRE | MR_POISON, 0,
M1_FLY | M1_POIS, M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY,
M3_INFRAVISIBLE | M3_INFRAVISION, 11, CLR_RED, VROCK),
M3_INFRAVISIBLE | M3_INFRAVISION, 11, CLR_GREEN, VROCK),
MON("hezrou", S_DEMON, LVL(9, 6, -2, 55, -10),
(G_HELL | G_NOCORPSE | G_SGROUP | 2),
A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3),
ATTK(AT_BITE, AD_PHYS, 4, 4), NO_ATTK, NO_ATTK, NO_ATTK),
SIZ(WT_HUMAN, 400, MS_SILENT, MZ_LARGE), MR_FIRE | MR_POISON, 0,
M1_HUMANOID | M1_POIS, M2_DEMON | M2_STALK | M2_HOSTILE
| M2_NASTY | M2_FLANK,
M3_INFRAVISIBLE | M3_INFRAVISION, 12, CLR_RED, HEZROU),
M3_INFRAVISIBLE | M3_INFRAVISION, 12, CLR_GREEN, HEZROU),
MON("bone devil", S_DEMON, LVL(9, 15, -1, 40, 9),
(G_HELL | G_NOCORPSE | G_SGROUP | 2),
A(ATTK(AT_WEAP, AD_PHYS, 3, 4), ATTK(AT_STNG, AD_DRST, 2, 4), NO_ATTK,
Expand Down Expand Up @@ -2900,7 +2900,7 @@
MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON | MR_STONE, 0,
M1_FLY | M1_HUMANOID | M1_REGEN | M1_SEE_INVIS | M1_TPORT_CNTRL,
M2_NOPOLY | M2_STALK | M2_HOSTILE | M2_PNAME | M2_STRONG | M2_NASTY,
M3_INFRAVISIBLE | M3_INFRAVISION | M3_DISPLACES, 34, HI_LORD,
M3_INFRAVISIBLE | M3_INFRAVISION | M3_DISPLACES, 34, HI_OVERLORD,
DEATH),
MON("Pestilence", S_DEMON, LVL(30, 12, -5, 100, 0), (G_UNIQ | G_NOGEN),
A(ATTK(AT_TUCH, AD_PEST, 8, 8), ATTK(AT_TUCH, AD_PEST, 8, 8), NO_ATTK,
Expand All @@ -2909,7 +2909,7 @@
MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON | MR_STONE, 0,
M1_FLY | M1_HUMANOID | M1_REGEN | M1_SEE_INVIS | M1_TPORT_CNTRL,
M2_NOPOLY | M2_STALK | M2_HOSTILE | M2_PNAME | M2_STRONG | M2_NASTY,
M3_INFRAVISIBLE | M3_INFRAVISION | M3_DISPLACES, 34, HI_LORD,
M3_INFRAVISIBLE | M3_INFRAVISION | M3_DISPLACES, 34, HI_OVERLORD,
PESTILENCE),
MON("Famine", S_DEMON, LVL(30, 12, -5, 100, 0), (G_UNIQ | G_NOGEN),
A(ATTK(AT_TUCH, AD_FAMN, 8, 8), ATTK(AT_TUCH, AD_FAMN, 8, 8), NO_ATTK,
Expand All @@ -2918,7 +2918,7 @@
MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON | MR_STONE, 0,
M1_FLY | M1_HUMANOID | M1_REGEN | M1_SEE_INVIS | M1_TPORT_CNTRL,
M2_NOPOLY | M2_STALK | M2_HOSTILE | M2_PNAME | M2_STRONG | M2_NASTY,
M3_INFRAVISIBLE | M3_INFRAVISION | M3_DISPLACES, 34, HI_LORD,
M3_INFRAVISIBLE | M3_INFRAVISION | M3_DISPLACES, 34, HI_OVERLORD,
FAMINE),
/* other demons
*/
Expand Down
Loading

0 comments on commit 6485df1

Please sign in to comment.