diff rogue5/rogue.h @ 33:f502bf60e6e4

Import Rogue 5.4 from the Roguelike Restoration Project (r1490)
author elwin
date Mon, 24 May 2010 20:10:59 +0000
parents
children 655c317b6237
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rogue5/rogue.h	Mon May 24 20:10:59 2010 +0000
@@ -0,0 +1,778 @@
+/*
+ * Rogue definitions and variable declarations
+ *
+ * @(#)rogue.h	5.42 (Berkeley) 08/06/83
+ *
+ * Rogue: Exploring the Dungeons of Doom
+ * Copyright (C) 1980-1983, 1985, 1999 Michael Toy, Ken Arnold and Glenn Wichman
+ * All rights reserved.
+ *
+ * See the file LICENSE.TXT for full copyright and licensing information.
+ */
+
+#include "extern.h"
+
+#undef lines 
+
+#define NOOP(x) (x += 0)
+#define CCHAR(x) ( (x) & A_CHARTEXT )
+
+#define MAXDAEMONS 20
+#define EMPTY 0
+
+/*
+ * Maximum number of different things
+ */
+#define MAXROOMS	9
+#define MAXTHINGS	9
+#define MAXOBJ		9
+#define MAXPACK		23
+#define MAXTRAPS	10
+#define AMULETLEVEL	26
+#define	NUMTHINGS	7	/* number of types of things */
+#define MAXPASS		13	/* upper limit on number of passages */
+#define	NUMLINES	24
+#define	NUMCOLS		80
+#define STATLINE		(NUMLINES - 1)
+#define BORE_LEVEL	50
+
+/*
+ * return values for get functions
+ */
+#define	NORM	0	/* normal exit */
+#define	QUIT	1	/* quit option setting */
+#define	MINUS	2	/* back up one option */
+
+/*
+ * inventory types
+ */
+#define	INV_OVER	0
+#define	INV_SLOW	1
+#define	INV_CLEAR	2
+
+/*
+ * All the fun defines
+ */
+#define when		break;case
+#define otherwise	break;default
+#define until(expr)	while(!(expr))
+#define next(ptr)	(*ptr).l_next
+#define prev(ptr)	(*ptr).l_prev
+#define winat(y,x)	(moat(y,x) != NULL ? moat(y,x)->t_disguise : chat(y,x))
+#define ce(a,b)		((a).x == (b).x && (a).y == (b).y)
+#define hero		player.t_pos
+#define pstats		player.t_stats
+#define pack		player.t_pack
+#define proom		player.t_room
+#define max_hp		player.t_stats.s_maxhp
+#define attach(a,b)	_attach(&a,b)
+#define detach(a,b)	_detach(&a,b)
+#define free_list(a)	_free_list(&a)
+#undef max
+#define max(a,b)	((a) > (b) ? (a) : (b))
+#define on(thing,flag)	((((thing).t_flags & (flag)) != 0))
+#define GOLDCALC	(rnd(50 + 10 * level) + 2)
+#define ISRING(h,r)	(cur_ring[h] != NULL && cur_ring[h]->o_which == r)
+#define ISWEARING(r)	(ISRING(LEFT, r) || ISRING(RIGHT, r))
+#define ISMULT(type) 	(type == POTION || type == SCROLL || type == FOOD)
+#define INDEX(y,x)	(&places[((x) << 5) + (y)])
+#define chat(y,x)	(places[((x) << 5) + (y)].p_ch)
+#define flat(y,x)	(places[((x) << 5) + (y)].p_flags)
+#define moat(y,x)	(places[((x) << 5) + (y)].p_monst)
+#define unc(cp)		(cp).y, (cp).x
+#ifdef MASTER
+#define debug		if (wizard) msg
+#endif
+
+/*
+ * things that appear on the screens
+ */
+#define PASSAGE		'#'
+#define DOOR		'+'
+#define FLOOR		'.'
+#define PLAYER		'@'
+#define TRAP		'^'
+#define STAIRS		'%'
+#define GOLD		'*'
+#define POTION		'!'
+#define SCROLL		'?'
+#define MAGIC		'$'
+#define FOOD		':'
+#define WEAPON		')'
+#define ARMOR		']'
+#define AMULET		','
+#define RING		'='
+#define STICK		'/'
+#define CALLABLE	-1
+#define R_OR_S		-2
+
+/*
+ * Various constants
+ */
+#define BEARTIME	spread(3)
+#define SLEEPTIME	spread(5)
+#define HOLDTIME	spread(2)
+#define WANDERTIME	spread(70)
+#define BEFORE		spread(1)
+#define AFTER		spread(2)
+#define HEALTIME	30
+#define HUHDURATION	20
+#define SEEDURATION	850
+#define HUNGERTIME	1300
+#define MORETIME	150
+#define STOMACHSIZE	2000
+#define STARVETIME	850
+#define ESCAPE		27
+#define LEFT		0
+#define RIGHT		1
+#define BOLT_LENGTH	6
+#define LAMPDIST	3
+#ifdef MASTER
+#ifndef PASSWD
+#define	PASSWD		"mTBellIQOsLNA"
+#endif
+#endif
+
+/*
+ * Save against things
+ */
+#define VS_POISON	00
+#define VS_PARALYZATION	00
+#define VS_DEATH	00
+#define VS_BREATH	02
+#define VS_MAGIC	03
+
+/*
+ * Various flag bits
+ */
+/* flags for rooms */
+#define ISDARK	0000001		/* room is dark */
+#define ISGONE	0000002		/* room is gone (a corridor) */
+#define ISMAZE	0000004		/* room is gone (a corridor) */
+
+/* flags for objects */
+#define ISCURSED 000001		/* object is cursed */
+#define ISKNOW	0000002		/* player knows details about the object */
+#define ISMISL	0000004		/* object is a missile type */
+#define ISMANY	0000010		/* object comes in groups */
+/*	ISFOUND 0000020		...is used for both objects and creatures */
+#define	ISPROT	0000040		/* armor is permanently protected */
+
+/* flags for creatures */
+#define CANHUH	0000001		/* creature can confuse */
+#define CANSEE	0000002		/* creature can see invisible creatures */
+#define ISBLIND	0000004		/* creature is blind */
+#define ISCANC	0000010		/* creature has special qualities cancelled */
+#define ISLEVIT	0000010		/* hero is levitating */
+#define ISFOUND	0000020		/* creature has been seen (used for objects) */
+#define ISGREED	0000040		/* creature runs to protect gold */
+#define ISHASTE	0000100		/* creature has been hastened */
+#define ISTARGET 000200		/* creature is the target of an 'f' command */
+#define ISHELD	0000400		/* creature has been held */
+#define ISHUH	0001000		/* creature is confused */
+#define ISINVIS	0002000		/* creature is invisible */
+#define ISMEAN	0004000		/* creature can wake when player enters room */
+#define ISHALU	0004000		/* hero is on acid trip */
+#define ISREGEN	0010000		/* creature can regenerate */
+#define ISRUN	0020000		/* creature is running at the player */
+#define SEEMONST 040000		/* hero can detect unseen monsters */
+#define ISFLY	0040000		/* creature can fly */
+#define ISSLOW	0100000		/* creature has been slowed */
+
+/*
+ * Flags for level map
+ */
+#define F_PASS		0x80		/* is a passageway */
+#define F_SEEN		0x40		/* have seen this spot before */
+#define F_DROPPED	0x20		/* object was dropped here */
+#define F_LOCKED	0x20		/* door is locked */
+#define F_REAL		0x10		/* what you see is what you get */
+#define F_PNUM		0x0f		/* passage number mask */
+#define F_TMASK		0x07		/* trap number mask */
+
+/*
+ * Trap types
+ */
+#define T_DOOR	00
+#define T_ARROW	01
+#define T_SLEEP	02
+#define T_BEAR	03
+#define T_TELEP	04
+#define T_DART	05
+#define T_RUST	06
+#define T_MYST  07
+#define NTRAPS	8
+
+/*
+ * Potion types
+ */
+#define P_CONFUSE	0
+#define P_LSD		1
+#define P_POISON	2
+#define P_STRENGTH	3
+#define P_SEEINVIS	4
+#define P_HEALING	5
+#define P_MFIND		6
+#define	P_TFIND 	7
+#define	P_RAISE		8
+#define P_XHEAL		9
+#define P_HASTE		10
+#define P_RESTORE	11
+#define P_BLIND		12
+#define P_LEVIT		13
+#define MAXPOTIONS	14
+
+/*
+ * Scroll types
+ */
+#define S_CONFUSE	0
+#define S_MAP		1
+#define S_HOLD		2
+#define S_SLEEP		3
+#define S_ARMOR		4
+#define S_ID_POTION	5
+#define S_ID_SCROLL	6
+#define S_ID_WEAPON	7
+#define S_ID_ARMOR	8
+#define S_ID_R_OR_S	9
+#define S_SCARE		10
+#define S_FDET		11
+#define S_TELEP		12
+#define S_ENCH		13
+#define S_CREATE	14
+#define S_REMOVE	15
+#define S_AGGR		16
+#define S_PROTECT	17
+#define MAXSCROLLS	18
+
+/*
+ * Weapon types
+ */
+#define MACE		0
+#define SWORD		1
+#define BOW		2
+#define ARROW		3
+#define DAGGER		4
+#define TWOSWORD	5
+#define DART		6
+#define SHIRAKEN	7
+#define SPEAR		8
+#define FLAME		9	/* fake entry for dragon breath (ick) */
+#define MAXWEAPONS	9	/* this should equal FLAME */
+
+/*
+ * Armor types
+ */
+#define LEATHER		0
+#define RING_MAIL	1
+#define STUDDED_LEATHER	2
+#define SCALE_MAIL	3
+#define CHAIN_MAIL	4
+#define SPLINT_MAIL	5
+#define BANDED_MAIL	6
+#define PLATE_MAIL	7
+#define MAXARMORS	8
+
+/*
+ * Ring types
+ */
+#define R_PROTECT	0
+#define R_ADDSTR	1
+#define R_SUSTSTR	2
+#define R_SEARCH	3
+#define R_SEEINVIS	4
+#define R_NOP		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_SUSTARM	13
+#define MAXRINGS	14
+
+/*
+ * Rod/Wand/Staff types
+ */
+#define WS_LIGHT	0
+#define WS_INVIS	1
+#define WS_ELECT	2
+#define WS_FIRE		3
+#define WS_COLD		4
+#define WS_POLYMORPH	5
+#define WS_MISSILE	6
+#define WS_HASTE_M	7
+#define WS_SLOW_M	8
+#define WS_DRAIN	9
+#define WS_NOP		10
+#define WS_TELAWAY	11
+#define WS_TELTO	12
+#define WS_CANCEL	13
+#define MAXSTICKS	14
+
+/*
+ * Now we define the structures and types
+ */
+
+/*
+ * Help list
+ */
+struct h_list {