gas cloud dissipation

If hero was in a cloud spot when it expired, the feedback would be
|The gas cloud around you dissipates.
|You see a gas cloud dissipate.
This commit is contained in:
PatR
2024-08-19 11:59:00 -07:00
parent f8c399bf50
commit 9d1234b87d
2 changed files with 21 additions and 9 deletions

View File

@@ -1456,6 +1456,8 @@ the #terrain command didn't know how to cope with visible gas/cloud regions;
if/when a spot contains both region and trap, show the trap
region expiration reported "the gas cloud around you dissipates" even when the
hero was swallowed
region expiration could report "the gas cloud around you dissipates" and also
"you see a gas cloud dissipate" for the same cloud spot
reduce shopkeeper's innate speed from 18 to 16 so that a hasted shopkeeper
doesn't always get 2 moves per turn

View File

@@ -448,12 +448,20 @@ run_regions(void)
}
}
if (gg.gas_cloud_diss_within)
if (gg.gas_cloud_diss_within) {
pline_The("gas cloud around you dissipates.");
if (gg.gas_cloud_diss_seen)
You_see("%s dissipate.",
gg.gas_cloud_diss_seen == 1
? "a gas cloud" : "some gas clouds");
/* normally won't see additional dissipation when within */
/* FIXME? this assumes that additional dissipation is close by */
if (u.xray_range <= 1)
gg.gas_cloud_diss_seen = 0;
gg.gas_cloud_diss_within = FALSE;
}
if (gg.gas_cloud_diss_seen) {
You_see("%s gas cloud%s dissipate.",
(gg.gas_cloud_diss_seen == 1) ? "a" : "some",
plur(gg.gas_cloud_diss_seen));
gg.gas_cloud_diss_seen = 0;
}
}
/*
@@ -1086,11 +1094,13 @@ expire_gas_cloud(genericptr_t p1, genericptr_t p2 UNUSED)
if (pass == 1) {
if (!does_block(x, y, &levl[x][y]))
unblock_point(x, y);
if (u_at(x, y) && !u.uswallow)
gg.gas_cloud_diss_within = TRUE;
} else { /* pass==2 */
if (cansee(x, y))
gg.gas_cloud_diss_seen++;
if (!u.uswallow) {
if (u_at(x, y))
gg.gas_cloud_diss_within = TRUE;
else if (cansee(x, y))
gg.gas_cloud_diss_seen++;
}
}
}
}