Merge branch 'win-minor' into win-curses

This commit is contained in:
nhmall
2018-11-18 04:32:28 -05:00
20 changed files with 143 additions and 128 deletions

View File

@@ -91,8 +91,9 @@ check_gold_symbol()
int goldch, goldoc;
unsigned int goldos;
int goldglyph = objnum_to_glyph(GOLD_PIECE);
(void) mapglyph(goldglyph, &goldch, &goldoc, &goldos, 0, 0);
iflags.invis_goldsym = ((char)goldch <= ' ');
iflags.invis_goldsym = ((char) goldch <= ' ');
}
char *
@@ -829,8 +830,7 @@ boolean *valsetlist;
* the display, call status_update() with BL_FLUSH.
*
*/
if (context.botlx &&
(windowprocs.wincap2 & WC2_RESET_STATUS) != 0L)
if (context.botlx && (windowprocs.wincap2 & WC2_RESET_STATUS) != 0L)
status_update(BL_RESET, (genericptr_t) 0, 0, 0,
NO_COLOR, &cond_hilites[0]);
else if ((windowprocs.wincap2 & WC2_FLUSH_STATUS) != 0L)
@@ -2091,33 +2091,33 @@ boolean from_configfile;
}
const struct condmap valid_conditions[] = {
{"stone", BL_MASK_STONE},
{"slime", BL_MASK_SLIME},
{"strngl", BL_MASK_STRNGL},
{"foodPois", BL_MASK_FOODPOIS},
{"termIll", BL_MASK_TERMILL},
{"blind", BL_MASK_BLIND},
{"deaf", BL_MASK_DEAF},
{"stun", BL_MASK_STUN},
{"conf", BL_MASK_CONF},
{"hallu", BL_MASK_HALLU},
{"lev", BL_MASK_LEV},
{"fly", BL_MASK_FLY},
{"ride", BL_MASK_RIDE},
{ "stone", BL_MASK_STONE },
{ "slime", BL_MASK_SLIME },
{ "strngl", BL_MASK_STRNGL },
{ "foodPois", BL_MASK_FOODPOIS },
{ "termIll", BL_MASK_TERMILL },
{ "blind", BL_MASK_BLIND },
{ "deaf", BL_MASK_DEAF },
{ "stun", BL_MASK_STUN },
{ "conf", BL_MASK_CONF },
{ "hallu", BL_MASK_HALLU },
{ "lev", BL_MASK_LEV },
{ "fly", BL_MASK_FLY },
{ "ride", BL_MASK_RIDE },
};
const struct condmap condition_aliases[] = {
{"strangled", BL_MASK_STRNGL},
{"all", BL_MASK_STONE | BL_MASK_SLIME | BL_MASK_STRNGL |
BL_MASK_FOODPOIS | BL_MASK_TERMILL |
BL_MASK_BLIND | BL_MASK_DEAF | BL_MASK_STUN |
BL_MASK_CONF | BL_MASK_HALLU |
BL_MASK_LEV | BL_MASK_FLY | BL_MASK_RIDE },
{"major_troubles", BL_MASK_STONE | BL_MASK_SLIME | BL_MASK_STRNGL |
BL_MASK_FOODPOIS | BL_MASK_TERMILL},
{"minor_troubles", BL_MASK_BLIND | BL_MASK_DEAF | BL_MASK_STUN |
BL_MASK_CONF | BL_MASK_HALLU},
{"movement", BL_MASK_LEV | BL_MASK_FLY | BL_MASK_RIDE}
{ "strangled", BL_MASK_STRNGL },
{ "all", BL_MASK_STONE | BL_MASK_SLIME | BL_MASK_STRNGL
| BL_MASK_FOODPOIS | BL_MASK_TERMILL
| BL_MASK_BLIND | BL_MASK_DEAF | BL_MASK_STUN
| BL_MASK_CONF | BL_MASK_HALLU
| BL_MASK_LEV | BL_MASK_FLY | BL_MASK_RIDE },
{ "major_troubles", BL_MASK_STONE | BL_MASK_SLIME | BL_MASK_STRNGL
| BL_MASK_FOODPOIS | BL_MASK_TERMILL },
{ "minor_troubles", BL_MASK_BLIND | BL_MASK_DEAF | BL_MASK_STUN
| BL_MASK_CONF | BL_MASK_HALLU },
{ "movement", BL_MASK_LEV | BL_MASK_FLY | BL_MASK_RIDE }
};
unsigned long

View File

@@ -989,7 +989,7 @@ int x, y;
/* Erase (reset) from source to end */
for (i = 0; i < tglyph->sidx; i++)
newsym(tglyph->saved[i].x, tglyph->saved[i].y);
} else if (tglyph->style == DISP_TETHER) {
} else if (tglyph->style == DISP_TETHER) {
int i;
if (y == BACKTRACK && tglyph->sidx > 1) {
@@ -1028,7 +1028,7 @@ int x, y;
tglyph->saved[tglyph->sidx].x = x;
tglyph->saved[tglyph->sidx].y = y;
tglyph->sidx += 1;
} else if (tglyph->style == DISP_TETHER) {
} else if (tglyph->style == DISP_TETHER) {
if (tglyph->sidx >= TMP_AT_MAX_GLYPHS)
break; /* too many locations */
if (tglyph->sidx) {

View File

@@ -651,10 +651,8 @@ int maxdist;
if (targ) {
/* Is the monster visible to the pet? */
if ((!targ->minvis || perceives(mtmp->data)) &&
!targ->mundetected)
if ((!targ->minvis || perceives(mtmp->data)) && !targ->mundetected)
break;
/* If the pet can't see it, it assumes it aint there */
targ = 0;
}
@@ -1107,12 +1105,10 @@ int after; /* this is extra fast monster movement */
/* This causes unintended issues for pets trying to follow
the hero. Thus, only run it if not leashed and >5 tiles
away. */
if (!mtmp->mleashed &&
distmin(mtmp->mx, mtmp->my, u.ux, u.uy) > 5) {
if (!mtmp->mleashed && distmin(mtmp->mx, mtmp->my, u.ux, u.uy) > 5) {
k = has_edog ? uncursedcnt : cnt;
for (j = 0; j < MTSZ && j < k - 1; j++)
if (nx == mtmp->mtrack[j].x &&
ny == mtmp->mtrack[j].y)
if (nx == mtmp->mtrack[j].x && ny == mtmp->mtrack[j].y)
if (rn2(MTSZ * (k - j)))
goto nxti;
}

View File

@@ -495,13 +495,13 @@ xchar x, y;
return 0;
if ((trap = t_at(x, y)) != 0) {
if ((is_pit(trap->ttyp) && !Passes_walls)
|| trap->ttyp == WEB) {
if ((is_pit(trap->ttyp) && !Passes_walls) || trap->ttyp == WEB) {
if (!trap->tseen)
find_trap(trap);
You_cant("kick %s that's in a %s!", something,
Hallucination ? "tizzy" :
(trap->ttyp == WEB) ? "web" : "pit");
Hallucination ? "tizzy"
: (trap->ttyp == WEB) ? "web"
: "pit");
return 1;
}
if (trap->ttyp == STATUE_TRAP) {

View File

@@ -1287,9 +1287,10 @@ boolean twoweap; /* used to restore twoweapon mode if wielded weapon returns */
pline("%s returns to your hand!", The(xname(thrownobj)));
thrownobj = addinv(thrownobj);
(void) encumber_msg();
if (thrownobj->owornmask & W_QUIVER) /* in case addinv() autoquivered */
/* in case addinv() autoquivered */
if (thrownobj->owornmask & W_QUIVER)
setuqwep((struct obj *) 0);
setuwep(thrownobj);
setuwep(thrownobj);
} else {
/* ball is not picked up by monster */
if (obj != uball)

View File

@@ -632,7 +632,7 @@ char *s;
}
#define ORC_LEADER 1
static const char *orcfruit[] = {"paddle cactus", "dwarven root"};
static const char *orcfruit[] = { "paddle cactus", "dwarven root" };
void
migrate_orc(mtmp, mflags)
@@ -643,8 +643,8 @@ unsigned long mflags;
d_level dest;
cur_depth = (int) depth(&u.uz);
max_depth = dunlevs_in_dungeon(&u.uz) +
(dungeons[u.uz.dnum].depth_start - 1);
max_depth = dunlevs_in_dungeon(&u.uz)
+ (dungeons[u.uz.dnum].depth_start - 1);
if (mflags == ORC_LEADER) {
/* Note that the orc leader will take possession of any
* remaining stuff not already delivered to other
@@ -695,8 +695,7 @@ struct monst *mtmp;
}
if (is_captain || !rn2(8)) {
otyp = shiny_obj(RING_CLASS);
if ((otyp != STRANGE_OBJECT) &&
(otmp = mksobj(otyp, FALSE, FALSE)) != 0)
if (otyp != STRANGE_OBJECT && (otmp = mksobj(otyp, FALSE, FALSE)) != 0)
add_to_minv(mtmp, otmp);
}
}
@@ -754,11 +753,11 @@ stolen_booty(VOID_ARGS)
for (i = 0; i < cnt; ++i) {
/* Food items - but no lembas! (or some other weird things) */
otyp = rn2((TIN - TRIPE_RATION) + 1) + TRIPE_RATION;
if (otyp != LEMBAS_WAFER && otyp != GLOB_OF_GRAY_OOZE &&
otyp != GLOB_OF_BROWN_PUDDING && otyp != GLOB_OF_GREEN_SLIME &&
otyp != GLOB_OF_BLACK_PUDDING && otyp != MEAT_STICK &&
otyp != MEATBALL && otyp != MEAT_STICK && otyp != MEAT_RING &&
otyp != HUGE_CHUNK_OF_MEAT && otyp != CORPSE)
if (otyp != LEMBAS_WAFER && otyp != GLOB_OF_GRAY_OOZE
&& otyp != GLOB_OF_BROWN_PUDDING && otyp != GLOB_OF_GREEN_SLIME
&& otyp != GLOB_OF_BLACK_PUDDING && otyp != MEAT_STICK
&& otyp != MEATBALL && otyp != MEAT_STICK && otyp != MEAT_RING
&& otyp != HUGE_CHUNK_OF_MEAT && otyp != CORPSE)
migr_booty_item(otyp, gang);
}
migr_booty_item(rn2(2) ? LONG_SWORD : SILVER_SABER, gang);

View File

@@ -804,7 +804,7 @@ struct attack *mattk;
if ((typ >= AD_MAGM) && (typ <= AD_ACID)) {
if (canseemon(mtmp))
pline("%s breathes %s!", Monnam(mtmp), breathwep[typ - 1]);
dobuzz((int) (-20 - (typ - 1)), (int)mattk->damn,
dobuzz((int) (-20 - (typ - 1)), (int) mattk->damn,
mtmp->mx, mtmp->my, sgn(tbx), sgn(tby), FALSE);
nomul(0);
/* breath runs out sometimes. Also, give monster some

View File

@@ -2484,8 +2484,6 @@ badman(basestr, to_plural)
const char *basestr;
boolean to_plural; /* true => makeplural, false => makesingular */
{
int i, al;
char *endstr, *spot;
/* these are all the prefixes for *man that don't have a *men plural */
static const char *no_men[] = {
"albu", "antihu", "anti", "ata", "auto", "bildungsro", "cai", "cay",
@@ -2501,11 +2499,13 @@ boolean to_plural; /* true => makeplural, false => makesingular */
"tegu", "vela", "da", "hy", "lu", "no", "nu", "ra", "ru", "se", "vi",
"ya", "o", "a",
};
int i, al;
const char *endstr, *spot;
if (!basestr || strlen(basestr) < 4)
return FALSE;
endstr = eos((char *)basestr);
endstr = eos((char *) basestr);
if (to_plural) {
for (i = 0; i < SIZE(no_men); i++) {

View File

@@ -3313,8 +3313,8 @@ boolean tinitial, tfrom_file;
/* WINCAP
*
* map_mode:[tiles|ascii4x6|ascii6x8|ascii8x8|ascii16x8|ascii7x12|
* ascii8x12|ascii16x12|ascii12x16|ascii10x18|fit_to_screen]
* map_mode:[tiles|ascii4x6|ascii6x8|ascii8x8|ascii16x8|ascii7x12
* |ascii8x12|ascii16x12|ascii12x16|ascii10x18|fit_to_screen]
*/
fullname = "map_mode";
if (match_optname(opts, fullname, sizeof("map_mode") - 1, TRUE)) {

View File

@@ -18,7 +18,8 @@ STATIC_DCL struct permonst *FDECL(lookat, (int, int, char *, char *));
STATIC_DCL void FDECL(checkfile, (char *, struct permonst *,
BOOLEAN_P, BOOLEAN_P, char *));
STATIC_DCL void FDECL(look_all, (BOOLEAN_P,BOOLEAN_P));
STATIC_DCL void FDECL(do_supplemental_info, (char *, struct permonst *,BOOLEAN_P));
STATIC_DCL void FDECL(do_supplemental_info, (char *, struct permonst *,
BOOLEAN_P));
STATIC_DCL void NDECL(whatdoes_help);
STATIC_DCL void NDECL(docontact);
STATIC_DCL void NDECL(dispfile_help);
@@ -1352,9 +1353,8 @@ boolean without_asking;
* meant to support in-game mythology, and not
* available from data.base or other sources.
*/
if (name && pm && is_orc(pm) &&
(strlen(name) < (BUFSZ - 1)) &&
(bp = strstri(name, " of ")) != 0) {
if (name && pm && is_orc(pm) && (strlen(name) < (BUFSZ - 1))
&& (bp = strstri(name, " of ")) != 0) {
char fullname[BUFSZ];
Strcpy(fullname, name);
@@ -1880,7 +1880,7 @@ domenucontrols()
/* data for dohelp() */
static struct {
void (*f)();
void NDECL((*f));
const char *text;
} help_menu_items[] = {
{ hmenu_doextversion, "About NetHack (version information)." },
@@ -1900,7 +1900,7 @@ static struct {
{ port_help, "%s-specific help and commands." },
#endif
{ dispfile_debughelp, "List of wizard-mode commands." },
{ NULL, (char *) 0 }
{ (void NDECL((*))) 0, (char *) 0 }
};
/* the '?' command */
@@ -1913,7 +1913,6 @@ dohelp()
menu_item *selected;
anything any;
int sel;
char *bufptr;
any = zeroany; /* zero all bits */
start_menu(tmpwin);
@@ -1923,13 +1922,12 @@ dohelp()
continue;
if (help_menu_items[i].text[0] == '%') {
Sprintf(helpbuf, help_menu_items[i].text, PORT_ID);
bufptr = helpbuf;
} else {
bufptr = (char *)help_menu_items[i].text;
Strcpy(helpbuf, help_menu_items[i].text);
}
any.a_int = i + 1;
add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE,
bufptr, MENU_UNSELECTED);
helpbuf, MENU_UNSELECTED);
}
end_menu(tmpwin, "Select one item:");
n = select_menu(tmpwin, PICK_ONE, &selected);
@@ -1937,7 +1935,7 @@ dohelp()
if (n > 0) {
sel = selected[0].item.a_int - 1;
free((genericptr_t) selected);
(void)(*help_menu_items[sel].f)();
(void) (*help_menu_items[sel].f)();
}
return 0;
}

View File

@@ -597,8 +597,7 @@ register struct obj *otmp;
the spell or with a unihorn; this is better than full healing
in that it can restore all of them, not just half, and a
blessed potion restores them all at once */
if (otmp->otyp == POT_RESTORE_ABILITY &&
u.ulevel < u.ulevelmax) {
if (otmp->otyp == POT_RESTORE_ABILITY && u.ulevel < u.ulevelmax) {
do {
pluslvl(FALSE);
} while (u.ulevel < u.ulevelmax && otmp->blessed);
@@ -608,9 +607,9 @@ register struct obj *otmp;
case POT_HALLUCINATION:
if (Hallucination || Halluc_resistance)
nothing++;
(void) make_hallucinated(
itimeout_incr(HHallucination, rn1(200, 600 - 300 * bcsign(otmp))),
TRUE, 0L);
(void) make_hallucinated(itimeout_incr(HHallucination,
rn1(200, 600 - 300 * bcsign(otmp))),
TRUE, 0L);
break;
case POT_WATER:
if (!otmp->blessed && !otmp->cursed) {

View File

@@ -2370,8 +2370,8 @@ struct obj *sobj;
uball->spe = 1; /* special ball (see save) */
/*
* Place ball & chain if not swallowed. If swallowed, the ball &
* chain variables will be set at the next call to placebc().
* Place ball & chain if not swallowed. If swallowed, the ball & chain
* variables will be set at the next call to placebc().
*/
if (!u.uswallow) {
placebc();

View File

@@ -1703,14 +1703,15 @@ plnamesuffix()
/* some generic user names will be ignored in favor of prompting */
if (sysopt.genericusers) {
if (*sysopt.genericusers == '*') *plname = '\0';
else {
i = (int)strlen(plname);
if ((sptr = strstri(sysopt.genericusers, plname)) != 0
&& (sptr == sysopt.genericusers || sptr[-1] == ' ')
&& (sptr[i] == ' ' || sptr[i] == '\0'))
*plname = '\0'; /* call askname() */
}
if (*sysopt.genericusers == '*') {
*plname = '\0';
} else {
i = (int) strlen(plname);
if ((sptr = strstri(sysopt.genericusers, plname)) != 0
&& (sptr == sysopt.genericusers || sptr[-1] == ' ')
&& (sptr[i] == ' ' || sptr[i] == '\0'))
*plname = '\0'; /* call askname() */
}
}
do {

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 rumors.c $NHDT-Date: 1446713640 2015/11/05 08:54:00 $ $NHDT-Branch: master $:$NHDT-Revision: 1.27 $ */
/* NetHack 3.6 rumors.c $NHDT-Date: 1542422933 2018/11/17 02:48:53 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.30 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2012. */
/* NetHack may be freely redistributed. See license for details. */
@@ -43,6 +43,7 @@
STATIC_DCL void FDECL(init_rumors, (dlb *));
STATIC_DCL void FDECL(init_oracles, (dlb *));
STATIC_DCL void FDECL(couldnt_open_file, (const char *));
/* rumor size variables are signed so that value -1 can be used as a flag */
static long true_rumor_size = 0L, false_rumor_size;
@@ -155,7 +156,7 @@ boolean exclude_cookie;
else if (!in_mklev) /* avoid exercizing wisdom for graffiti */
exercise(A_WIS, (adjtruth > 0));
} else {
pline("Can't open rumors file!");
couldnt_open_file(RUMORFILE);
true_rumor_size = -1; /* don't try to open it again */
}
/* this is safe either way, so do it always since we can't get the definition
@@ -272,7 +273,7 @@ rumor_check()
display_nhwindow(tmpwin, TRUE);
destroy_nhwindow(tmpwin);
} else {
impossible("Can't open rumors file!");
couldnt_open_file(RUMORFILE);
true_rumor_size = -1; /* don't try to open it again */
}
}
@@ -314,8 +315,10 @@ char *buf;
*endp = 0;
Strcat(buf, xcrypt(line, xbuf));
(void) dlb_fclose(fh);
} else
impossible("Can't open file %s!", fname);
} else {
couldnt_open_file(fname);
}
return buf;
}
@@ -469,7 +472,7 @@ boolean delphi;
destroy_nhwindow(tmpwin);
(void) dlb_fclose(oracles);
} else {
pline("Can't open oracles file!");
couldnt_open_file(ORACLEFILE);
oracle_flg = -1; /* don't try to open it again */
}
}
@@ -547,4 +550,20 @@ struct monst *oracl;
return 1;
}
STATIC_OVL void
couldnt_open_file(filename)
const char *filename;
{
int save_something = program_state.something_worth_saving;
/* most likely the file is missing, so suppress impossible()'s
"saving and restoring might fix this" (unless the fuzzer,
which escalates impossible to panic, is running) */
if (!iflags.debug_fuzzer)
program_state.something_worth_saving = 0;
impossible("Can't open '%s' file.", filename);
program_state.something_worth_saving = save_something;
}
/*rumors.c*/

View File

@@ -231,7 +231,7 @@ struct splevstack *st;
st->depth = 0;
st->depth_alloc = SPLEV_STACK_RESERVE;
st->stackdata =
(struct opvar **) alloc(st->depth_alloc * sizeof(struct opvar *));
(struct opvar **) alloc(st->depth_alloc * sizeof (struct opvar *));
}
}
@@ -284,7 +284,7 @@ struct opvar *v;
if (st->depth >= st->depth_alloc) {
struct opvar **tmp = (struct opvar **) alloc(
(st->depth_alloc + SPLEV_STACK_RESERVE) * sizeof(struct opvar *));
(st->depth_alloc + SPLEV_STACK_RESERVE) * sizeof (struct opvar *));
(void) memcpy(tmp, st->stackdata,
st->depth_alloc * sizeof(struct opvar *));
@@ -352,7 +352,7 @@ struct opvar *
opvar_new_str(s)
char *s;
{
struct opvar *tmpov = (struct opvar *) alloc(sizeof(struct opvar));
struct opvar *tmpov = (struct opvar *) alloc(sizeof (struct opvar));
tmpov->spovartyp = SPOVAR_STRING;
if (s) {
@@ -370,7 +370,7 @@ struct opvar *
opvar_new_int(i)
long i;
{
struct opvar *tmpov = (struct opvar *) alloc(sizeof(struct opvar));
struct opvar *tmpov = (struct opvar *) alloc(sizeof (struct opvar));
tmpov->spovartyp = SPOVAR_INT;
tmpov->vardata.l = i;
@@ -381,7 +381,7 @@ struct opvar *
opvar_new_coord(x, y)
int x, y;
{
struct opvar *tmpov = (struct opvar *) alloc(sizeof(struct opvar));
struct opvar *tmpov = (struct opvar *) alloc(sizeof (struct opvar));
tmpov->spovartyp = SPOVAR_COORD;
tmpov->vardata.l = SP_COORD_PACK(x, y);
@@ -393,7 +393,7 @@ struct opvar *
opvar_new_region(x1,y1,x2,y2)
int x1,y1,x2,y2;
{
struct opvar *tmpov = (struct opvar *)alloc(sizeof (struct opvar));
struct opvar *tmpov = (struct opvar *) alloc(sizeof (struct opvar));
tmpov->spovartyp = SPOVAR_REGION;
tmpov->vardata.l = SP_REGION_PACK(x1,y1,x2,y2);

View File

@@ -5033,10 +5033,10 @@ struct trap *adjtrap;
{
struct trap *trap_with_u = t_at(u.ux0, u.uy0);
if (trap_with_u && adjtrap && u.utrap && u.utraptype == TT_PIT &&
is_pit(trap_with_u->ttyp) &&
is_pit(adjtrap->ttyp)) {
if (trap_with_u && adjtrap && u.utrap && u.utraptype == TT_PIT
&& is_pit(trap_with_u->ttyp) && is_pit(adjtrap->ttyp)) {
int idx;
for (idx = 0; idx < 8; idx++) {
if (xdir[idx] == u.dx && ydir[idx] == u.dy)
return TRUE;
@@ -5063,8 +5063,7 @@ struct trap *trap;
x = trap->tx + xdir[diridx];
y = trap->ty + ydir[diridx];
if (isok(x, y)) {
if ((t = t_at(x, y)) != 0
&& is_pit(t->ttyp)) {
if ((t = t_at(x, y)) != 0 && is_pit(t->ttyp)) {
trap->conjoined |= (1 << diridx);
join_adjacent_pits(t);
} else

View File

@@ -379,8 +379,8 @@ STATIC_DCL int FDECL(new_angle, (struct rm *, unsigned char *, int, int));
* @ <-- hero --> @
*
*
* We fake the above check by only checking if the horizontal &
* vertical positions adjacent to the crosswall and T wall are
* We fake the above check by only checking if the horizontal
* & vertical positions adjacent to the crosswall and T wall are
* unblocked. Then, _in general_ we can see beyond. Generally,
* this is good enough.
*
@@ -388,8 +388,8 @@ STATIC_DCL int FDECL(new_angle, (struct rm *, unsigned char *, int, int));
* information (we're doing a top down scan in vision_recalc).
* We would need to scan once to set all IN_SIGHT and COULD_SEE
* bits, then again to correctly set the seenv bits.
* + I'm trying to make this as cheap as possible. The display &
* vision eat up too much CPU time.
* + I'm trying to make this as cheap as possible. The display
* & vision eat up too much CPU time.
*
*
* Note: Even as I write this, I'm still not convinced. There are too
@@ -877,11 +877,11 @@ int x, y;
}
/*==========================================================================*\
| |
| Everything below this line uses (y,x) instead of (x,y) --- the |
| algorithms are faster if they are less recursive and can scan |
| on a row longer. |
| |
: :
: Everything below this line uses (y,x) instead of (x,y) --- the :
: algorithms are faster if they are less recursive and can scan :
: on a row longer. :
: :
\*==========================================================================*/
/* ======================================================================= *\

View File

@@ -587,7 +587,7 @@ struct monst *summoner;
} while (summoner
&& ((attacktype(&mons[makeindex], AT_MAGC)
&& mons[makeindex].difficulty
>= mons[summoner->mnum].difficulty)
>= mons[summoner->mnum].difficulty)
|| (s_cls == S_DEMON && m_cls == S_ANGEL)
|| (s_cls == S_ANGEL && m_cls == S_DEMON)));
/* do this after picking the monster to place */

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 tilemap.c $NHDT-Date: 1524689272 2018/04/25 20:47:52 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.33 $ */
/* NetHack 3.6 tilemap.c $NHDT-Date: 1542501042 2018/11/18 00:30:42 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.35 $ */
/* Copyright (c) 2016 by Michael Allison */
/* NetHack may be freely redistributed. See license for details. */
@@ -497,9 +497,11 @@ main()
Fprintf(ofp, "\nshort glyph2tile[MAX_GLYPH] = {\n");
for (i = 0; i < MAX_GLYPH; i++) {
Fprintf(ofp, "%2d,%c", tilemap[i], (i % 12) ? ' ' : '\n');
Fprintf(ofp, " %4d,", tilemap[i]);
if ((i % 12) == 11 || i == MAX_GLYPH - 1)
Fprintf(ofp, "\n");
}
Fprintf(ofp, "\n};\n");
Fprintf(ofp, "};\n");
process_substitutions(ofp);

View File

@@ -21,8 +21,6 @@
#define CURSOR_BLINK_INTERVAL 1000 // milliseconds
#define CURSOR_HEIGHT 2 // pixels
#define CUSOR_BLINK FALSE // Set to true for a cursor that blinks
extern short glyph2tile[];
#define TILEBMP_X(ntile) \
@@ -59,7 +57,10 @@ typedef struct mswin_nethack_map_window {
double monitorScale; /* from 96dpi to monitor dpi*/
boolean cursorOn;
int yCursor; /* height of cursor inback buffer in pixels */
int yNoBlinkCursor; /* non-blinking cursor height inback buffer
in pixels */
int yBlinkCursor; /* blinking cursor height inback buffer
in pixels */
int backWidth; /* back buffer width */
int backHeight; /* back buffer height */
@@ -132,10 +133,8 @@ mswin_init_map_window()
mswin_apply_window_style(hWnd);
#if CURSOR_BLINK
/* set cursor blink timer */
SetTimer(hWnd, 0, CURSOR_BLINK_INTERVAL, NULL);
#endif
return hWnd;
}
@@ -283,11 +282,8 @@ mswin_map_stretch(HWND hWnd, LPSIZE map_size, BOOL redraw)
data->yFrontTile = (int) ((double) data->yBackTile * data->frontScale);
/* calcuate ASCII cursor height */
#if CURSOR_BLINK
data->yCursor = (int) ((double) CURSOR_HEIGHT * data->backScale);
#else
data->yCursor = data->yBackTile;
#endif
data->yBlinkCursor = (int) ((double) CURSOR_HEIGHT * data->backScale);
data->yNoBlinkCursor = data->yBackTile;
/* set map origin point */
data->map_orig.x =
@@ -830,7 +826,8 @@ paintTile(PNHMapWindow data, int i, int j, RECT * rect)
}
#endif
if (i == data->xCur && j == data->yCur && data->cursorOn)
if (i == data->xCur && j == data->yCur &&
(data->cursorOn || !win32_cursorblink))
DrawFocusRect(data->backBufferDC, rect);
}
@@ -897,12 +894,16 @@ paintGlyph(PNHMapWindow data, int i, int j, RECT * rect)
SetTextColor(data->backBufferDC, OldFg);
}
if (i == data->xCur && j == data->yCur && data->cursorOn)
if (i == data->xCur && j == data->yCur &&
(data->cursorOn || !win32_cursorblink)) {
int yCursor = (win32_cursorblink ? data->yBlinkCursor :
data->yNoBlinkCursor);
PatBlt(data->backBufferDC,
rect->left, rect->bottom - data->yCursor,
rect->left, rect->bottom - yCursor,
rect->right - rect->left,
data->yCursor,
yCursor,
DSTINVERT);
}
}
static void setGlyph(PNHMapWindow data, int i, int j, int fg, int bg)