From: <gi...@cr...> - 2025-07-26 03:15:09
|
via e9fc4eb682203603134e32451c323dc48d76cef6 (commit) from 2092a5b95c8192649cab13e5f54b4e0913ab3713 (commit) ----------------------------------------------------------------------- commit e9fc4eb682203603134e32451c323dc48d76cef6 Author: DracoOmega <dra...@gm...> Date: Sat Jul 26 00:44:17 2025 -0230 Fix Frozen Ramparts incorrectly persisting on the level border (tswn) Apparently distance_iterator skips 'out of bounds' tiles (which the level border counts as), meaning that while the level border could get affected by ramparts, FPROP_ICY would never get cleared for it, causing it to reappear there whenever the player cast ramparts again later on, even from a great distance. I am frankly amazed this bug went so long without being discovered, since it seems that it may have always existed! ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/spl-damage.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/crawl-ref/source/spl-damage.cc b/crawl-ref/source/spl-damage.cc index a4170da441..c7fb9ecbf3 100644 --- a/crawl-ref/source/spl-damage.cc +++ b/crawl-ref/source/spl-damage.cc @@ -4528,11 +4528,11 @@ void end_frozen_ramparts() const auto &pos = you.props[FROZEN_RAMPARTS_KEY].get_coord(); ASSERT(in_bounds(pos)); - for (distance_iterator di(pos, false, false, - spell_range(SPELL_FROZEN_RAMPARTS, -1)); di; di++) + for (radius_iterator ri(pos, spell_range(SPELL_FROZEN_RAMPARTS, -1), + C_SQUARE, false); ri; ri++) { - env.pgrid(*di) &= ~FPROP_ICY; - env.map_knowledge(*di).flags &= ~MAP_ICY; + env.pgrid(*ri) &= ~FPROP_ICY; + env.map_knowledge(*ri).flags &= ~MAP_ICY; } you.props.erase(FROZEN_RAMPARTS_KEY); -- Dungeon Crawl Stone Soup |