more formatting

Mostly tab replacement, plus the last of the cast spacing.
This commit is contained in:
PatR
2015-11-08 01:37:55 -08:00
parent 47938fc339
commit 62193be46a
12 changed files with 397 additions and 387 deletions

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 allmain.c $NHDT-Date: 1445215016 2015/10/19 00:36:56 $ $NHDT-Branch: master $:$NHDT-Revision: 1.65 $ */
/* NetHack 3.6 allmain.c $NHDT-Date: 1446975459 2015/11/08 09:37:39 $ $NHDT-Branch: master $:$NHDT-Revision: 1.66 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -58,8 +58,7 @@ boolean resuming;
if (!resuming) { /* new game */
context.rndencode = rnd(9000);
set_wear(
(struct obj *) 0); /* for side-effects of worn starting gear */
set_wear((struct obj *) 0); /* for side-effects of starting gear */
(void) pickup(1); /* autopickup at initial location */
} else { /* restore old game */
#ifndef WIN32
@@ -516,10 +515,10 @@ display_gamewindows()
SanePositions();
#endif
/*
* The mac port is not DEPENDENT on the order of these
* displays, but it looks a lot better this way...
*/
/*
* The mac port is not DEPENDENT on the order of these
* displays, but it looks a lot better this way...
*/
#ifndef STATUS_VIA_WINDOWPORT
display_nhwindow(WIN_STATUS, FALSE);
#endif
@@ -569,7 +568,7 @@ newgame()
display_file(NEWS, FALSE);
#endif
load_qtlist(); /* load up the quest text info */
/* quest_init();*/ /* Now part of role_init() */
/* quest_init(); -- Now part of role_init() */
mklev();
u_on_upstairs();

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 alloc.c $NHDT-Date: 1432512771 2015/05/25 00:12:51 $ $NHDT-Branch: master $:$NHDT-Revision: 1.12 $ */
/* NetHack 3.6 alloc.c $NHDT-Date: 1446975460 2015/11/08 09:37:40 $ $NHDT-Branch: master $:$NHDT-Revision: 1.14 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -27,19 +27,20 @@ extern void
VDECL(panic, (const char *, ...))
PRINTF_F(1, 2);
long *alloc(lth) register unsigned int lth;
long *alloc(lth)
register unsigned int lth;
{
#ifdef LINT
/*
* a ridiculous definition, suppressing
* "possible pointer alignment problem" for (long *) malloc()
* "possible pointer alignment problem" for (long *) malloc()
* from lint
*/
long dummy = ftell(stderr);
if (lth)
dummy = 0; /* make sure arg is used */
return (&dummy);
return &dummy;
#else
register genericptr_t ptr;
@@ -48,7 +49,7 @@ long *alloc(lth) register unsigned int lth;
if (!ptr)
panic("Memory allocation failure; cannot get %u bytes", lth);
#endif
return ((long *) ptr);
return (long *) ptr;
#endif
}

View File

@@ -1,5 +1,5 @@
/* NetHack 3.6 attrib.c $NHDT-Date: 1432512774 2015/05/25 00:12:54 $ $NHDT-Branch: master $:$NHDT-Revision: 1.46 $ */
/* Copyright 1988, 1989, 1990, 1992, M. Stephenson */
/* NetHack 3.6 attrib.c $NHDT-Date: 1446975460 2015/11/08 09:37:40 $ $NHDT-Branch: master $:$NHDT-Revision: 1.49 $ */
/* Copyright 1988, 1989, 1990, 1992, M. Stephenson */
/* NetHack may be freely redistributed. See license for details. */
/* attribute modification routines. */
@@ -8,11 +8,12 @@
#include <ctype.h>
/* part of the output on gain or loss of attribute */
static const char *const plusattr[] = { "strong", "smart", "wise",
"agile", "tough", "charismatic" },
*const minusattr[] = { "weak", "stupid",
"foolish", "clumsy",
"fragile", "repulsive" };
static const char
*const plusattr[] = { "strong", "smart", "wise",
"agile", "tough", "charismatic" },
*const minusattr[] = { "weak", "stupid",
"foolish", "clumsy",
"fragile", "repulsive" };
static const struct innate {
schar ulevel;
@@ -360,13 +361,13 @@ boolean inc_or_dec;
if (abs(AEXE(i)) < AVAL) {
/*
* Law of diminishing returns (Part I):
* Law of diminishing returns (Part I):
*
* Gain is harder at higher attribute values.
* 79% at "3" --> 0% at "18"
* Loss is even at all levels (50%).
* Gain is harder at higher attribute values.
* 79% at "3" --> 0% at "18"
* Loss is even at all levels (50%).
*
* Note: *YES* ACURR is the right one to use.
* Note: *YES* ACURR is the right one to use.
*/
AEXE(i) += (inc_or_dec) ? (rn2(19) > ACURR(i)) : -rn2(2);
debugpline3("%s, %s AEXE = %d",
@@ -464,21 +465,21 @@ exerchk()
{
int i, ax, mod_val, lolim, hilim;
/* Check out the periodic accumulations */
/* Check out the periodic accumulations */
exerper();
if (moves >= context.next_attrib_check)
debugpline1("exerchk: ready to test. multi = %d.", multi);
/* Are we ready for a test? */
/* Are we ready for a test? */
if (moves >= context.next_attrib_check && !multi) {
debugpline0("exerchk: testing.");
/*
* Law of diminishing returns (Part II):
* Law of diminishing returns (Part II):
*
* The effects of "exercise" and "abuse" wear
* off over time. Even if you *don't* get an
* increase/decrease, you lose some of the
* accumulated effects.
* The effects of "exercise" and "abuse" wear
* off over time. Even if you *don't* get an
* increase/decrease, you lose some of the
* accumulated effects.
*/
for (i = 0; i < A_MAX; ++i) {
ax = AEXE(i);
@@ -516,10 +517,10 @@ exerchk()
: "???",
ax);
/*
* Law of diminishing returns (Part III):
* Law of diminishing returns (Part III):
*
* You don't *always* gain by exercising.
* [MRS 92/10/28 - Treat Wisdom specially for balance.]
* You don't *always* gain by exercising.
* [MRS 92/10/28 - Treat Wisdom specially for balance.]
*/
if (rn2(AVAL) > ((i != A_WIS) ? (abs(ax) * 2 / 3) : abs(ax)))
goto nextattrib;
@@ -971,31 +972,30 @@ int x;
register int tmp = (u.abon.a[x] + u.atemp.a[x] + u.acurr.a[x]);
if (x == A_STR) {
if (uarmg && uarmg->otyp == GAUNTLETS_OF_POWER)
return (125);
if (tmp >= 125 || (uarmg && uarmg->otyp == GAUNTLETS_OF_POWER))
return (schar) 125;
else
#ifdef WIN32_BUG
else
return (x = ((tmp >= 125) ? 125 : (tmp <= 3) ? 3 : tmp));
return (x = ((tmp <= 3) ? 3 : tmp));
#else
else
return ((schar)((tmp >= 125) ? 125 : (tmp <= 3) ? 3 : tmp));
return (schar) ((tmp <= 3) ? 3 : tmp);
#endif
} else if (x == A_CHA) {
if (tmp < 18
&& (youmonst.data->mlet == S_NYMPH || u.umonnum == PM_SUCCUBUS
|| u.umonnum == PM_INCUBUS))
return 18;
return (schar) 18;
} else if (x == A_INT || x == A_WIS) {
/* yes, this may raise int/wis if player is sufficiently
* stupid. there are lower levels of cognition than "dunce".
*/
if (uarmh && uarmh->otyp == DUNCE_CAP)
return (6);
return (schar) 6;
}
#ifdef WIN32_BUG
return (x = ((tmp >= 25) ? 25 : (tmp <= 3) ? 3 : tmp));
#else
return ((schar)((tmp >= 25) ? 25 : (tmp <= 3) ? 3 : tmp));
return (schar) ((tmp >= 25) ? 25 : (tmp <= 3) ? 3 : tmp);
#endif
}
@@ -1007,11 +1007,11 @@ acurrstr()
register int str = ACURR(A_STR);
if (str <= 18)
return ((schar) str);
return (schar) str;
if (str <= 121)
return ((schar)(19 + str / 50)); /* map to 19-21 */
return (schar) (19 + str / 50); /* map to 19..21 */
else
return ((schar)(str - 100));
return (schar) (min(str, 125) - 100); /* 22..25 */
}
/* when wearing (or taking off) an unID'd item, this routine is used
@@ -1043,13 +1043,12 @@ int attrindx;
}
/* avoid possible problems with alignment overflow, and provide a centralized
* location for any future alignment limits
*/
location for any future alignment limits */
void
adjalign(n)
register int n;
int n;
{
register int newalign = u.ualign.record + n;
int newalign = u.ualign.record + n;
if (n < 0) {
if (newalign < u.ualign.record)

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 botl.c $NHDT-Date: 1435002677 2015/06/22 19:51:17 $ $NHDT-Branch: master $:$NHDT-Revision: 1.64 $ */
/* NetHack 3.6 botl.c $NHDT-Date: 1446975461 2015/11/08 09:37:41 $ $NHDT-Branch: master $:$NHDT-Revision: 1.67 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -24,6 +24,7 @@ bot1()
char newbot1[MAXCO];
register char *nb;
register int i, j;
Strcpy(newbot1, plname);
if ('a' <= newbot1[0] && newbot1[0] <= 'z')
newbot1[0] += 'A' - 'a';
@@ -73,6 +74,7 @@ bot1()
curs(WIN_STATUS, 1, 0);
putstr(WIN_STATUS, 0, newbot1);
}
STATIC_OVL void
bot2()
{
@@ -152,7 +154,7 @@ int
rank_to_xlev(rank)
int rank;
{
return (rank <= 0) ? 1 : (rank <= 8) ? ((rank * 4) - 2) : 30;
return (rank <= 0) ? 1 : (rank <= 8) ? ((rank * 4) - 2) : 30;
}
#endif
@@ -175,23 +177,23 @@ boolean female;
/* Find the rank */
for (i = xlev_to_rank((int) lev); i >= 0; i--) {
if (female && role->rank[i].f)
return (role->rank[i].f);
return role->rank[i].f;
if (role->rank[i].m)
return (role->rank[i].m);
return role->rank[i].m;
}
/* Try the role name, instead */
if (female && role->name.f)
return (role->name.f);
return role->name.f;
else if (role->name.m)
return (role->name.m);
return ("Player");
return role->name.m;
return "Player";
}
STATIC_OVL const char *
rank()
{
return (rank_of(u.ulevel, Role_switch, flags.female));
return rank_of(u.ulevel, Role_switch, flags.female);
}
int
@@ -220,8 +222,8 @@ int *rank_indx, *title_length;
*rank_indx = j;
if (title_length)
*title_length = strlen(roles[i].rank[j].f);
return ((roles[i].femalenum != NON_PM) ? roles[i].femalenum
: roles[i].malenum);
return (roles[i].femalenum != NON_PM) ? roles[i].femalenum
: roles[i].malenum;
}
}
return NON_PM;
@@ -251,14 +253,13 @@ botl_score()
utotal = money_cnt(invent) + hidden_gold();
if ((utotal -= u.umoney0) < 0L)
utotal = 0L;
utotal +=
u.urexp + (50 * (deepest - 1))
+ (deepest > 30 ? 10000 : deepest > 20 ? 1000 * (deepest - 20) : 0);
utotal += u.urexp + (50 * (deepest - 1))
+ (deepest > 30 ? 10000 : deepest > 20 ? 1000 * (deepest - 20) : 0);
if (utotal < u.urexp)
utotal = LONG_MAX; /* wrap around */
return utotal;
}
#endif
#endif /* SCORE_ON_BOTL */
/* provide the name of the current level for display by various ports */
int
@@ -267,7 +268,7 @@ char *buf;
{
int ret = 1;
/* TODO: Add in dungeon name */
/* TODO: Add in dungeon name */
if (Is_knox(&u.uz))
Sprintf(buf, "%s ", dungeons[u.uz.dnum].dname);
else if (In_quest(&u.uz))
@@ -304,35 +305,37 @@ STATIC_OVL int FDECL(percentage, (struct istat_s *, struct istat_s *));
STATIC_OVL int FDECL(compare_blstats, (struct istat_s *, struct istat_s *));
#ifdef STATUS_HILITES
STATIC_DCL boolean FDECL(assign_hilite, (char *, char *, char *, char *, BOOLEAN_P));
STATIC_DCL boolean FDECL(assign_hilite, (char *, char *, char *, char *,
BOOLEAN_P));
STATIC_DCL const char *FDECL(clridx_to_s, (char *, int));
#endif
/* If entries are added to this, botl.h will require updating too */
STATIC_DCL struct istat_s initblstats[MAXBLSTATS] = {
{ 0L, ANY_STR, {(genericptr_t)0L}, (char *)0, 80, 0, BL_TITLE},
{ 0L, ANY_INT, {(genericptr_t)0L}, (char *)0, 10, 0, BL_STR},
{ 0L, ANY_INT, {(genericptr_t)0L}, (char *)0, 10, 0, BL_DX},
{ 0L, ANY_INT, {(genericptr_t)0L}, (char *)0, 10, 0, BL_CO},
{ 0L, ANY_INT, {(genericptr_t)0L}, (char *)0, 10, 0, BL_IN},
{ 0L, ANY_INT, {(genericptr_t)0L}, (char *)0, 10, 0, BL_WI},
{ 0L, ANY_INT, {(genericptr_t)0L}, (char *)0, 10, 0, BL_CH},
{ 0L, ANY_STR, {(genericptr_t)0L}, (char *)0, 40, 0, BL_ALIGN},
{ 0L, ANY_LONG, {(genericptr_t)0L}, (char *)0, 20, 0, BL_SCORE},
{ 0L, ANY_LONG, {(genericptr_t)0L}, (char *)0, 20, 0, BL_CAP},
{ 0L, ANY_LONG, {(genericptr_t)0L}, (char *)0, 30, 0, BL_GOLD},
{ 0L, ANY_INT, {(genericptr_t)0L}, (char *)0, 10, BL_ENEMAX, BL_ENE},
{ 0L, ANY_INT, {(genericptr_t)0L}, (char *)0, 10, 0, BL_ENEMAX},
{ 0L, ANY_LONG, {(genericptr_t)0L}, (char *)0, 10, 0, BL_XP},
{ 0L, ANY_INT, {(genericptr_t)0L}, (char *)0, 10, 0, BL_AC},
{ 0L, ANY_INT, {(genericptr_t)0L}, (char *)0, 10, 0, BL_HD},
{ 0L, ANY_INT, {(genericptr_t)0L}, (char *)0, 20, 0, BL_TIME},
{ 0L, ANY_UINT, {(genericptr_t)0L}, (char *)0, 40, 0, BL_HUNGER},
{ 0L, ANY_INT, {(genericptr_t)0L}, (char *)0, 10, BL_HPMAX, BL_HP},
{ 0L, ANY_INT, {(genericptr_t)0L}, (char *)0, 10, 0, BL_HPMAX},
{ 0L, ANY_STR, {(genericptr_t)0L}, (char *)0, 80, 0, BL_LEVELDESC},
{ 0L, ANY_LONG, {(genericptr_t)0L}, (char *)0, 20, 0, BL_EXP},
{ 0L, ANY_MASK32,{(genericptr_t)0L},(char *)0, 0, 0, BL_CONDITION}
{ 0L, ANY_STR, { (genericptr_t) 0 }, (char *) 0, 80, 0, BL_TITLE},
{ 0L, ANY_INT, { (genericptr_t) 0 }, (char *) 0, 10, 0, BL_STR},
{ 0L, ANY_INT, { (genericptr_t) 0 }, (char *) 0, 10, 0, BL_DX},
{ 0L, ANY_INT, { (genericptr_t) 0 }, (char *) 0, 10, 0, BL_CO},
{ 0L, ANY_INT, { (genericptr_t) 0 }, (char *) 0, 10, 0, BL_IN},
{ 0L, ANY_INT, { (genericptr_t) 0 }, (char *) 0, 10, 0, BL_WI},
{ 0L, ANY_INT, { (genericptr_t) 0 }, (char *) 0, 10, 0, BL_CH},
{ 0L, ANY_STR, { (genericptr_t) 0 }, (char *) 0, 40, 0, BL_ALIGN},
{ 0L, ANY_LONG, { (genericptr_t) 0 }, (char *) 0, 20, 0, BL_SCORE},
{ 0L, ANY_LONG, { (genericptr_t) 0 }, (char *) 0, 20, 0, BL_CAP},
{ 0L, ANY_LONG, { (genericptr_t) 0 }, (char *) 0, 30, 0, BL_GOLD},
{ 0L, ANY_INT, { (genericptr_t) 0 }, (char *) 0, 10, BL_ENEMAX, BL_ENE},
{ 0L, ANY_INT, { (genericptr_t) 0 }, (char *) 0, 10, 0, BL_ENEMAX},
{ 0L, ANY_LONG, { (genericptr_t) 0 }, (char *) 0, 10, 0, BL_XP},
{ 0L, ANY_INT, { (genericptr_t) 0 }, (char *) 0, 10, 0, BL_AC},
{ 0L, ANY_INT, { (genericptr_t) 0 }, (char *) 0, 10, 0, BL_HD},
{ 0L, ANY_INT, { (genericptr_t) 0 }, (char *) 0, 20, 0, BL_TIME},
{ 0L, ANY_UINT, { (genericptr_t) 0 }, (char *) 0, 40, 0, BL_HUNGER},
{ 0L, ANY_INT, { (genericptr_t) 0 }, (char *) 0, 10, BL_HPMAX, BL_HP},
{ 0L, ANY_INT, { (genericptr_t) 0 }, (char *) 0, 10, 0, BL_HPMAX},
{ 0L, ANY_STR, { (genericptr_t) 0 }, (char *) 0, 80, 0, BL_LEVELDESC},
{ 0L, ANY_LONG, { (genericptr_t) 0 }, (char *) 0, 20, 0, BL_EXP},
{ 0L, ANY_MASK32,
{ (genericptr_t) 0 }, (char *) 0, 0, 0, BL_CONDITION}
};
static struct fieldid_t {
@@ -576,7 +579,8 @@ bot()
for (i = 0; i < MAXBLSTATS; i++) {
if (((i == BL_SCORE) && !flags.showscore)
|| ((i == BL_EXP) && !flags.showexp)
|| ((i == BL_TIME) && !flags.time) || ((i == BL_HD) && !Upolyd)
|| ((i == BL_TIME) && !flags.time)
|| ((i == BL_HD) && !Upolyd)
|| ((i == BL_XP || i == BL_EXP) && Upolyd))
continue;
anytype = blstats[idx][i].anytype;
@@ -685,7 +689,7 @@ boolean
fieldfmt = " S:%s";
fieldname = "score";
status_enablefield(fld, fieldname, fieldfmt,
(!flags.showscore) ? FALSE : TRUE);
(!flags.showscore) ? FALSE : TRUE);
break;
case BL_CAP:
fieldfmt = " %s";
@@ -764,7 +768,7 @@ boolean
case BL_FLUSH:
default:
break;
}
}
}
update_all = TRUE;
}
@@ -1134,7 +1138,7 @@ boolean from_configfile;
threshold.a_void = 0;
/* Example:
* hilite_status: hitpoints/10%/red/normal
* hilite_status: hitpoints/10%/red/normal
*/
/* field name to statusfield */
@@ -1505,11 +1509,12 @@ status_hilite_menu()
char prompt[QBUFSZ];
/* j == 0 below, j == 1 above */
menu_item *pick2 = (menu_item *) 0;
Sprintf(prompt, "Display how when %s?", j ? above : below);
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin);
for (k = -3; k < CLR_MAX; ++k) {
/* if (k == -1) continue; */
/* if (k == -1) continue; */
any = zeroany;
any.a_int = (k >= 0) ? k + 1 : k;
if (k > 0)

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 cmd.c $NHDT-Date: 1446369464 2015/11/01 09:17:44 $ $NHDT-Branch: master $:$NHDT-Revision: 1.205 $ */
/* NetHack 3.6 cmd.c $NHDT-Date: 1446975462 2015/11/08 09:37:42 $ $NHDT-Branch: master $:$NHDT-Revision: 1.206 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -145,14 +145,14 @@ STATIC_PTR int NDECL(wiz_migrate_mons);
#endif
STATIC_DCL int FDECL(size_monst, (struct monst *));
STATIC_DCL int FDECL(size_obj, (struct obj *));
STATIC_DCL void FDECL(count_obj,
(struct obj *, long *, long *, BOOLEAN_P, BOOLEAN_P));
STATIC_DCL void FDECL(obj_chain,
(winid, const char *, struct obj *, long *, long *));
STATIC_DCL void FDECL(mon_invent_chain,
(winid, const char *, struct monst *, long *, long *));
STATIC_DCL void FDECL(mon_chain,
(winid, const char *, struct monst *, long *, long *));
STATIC_DCL void FDECL(count_obj, (struct obj *, long *, long *,
BOOLEAN_P, BOOLEAN_P));
STATIC_DCL void FDECL(obj_chain, (winid, const char *, struct obj *,
long *, long *));
STATIC_DCL void FDECL(mon_invent_chain, (winid, const char *, struct monst *,
long *, long *));
STATIC_DCL void FDECL(mon_chain, (winid, const char *, struct monst *,
long *, long *));
STATIC_DCL void FDECL(contained, (winid, const char *, long *, long *));
STATIC_PTR int NDECL(wiz_show_stats);
STATIC_DCL boolean FDECL(accept_menu_prefix, (int NDECL((*))));
@@ -269,13 +269,13 @@ popch()
}
char
pgetchar()
{ /* courtesy of aeb@cwi.nl */
pgetchar() /* courtesy of aeb@cwi.nl */
{
register int ch;
if (!(ch = popch()))
ch = nhgetch();
return ((char) ch);
return (char) ch;
}
/* A ch == 0 resets the pushq */
@@ -306,8 +306,9 @@ char ch;
return;
}
/* here after # - now read a full-word command */
STATIC_PTR int
doextcmd(VOID_ARGS) /* here after # - now read a full-word command */
doextcmd(VOID_ARGS)
{
int idx, retval;
int NDECL((*func));
@@ -361,9 +362,11 @@ doextlist(VOID_ARGS)
* controlled via runtime option 'extmenu'.
* ``# ?'' is counted towards the limit of the number of commands,
* so we actually support MAX_EXT_CMD-1 "real" extended commands.
*
* Here after # - now show pick-list of possible commands.
*/
int
extcmd_via_menu() /* here after # - now show pick-list of possible commands */
extcmd_via_menu()
{
const struct ext_func_tab *efp;
menu_item *pick_list = (menu_item *) 0;
@@ -1169,8 +1172,10 @@ doterrain(VOID_ARGS)
* n == 2: another entry was explicitly chosen, so skip preselected one.
*/
which = (n < 0) ? -1 : (n == 0) ? 1 : sel[0].item.a_int;
if (n > 1 && which == 1) which = sel[1].item.a_int;
if (n > 0) free((genericptr_t)sel);
if (n > 1 && which == 1)
which = sel[1].item.a_int;
if (n > 0)
free((genericptr_t) sel);
switch (which) {
case 1: reveal_terrain(0, 0); break; /* known map */
@@ -2367,7 +2372,7 @@ minimal_enlightenment()
genidx = is_neuter(youmonst.data) ? 2 : flags.female;
Sprintf(buf, fmtstr, "gender", genders[genidx].adj);
add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE, buf, FALSE);
if (Upolyd && (int)u.mfemale != genidx) {
if (Upolyd && (int) u.mfemale != genidx) {
Sprintf(buf, fmtstr, "gender (base)", genders[u.mfemale].adj);
add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE, buf, FALSE);
}

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 decl.c $NHDT-Date: 1432512771 2015/05/25 00:12:51 $ $NHDT-Branch: master $:$NHDT-Revision: 1.60 $ */
/* NetHack 3.6 decl.c $NHDT-Date: 1446975463 2015/11/08 09:37:43 $ $NHDT-Branch: master $:$NHDT-Revision: 1.62 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -33,8 +33,8 @@ int otg_temp; /* used by object_to_glyph() [otg] */
NEARDATA int in_doagain = 0;
/*
* The following structure will be initialized at startup time with
* the level numbers of some "important" things in the game.
* The following structure will be initialized at startup time with
* the level numbers of some "important" things in the game.
*/
struct dgn_topology dungeon_topology = { DUMMY };
@@ -156,9 +156,10 @@ NEARDATA struct obj
*ublindf = (struct obj *) 0, *uchain = (struct obj *) 0,
*uball = (struct obj *) 0;
/* some objects need special handling during destruction or placement */
NEARDATA struct obj *current_wand = 0, /* wand currently zapped/applied */
*thrownobj = 0, /* object in flight due to throwing */
*kickedobj = 0; /* object in flight due to kicking */
NEARDATA struct obj
*current_wand = 0, /* wand currently zapped/applied */
*thrownobj = 0, /* object in flight due to throwing */
*kickedobj = 0; /* object in flight due to kicking */
#ifdef TEXTCOLOR
/*
@@ -328,7 +329,7 @@ NEARDATA struct savefile_info sfrestinfo, sfsaveinfo = {
#endif
};
struct plinemsg_type *plinemsg_types = NULL;
struct plinemsg_type *plinemsg_types = (struct plinemsg_type *) 0;
#ifdef PANICTRACE
char *ARGV0;

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 dlb.c $NHDT-Date: 1432512767 2015/05/25 00:12:47 $ $NHDT-Branch: master $:$NHDT-Revision: 1.14 $ */
/* NetHack 3.6 dlb.c $NHDT-Date: 1446975464 2015/11/08 09:37:44 $ $NHDT-Branch: master $:$NHDT-Revision: 1.15 $ */
/* Copyright (c) Kenneth Lorber, Bethesda, Maryland, 1993. */
/* NetHack may be freely redistributed. See license for details. */
@@ -93,23 +93,23 @@ extern char *FDECL(eos, (char *));
* Library file structure:
*
* HEADER:
* %3ld library FORMAT revision (currently rev 1)
* %1c space
* %8ld # of files in archive (includes 1 for directory)
* %1c space
* %8ld size of allocation for string space for directory names
* %1c space
* %8ld library offset - sanity check - lseek target for start of first file
* %1c space
* %8ld size - sanity check - byte size of complete archive file
* %3ld library FORMAT revision (currently rev 1)
* %1c space
* %8ld # of files in archive (includes 1 for directory)
* %1c space
* %8ld size of allocation for string space for directory names
* %1c space
* %8ld library offset - sanity check - lseek target for start of first file
* %1c space
* %8ld size - sanity check - byte size of complete archive file
*
* followed by one DIRECTORY entry for each file in the archive, including
* the directory itself:
* %1c handling information (compression, etc.) Always ' ' in rev 1.
* %s file name
* %1c space
* %8ld offset in archive file of start of this file
* %c newline
* %1c handling information (compression, etc.) Always ' ' in rev 1.
* %s file name
* %1c space
* %8ld offset in archive file of start of this file
* %c newline
*
* followed by the contents of the files
*/

111
src/do.c
View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 do.c $NHDT-Date: 1437877173 2015/07/26 02:19:33 $ $NHDT-Branch: master $:$NHDT-Revision: 1.147 $ */
/* NetHack 3.6 do.c $NHDT-Date: 1446975464 2015/11/08 09:37:44 $ $NHDT-Branch: master $:$NHDT-Revision: 1.149 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -223,7 +223,7 @@ const char *verb;
* obj to null. */
(void) obj_meld(&obj, &otmp);
}
return (obj == NULL);
return (boolean) (obj == NULL);
}
return FALSE;
}
@@ -265,8 +265,8 @@ register struct obj *obj;
docall(obj);
}
/** Transforms the sink at the player's position into
* a fountain, throne, altar or grave. */
/* Transforms the sink at the player's position into
a fountain, throne, altar or grave. */
STATIC_DCL void
polymorph_sink()
{
@@ -299,8 +299,8 @@ polymorph_sink()
newsym(u.ux, u.uy);
}
/** Teleports the sink at the player's position.
* @return TRUE if sink teleported */
/* Teleports the sink at the player's position;
return True if sink teleported. */
STATIC_DCL boolean
teleport_sink()
{
@@ -308,14 +308,16 @@ teleport_sink()
int cnt = 0;
struct trap *trp;
struct engr *eng;
do {
cx = rnd(COLNO - 1);
cy = rn2(ROWNO);
trp = t_at(cx, cy);
eng = engr_at(cx, cy);
} while ((levl[cx][cy].typ != ROOM || trp || eng || cansee(cx, cy))
&& (cnt++ < 200));
if ((levl[cx][cy].typ == ROOM) && !trp && !eng) {
&& cnt++ < 200);
if (levl[cx][cy].typ == ROOM && !trp && !eng) {
/* create sink at new position */
levl[cx][cy].typ = SINK;
levl[cx][cy].looted = levl[u.ux][u.uy].looted;
@@ -468,6 +470,7 @@ register struct obj *obj;
trycall(obj);
else if (!nosink)
You_hear("the ring bouncing down the drainpipe.");
if (!rn2(20) && !nosink) {
pline_The("sink backs up, leaving %s.", doname(obj));
obj->in_use = FALSE;
@@ -485,7 +488,7 @@ const char *word;
if (obj->owornmask & (W_ARMOR | W_ACCESSORY)) {
if (*word)
Norep("You cannot %s %s you are wearing.", word, something);
return (FALSE);
return FALSE;
}
if (obj->otyp == LOADSTONE && obj->cursed) {
/* getobj() kludge sets corpsenm to user's specified count
@@ -500,19 +503,19 @@ const char *word;
}
obj->corpsenm = 0; /* reset */
obj->bknown = 1;
return (FALSE);
return FALSE;
}
if (obj->otyp == LEASH && obj->leashmon != 0) {
if (*word)
pline_The("leash is tied around your %s.", body_part(HAND));
return (FALSE);
return FALSE;
}
if (obj->owornmask & W_SADDLE) {
if (*word)
You("cannot %s %s you are sitting on.", word, something);
return (FALSE);
return FALSE;
}
return (TRUE);
return TRUE;
}
STATIC_PTR int
@@ -520,13 +523,13 @@ drop(obj)
register struct obj *obj;
{
if (!obj)
return (0);
return 0;
if (!canletgo(obj, "drop"))
return (0);
return 0;
if (obj == uwep) {
if (welded(uwep)) {
weldmsg(obj);
return (0);
return 0;
}
setuwep((struct obj *) 0);
}
@@ -551,7 +554,7 @@ register struct obj *obj;
if ((obj->oclass == RING_CLASS || obj->otyp == MEAT_RING)
&& IS_SINK(levl[u.ux][u.uy].typ)) {
dosinkring(obj);
return (1);
return 1;
}
if (!can_reach_floor(TRUE)) {
/* we might be levitating due to #invoke Heart of Ahriman;
@@ -570,13 +573,13 @@ register struct obj *obj;
hitfloor(obj);
if (levhack)
float_down(I_SPECIAL | TIMEOUT, W_ARTI | W_ART);
return (1);
return 1;
}
if (!IS_ALTAR(levl[u.ux][u.uy].typ) && flags.verbose)
You("drop %s.", doname(obj));
}
dropx(obj);
return (1);
return 1;
}
/* dropx - take dropped item out of inventory;
@@ -776,10 +779,10 @@ int retry;
* Dropping a burning potion of oil while levitating can cause
* an explosion which might destroy some of hero's inventory,
* so the old code
* for (otmp = invent; otmp; otmp = otmp2) {
* otmp2 = otmp->nobj;
* n_dropped += drop(otmp);
* }
* for (otmp = invent; otmp; otmp = otmp2) {
* otmp2 = otmp->nobj;
* n_dropped += drop(otmp);
* }
* was unreliable and could lead to an "object lost" panic.
*
* Use the bypass bit to mark items already processed (hence
@@ -844,6 +847,7 @@ drop_done:
/* on a ladder, used in goto_level */
static NEARDATA boolean at_ladder = FALSE;
/* the '>' command */
int
dodown()
{
@@ -900,20 +904,20 @@ dodown()
floating_above(stairs_down ? "stairs" : ladder_down
? "ladder"
: surface(u.ux, u.uy));
return (0); /* didn't move */
return 0; /* didn't move */
}
if (!stairs_down && !ladder_down) {
trap = t_at(u.ux, u.uy);
if (trap && uteetering_at_seen_pit(trap)) {
dotrap(trap, TOOKPLUNGE);
return (1);
return 1;
} else if (!trap || (trap->ttyp != TRAPDOOR && trap->ttyp != HOLE)
|| !Can_fall_thru(&u.uz) || !trap->tseen) {
if (flags.autodig && !context.nopick && uwep && is_pick(uwep)) {
return use_pick_axe2(uwep);
} else {
You_cant("go down here.");
return (0);
return 0;
}
}
}
@@ -922,13 +926,13 @@ dodown()
!u.uswallow ? "being held" : is_animal(u.ustuck->data)
? "swallowed"
: "engulfed");
return (1);
return 1;
}
if (on_level(&valley_level, &u.uz) && !u.uevent.gehennom_entered) {
You("are standing at the gate to Gehennom.");
pline("Unspeakable cruelty and harm lurk down there.");
if (yn("Are you sure you want to enter?") != 'y')
return (0);
return 0;
else
pline("So be it.");
u.uevent.gehennom_entered = 1; /* don't ask again */
@@ -936,7 +940,7 @@ dodown()
if (!next_to_u()) {
You("are held back by your pet!");
return (0);
return 0;
}
if (trap)
@@ -946,13 +950,14 @@ dodown()
if (trap && Is_stronghold(&u.uz)) {
goto_hell(FALSE, TRUE);
} else {
at_ladder = (boolean)(levl[u.ux][u.uy].typ == LADDER);
at_ladder = (boolean) (levl[u.ux][u.uy].typ == LADDER);
next_level(!trap);
at_ladder = FALSE;
}
return (1);
return 1;
}
/* the '<' command */
int
doup()
{
@@ -970,36 +975,36 @@ doup()
&& (!sstairs.sx || u.ux != sstairs.sx || u.uy != sstairs.sy
|| !sstairs.up)) {
You_cant("go up here.");
return (0);
return 0;
}
if (stucksteed(TRUE)) {
return (0);
return 0;
}
if (u.ustuck) {
You("are %s, and cannot go up.",
!u.uswallow ? "being held" : is_animal(u.ustuck->data)
? "swallowed"
: "engulfed");
return (1);
return 1;
}
if (near_capacity() > SLT_ENCUMBER) {
/* No levitation check; inv_weight() already allows for it */
Your("load is too heavy to climb the %s.",
levl[u.ux][u.uy].typ == STAIRS ? "stairs" : "ladder");
return (1);
return 1;
}
if (ledger_no(&u.uz) == 1) {
if (yn("Beware, there will be no return! Still climb?") != 'y')
return (0);
return 0;
}
if (!next_to_u()) {
You("are held back by your pet!");
return (0);
return 0;
}
at_ladder = (boolean)(levl[u.ux][u.uy].typ == LADDER);
at_ladder = (boolean) (levl[u.ux][u.uy].typ == LADDER);
prev_level(TRUE);
at_ladder = FALSE;
return (1);
return 1;
}
d_level save_dlevel = { 0, 0 };
@@ -1109,12 +1114,12 @@ boolean at_stairs, falling, portal;
* due to overlooking the effect of the call to assign_rnd_lvl().)
*
* Odds for making it to the next level up, or of being sent down:
* "up" L N C
* +1 75.0 75.0 75.0
* 0 6.25 8.33 12.5
* -1 11.46 12.50 12.5
* -2 5.21 4.17 0.0
* -3 2.08 0.0 0.0
* "up" L N C
* +1 75.0 75.0 75.0
* 0 6.25 8.33 12.5
* -1 11.46 12.50 12.5
* -2 5.21 4.17 0.0
* -3 2.08 0.0 0.0
*/
if (Inhell && up && u.uhave.amulet && !newdungeon && !portal
&& (dunlev(&u.uz) < dunlevs_in_dungeon(&u.uz) - 3)) {
@@ -1521,8 +1526,8 @@ final_level()
gain_guardian_angel();
}
static char *dfr_pre_msg = 0, /* pline() before level change */
*dfr_post_msg = 0; /* pline() after level change */
static char *dfr_pre_msg = 0, /* pline() before level change */
*dfr_post_msg = 0; /* pline() after level change */
/* change levels at the end of this turn, after monsters finish moving */
void
@@ -1728,7 +1733,7 @@ long timeout UNUSED;
int
donull()
{
return (1); /* Do nothing, but let other things happen */
return 1; /* Do nothing, but let other things happen */
}
STATIC_PTR int
@@ -1749,12 +1754,12 @@ wipeoff(VOID_ARGS)
Blinded = 1;
make_blinded(0L, TRUE);
}
return (0);
return 0;
} else if (!u.ucreamed) {
Your("%s feels clean now.", body_part(FACE));
return (0);
return 0;
}
return (1); /* still busy */
return 1; /* still busy */
}
int
@@ -1768,10 +1773,10 @@ dowipe()
/* Not totally correct; what if they change back after now
* but before they're finished wiping?
*/
return (1);
return 1;
}
Your("%s is already clean.", body_part(FACE));
return (1);
return 1;
}
void

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 dothrow.c $NHDT-Date: 1445301122 2015/10/20 00:32:02 $ $NHDT-Branch: master $:$NHDT-Revision: 1.111 $ */
/* NetHack 3.6 dothrow.c $NHDT-Date: 1446975465 2015/11/08 09:37:45 $ $NHDT-Branch: master $:$NHDT-Revision: 1.113 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -12,8 +12,8 @@ STATIC_DCL void NDECL(autoquiver);
STATIC_DCL int FDECL(gem_accept, (struct monst *, struct obj *));
STATIC_DCL void FDECL(tmiss, (struct obj *, struct monst *, BOOLEAN_P));
STATIC_DCL int FDECL(throw_gold, (struct obj *));
STATIC_DCL void FDECL(check_shop_obj,
(struct obj *, XCHAR_P, XCHAR_P, BOOLEAN_P));
STATIC_DCL void FDECL(check_shop_obj, (struct obj *, XCHAR_P, XCHAR_P,
BOOLEAN_P));
STATIC_DCL void FDECL(breakmsg, (struct obj *, BOOLEAN_P));
STATIC_DCL boolean FDECL(toss_up, (struct obj *, BOOLEAN_P));
STATIC_DCL boolean FDECL(throwing_weapon, (struct obj *));
@@ -66,22 +66,22 @@ int shotlimit;
* possibly using a sling.
*/
if (obj->oclass == COIN_CLASS && obj != uquiver)
return (throw_gold(obj));
return throw_gold(obj);
if (!canletgo(obj, "throw"))
return (0);
return 0;
if (obj->oartifact == ART_MJOLLNIR && obj != uwep) {
pline("%s must be wielded before it can be thrown.", The(xname(obj)));
return (0);
return 0;
}
if ((obj->oartifact == ART_MJOLLNIR && ACURR(A_STR) < STR19(25))
|| (obj->otyp == BOULDER && !throws_rocks(youmonst.data))) {
pline("It's too heavy.");
return (1);
return 1;
}
if (!u.dx && !u.dy && !u.dz) {
You("cannot throw an object at yourself.");
return (0);
return 0;
}
u_wipe_engr(2);
if (!uarmg && obj->otyp == CORPSE && touch_petrifies(&mons[obj->corpsenm])
@@ -516,12 +516,12 @@ genericptr_t arg;
* your movements at the time.
*
* Possible additions/changes:
* o really attack monster if we hit one
* o set stunned if we hit a wall or door
* o reset nomul when we stop
* o creepy feeling if pass through monster (if ever implemented...)
* o bounce off walls
* o let jumps go over boulders
* o really attack monster if we hit one
* o set stunned if we hit a wall or door
* o reset nomul when we stop
* o creepy feeling if pass through monster (if ever implemented...)
* o bounce off walls
* o let jumps go over boulders
*/
boolean
hurtle_step(arg, x, y)
@@ -1449,7 +1449,7 @@ register struct obj *obj; /* thrownobj or kickedobj or uwep */
}
return 1; /* caller doesn't need to place it */
}
return (0);
return 0;
}
if (obj->oclass == WEAPON_CLASS || is_weptool(obj)
@@ -1675,7 +1675,7 @@ nopick:
pline1(buf);
if (!tele_restrict(mon))
(void) rloc(mon, TRUE);
return (ret);
return ret;
}
/*
@@ -1927,7 +1927,7 @@ struct obj *obj;
if (!u.dx && !u.dy && !u.dz) {
You("cannot throw gold at yourself.");
return (0);
return 0;
}
freeinv(obj);
if (u.uswallow) {
@@ -1935,7 +1935,7 @@ struct obj *obj;
: "%s into %s.",
"The money disappears", mon_nam(u.ustuck));
add_to_minv(u.ustuck, obj);
return (1);
return 1;
}
if (u.dz) {
@@ -1977,7 +1977,7 @@ struct obj *obj;
}
if (flooreffects(obj, bhitpos.x, bhitpos.y, "fall"))
return (1);
return 1;
if (u.dz > 0)
pline_The("gold hits the %s.", surface(bhitpos.x, bhitpos.y));
place_object(obj, bhitpos.x, bhitpos.y);
@@ -1985,7 +1985,7 @@ struct obj *obj;
sellobj(obj, bhitpos.x, bhitpos.y);
stackobj(obj);
newsym(bhitpos.x, bhitpos.y);
return (1);
return 1;
}
/*dothrow.c*/

View File

@@ -1,5 +1,5 @@
/* NetHack 3.6 drawing.c $NHDT-Date: 1432512765 2015/05/25 00:12:45 $ $NHDT-Branch: master $:$NHDT-Revision: 1.45 $ */
/* Copyright (c) NetHack Development Team 1992. */
/* NetHack 3.6 drawing.c $NHDT-Date: 1446975466 2015/11/08 09:37:46 $ $NHDT-Branch: master $:$NHDT-Revision: 1.48 $ */
/* Copyright (c) NetHack Development Team 1992. */
/* NetHack may be freely redistributed. See license for details. */
#include "hack.h"
@@ -120,142 +120,140 @@ const struct class_sym def_monsyms[MAXMCLASSES] = {
};
const struct symdef def_warnsyms[WARNCOUNT] = {
{ '0', "unknown creature causing you worry",
C(CLR_WHITE) }, /* white warning */
{ '1', "unknown creature causing you concern",
C(CLR_RED) }, /* pink warning */
{ '2', "unknown creature causing you anxiety",
C(CLR_RED) }, /* red warning */
{ '3', "unknown creature causing you disquiet",
C(CLR_RED) }, /* ruby warning */
{ '4', "unknown creature causing you alarm",
C(CLR_MAGENTA) }, /* purple warning */
{ '5', "unknown creature causing you dread",
C(CLR_BRIGHT_MAGENTA) } /* black warning */
/* white warning */
{ '0', "unknown creature causing you worry", C(CLR_WHITE) },
/* pink warning */
{ '1', "unknown creature causing you concern", C(CLR_RED) },
/* red warning */
{ '2', "unknown creature causing you anxiety", C(CLR_RED) },
/* ruby warning */
{ '3', "unknown creature causing you disquiet", C(CLR_RED) },
/* purple warning */
{ '4', "unknown creature causing you alarm", C(CLR_MAGENTA) },
/* black warning */
{ '5', "unknown creature causing you dread", C(CLR_BRIGHT_MAGENTA) },
};
/*
* Default screen symbols with explanations and colors.
*/
const struct symdef defsyms[MAXPCHARS] = {
/* 0*/ { ' ', "dark part of a room", C(NO_COLOR) }, /* stone */
{ '|', "wall", C(CLR_GRAY) }, /* vwall */
{ '-', "wall", C(CLR_GRAY) }, /* hwall */
{ '-', "wall", C(CLR_GRAY) }, /* tlcorn */
{ '-', "wall", C(CLR_GRAY) }, /* trcorn */
{ '-', "wall", C(CLR_GRAY) }, /* blcorn */
{ '-', "wall", C(CLR_GRAY) }, /* brcorn */
{ '-', "wall", C(CLR_GRAY) }, /* crwall */
{ '-', "wall", C(CLR_GRAY) }, /* tuwall */
{ '-', "wall", C(CLR_GRAY) }, /* tdwall */
/*10*/ { '|', "wall", C(CLR_GRAY) }, /* tlwall */
{ '|', "wall", C(CLR_GRAY) }, /* trwall */
{ '.', "doorway", C(CLR_GRAY) }, /* ndoor */
{ '-', "open door", C(CLR_BROWN) }, /* vodoor */
{ '|', "open door", C(CLR_BROWN) }, /* hodoor */
{ '+', "closed door", C(CLR_BROWN) }, /* vcdoor */
{ '+', "closed door", C(CLR_BROWN) }, /* hcdoor */
{ '#', "iron bars", C(HI_METAL) }, /* bars */
{ '#', "tree", C(CLR_GREEN) }, /* tree */
{ '.', "floor of a room", C(CLR_GRAY) }, /* room */
/*20*/ { '.', "dark part of a room", C(CLR_BLACK) }, /* dark room */
{ '#', "corridor", C(CLR_GRAY) }, /* dark corr */
{ '#', "lit corridor", C(CLR_GRAY) }, /* lit corr (see mapglyph.c) */
{ '<', "staircase up", C(CLR_GRAY) }, /* upstair */
{ '>', "staircase down", C(CLR_GRAY) }, /* dnstair */
{ '<', "ladder up", C(CLR_BROWN) }, /* upladder */
{ '>', "ladder down", C(CLR_BROWN) }, /* dnladder */
{ '_', "altar", C(CLR_GRAY) }, /* altar */
{ '|', "grave", C(CLR_GRAY) }, /* grave */
{ '\\', "opulent throne", C(HI_GOLD) }, /* throne */
/*30*/ { '#', "sink", C(CLR_GRAY) }, /* sink */
{ '{', "fountain", C(CLR_BLUE) }, /* fountain */
{ '}', "water", C(CLR_BLUE) }, /* pool */
{ '.', "ice", C(CLR_CYAN) }, /* ice */
{ '}', "molten lava", C(CLR_RED) }, /* lava */
{ '.', "lowered drawbridge", C(CLR_BROWN) }, /* vodbridge */
{ '.', "lowered drawbridge", C(CLR_BROWN) }, /* hodbridge */
{ '#', "raised drawbridge", C(CLR_BROWN) }, /* vcdbridge */
{ '#', "raised drawbridge", C(CLR_BROWN) }, /* hcdbridge */
{ ' ', "air", C(CLR_CYAN) }, /* open air */
/*40*/ { '#', "cloud", C(CLR_GRAY) }, /* [part of] a cloud */
{ '}', "water", C(CLR_BLUE) }, /* under water */
{ '^', "arrow trap", C(HI_METAL) }, /* trap */
{ '^', "dart trap", C(HI_METAL) }, /* trap */
{ '^', "falling rock trap", C(CLR_GRAY) }, /* trap */
{ '^', "squeaky board", C(CLR_BROWN) }, /* trap */
{ '^', "bear trap", C(HI_METAL) }, /* trap */
{ '^', "land mine", C(CLR_RED) }, /* trap */
{ '^', "rolling boulder trap", C(CLR_GRAY) }, /* trap */
{ '^', "sleeping gas trap", C(HI_ZAP) }, /* trap */
/*50*/ { '^', "rust trap", C(CLR_BLUE) }, /* trap */
{ '^', "fire trap", C(CLR_ORANGE) }, /* trap */
{ '^', "pit", C(CLR_BLACK) }, /* trap */
{ '^', "spiked pit", C(CLR_BLACK) }, /* trap */
{ '^', "hole", C(CLR_BROWN) }, /* trap */
{ '^', "trap door", C(CLR_BROWN) }, /* trap */
{ '^', "teleportation trap", C(CLR_MAGENTA) }, /* trap */
{ '^', "level teleporter", C(CLR_MAGENTA) }, /* trap */
{ '^', "magic portal", C(CLR_BRIGHT_MAGENTA) }, /* trap */
{ '"', "web", C(CLR_GRAY) }, /* web */
/*60*/ { '^', "statue trap", C(CLR_GRAY) }, /* trap */
{ '^', "magic trap", C(HI_ZAP) }, /* trap */
{ '^', "anti-magic field", C(HI_ZAP) }, /* trap */
{ '^', "polymorph trap", C(CLR_BRIGHT_GREEN) }, /* trap */
{ '^', "vibrating square", C(CLR_YELLOW) }, /* trap */
{ '|', "wall", C(CLR_GRAY) }, /* vbeam */
{ '-', "wall", C(CLR_GRAY) }, /* hbeam */
{ '\\', "wall", C(CLR_GRAY) }, /* lslant */
{ '/', "wall", C(CLR_GRAY) }, /* rslant */
{ '*', "", C(CLR_WHITE) }, /* dig beam */
{ '!', "", C(CLR_WHITE) }, /* camera flash beam */
{ ')', "", C(HI_WOOD) }, /* boomerang open left */
/*70*/ { '(', "", C(HI_WOOD) }, /* boomerang open right */
{ '0', "", C(HI_ZAP) }, /* 4 magic shield symbols */
{ '#', "", C(HI_ZAP) },
{ '@', "", C(HI_ZAP) },
{ '*', "", C(HI_ZAP) },
{ '#', "poison cloud",
C(CLR_BRIGHT_GREEN) }, /* [part of] a poison cloud */
{ '?', "valid position",
C(CLR_BRIGHT_GREEN) }, /* valid position for targeting */
{ '/', "", C(CLR_GREEN) }, /* swallow top left */
{ '-', "", C(CLR_GREEN) }, /* swallow top center */
{ '\\', "", C(CLR_GREEN) }, /* swallow top right */
/*80*/ { '|', "", C(CLR_GREEN) }, /* swallow middle left */
{ '|', "", C(CLR_GREEN) }, /* swallow middle right */
{ '\\', "", C(CLR_GREEN) }, /* swallow bottom left */
{ '-', "", C(CLR_GREEN) }, /* swallow bottom center*/
{ '/', "", C(CLR_GREEN) }, /* swallow bottom right */
{ '/', "", C(CLR_ORANGE) }, /* explosion top left */
{ '-', "", C(CLR_ORANGE) }, /* explosion top center */
{ '\\', "", C(CLR_ORANGE) }, /* explosion top right */
{ '|', "", C(CLR_ORANGE) }, /* explosion middle left */
{ ' ', "", C(CLR_ORANGE) }, /* explosion middle center*/
/*90*/ { '|', "", C(CLR_ORANGE) }, /* explosion middle right */
{ '\\', "", C(CLR_ORANGE) }, /* explosion bottom left */
{ '-', "", C(CLR_ORANGE) }, /* explosion bottom center*/
{ '/', "", C(CLR_ORANGE) }, /* explosion bottom right */
/* 0*/ { ' ', "dark part of a room", C(NO_COLOR) }, /* stone */
{ '|', "wall", C(CLR_GRAY) }, /* vwall */
{ '-', "wall", C(CLR_GRAY) }, /* hwall */
{ '-', "wall", C(CLR_GRAY) }, /* tlcorn */
{ '-', "wall", C(CLR_GRAY) }, /* trcorn */
{ '-', "wall", C(CLR_GRAY) }, /* blcorn */
{ '-', "wall", C(CLR_GRAY) }, /* brcorn */
{ '-', "wall", C(CLR_GRAY) }, /* crwall */
{ '-', "wall", C(CLR_GRAY) }, /* tuwall */
{ '-', "wall", C(CLR_GRAY) }, /* tdwall */
/*10*/ { '|', "wall", C(CLR_GRAY) }, /* tlwall */
{ '|', "wall", C(CLR_GRAY) }, /* trwall */
{ '.', "doorway", C(CLR_GRAY) }, /* ndoor */
{ '-', "open door", C(CLR_BROWN) }, /* vodoor */
{ '|', "open door", C(CLR_BROWN) }, /* hodoor */
{ '+', "closed door", C(CLR_BROWN) }, /* vcdoor */
{ '+', "closed door", C(CLR_BROWN) }, /* hcdoor */
{ '#', "iron bars", C(HI_METAL) }, /* bars */
{ '#', "tree", C(CLR_GREEN) }, /* tree */
{ '.', "floor of a room", C(CLR_GRAY) }, /* room */
/*20*/ { '.', "dark part of a room", C(CLR_BLACK) }, /* dark room */
{ '#', "corridor", C(CLR_GRAY) }, /* dark corr */
{ '#', "lit corridor", C(CLR_GRAY) }, /* lit corr (see mapglyph.c) */
{ '<', "staircase up", C(CLR_GRAY) }, /* upstair */
{ '>', "staircase down", C(CLR_GRAY) }, /* dnstair */
{ '<', "ladder up", C(CLR_BROWN) }, /* upladder */
{ '>', "ladder down", C(CLR_BROWN) }, /* dnladder */
{ '_', "altar", C(CLR_GRAY) }, /* altar */
{ '|', "grave", C(CLR_GRAY) }, /* grave */
{ '\\', "opulent throne", C(HI_GOLD) }, /* throne */
/*30*/ { '#', "sink", C(CLR_GRAY) }, /* sink */
{ '{', "fountain", C(CLR_BLUE) }, /* fountain */
{ '}', "water", C(CLR_BLUE) }, /* pool */
{ '.', "ice", C(CLR_CYAN) }, /* ice */
{ '}', "molten lava", C(CLR_RED) }, /* lava */
{ '.', "lowered drawbridge", C(CLR_BROWN) }, /* vodbridge */
{ '.', "lowered drawbridge", C(CLR_BROWN) }, /* hodbridge */
{ '#', "raised drawbridge", C(CLR_BROWN) }, /* vcdbridge */
{ '#', "raised drawbridge", C(CLR_BROWN) }, /* hcdbridge */
{ ' ', "air", C(CLR_CYAN) }, /* open air */
/*40*/ { '#', "cloud", C(CLR_GRAY) }, /* [part of] a cloud */
{ '}', "water", C(CLR_BLUE) }, /* under water */
{ '^', "arrow trap", C(HI_METAL) }, /* trap */
{ '^', "dart trap", C(HI_METAL) }, /* trap */
{ '^', "falling rock trap", C(CLR_GRAY) }, /* trap */
{ '^', "squeaky board", C(CLR_BROWN) }, /* trap */
{ '^', "bear trap", C(HI_METAL) }, /* trap */
{ '^', "land mine", C(CLR_RED) }, /* trap */
{ '^', "rolling boulder trap", C(CLR_GRAY) }, /* trap */
{ '^', "sleeping gas trap", C(HI_ZAP) }, /* trap */
/*50*/ { '^', "rust trap", C(CLR_BLUE) }, /* trap */
{ '^', "fire trap", C(CLR_ORANGE) }, /* trap */
{ '^', "pit", C(CLR_BLACK) }, /* trap */
{ '^', "spiked pit", C(CLR_BLACK) }, /* trap */
{ '^', "hole", C(CLR_BROWN) }, /* trap */
{ '^', "trap door", C(CLR_BROWN) }, /* trap */
{ '^', "teleportation trap", C(CLR_MAGENTA) }, /* trap */
{ '^', "level teleporter", C(CLR_MAGENTA) }, /* trap */
{ '^', "magic portal", C(CLR_BRIGHT_MAGENTA) }, /* trap */
{ '"', "web", C(CLR_GRAY) }, /* web */
/*60*/ { '^', "statue trap", C(CLR_GRAY) }, /* trap */
{ '^', "magic trap", C(HI_ZAP) }, /* trap */
{ '^', "anti-magic field", C(HI_ZAP) }, /* trap */
{ '^', "polymorph trap", C(CLR_BRIGHT_GREEN) }, /* trap */
{ '^', "vibrating square", C(CLR_YELLOW) }, /* trap */
{ '|', "wall", C(CLR_GRAY) }, /* vbeam */
{ '-', "wall", C(CLR_GRAY) }, /* hbeam */
{ '\\', "wall", C(CLR_GRAY) }, /* lslant */
{ '/', "wall", C(CLR_GRAY) }, /* rslant */
{ '*', "", C(CLR_WHITE) }, /* dig beam */
{ '!', "", C(CLR_WHITE) }, /* camera flash beam */
{ ')', "", C(HI_WOOD) }, /* boomerang open left */
/*70*/ { '(', "", C(HI_WOOD) }, /* boomerang open right */
{ '0', "", C(HI_ZAP) }, /* 4 magic shield symbols */
{ '#', "", C(HI_ZAP) },
{ '@', "", C(HI_ZAP) },
{ '*', "", C(HI_ZAP) },
{ '#', "poison cloud", C(CLR_BRIGHT_GREEN) }, /* part of a cloud */
{ '?', "valid position", C(CLR_BRIGHT_GREEN) }, /* target position */
{ '/', "", C(CLR_GREEN) }, /* swallow top left */
{ '-', "", C(CLR_GREEN) }, /* swallow top center */
{ '\\', "", C(CLR_GREEN) }, /* swallow top right */
/*80*/ { '|', "", C(CLR_GREEN) }, /* swallow middle left */
{ '|', "", C(CLR_GREEN) }, /* swallow middle right */
{ '\\', "", C(CLR_GREEN) }, /* swallow bottom left */
{ '-', "", C(CLR_GREEN) }, /* swallow bottom center */
{ '/', "", C(CLR_GREEN) }, /* swallow bottom right */
{ '/', "", C(CLR_ORANGE) }, /* explosion top left */
{ '-', "", C(CLR_ORANGE) }, /* explosion top center */
{ '\\', "", C(CLR_ORANGE) }, /* explosion top right */
{ '|', "", C(CLR_ORANGE) }, /* explosion middle left */
{ ' ', "", C(CLR_ORANGE) }, /* explosion middle center*/
/*90*/ { '|', "", C(CLR_ORANGE) }, /* explosion middle right */
{ '\\', "", C(CLR_ORANGE) }, /* explosion bottom left */
{ '-', "", C(CLR_ORANGE) }, /* explosion bottom center*/
{ '/', "", C(CLR_ORANGE) }, /* explosion bottom right */
};
/* default rogue level symbols */
static const uchar def_r_oc_syms[MAXOCLASSES] = {
/* 0*/ '\0', ILLOBJ_SYM, WEAPON_SYM, ']', /* armor */
RING_SYM,
/* 5*/ ',', /* amulet */
TOOL_SYM, ':', /* food */
POTION_SYM, SCROLL_SYM,
/*10*/ SPBOOK_SYM, WAND_SYM,
GEM_SYM, /* gold -- yes it's the same as gems */
GEM_SYM, ROCK_SYM,
/*15*/ BALL_SYM, CHAIN_SYM, VENOM_SYM
/* 0*/ '\0', ILLOBJ_SYM, WEAPON_SYM, ']', /* armor */
RING_SYM,
/* 5*/ ',', /* amulet */
TOOL_SYM, ':', /* food */
POTION_SYM, SCROLL_SYM,
/*10*/ SPBOOK_SYM, WAND_SYM,
GEM_SYM, /* gold -- yes it's the same as gems */
GEM_SYM, ROCK_SYM,
/*15*/ BALL_SYM, CHAIN_SYM, VENOM_SYM
};
#undef C
#ifdef TERMLIB
void NDECL((*decgraphics_mode_callback)) = 0; /* set in tty_start_screen() */
#endif /* TERMLIB */
#endif /* TERMLIB */
#ifdef PC9800
void NDECL((*ibmgraphics_mode_callback)) = 0; /* set in tty_start_screen() */
@@ -330,7 +328,7 @@ char ch;
* symbols from r_syms into showsyms.
*
* If arg is PRIMARY, this places the symbols
* from l_monsyms into showsyms.
* from l_monsyms into showsyms.
*
* update_l_symset()
* Update a member of the loadable (l_*) symbol set.
@@ -363,19 +361,17 @@ init_showsyms()
for (i = 0; i < MAXPCHARS; i++)
showsyms[i + SYM_OFF_P] = defsyms[i].sym;
for (i = 0; i < MAXOCLASSES; i++)
showsyms[i + SYM_OFF_O] = def_oc_syms[i].sym;
for (i = 0; i < MAXMCLASSES; i++)
showsyms[i + SYM_OFF_M] = def_monsyms[i].sym;
for (i = 0; i < WARNCOUNT; i++)
showsyms[i + SYM_OFF_W] = def_warnsyms[i].sym;
for (i = 0; i < MAXOTHER; i++) {
if (i == SYM_BOULDER)
showsyms[i + SYM_OFF_X] = iflags.bouldersym ? iflags.bouldersym : def_oc_syms[ROCK_CLASS].sym;
showsyms[i + SYM_OFF_X] = iflags.bouldersym
? iflags.bouldersym
: def_oc_syms[ROCK_CLASS].sym;
else if (i == SYM_INVISIBLE)
showsyms[i + SYM_OFF_X] = DEF_INVISIBLE;
}
@@ -389,19 +385,17 @@ init_l_symbols()
for (i = 0; i < MAXPCHARS; i++)
l_syms[i + SYM_OFF_P] = defsyms[i].sym;
for (i = 0; i < MAXOCLASSES; i++)
l_syms[i + SYM_OFF_O] = def_oc_syms[i].sym;
for (i = 0; i < MAXMCLASSES; i++)
l_syms[i + SYM_OFF_M] = def_monsyms[i].sym;
for (i = 0; i < WARNCOUNT; i++)
l_syms[i + SYM_OFF_W] = def_warnsyms[i].sym;
for (i = 0; i < MAXOTHER; i++) {
if (i == SYM_BOULDER)
l_syms[i + SYM_OFF_X] = iflags.bouldersym ? iflags.bouldersym : def_oc_syms[ROCK_CLASS].sym;
l_syms[i + SYM_OFF_X] = iflags.bouldersym
? iflags.bouldersym
: def_oc_syms[ROCK_CLASS].sym;
else if (i == SYM_INVISIBLE)
l_syms[i + SYM_OFF_X] = DEF_INVISIBLE;
}
@@ -424,25 +418,24 @@ init_r_symbols()
for (i = 0; i < MAXOCLASSES; i++)
r_syms[i + SYM_OFF_O] = def_r_oc_syms[i];
for (i = 0; i < MAXMCLASSES; i++)
r_syms[i + SYM_OFF_M] = def_monsyms[i].sym;
for (i = 0; i < WARNCOUNT; i++)
r_syms[i + SYM_OFF_W] = def_warnsyms[i].sym;
for (i = 0; i < MAXOTHER; i++) {
if (i == SYM_BOULDER)
r_syms[i + SYM_OFF_X] = iflags.bouldersym ? iflags.bouldersym : def_oc_syms[ROCK_CLASS].sym;
r_syms[i + SYM_OFF_X] = iflags.bouldersym
? iflags.bouldersym
: def_oc_syms[ROCK_CLASS].sym;
else if (i == SYM_INVISIBLE)
r_syms[i + SYM_OFF_X] = DEF_INVISIBLE;
}
clear_symsetentry(ROGUESET, FALSE);
symset[ROGUESET].nocolor = 1; /* default on Rogue level is no color
* but some symbol sets can
* override that
*/
/* default on Rogue level is no color
* but some symbol sets can override that
*/
symset[ROGUESET].nocolor = 1;
}
void

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 exper.c $NHDT-Date: 1432512770 2015/05/25 00:12:50 $ $NHDT-Branch: master $:$NHDT-Revision: 1.25 $ */
/* NetHack 3.6 exper.c $NHDT-Date: 1446975467 2015/11/08 09:37:47 $ $NHDT-Branch: master $:$NHDT-Revision: 1.26 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -34,7 +34,7 @@ int en;
case PM_VALKYRIE:
return ((3 * en) / 4);
default:
return (en);
return en;
}
}
@@ -68,7 +68,9 @@ newpw()
return en;
}
int experience(mtmp, nk) /* return # of exp points for mtmp after nk killed */
/* return # of exp points for mtmp after nk killed */
int
experience(mtmp, nk)
register struct monst *mtmp;
register int nk;
{
@@ -77,15 +79,15 @@ register int nk;
tmp = 1 + mtmp->m_lev * mtmp->m_lev;
/* For higher ac values, give extra experience */
/* For higher ac values, give extra experience */
if ((i = find_mac(mtmp)) < 3)
tmp += (7 - i) * ((i < 0) ? 2 : 1);
/* For very fast monsters, give extra experience */
/* For very fast monsters, give extra experience */
if (ptr->mmove > NORMAL_SPEED)
tmp += (ptr->mmove > (3 * NORMAL_SPEED / 2)) ? 5 : 3;
/* For each "special" attack type give extra experience */
/* For each "special" attack type give extra experience */
for (i = 0; i < NATTK; i++) {
tmp2 = ptr->mattk[i].aatyp;
if (tmp2 > AT_BUTT) {
@@ -98,7 +100,7 @@ register int nk;
}
}
/* For each "special" damage type give extra experience */
/* For each "special" damage type give extra experience */
for (i = 0; i < NATTK; i++) {
tmp2 = ptr->mattk[i].adtyp;
if (tmp2 > AD_PHYS && tmp2 < AD_BLND)
@@ -114,11 +116,11 @@ register int nk;
tmp += 1000;
}
/* For certain "extra nasty" monsters, give even more */
/* For certain "extra nasty" monsters, give even more */
if (extra_nasty(ptr))
tmp += (7 * mtmp->m_lev);
/* For higher level monsters, an additional bonus is given */
/* For higher level monsters, an additional bonus is given */
if (mtmp->m_lev > 8)
tmp += 50;
@@ -130,17 +132,17 @@ register int nk;
if (mtmp->mrevived || mtmp->mcloned) {
/*
* Reduce experience awarded for repeated killings of
* "the same monster". Kill count includes all of this
* monster's type which have been killed--including the
* current monster--regardless of how they were created.
* 1.. 20 full experience
* 21.. 40 xp / 2
* 41.. 80 xp / 4
* 81..120 xp / 8
* 121..180 xp / 16
* 181..240 xp / 32
* 241..255+ xp / 64
* Reduce experience awarded for repeated killings of
* "the same monster". Kill count includes all of this
* monster's type which have been killed--including the
* current monster--regardless of how they were created.
* 1.. 20 full experience
* 21.. 40 xp / 2
* 41.. 80 xp / 4
* 81..120 xp / 8
* 121..180 xp / 16
* 181..240 xp / 32
* 241..255+ xp / 64
*/
for (i = 0, tmp2 = 20; nk > tmp2 && tmp > 1; ++i) {
tmp = (tmp + 1) / 2;
@@ -256,7 +258,7 @@ newexplevel()
void
pluslvl(incr)
boolean incr; /* true iff via incremental experience growth */
{ /* (false for potion of gain level) */
{ /* (false for potion of gain level) */
int hpinc, eninc;
if (!incr)

View File

@@ -1,5 +1,5 @@
/* NetHack 3.6 extralev.c $NHDT-Date: 1432512765 2015/05/25 00:12:45 $ $NHDT-Branch: master $:$NHDT-Revision: 1.11 $ */
/* Copyright 1988, 1989 by Ken Arromdee */
/* NetHack 3.6 extralev.c $NHDT-Date: 1446975468 2015/11/08 09:37:48 $ $NHDT-Branch: master $:$NHDT-Revision: 1.12 $ */
/* Copyright 1988, 1989 by Ken Arromdee */
/* NetHack may be freely redistributed. See license for details. */
/*
@@ -206,22 +206,22 @@ void
makeroguerooms()
{
register int x, y;
/* Rogue levels are structured 3 by 3, with each section containing
* a room or an intersection. The minimum width is 2 each way.
* One difference between these and "real" Rogue levels: real Rogue
* uses 24 rows and NetHack only 23. So we cheat a bit by making the
* second row of rooms not as deep.
*
* Each normal space has 6/7 rows and 25 columns in which a room may
* actually be placed. Walls go from rows 0-5/6 and columns 0-24.
* Not counting walls, the room may go in
* rows 1-5 and columns 1-23 (numbering starting at 0). A room
* coordinate of this type may be converted to a level coordinate
* by adding 1+28*x to the column, and 7*y to the row. (The 1
* is because column 0 isn't used [we only use 1-78]).
* Room height may be 2-4 (2-5 on last row), length 2-23 (not
* counting walls)
*/
/* Rogue levels are structured 3 by 3, with each section containing
* a room or an intersection. The minimum width is 2 each way.
* One difference between these and "real" Rogue levels: real Rogue
* uses 24 rows and NetHack only 23. So we cheat a bit by making the
* second row of rooms not as deep.
*
* Each normal space has 6/7 rows and 25 columns in which a room may
* actually be placed. Walls go from rows 0-5/6 and columns 0-24.
* Not counting walls, the room may go in
* rows 1-5 and columns 1-23 (numbering starting at 0). A room
* coordinate of this type may be converted to a level coordinate
* by adding 1+28*x to the column, and 7*y to the row. (The 1
* is because column 0 isn't used [we only use 1-78]).
* Room height may be 2-4 (2-5 on last row), length 2-23 (not
* counting walls).
*/
#define here r[x][y]
nroom = 0;