| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
In the former case, without displaying the normal altar prompts.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This allows us to have a consistent and logical ordering of branches
without requiring the branch enum itself to be reordered (which could
have save compatibility implications). The new ordering of branches just
moves Depths to the place in the ordering that it already is planned to
go on the next major save compat bump, but other changes are possible,
if desired. All places in the code that iterate over branches have been
updated to use the new iterator except for code dealing with save files,
which still uses enum order, so that we can change the display ordering
without affecting saves.
|
|
|
|
|
|
|
| |
.cc, moving its contents into the new stepdown.cc and strings.cc.
(The latter also got many donations from libutil.h.)
Down with stuff! Up the new flesh!
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
0.15-a0-2006-g1cf06be handles this in a better way, with a better
message: "Your orc is caught in a web!", rather than "Partly explored,
can't reach some items and places".
This reverts commit 4e06f6f60faef46939f77dc610dad1874e619572.
|
| |
|
|
|
|
|
|
|
|
|
| |
A good deal of functions move to the two new files, mon-poly and
mon-message. Of the others, some go to where they are used, some to
mon-util, and a few are made member methods of monster.
This probably breaks Xcode compilation, and I'm not able to test
the changes I made to MSVC that will (hopefully) keep it working.
|
| |
|
|
|
|
|
|
|
| |
Because getting trampled into your own clouds is terrible.
Also disables this when under penance, which was an oversight for the
former.
|
| |
|
|
|
|
| |
Should address some of the residual autoexplore issues.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Trees are in some ways yet another type of transparent wall, and, as
MarvinPA has said, "in general having areas full of trees where you
can see lots of enemies but not target them just plays badly."
There were two differences between trees and mangroves, besides LOS:
the latter didn't start forest fires and left shallow water when
destroyed. That behaviour is kept, instead checking whether
the tree (technically, the player) is in Swamp.
|
|
|
|
| |
It now returns 0 rather than 1 if the player hasn't seen the branch yet.
|
| |
|
|
|
|
|
| |
Whenever the player autoexplores with Fedhas and autoexplore_sacrifice
is on, all corpses in sight are sacrificed.
|
| |
|
| |
|
|
|
|
|
| |
Sometimes, they're there to emphasize a break between two sections of code,
which is good. In a majority of cases, though, they're just inconsistent.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If the player is standing on an autopickup item and greedy explore is
on, the following situation (where ? is unexplored) reliably causes
autopickup to report "Can't reach some places".
####
##.#
#@#?
.###
We decide in the pathfinding code that NE (being adjacent to an
unexplored square) is a reasonable exploration destination, so return
true from path_examine_point for that square. This happens before we
explore back to our starting square, even though greedy_place is already
set to that location (by point_traverse_delay?!). Since the greedy
square is closer, explore_target() and thus pathfind() returns that
square (the player's location). But then _explore_find_target_square
rejects the square because it wasn't actually visited by pathfind and
thus appears to be unreachable.
Avoid this situation by special-casing the player's location in
_explore_find_target_square, so that it isn't considered unreachable.
That might not be the ultimately best approach, but it seems the safest
for now because it doesn't risk subtly breaking other uses of pathfind.
|
|
|
|
| |
This version is already present elsewhere, so reduced translation burden.
|
|
|
|
|
|
| |
Butchery is always allowed except in a few forms (bat, wisp, fungus).
Removes a lot of unnecessary/unused code for swapping weapons and removing
equipment when butchering.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Copying the whole map_knowledge every turn was really costly. We don't care
about any fields of the map other than the "seen" flag, too. Thus, we can
move it into a bitmap and update only changes rather than everything.
This means we need to update the entire bitmap once exploration starts, but
that's a small fraction of the cost:
qw profiles:
before:
9.55% check_for_interesting_features()
0.18% start_explore(bool)
after:
0.29% start_explore(bool)
0.10% check_for_interesting_features()
|
|
|
|
|
|
| |
Allows using <, >, $ etc.
Dead keys aren't handled properly (at least not in Firefox on Linux).
|
|
|
|
|
| |
No particular reason, other than consistency. And all but two used wasteful
double-conversion, so this is not a speed regression.
|
|
|
|
|
|
|
| |
The old one was quite bizarre, inconsistent with mprf().
Only two cases used the default channel (mpr_nojoin() is quite special...),
so I did not add an overload with the default.
|
|
|
|
|
|
|
|
|
| |
Also simplify quite a few cases.
It turns out in >90% cases of non-literals the argument had .c_str(),
which meant it was pointlessly malloc()ed and converted from and to
std::string. I believe a sprintf is faster, so even the argument of
miniscule speed-up doesn't apply.
|
|
|
|
|
|
|
|
| |
It trades readability and consistency for an utterly negligible bit of
speed. With the amount of further processing mpr() does, a single sprintf
is nothing.
This reverts commit d9dfa8fc9755fb0a4e8954c7eb94f32fe97b82e0.
|
|
|
|
| |
For consistency with mpr_nocap, mpr_comma_separated_list and friends.
|
|
|
|
| |
Scripted, then manually reviewed.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
map or set.count() can test the presence of a given key and return 0 or 1
outright.
|
|
|
|
|
|
|
|
|
|
|
|
| |
D is now 16 levels (the unsealed part was 14 levels previously), and the
Depths are six levels. Vaults is enterable from Depths:2-5; Abyss, Hell,
and Pan portals are available for the entire length of the branch.
Right now the monster set is identical to Vaults except for the absence
of Vaults-specific humans. D's monster set has also been truncated,
mainly on the out-of-depth front. It's my intent that this serve as a
starting point for figuring out what monsters we want to split between
the two branches.
|
|
|
|
|
|
|
|
|
|
|
| |
We were deferencing a past-the-end iterator when stair_level[br] was
empty. Unfortunately, this happened whenever specifying a branch whose
parent was unvisited, even D. That resulted in an uninitialised value
for depth, causing _get_nearest_level_depth to iterate up to
NUM_BRANCHES and then crash.
This happened to not occur on the servers, but my 32-bit NO_OPTIMIZE
build crashed every time on GD or &~<any letter>.
|
| |
|
|
|
|
|
| |
This also fixes a bunch of "act through glass" or "doesn't obey nightstalker/
lantern of shadows" bugs.
|
|
|
|
|
| |
Seriously, even preparing this commit gave me a pain in the triangle between
the thumb and index finger's bases and the wrist.
|
| |
|
|
|
|
|
|
|
|
| |
This allows moving branches around without breaking save compat or at least
serious hacks.
The portal stack can be probably dropped now: two copies of the same level
can't exist anyway.
|
| |
|
| |
|
|
|
|
|
| |
Only teleport and shaft traps break connectivity. Also, don't ignore
zot and alarm traps for running/travel checks.
|
| |
|
| |
|
|
|
|
| |
Simplifies code in a number of places, and also fixes a few tree-moving bugs.
|