|
From: <gi...@cr...> - 2026-01-26 10:25:15
|
via 9c19a917d8944fe030ab83f57771a09767df4fbf (commit)
via 45ea6cc7a576a0b1223e6fd027c509af01196111 (commit)
from 5877fddc77ad08ee2ccc13ec90c5a48b6f141fb4 (commit)
-----------------------------------------------------------------------
commit 9c19a917d8944fe030ab83f57771a09767df4fbf
Author: Isaac Clancy <ik...@ya...>
Date: Mon Jan 26 23:11:23 2026 +1300
Fix a crash when a summoner accepts a Gozag bribe
If an out of view summoner summons some monsters and then you move so
that the summoner and its summons come into view at the same time, we
would iterate over all the monsters that just come into view and call
`seen_monster` on them. If this call to `seen_monster` caused the
summoner to accept a Gozag bribe and become friendly, its summons would
be killed but we would still call `seen_monster` on these dead summons
resulting in a crash.
commit 45ea6cc7a576a0b1223e6fd027c509af01196111
Author: Isaac Clancy <ik...@ya...>
Date: Mon Jan 26 22:39:07 2026 +1300
Fix acidic and icy floors not using tile variations
-----------------------------------------------------------------------
Summary of changes:
crawl-ref/source/player-notices.cc | 8 ++++++++
crawl-ref/source/tilepick.cc | 11 ++---------
2 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/crawl-ref/source/player-notices.cc b/crawl-ref/source/player-notices.cc
index 833fb0431f..57338c90dc 100644
--- a/crawl-ref/source/player-notices.cc
+++ b/crawl-ref/source/player-notices.cc
@@ -479,7 +479,15 @@ void notice_new_monsters(vector<monster*>& monsters, vector<monster*>& to_announ
// But should flag all of them as seen, even if they're harmless.
for (monster* mon : monsters)
+ {
+ // A summoned monster can be killed by its summoner becoming friendly
+ // to the player upon being seen (e.g. when the summoner accepts a
+ // Gozag bribe)
+ if (!mon->alive())
+ continue;
seen_monster(mon, false);
+ }
+
if (crawl_state.is_repeating_cmd() || you_are_delayed())
for (monster* mon : monsters)
diff --git a/crawl-ref/source/tilepick.cc b/crawl-ref/source/tilepick.cc
index d5a3e5be6b..6aefbfa1c7 100644
--- a/crawl-ref/source/tilepick.cc
+++ b/crawl-ref/source/tilepick.cc
@@ -952,11 +952,7 @@ void apply_variations(const tile_flavour &flv, tileidx_t *bg,
tile = TILE_DNGN_TRAP_WEB_N - 1 + solid;
}
else
- {
- dungeon_feature_type feat = env.map_knowledge(gc).feat();
- needs_tile_picking = (feat != DNGN_FLOOR && feat != DNGN_ROCK_WALL)
- || is_torch_tile(tile);
- }
+ needs_tile_picking = true;
tileidx_t base = tile_dngn_basetile(tile);
tileidx_t variety = tile - base;
@@ -1016,10 +1012,7 @@ static tileidx_t _tileidx_feature_no_overrides(const coord_def &gc)
if (env.map_knowledge(gc).flags & MAP_ICY)
return TILE_FLOOR_ICY;
- return tile_env.flv(gc).floor;
-
- case DNGN_ROCK_WALL:
- return tile_env.flv(gc).wall;
+ return tileidx_feature_base(feat);
#if TAG_MAJOR_VERSION == 34
// New trap-type-specific features are handled in default case.
--
Dungeon Crawl Stone Soup
|