From 9b4eaafe8cd6dfc3295f7266275d73675648c9a3 Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Mon, 2 Oct 2023 13:05:15 +0300 Subject: [PATCH] Fog clouds maintain any gas clouds --- doc/fixes3-7-0.txt | 3 ++- src/mon.c | 7 +++++++ src/region.c | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/doc/fixes3-7-0.txt b/doc/fixes3-7-0.txt index 53a16e59b..719d17d76 100644 --- a/doc/fixes3-7-0.txt +++ b/doc/fixes3-7-0.txt @@ -1249,7 +1249,8 @@ coughing due to stinking cloud wakes up nearby monsters stop occupation when timed levitation or choking issues a message use #monster to make dragon steed breathe wand of probing reveals tin contents -steam vortices leave steam clouds behind +steam vortices and fog clouds leave steam clouds behind +fog clouds maintain any clouds they are in, even poisonous ones Fixes to 3.7.0-x General Problems Exposed Via git Repository diff --git a/src/mon.c b/src/mon.c index 9fdeaf469..945c2190f 100644 --- a/src/mon.c +++ b/src/mon.c @@ -1015,6 +1015,13 @@ movemon_singlemon(struct monst *mtmp) if (mon_offmap(mtmp)) return FALSE; + if (mtmp->data == &mons[PM_FOG_CLOUD]) { + NhRegion *reg = visible_region_at(mtmp->mx, mtmp->my); + + if (!reg) + create_gas_cloud(mtmp->mx, mtmp->my, 1, 0); /* harmless vapor */ + } + /* Find a monster that we have not treated yet. */ if (mtmp->movement < NORMAL_SPEED) return FALSE; diff --git a/src/region.c b/src/region.c index 5a08e0d6a..1b0cac6dd 100644 --- a/src/region.c +++ b/src/region.c @@ -1010,6 +1010,10 @@ inside_gas_cloud(genericptr_t p1, genericptr_t p2) * start next to water and spread over it. */ + /* fog clouds maintain gas clouds, even poisonous ones */ + if (reg->ttl < 20 && mtmp && mtmp->data == &mons[PM_FOG_CLOUD]) + reg->ttl += 5; + if (dam < 1) return FALSE; /* if no damage then there's nothing to do here... */