12 months agoUpdate changelog 0.22.3
Aidan Holm [Sun, 22 Mar 2020 04:15:24 +0000]
Update changelog

13 months agoDisable lua load(), loadstring() bytcode loading
Aidan Holm [Sun, 16 Feb 2020 05:34:42 +0000]
Disable lua load(), loadstring() bytcode loading

(cherry picked from commit fc522ff6eb1bbb85e3de60c60a45762571e48c28)

13 months agoDisable lua bytecode loading
Aidan Holm [Thu, 13 Feb 2020 13:31:55 +0000]
Disable lua bytecode loading

(cherry picked from commit 768f60da87a3fa0b5561da5ade9309577c176d04)
(cherry picked from commit 2791043dd8ecdf641e8b1b542d00dea30014df52)

2 years agoUpdate debian changelog
advil [Thu, 28 Mar 2019 02:54:01 +0000]
Update debian changelog

I missed this in the release tag, but here it is for posterity.

2 years agoUpdate changelog date for 0.22.2 tagging 0.22.2
advil [Wed, 27 Mar 2019 19:20:32 +0000]
Update changelog date for 0.22.2 tagging

2 years agoRevert "Remove a redundant message about dancing weapons"
advil [Thu, 7 Mar 2019 04:24:49 +0000]
Revert "Remove a redundant message about dancing weapons"

This reverts commit 8bd3d07a0cd099ea0d5ef360476625dd8cce99e7.

2 years agoChangelog for 0.22.2
advil [Wed, 6 Mar 2019 21:02:01 +0000]
Changelog for 0.22.2

Nothing very exciting for this, just a lot of minor fixes; the crash
with 0.23 versions (for systems where this matters, e.g. os x) is
probably the biggest thing.

2 years agoAdd a header
advil [Wed, 6 Mar 2019 13:50:40 +0000]
Add a header

Was not obvious what other commit would have addressed this.

2 years agoLet barachim use grand finale at range 8 (11917)
NormalPerson7 [Sun, 3 Mar 2019 17:37:44 +0000]
Let barachim use grand finale at range 8 (11917)

The range of grand finale was hardcoded as 7 rather than using
LOS_RADIUS, so when barachim were added, this wasn't updated.
This commit changes the grand finale targeter to use targeter_smite's
default parameters, which include range = LOS_RADIUS.

(cherry picked from commit caa6c10b7c1b3c1329dc47b88e9fe829e23ebe61)

2 years agoHandle temporarily-changed terrain when asserting level validity (#11876)
Alan Malloy [Tue, 12 Feb 2019 17:34:56 +0000]
Handle temporarily-changed terrain when asserting level validity (#11876)

(cherry picked from commit cea5463b436e4f77f31e209e6570fd30ccc55667)

2 years agoFix a shopping list crash
advil [Sat, 9 Feb 2019 20:20:53 +0000]
Fix a shopping list crash

This commit actually initializes the member variables for ShoppingList,
most importantly `list`, and resets the global shopping_list object in
_reset_game(). When a game had a shopping list and reset_after_save was
true, then saving that game and opening a new one would lead to a stale
pointer to the first game's deallocated shopping list prop.

Having this object work by a live pointer to a member of you.props is
probably not a great idea, all around...

(cherry picked from commit e1bfdf8443a35b3bb6124f329f4cf2d74e396399)

2 years agoInitialize int member variables of formatted_scroller (11838)
advil [Wed, 6 Feb 2019 14:33:30 +0000]
Initialize int member variables of formatted_scroller (11838)

For many scrollers, the initial position was being determined by the
uninitialized m_scroll, leading to fairly random behavior (probably
compiler-dependent, too). For good measure, I initialized all three.
This also fixes a bug in the way FS_START_AT_END was handled for this
class, where in some cases (maybe most cases) a scroller position would
be set but then overrided by the uninitialized value of m_scroll. Since
this value would usually be a large number, the scroller very often did
start at the end.

Did not track down why this behavior appears to have changed recently,
since this bug is months old, but it could be to do with something about
how uninitialized values are handled that we don't directly control.

(cherry picked from commit dd71560323a716373b3610a22c6d6cac75c0d010)

2 years agoUpdate copyright date
advil [Sun, 3 Feb 2019 16:23:01 +0000]
Update copyright date

(cherry picked from commit a7f21a457d5d3fcce18c1772dd5d7c1b4b9e22b1)

2 years agoSimplify a reaching check, actually fix 11704 (gammafunk)
Edgar A. Bering IV [Sat, 2 Feb 2019 05:49:03 +0000]
Simplify a reaching check, actually fix 11704 (gammafunk)

Commit 0f9db6f4df modified the function mons_has_ranged_attack; however,
this was not checked by i_feel_safe, which instead checked
mons_has_known_ranged_attack. The latter function is a relic from when
monster equipment was not identified on sight and has been removed.

(cherry picked from commit 4264f9c312a05338b21d357fa6e7bc4bfcc1875b)

2 years agoCheck for monster polearms and wands in i_feel_safe (11704, 11782)
Edgar A. Bering IV [Sat, 2 Feb 2019 05:05:22 +0000]
Check for monster polearms and wands in i_feel_safe (11704, 11782)

(cherry picked from commit 0f9db6f4df2b44df59ae7c942e1f7c4564a44cd9)

2 years agoDisable mores during targeting (11717)
Edgar A. Bering IV [Sat, 2 Feb 2019 03:49:42 +0000]
Disable mores during targeting (11717)

(cherry picked from commit 43a6aff242bf5a0c306d90df70d82849c6b1fad1)

2 years agoInclude petrification information in death messages (11374)
NormalPerson7 [Sun, 27 Jan 2019 12:31:17 +0000]
Include petrification information in death messages (11374)

Display "Slain by X ... while petrified [by X]" on the death screen when
the player was killed while petrified, in the same way as paralysis.

This applies only when fully petrified, not when petrifying, and the
monster that first applied the petrifying status is used in the death
message, even if the player is hit again with the petrify spell by a
different source on the following turn and this accelerated the
petrification process.

(cherry picked from commit 779a845ef75d7b5d83ad587326002c93d76a2b7d)

2 years agoTwo sanity-check fixes
advil [Mon, 28 Jan 2019 03:41:22 +0000]
Two sanity-check fixes

Both of these, I think, were leading to memory corruption. In the case
of the change, if you were to set the number of ui state
channels to 0, and then try to push a ui update to channel 0, this could
lead to memory corruption if your stdlib let it happen. In the case of
the formatted_string change, what's being pushed back is really an
fs_op, and so the constructor needs to be called, in which case it is
really better as an emplace_back; I'm not 100% sure that this would be
bad on all (or any) stdlib implementations (since it might rely on an
implicit copy constructor or something), but I definitely got an lldb
backtrace with a crash inside this call.

(cherry picked from commit 6caef08bea833d059635b472aacc9121d4827d04)

2 years agoFix AC calculation in item description with deformed body (Monsterracer)
NormalPerson7 [Sun, 27 Jan 2019 19:22:43 +0000]
Fix AC calculation in item description with deformed body (Monsterracer)

Previously, the AC granted by armour when the player has deformed body
was sometimes lower than that indicated in the item description's
"Wearing mundane armour of this type will grant the following:" line.

This was because:
  - player::base_ac_from calculates the AC reduction from
    deformed body as `AC - baseAC / 2`;
  - the description called the player::base_ac_from method with scale
    parameter 1, resulting in the AC being rounded up;
  - the actual AC calculation called the method with scale parameter 100
    and then performed integer division on the final result, resulting
    in the overall AC being rounded down.

Fix this by calling base_ac_from with scale parameter 100 and then
dividing by 100, so that the maths here is equivalent to that in the
real AC calculation.

(cherry picked from commit 0c83f0cefa03b3f611ec172b0b6970f3d1159300)

2 years agoFix ball lightning stair behavior (11812)
Edgar A. Bering IV [Sat, 26 Jan 2019 22:49:32 +0000]
Fix ball lightning stair behavior (11812)

First, prevent ball lightnings from taking stairs. Second, disappate
player ball lightnings left behind. While technically monsters, these
should behave like conjurations from a gameplay point of view.

(cherry picked from commit dd7946d620dd3dffcc2a3189cefb41370c29b906)

2 years agoUse env.map_knowledge to check moveto prompts (11806)
Edgar A. Bering IV [Sat, 26 Jan 2019 21:37:48 +0000]
Use env.map_knowledge to check moveto prompts (11806)

Prevent information leaks when far movement effects (shadow step, hop,
etc.) have the possiblity of landing in the explore horizon.

(cherry picked from commit 83ee88da44d8fd7402fdf0239f28ad8d5b0c81d3)

2 years agoShow sprint manual section in sprint newgame menu
advil [Fri, 18 Jan 2019 18:10:25 +0000]
Show sprint manual section in sprint newgame menu

(cherry picked from commit 7db0834d69100d2186abaeda24fe25b7b2eeb7a1)

2 years agoFix a help bug that isn't triggered
advil [Fri, 18 Jan 2019 17:17:34 +0000]
Fix a help bug that isn't triggered

`show_help` takes a section argument that is supposed to basically do
what hitting a key from the main help menu would accomplish. There was
untested code for the special case section keys that didn't actually
work, leading to a blank screen. This lets `show_help` handle these
section arguments (e.g. `v`) correctly, in case someone ever wants to do

(cherry picked from commit a1c2b65f233c334cf820a3498c302a64432e0014)

2 years agoShow item help in newgame weapon menu
advil [Fri, 18 Jan 2019 16:48:05 +0000]
Show item help in newgame weapon menu

instead of the key quick reference? This would be better if it scrolled
directly to the weapons subsection but there's no quick way to do that

(cherry picked from commit 4cc9efd76a12830a7acfef54b880f011388cf086)

2 years agoHandle pre-scrolled help screens correctly
advil [Fri, 18 Jan 2019 16:39:15 +0000]
Handle pre-scrolled help screens correctly

This fixes the bug where help in character selection is not going to the
correct help subsections (for species/background info).

(cherry picked from commit 146c4415506c6ff2ad54fe9bb92c496824d422c0)

2 years agoFix a bug in util.formatted_string_to_html
advil [Tue, 15 Jan 2019 21:14:31 +0000]
Fix a bug in util.formatted_string_to_html

This would appear to be a >5 year-old bug that appends an extra </span>
any time a color is correctly terminated. (Luckily it seemed to mostly
be getting fixed up on append calls? I found it because the fixup will
eat whitespace, potentially messing with preformatted text.)

(cherry picked from commit 9fa157057ad4372b2e14f0e2d6c417e6c9630737)

2 years agoPrevent recursion for `viewwindow`
advil [Thu, 10 Jan 2019 21:49:41 +0000]
Prevent recursion for `viewwindow`

Because this function resets a lot of display state, any recursion is
potentially bad news since the lower code on the stack than the
recursive call may have references that become invalid. However, it is
hard to call it a bug that this function can occasionally be called
recursively, since there are many ways to trigger it and they tend to be
necessary for some corner case or other. (It perhaps suggests some kind
of radically different approach to redraws, though.)

This change was specifically provoked by a series of crashes like:

More precisely, what was happening here is the following:
Preconditions: (a) the player had a custom autopickup function in their
rc that had a bug (and so caused a lua error, related to trying to check
if trunks were rotten in 0.22) when hungry. (b) they trigger a runrest
delay, e.g. by 5. (c) there is some pickup-able item in los. (d) tiles.

1. `viewwindow` is called normally during an `_input` cycle.
2. In order to render the tile with an item during this call, the game
needs to know if the object should trigger autopickup.
(`_tile_place_item` calls `item_needs_autopickup`.) It gets this
`item_def` from the global map (env.map_knowledge), and starts passing
it around by reference.
3. The autopickup hook errors, and crawl prints the error with mprf.
4. The printing of an error (immediately) interrupts the delay, which
eventually calls `runrest::stop`, which calls `viewwindow` again.
5. During this second call to `viewwindow`, `show_init` is called, which
clears out the (global) map. Somewhere along the line, on the tile with
the item on it, `update_tile_at` causes `map_call::clear` to be called
on that tile, which deletes any cloud/monster/item info stored in that
6. When flow gets back to the autopickup code, there is now an item_def
reference that is invalid (because it is a reference to something that
has been deleted). If this memory has been re-used, at this point, a
check on the item type will fail, leading to the crash seen in the log
above. (This in practice happens maybe 1 in 10 calls, and is quite

Morals? Side-effects are bad, and side-effects involving global state
are especially bad, but this sequence of events is so complicated and
involves so many core bits of crawlcode that I couldn't come up with a
reasonably-scoped, principled solution. Since some version of this has
potential to happen any time there is this recursion, I just prevented
the recursion altogether.

(cherry picked from commit 0a1fc62c7c503f5ea5d563f173a78e7d4a356ad9)

2 years agoDon't chop messages at 80 chars for chardumps/crashes
advil [Thu, 10 Jan 2019 14:24:13 +0000]
Don't chop messages at 80 chars for chardumps/crashes

This probably comes up mainly for things like lua error messages. (An
alternative would be to not bother with 80 chars, which would make sense
for crashlogs, but not necessarily chardumps.)

(cherry picked from commit 30168226961f794508afd3ee2168dab3a5332778)

2 years agoUse window hidden API properly
advil [Tue, 8 Jan 2019 17:46:46 +0000]
Use window hidden API properly

This probably disabled delays altogether on servers that updated since

(cherry picked from commit 42e81859b23d998c2731877e8801922f96b5c4cc)

2 years agoDon't create a new TextDecoder for each message
advil [Tue, 8 Jan 2019 17:45:24 +0000]
Don't create a new TextDecoder for each message

This may have been contributing to perception of choppiness, as it
seemed to be triggering periodic gc that I'm not otherwise seeing. (I
wouldn't have expected the old method to have any different effect, but
who knows.)

(cherry picked from commit edc204144ce3f39e8ca7402bc2de430efed25d15)

2 years agoDon't run delays for webtiles windows that are hidden (11657)
advil [Mon, 7 Jan 2019 14:37:23 +0000]
Don't run delays for webtiles windows that are hidden (11657)

at least, according to the page visibility API, which is at proposed
recommendation level and widely supported. (For older browsers, this
should just fall back on the older behavior.)

The problem in 11657 is that most browsers throttle setTimeout to use a
minimum timeout of 1000ms for non-visible windowsr.  So, long travel
sequences that are supposed to have a 1ms delay in between each step
instead have a 1s delay in between each step, and so run extremely
slowly while the window is backgrounded and pick up speed to the regular
timeout length once the window gets refocused.

(cherry picked from commit a036e810d7e9c8864ddc53b4fe8b5e28185a697c)

2 years agoDon't use `let`
advil [Mon, 7 Jan 2019 02:32:39 +0000]
Don't use `let`

Not necessary here and isn't otherwise used in our codebase.

(cherry picked from commit 3751e1c4cc42047885972ef6e9e079d744d8095f)

2 years agoFix out-of-order messages (maybe 11780)
advil [Mon, 7 Jan 2019 02:03:00 +0000]
Fix out-of-order messages (maybe 11780)

For compressed websockets, the decoding process used a FileReader to
convert the output of decompression to UTF-8. However, FileReader comes
with no guarantees about the order in which callbacks get attended to
when there are multiple instances, and in chrome especially they could
get quite out of order for messages sent at roughly the same time. This
lead to the message queue being out-of-order, which various aspects of
the webtiles client are not robust to.

This commit uses (suggested by jilles) a TextDecoder instance instead.
Because this may not be supported by some browser versions still in use,
I have kept the old approach as a fallback. (An alternative would be
simply to use uncompressed websockets if TextDecoder is not supported.)

(cherry picked from commit 63bca24c078454be720306c64aff6e8c06cf7066)

2 years agoImprove spell description of memorised uncastable spells (11808)
NormalPerson7 [Mon, 31 Dec 2018 14:39:00 +0000]
Improve spell description of memorised uncastable spells (11808)

"You cannot memorise this spell because ..." was unsuitable when the
player had already memorised an unusable spell before it was made

Therefore, change this message to "You cannot cast this spell because ..."
when the player had previously memorised the spell.

Also convert `description` in this function from a string to an
ostringstream to prevent casting to a string that would be caused by
neither of the first two additions to `description` being of type

(cherry picked from commit b60d84b635ccc85b4a8e9003c0d308a4538611e1)

2 years agoFix surge of power message order when evoking enhanced wands (11753)
NormalPerson7 [Mon, 24 Dec 2018 16:06:14 +0000]
Fix surge of power message order when evoking enhanced wands (11753)

This commit adds functionality to deal with the "surge of power" message
when zapping wands under MP-powered wands in your_spells directly, so
that this message is displayed before any of the wand's effects and any
world_reacts effects caused by zapping the wand are displayed.

To effect the change this commit also moves the check for the player
having enough MP to use the full power bonus from MP-powered wands into

[Committer's note: Closes #926, squashed and kept some Pakellas code in
place since Pak is disabled but not removed]

(cherry picked from commit 7e7a9de784ed11b3b4b6630da02ab9018ab25b22)

2 years agoFix a weapon ego designation in a vault
gammafunk [Fri, 21 Dec 2018 04:52:48 +0000]
Fix a weapon ego designation in a vault

It's 'vampirism', not 'vampiric'. This typo caused the vault to not
place due to a parsing error whenever this ego was selected.

(cherry picked from commit 63707c92e330c37951bb0129dadf2329e9b89841)

2 years agoFix Sif Muna dud gift bug (11791)
jmart [Sun, 16 Dec 2018 06:07:47 +0000]
Fix Sif Muna dud gift bug (11791)

If the player has every spell in their library, Sif Muna will still
send the "Sif Muna grants you a gift!" message and trigger gift timeout.
This commit corrects the bug. When the player has all spells in their
library, Sif's gift timeout will no longer be triggered.

The cause of the error was an incorrect check in Sif's gift logic.
The return value of the acquirement(...) method was used to check
success, but that method returns true even if no item was created.

[Committer's note: Formatting tweaks, Closes #923]

(cherry picked from commit 50760eb0ede9769f307ea3d8c695b020c4d1991f)

2 years agoRemove a secret dig square (Rawrakai)
Edgar Bering [Fri, 7 Dec 2018 20:50:05 +0000]
Remove a secret dig square (Rawrakai)

(cherry picked from commit 2dd13d1d2ce35b5bfe5ac35bdabbcfa4c62fefd1)

2 years agoDisable met targets after quaffing a potion of experience (11352)
Edgar Bering [Fri, 7 Dec 2018 04:31:27 +0000]
Disable met targets after quaffing a potion of experience (11352)

The potion of experience skill menu backed up the player's current skill
training state to allow potion-specific skill selection. Upon restore, the
backup would ignore any met targets and resume training a skill even if the
skill target had been met.

The skill_state object now checks to see if its cached target has been met
on restore, and does not alter the current state if its training information
appears to be out of date.

Finally, a check is added to the potion of experience effect to prompt for
new skilling if targets are met after quaffing the potion.

Closes #886, using a different approach.

(cherry picked from commit 3f6f39fb578e913588debd065a65e7c922b24a62)

2 years agoFix a connectivity issue in the_grid
CanOfWorms [Tue, 4 Dec 2018 04:14:20 +0000]
Fix a connectivity issue in the_grid

The center of this vault could be disconnected depending on
the subvault generation. This change should fix the issue.

(cherry picked from commit 50a81782d987eaa4511ffa44401fe7aa57c1e99c)

2 years agoMake cheibrodos_fertilizer no_tele_into
Alan Malloy [Sun, 2 Dec 2018 06:43:55 +0000]
Make cheibrodos_fertilizer no_tele_into

It's a pretty nasty enclosed space to get shafted into on D:2, as pointed out by /u/DeadKateAlley.

(cherry picked from commit e7ea69ae4f5d3d78c65117d779b993637b4214e1)

2 years agoFix messaging when Maurice steals a weapon (Salmon, Stenella)
Nikolai Lavsky [Tue, 27 Nov 2018 12:05:02 +0000]
Fix messaging when Maurice steals a weapon (Salmon, Stenella)

When Maurice steals a weapon, the games says
  Maurice steals <weapon>...
  Maurice wields <weapon>...
  It bursts into flame!/Its appearance distorts for a moment./etc.
even though the weapon always goes into his alternative weapon
slot (unless Maurice's disarmed).

The same happens if you give an "alt"-inscribed weapon to a
monster via the xo wizard command.

Fix this, and also simplify some monster equip code.

Instead of passing "bool msg" into monster::equip() and, subsequently
into equip_weapon(), equip_armour(), or equip_jewellery(), just don't
call equip() if this value is false. Previously, all these functions
did nothing unless msg was true. These functions are also renamed to be
more descriptive; they do not equip the item, only print the message.

[Committer's note: Closes #911]

(cherry picked from commit c6253629db3fd9264119ec3c7ab99b4e82fda13e)

2 years agoPrevent invalid_monster messages when converting
Edgar A. Bering IV [Mon, 26 Nov 2018 00:55:42 +0000]
Prevent invalid_monster messages when converting

036aa52 dismisses summoner's summons on attitude change. One place where
attitude changes is on bribe or Beogh follower acquisition. If this
happens on the turn the summoner comes into view and their summons are
already visible those now expired summons need to be filtered out after
the summoner's conversion occurs.

(cherry picked from commit 8f93ed435fec9a0b703edef112df9363d6bd5563)

2 years agoAdd more checks for invalid constrictions
gammafunk [Sun, 25 Nov 2018 00:28:42 +0000]
Add more checks for invalid constrictions

Usually monster death handles the necessary constriction cleanup, but
there are cases involving e.g. summons where a summoner's death can lead
the constriction code to attempt to constrict a summoned monster that's
been reset.

This commit adds aliveness checks to the methods that check for invalid
constrictors and constrictees to unconstrict and also requires aliveness
before attempting to apply damage.

(cherry picked from commit 6f6daefbf7dfc89422366fc25d6742fefb1c6ff1)

2 years agoDon't halve the MR of magic immune creatures from AF_VULN (11754)
NormalPerson7 [Fri, 23 Nov 2018 19:28:22 +0000]
Don't halve the MR of magic immune creatures from AF_VULN (11754)

Previously phantasmal warriors were able to halve the MR of magic immune
creatures, which was announced and appeared to have an effect even
though it really had no effect whatsoever.

Hence, add a check to exit the case for AF_VULN early if the defender is
immune to hostile enchantments.

(cherry picked from commit e12115f95eee4d2e8687b8e08744b9d01c761dce)

2 years agoLet the sturdy frame mutation reduce stealth/dodging penalties
NormalPerson7 [Fri, 23 Nov 2018 16:56:19 +0000]
Let the sturdy frame mutation reduce stealth/dodging penalties

Previously, the sturdy frame mutation was taken into consideration only
for the adjusted_armour_evasion_penalty method, not the
unadjusted_armour_evasion_penalty. The latter of the two methods is used
for stealth penalties, Jiyva stat shuffling, autotraining and some parts
of the dodging penalty calculations, which means these things were not
affected by the sturdy frame mutation. This meant the claimed ER-2 of
the sturdy frame mutation did not have the full effect of reducing the
ER by 2.

Hence, move the sturdy frame mutation's effect to

(cherry picked from commit e0e9ef7961d2985c41630ada01881437e0458184)

2 years agoDon't extend Ru's aura through glass (0011769)
Edgar A. Bering IV [Fri, 23 Nov 2018 17:20:01 +0000]
Don't extend Ru's aura through glass (0011769)

Monsters can't make attacks through glass, so they should not have their
attacks redirected.

(cherry picked from commit 453ed5a3af072744f28814778014caf69bc31597)

2 years agoFix a hints mode memorise menu message from extending horizontally
NormalPerson7 [Sun, 4 Nov 2018 17:30:48 +0000]
Fix a hints mode memorise menu message from extending horizontally

The text from hints_target_mode was not properly broken up.

(cherry picked from commit 1044d4cbadbea1ac9d7b2af6173fbc7e8eb4fc72)

2 years agoFix exclusions for stationary monsters behind solid features (paterick)
gammafunk [Mon, 19 Nov 2018 04:14:00 +0000]
Fix exclusions for stationary monsters behind solid features (paterick)

Commit 57debff0 had exclusions not continue past solid features for
stationary monsters, but this doesn't create a proper exclusion in all
cases. In particular, such monsters can act behind solid features like
grates and statues that block line of effect but not line of sight, and
we want exclusions to continue past such features. The vault
minmay_statue_bubble is an example of placing a statue monster behind
granite statues where the current logic makes an incorrect exclusion.

The opacity class we want is mostly opacity_no_trans ("no
translocations"), but that rule considers half-opaque features like
clouds that change quickly over time. Hence this commit makes an
opacity_fully_no_trans class that ignores half-opaque features and has
exclusions for stationary monsters use this class.

(cherry picked from commit 1c01f6317855e7b4e2d8e6c7f24b939436064db3)

2 years agoDon't autoexclude past glass sometimes (11658)
stenella [Sun, 4 Nov 2018 05:38:28 +0000]
Don't autoexclude past glass sometimes (11658)

When placing an exclusion on a stationary monster don't extend the
exclusion past glass.

[Committer's note: Closes #892, checkedwhite and reworded]

(cherry picked from commit 57debff0a5a4228ba90f96e0e230395d1735efdb)

2 years agoRemove a redundant message about dancing weapons
gammafunk [Wed, 14 Nov 2018 02:08:38 +0000]
Remove a redundant message about dancing weapons

Currently when a dancing weapon comes into view, it generates a
"...comes into view" message with a followup "It is a..." containing the
exact same information. The second message used to be part of Ash's
passive monster equipment identification, where the first message had
less information and the second contained more information ("Ashenzari
warns you: ..."). Now that monster equipment is always identified when
the monster is first seen, we don't need the second message.

(cherry picked from commit 923571cada1a753305a1fe0d7b4f1c9bf69cc2ca)

2 years agoFix typo/color layering bug in tutorial
stenella [Sun, 4 Nov 2018 22:03:25 +0000]
Fix typo/color layering bug in tutorial

Due to the way strings are formatted after
being read from this function, this
</magenta> tag was being treated as extra
text. It's not needed, so remove it.

Fix a grammar oopsie.

(cherry picked from commit 8871014cbb2a18b5ba2453184cd1d7ac3c31be02)

2 years agoValidate file pointer when loading help parts
advil [Fri, 9 Nov 2018 13:41:49 +0000]
Validate file pointer when loading help parts

This might be better to handle without a crash at all, but right now
there is a possible segfault in fgets if something is wrong with this
file, so check it explicitly. Possibly these files should be explicitly
validated on game load in addition (I think only their containing folder
is right now).

(cherry picked from commit f02c81043874cc733a378d8b4c35df3b7577f7a9)

2 years agoPotential fix for Mojave black screen issues
advil [Fri, 9 Nov 2018 00:36:19 +0000]
Potential fix for Mojave black screen issues

Workaround based on:
This may be fied in SDL2 master, in which case we should revert this
workaround and update the submodule, when it gets released.

(cherry picked from commit 4fac899665089c4f24ab47d028b706cc77904ad0)

2 years agoDon't crash when there are game types from the future
advil [Wed, 6 Mar 2019 05:07:39 +0000]
Don't crash when there are game types from the future

The save browser was crashing immediately on starting up in this case,
which is triggered by the presence of seeded games from 0.23. This
future-proofs a bunch of calls used by the save browser so that these
games behave just like any other incompatible future-versioned save game
in the main menu.

2 years agoDon't block the entrance to Tomb:2 with a statue (SteadysEmpire)
gammafunk [Mon, 4 Feb 2019 04:04:28 +0000]
Don't block the entrance to Tomb:2 with a statue (SteadysEmpire)

The original Tomb:1 center vault sometimes blocks access to the hatch to
Tomb:2 with a sarcophagus (really a statue). This can create situations
where the player is stranded in Tomb if a player without a way to
destroy statues is able to enter Tomb:2 another way, for instance
formicid shafting or an extremely lucky teleport. This vault predates
the existence of formicids, a species who's combination of stasis and
self-shafting makes this problem much more likely.

In any case, this is not an interesting puzzle, so remove the chance to
place this statue, but still allow this square to sometimes have a
statue monster or trap as before.

2 years agoLimit extra Ru ability info to followers (amalloy)
Aidan Holm [Thu, 8 Nov 2018 13:39:12 +0000]
Limit extra Ru ability info to followers (amalloy)

The Ru sacrifice ability description contains code for showing sacrifice
significance and piety gain, which crashed if the player was not
following Ru for some abilities. This commit simply hides that line
of text, as well as mutation-specific text for sacrifices that add
mutations, and re-enables using the ability description view for
?/A, which is currently the only way for non-followers to view the

(cherry picked from commit 0aa8dd0f38c3c6cb1f4f39c051068e5bdc10ef23)

2 years agoFix some issues with build-rltiles and webtiles
advil [Fri, 21 Dec 2018 21:18:59 +0000]
Fix some issues with build-rltiles and webtiles

Ensure that libpng gets built if there is no pkg-config, so that the
submake has access to it. Also a misnamed variable that crept in in

(cherry picked from commit 2e9d38c61e5b14e05bf6f63d281cb107505f943c)

2 years agoFix cross-compiling + libpng
advil [Thu, 13 Dec 2018 14:54:42 +0000]
Fix cross-compiling + libpng

When cross-compiling, the contrib libraries are not useful for the
tilegen tool, which needs to be run as part of the build process. This
prevents it from trying to use contribs; cross-compiling will therefore
fail if it can't find libpng via pkg-config (this was the status quo for
all builds before 409694ba0a8762, so it doesn't introduce any new

(cherry picked from commit a53296f35165328e456d8cdefad82908d2dc3428)

2 years agoUse contribs if appropriate when building rltiles/ via sub-make
advil [Wed, 12 Dec 2018 22:34:52 +0000]
Use contribs if appropriate when building rltiles/ via sub-make

This passes along the NO_PKGCONFIG value determined by the main Makefile
to rltiles/Makefile. Previously, the sub-make process would use
pkg-config libpng regardless of what the main Makefile is doing. This
isn't necessarily a big deal, because the utility built with this isn't
distributed, but it is breaking the build for hypothetical someone who
is having pkg-config problems and wants to rely just on contribs (me),
or someone who might try to build crawl in a restricted environment
without pkg-config (which apparently is uncommon).

(cherry picked from commit 409694ba0a87627abdd9a6b36bbf2241f9f64e43)

2 years agoRevert complex bones install stuff, add dist_bones to repo
advil [Tue, 18 Sep 2018 19:08:00 +0000]
Revert complex bones install stuff, add dist_bones to repo

As annoying as it is to have binary files in the repository, the bones
installation code that this commit removes was ending up no less
annoying, and considerably more complicated. This change will also make
it easier for servers that reset the bones folder on incremental updates
to make use of dist_bones.

2 years agoFix a message for wand pickup (minmay)
gammafunk [Wed, 19 Sep 2018 05:17:35 +0000]
Fix a message for wand pickup (minmay)

(cherry picked from commit 58cdd98f8dfbbae1b1632e95dca2d987f7769ef6)

2 years agoUpdate the debian changelog for 0.22.1 0.22.1
gammafunk [Mon, 17 Sep 2018 02:07:08 +0000]
Update the debian changelog for 0.22.1

2 years agoUpdate the changelog for 0.22.1
gammafunk [Mon, 17 Sep 2018 01:48:05 +0000]
Update the changelog for 0.22.1

2 years agoUpdate some scroll descriptions
CanOfWorms [Wed, 12 Sep 2018 00:07:57 +0000]
Update some scroll descriptions

Clarify exactly what can (or more specifically, can't) be affected by fear.
Unfortunately, this is not a perfect solution as holiness is hidden to the
player, but the holiness of most monsters (especially in the early
dungeon) is usually clear so it should help newer players.

The Cause Fear spell should also have an updated description,
but it currently uses the monster spell description, so that needs
to be adjusted first.

Also remove a very outdated reference to hides in the enchant
armour scroll description.

(cherry picked from commit 07fecf47cd8b463e61f20e6d8ad6e2b7ed28c4ed)

2 years agoMore description updates
CanOfWorms [Wed, 12 Sep 2018 03:35:06 +0000]
More description updates

Mention a (sometimes important) uncommon interaction
of teleportation scrolls. This is already in the status
description section (?/T), but there's no harm in making
it more visible.

(cherry picked from commit 5ae17c6e8908ca86245ec589a219a32134790ed4)

2 years agoFix inventory menu obscuring some message prompts (#11645, Yermak)
Aidan Holm [Sat, 15 Sep 2018 13:49:20 +0000]
Fix inventory menu obscuring some message prompts (#11645, Yermak)

(cherry picked from commit 97aacdb3060bfa700cd6b20459b88391e4ba863d)

2 years agoProperly disable Scrying when abandoning Ashenzari (guyde, salmon)
gammafunk [Sat, 15 Sep 2018 06:51:00 +0000]
Properly disable Scrying when abandoning Ashenzari (guyde, salmon)

(cherry picked from commit 8f6560338e7faf9780e36f5a070aafd138e0fb58)

2 years agoHide shopping list key if shopping list is empty
Aidan Holm [Sat, 15 Sep 2018 13:46:18 +0000]
Hide shopping list key if shopping list is empty

(cherry picked from commit 50e13424c7cf5aa80f95211e78e7055c891aaab9)

2 years agoShow correct MP after aborting spell (#11598, Siegurt)
Aidan Holm [Sat, 15 Sep 2018 12:33:34 +0000]
Show correct MP after aborting spell (#11598, Siegurt)

MP is deducted before casting begins, and the deducted amount is
returned if casting is aborted, but the screen was not refreshed
afterward, leading to player confusion.

(cherry picked from commit d05d27e280a260ff88c8b949b4525e0f32536c56)

2 years agoRemove glob from tar call in Makefile
advil [Mon, 10 Sep 2018 21:31:32 +0000]
Remove glob from tar call in Makefile

Gnu tar handles globs differently and they would need to be manually
activated just for those versions; this change should work the same on
all versions of tar (I hope).

(cherry picked from commit f92cf62f8fbdf7e3d5e36e121392b178253334c2)

2 years agoFix some warnings (gammafunk)
advil [Mon, 10 Sep 2018 21:29:37 +0000]
Fix some warnings (gammafunk)

(cherry picked from commit 6564cf386f511525e2ce7c52e3478eb5475a053f)

2 years agoAdd bones downloading to package/install targets
advil [Mon, 10 Sep 2018 19:48:18 +0000]
Add bones downloading to package/install targets

This is not very elegant in that it will try to redownload the bones
package each time these targets are called, but I did it this way so as
to not make build success contingent on actually downloading this thing
for these targets. Better Makefileing welcome.

I believe this covers all of our packaging targets; I've tested it on
mac tiles only so far.

(cherry picked from commit 826d2532606eb17f578c53d3422153de9627971c)

2 years agoAdd a build target for installing bones distributions
advil [Sat, 8 Sep 2018 18:54:15 +0000]
Add a build target for installing bones distributions

The way this works is that it looks for a file named `dist_bones.tar.gz`
as an asset attached to the most recent tag on github, and downloads any
files in that tarbell that will unpack into `dat/dist_bones`. It will
try either curl or wget, and fail with an error message if neither are
available (or if the relevant link is 404). The tarbell needs to be
manually uploaded to the tag. For now, no other build rule calls this so
it will need to be done manually.

(cherry picked from commit 800ba1ec231ddd570def38a17a6985a119388fca)

2 years agoAdd a basic deduplication command for bones files
advil [Sat, 8 Sep 2018 16:52:59 +0000]
Add a basic deduplication command for bones files

There might be a bug somewhere that is resulting in multiple copies of
the same ghost?

(cherry picked from commit d0dd13620d40ad06321f11acd1472b7d4b5da12e)

2 years agoTweak permastore sizes
advil [Sat, 8 Sep 2018 16:51:39 +0000]
Tweak permastore sizes

Branches where the store doesn't include individual levels (e.g. depths)
could be a bit bigger.

(cherry picked from commit 70f5b0061bbd951b3cca6088a4598f0517750688)

2 years agoFurther tweaks to --bones commands
advil [Sat, 8 Sep 2018 13:06:33 +0000]
Further tweaks to --bones commands

A few formatting fixes; also, don't require case matching for rm, and
show count for ls.

(cherry picked from commit daa33e90319772d2a90e730fc58d9793097ef75e)

2 years agoClarify semantics of player_in_hell
advil [Sat, 8 Sep 2018 12:52:02 +0000]
Clarify semantics of player_in_hell

I would've expected that this includes the vestibule (and did, leading
to a bones naming bug), but it didn't, so this change provides both

(cherry picked from commit b54bf1b0daa60bcdb0d0f4ad4f6428dbad87cfc8)

2 years agoCommand line tools for manipulating bones files
advil [Fri, 7 Sep 2018 21:07:33 +0000]
Command line tools for manipulating bones files

These are aimed at preparing a bones collection for offline builds.

(cherry picked from commit 3cb3a195959c2780fe368fb6aa8fe761d3e993d2)

2 years agoIncrease MAX_GHOSTS
advil [Fri, 7 Sep 2018 20:54:00 +0000]

This used to place a (very coarse) limit on how many ghosts could in
principle spawn on the same level. This limit is meaningless now,
because ghosts spawn only via vaults, and it was acting as an artificial
constraint on how many ghosts could be in a bones file. Increase this so
that permastore files can be bigger.

(cherry picked from commit ee4e6b72383036cf9bfab92b7ff45a6fd6822d6c)

2 years agoDon't use the full minor tag versioning for bones files
advil [Fri, 31 Aug 2018 00:55:36 +0000]
Don't use the full minor tag versioning for bones files

Only use the subset that is relevant to reading and writing
ghost_demons. The issue here is that upgrading a bones file on a server
leads to it not being loadable by older saves, and it gets upgraded any
time a new minor tag is introduced. A previous commit introduced a
somewhat complicated backup system to deal with this, but that still had
some corner cases, and leads to unnecessarily many bones backups on
servers. The fact is that most save compat doesn't have much to do with
bones files, and out of the current 199 minor tags, only 4 actually
impacted bones. So, only use relevant minor tags for bones versions
(which do need to be manually set). I'll leave the backup thing in
place, but this change means that it only rarely will come into play.

This doesn't impact ghost_demons in player saves, which inherit the
versioning from the save.

(cherry picked from commit 28ba10279834244241c2a19577cae942b2b2c7b3)

2 years agoSupport for distributing bones permastore files in dat/
advil [Mon, 27 Aug 2018 03:12:30 +0000]
Support for distributing bones permastore files in dat/

This doesn't yet actually finish the mechanics of distributing them, but
if permastore files are put in the right subfolder of dat/, they will be
copied to the player's bones folder when needed. This should even work
on a server, though it's less necessary there.

(cherry picked from commit 2c6674ca8ff913b79825709a0a249987a6bd65d0)

2 years agoImprove the new save version api a bit and use it more
advil [Sun, 26 Aug 2018 23:46:47 +0000]
Improve the new save version api a bit and use it more

Encapsulates more version logic in just tag-version.h, with a cleaner

(cherry picked from commit ee7bbb803370ba37d8c149dbcc82b89600104a58)

2 years agoRemove a debugging change
advil [Sun, 26 Aug 2018 23:01:40 +0000]
Remove a debugging change

(cherry picked from commit 2e7624f900442a6a2a6bf581b80220ac1be74615)

2 years agoImprove handling of upgrading bones files for online games
advil [Sun, 26 Aug 2018 22:48:11 +0000]
Improve handling of upgrading bones files for online games

Plus several other fixes + a bunch of streamlining. Now, when a bones
file is loaded that is an old save version, a numbered backup of it will
be made before upgrading so that previous versions of the game can still
use the backup, rather than failing to load the updated versions.

Despite all this fancy footwork, the situation still isn't all that
great. For example, suppose that a player triggers a bones update for
some file from 34.199 to 34.201, and then another player comes along
with save version 34.200. Possibly a solution is to look for older
versions at that point, but I haven't yet come up with a good
implementation of that. Another possible solution is to move to a
seperate versioning system for bones files (probably a subset of the
minor tags); most of this is a pseudo-problem in that there is very
little save compat in bones files at all.

(cherry picked from commit add243beea67891b1d77f8dbc670704024035cec)

2 years agoAttempt to fix newgame colors on remote console (11671)
advil [Sun, 9 Sep 2018 00:25:11 +0000]
Attempt to fix newgame colors on remote console (11671)

I can't get this to happen locally, but it looks like an issue with only
8 colors being used in the newgame menus over ssh, even with the right
options set. (Maybe unsurprising, since the options aren't read yet).
This resets the highlight colors for webtiles specifically to what they
were before 44136481aa11. Looks ok in webtiles, could be better.

As a side note, using blue for dispreferred combos (as a fallback for
darkgrey) in console looks really bad.

(cherry picked from commit 7711e572f37eea9554f89d5d881f38367c5f90bc)

2 years agoAdd cross-compiling to travis
advil [Thu, 6 Sep 2018 18:56:01 +0000]
Add cross-compiling to travis

Would be nice to consistently test if the windows build is broken.  This
actually builds the packages, so we could consider replacing the CAO
unstable builds with something like this.

(cherry picked from commit f6d1ed2717bd1ff991493f41baac88e42e8812dd)

2 years agoFix incorrect .. in some text popups on hidpi displays
advil [Fri, 31 Aug 2018 03:23:54 +0000]
Fix incorrect .. in some text popups on hidpi displays

The problem was that the window preferred height was calculated
including subpixel advances, but the code to actually split the string
and trim it before rendering it was not. When deciding if text would
fit, it was sometimes (depending on the exact math) predicting that the
text was one line longer than it actual was (with subpixel advances),
and it therefore would chop the last line and put `..` in place of the
last two characters of the prior line.

(cherry picked from commit 456867d837b662a4917be200113d295c023198ea)

2 years agoFix ?/ at the main menu
advil [Fri, 31 Aug 2018 02:09:14 +0000]
Fix ?/ at the main menu

This isn't very elegant, it just uses two sequential popups. It's
still better than what was happening before, where the prompt text
wasn't begin displaying at all.

(cherry picked from commit 7f38390aa58c6acba8ca695c7dd478253c69685c)

2 years agoFix announcements for collecting runes in Sprints (hayenne, #11655)
Alan Malloy [Wed, 29 Aug 2018 18:08:26 +0000]
Fix announcements for collecting runes in Sprints (hayenne, #11655)

(cherry picked from commit a22e90c45fa23599fadb9e0459553d747002dbcd)

2 years agoTone down some blue/purple fog machines (hayenne)
advil [Wed, 29 Aug 2018 13:23:44 +0000]
Tone down some blue/purple fog machines (hayenne)

These were written assuming a spread rate of 0, I think, but this was
changed in 646ff71b4c43. (Though the size parameter in sprint_mu.des
just seems wrong, and maybe calibrated for gloom before

(cherry picked from commit 286b84bf81cc7cd2fcb95fa4f4c6f9a7c579f46f)

2 years agoHighlighting exploring horizon behind the doors
AndSDev [Tue, 28 Aug 2018 18:30:34 +0000]
Highlighting exploring horizon behind the doors

(cherry picked from commit ef0ad6d46f34d236037d4f8eee33e9c9da786984)

2 years agoTweak newgame highlighting further for console/webtiles
advil [Mon, 27 Aug 2018 20:43:06 +0000]
Tweak newgame highlighting further for console/webtiles

It turns out that console has some fancy thing that automatically
inverts the foreground colors when needed, but this was resulting in
lightgray on lightgray highlighting in webtiles. These tweaks fix that,
and also remove the darkgray on blue combo for non-preferred options
that was also not so readable, replacing it with simple darkgray on
lightgray, which is readable on both targets.

(cherry picked from commit 722f094350a02f56a3ba88af34287cdf44767881)

2 years agoFix a grammar issue with flying corrosive monster bits
advil [Mon, 27 Aug 2018 15:02:52 +0000]
Fix a grammar issue with flying corrosive monster bits

(cherry picked from commit 23b030f93548f03590dd2c09dddbefd1f973f5e4)

2 years agocheckwhite
advil [Sun, 26 Aug 2018 20:44:35 +0000]

(cherry picked from commit 0e7800ee05697c359e3eb668f93951603553f299)

2 years agoNotify player before forgetting a non-library spell (RoGGa)
advil [Sun, 26 Aug 2018 12:55:34 +0000]
Notify player before forgetting a non-library spell (RoGGa)

Applies to Vehumet gifts. With a large spell library, it's very easy to
lose trick of where spells came from and not be aware that some spell
has only been encountered via vehumet and won't be re-memorizable. Since
the only UI doesn't display this information anywhere in the spell menus
(you'd have to track it down with ?:), include this information in the
new confirmation prompt.

(cherry picked from commit a8cb661cfcaba028db09e393db787353498cd00d)

2 years agoConvert some malloc/free code to std::array
Aidan Holm [Mon, 27 Aug 2018 13:49:40 +0000]
Convert some malloc/free code to std::array

(cherry picked from commit 2ef98b0e17793367832791f3c69cc8b7df604240)

2 years agoFix incorrect minimap resizing (RoGGa, #11642)
Aidan Holm [Mon, 27 Aug 2018 13:07:45 +0000]
Fix incorrect minimap resizing (RoGGa, #11642)

Placing the minimap uses the difference between m_statcol_top and
m_statcol_bottom to calculate how much available space there is to show
the minimap. m_statcol_bottom was being wrongly calculated because some
inventory size calculations hadn't been completed. This is fixed by
completing those first, if they haven't already been done.

(cherry picked from commit fd4a40fe2994aac891a0248c5736dba4af19e277)

2 years agoAllow minimap to shrink when tile_map_pixels set (RoGGa, #11642)
Aidan Holm [Mon, 27 Aug 2018 13:07:05 +0000]
Allow minimap to shrink when tile_map_pixels set (RoGGa, #11642)

(cherry picked from commit 26220185991a7350b0611985f45b04108ff264fc)

2 years agoWrap chardump notes, overview, and messages (NormalPerson7, #11583)
Aidan Holm [Sun, 5 Aug 2018 16:43:48 +0000]
Wrap chardump notes, overview, and messages (NormalPerson7, #11583)

Notes and messages are the major contributors to overly long lines, but
the chardump still contains a few tables that can reach up to 105
columns; these are more difficult to adapt to smaller screen widths.

(cherry picked from commit 19e28b46dc1ce38954e961c3d918632b7c98750e)