Error reported in display.c in current master code is gone,
but the menucolors stuff generated the following warnings when TEXTCOLOR wasn't defined.
..\win\tty\wintty.c(1688) : warning C4013: 'term_start_color' undefined; assuming extern returning int
..\win\tty\wintty.c(1711) : warning C4013: 'term_end_color' undefined; assuming extern returning int
When reading a passage from a tribute novel, put the final attribution
line "[$TITLE, by Terry Pratchett]" into message history, comparable to
the summary line for deliver-by-window quest messages.
Flesh out _The_Last_Hero_. Due to its publishing history (no ordinary
paperback, some lists of "other books by this author" miscategorize it
as being co-written by the illustrator) it's most likely not as widely
read as the other Discworld books.
Changes to be committed:
modified: src/display.c
The work for getting this working fully is now moving to the background_tiles branch.
In master, we just return the standard lit room tile for now, no change in behavior.
No ports utilize the new parameter as yet.
Add MG_OBJPILE flag, which windowports can use to check if a location
has more than one object stack. If use_inverse is on, TTY will use
inverse to show such piles. If a boulder is the topmost item on a pile,
then the object pile flag is not used; mainly because boulders are "solid",
boulders dropped by monsters are nearly always over other objects, and so
that special levels such a Sokoban can "hide" items under the boulders.
TODO: a "pilemark", analogous to "petmark", perhaps a green plus sign,
which can be used by windowports with tiles.
Changes to be committed:
modified: doc/window.doc
modified: include/qt_win.h
modified: include/trampoli.h
modified: include/winX.h
modified: include/wingem.h
modified: include/winprocs.h
modified: include/wintty.h
modified: src/display.c
modified: src/windows.c
modified: sys/amiga/winami.p
modified: sys/amiga/winfuncs.c
modified: sys/amiga/winproto.h
modified: sys/wince/mswproc.c
modified: sys/wince/winMS.h
modified: win/Qt/qt_win.cpp
modified: win/X11/winmap.c
modified: win/chain/wc_chainin.c
modified: win/chain/wc_chainout.c
modified: win/chain/wc_trace.c
modified: win/gem/wingem.c
modified: win/gem/wingem1.c
modified: win/gnome/gnbind.c
modified: win/tty/wintty.c
modified: win/win32/mswproc.c
modified: win/win32/winMS.h
print_glyph now takes a second parameter.
Tiles on tiled ports always looked odd on places like the plane of air
where the background color of the tile didn't match the general background
of the surrounding area.
3.6 made that even worse and more glaringly noticeable with the introduction
of darkened room tiles.
The code to actually send something useful through the new parameter
for window ports to take advantage if they want will follow.
Remove second 'alt_i' initialization, which was first in implementation.
Superseded by the preceding line, which came later. Works either way,
but the conditional initalization avoids the two extra loop iterations
when they're not useful.
Fix two things with the ';' and '/' commands, both for looking at blank
space. The list of possibilies included "a dark part of a room or the
dark part of a room" even though the code involved goes out of its way
to avoid redundant clauses. S_stone let dark part be prefixed by 'a',
S_room and S_darkroom forced it to be 'the' which is better phrasing
but outsmarted the redundancy check. Make S_stone's use of "dark part
of a room" force 'the' too.
That's trivial; this is more complicated: the new maze variations
exposed/aggravated an issue that's been there all along. In a non-
WALLIFIED maze, doing look-at on the solid stone in-place-of-wall
next to you reported "dark part of a room" which is clearly wrong when
you can tell it's not a room. (The same thing happens in any ordinary
corridor, but players rarely try to identify blank space next to them
it that circumstance so it hasn't mattered very much.) This change
results in look-at listing "unexplored" and "stone" as additional
possibilities when looking at blank spots. Final description will be
"unexplored" instead of dark room if you haven't seen the spot, "stone"
if you have and that's what it is, or "dark part of a room" otherwise.
The special level loader has been using __FUNCTION__ in error messages
for a few months now, but that is a gcc extension (evidently picked up
by other compilers since only Borland had an issue so far). The
standard way to do the same thing is with __func__, but that's C99 so
we should avoid it. (__FUNCTION__ came earlier; gcc supports both.)
This switches to convential C code to achieve the same effect, using
the name 'nhFunc' rather than __FUNCTION__:
void foo()
{
static const char nhFunc[] = "foo";
... code that might report problem in nhFunc ...
return;
}
This has only been added to the functions which actually reference it,
not a blanket intrusion into every routine. In special level loader's
case, the reference is hidden in the opvar_free() macro which is used
quite a lot.
At first I used a macro:
void foo()
{
#define nhFunc "foo"
... code that might report problem in nhFunc ...
return;
#undef nhFunc
}
but using an actual variable avoids duplicate copies of the function
name string when used more than once inside a given function, and it
can't accidentally carry over into the next function due to missing or
misspelled #undef.
If we someday switch alloc() to give more specific information than
__FILE__, the macro variation would be better since the function name
won't be used most of the time (ie, when MONITOR_HEAP isn't defined).
Another minor oddity (did not have time to trace it). Charges for damaged
weapon refer to it as "weapon in hand":
--
As you read the scroll, it disappears. Being confused, you mispronounce
the magic words... Demirci's long sword is covered by a mottled purple
glow! "You degrade that long sword, you pay for it!"
Call a scroll labeled VERR YED HORRE:
What do you want to wield? [- ajrw or ?*] j
j - a rustproof athame named Magicbane (weapon in hand) (10 aum).
What do you want to drop? [$a-df-rtwxM or ?*] r
You drop a long sword (40 aum).
Demirci offers 8 gold pieces for your long sword. Sell it? [ynaq] (y) y
You sold a long sword (40 aum) for 8 gold pieces.
You see here a scale mail (250 aum).
You see here a ring mail (250 aum).
A rustproof long sword (weapon in hand) (40 aum) for 15 zorkmids. Pay?
[yn] (n)
You paid for a rustproof long sword (weapon in hand) (40 aum) at a cost of
15 gold pieces. "Thank you for shopping in Demirci's used armor
dealership!"
--
Limit vampire shapeshifting on rogue level to vampire bats (only
choice represented by uppercase letter) and have other shapeshifting
try for uppercase. The latter isn't rigorous because shapeshifters
(chameleon=':', doppelganger='@', sandestin='&') aren't uppercase
themselves, so won't be created there under ordinary circumstances.
It applies to the "summon nasties" monster spell and post-invocation/
post-Wizard's-death harassment effect too.
From Boudewijn:
> I am currently swallowed by an ice vortex, and used the ; command
> to identify the \ on my top right.
>
> It said: "\ an opulent throne (interior of a monster)"
Now, when you're swallowed, and look at anything else than yourself,
you'll get "\ the interior of a monster (interior of an ice vortex)".
Based on the comment in the code, it seems this was the original
intention anyway.
Augment the existing enlightenment feedback for blindness: "innately"
blind if poly'd into something without eyes, "permanently" blind if
using the blind-from-birth option, "deliberately" blind if blindness
is solely due to a blindfold, or "temporarily" blind otherwise.
Add status of "not wearing any armor" when applicable, with slightly
different phrasing if it's due to adhering the OPTIONS:nudist conduct.
The Blindfolded_only macro didn't track u.uroleplay.blind so would
give a false positive if wearing a blindfold, not able to see due to
the blind option, and not afflicted with any other blindness factors.
Dipping a worn blindfold into holy or unholy water is supposed to
reveal a glow if that blindfold is the only reason for blindness but
the glow was described even when blind-from-birth.
There's no feedback at all when the glow isn't seen. I'm punting on
that one. (This change didn't introduce that, just added one extra
situation where it happens.)
OPTIONS:blind starts the hero off blind, but putting on the Eyes of the
Overworld confers sight. Make that break the blind-from-birth conduct.
Sight persists after removing the Eyes even though they aren't intended
to cure anything. It doesn't make sense to restore the blind-from-birth
flag when taking the Eyes off, but we may want to add another flag, or
make u.uroleplay.blind into a bit mask that can track both can't-see-now
for play and could-never-see for conduct. (Actually, u.uroleplay.blind
should track only the conduct, and starting the game with it enabled
should set one of the extra bits in u.uprops[BLINDED].intrinsic. The
Eyes already override that, and taking them off would restore blindness
since the bit would still be set. As a bonus, the expression in the
macro 'Blind' could be simplified.)