Add level flag for plane of fire fumaroles

Also reduce the size of the gas clouds.

Breaks saves and bones.
This commit is contained in:
Pasi Kallinen
2023-03-17 19:35:57 +02:00
parent f2b75c3b0e
commit 4799fc937a
8 changed files with 21 additions and 7 deletions

View File

@@ -333,7 +333,7 @@ moveloop_core(void)
/* vision will be updated as bubbles move */
if (Is_waterlevel(&u.uz) || Is_airlevel(&u.uz))
movebubbles();
else if (Is_firelevel(&u.uz))
else if (gl.level.flags.fumaroles)
fumaroles();
/* when immobile, count is in turns */

View File

@@ -1730,7 +1730,7 @@ goto_level(
/* initial movement of bubbles just before vision_recalc */
if (Is_waterlevel(&u.uz) || Is_airlevel(&u.uz))
movebubbles();
else if (Is_firelevel(&u.uz))
else if (gl.level.flags.fumaroles)
fumaroles();
/* Reset the screen. */

View File

@@ -1390,15 +1390,25 @@ mkportal(coordxy x, coordxy y, xint16 todnum, xint16 todlevel)
void
fumaroles(void)
{
xint16 n;
xint16 n, nmax = rn2(3);
int sizemin = 5;
boolean snd = FALSE, loud = FALSE;
for (n = rn2(3) + 2; n; n--) {
if (Is_firelevel(&u.uz)) {
nmax++;
sizemin += 5;
}
if (gl.level.flags.temperature > 0) {
nmax++;
sizemin += 5;
}
for (n = nmax; n; n--) {
coordxy x = rn1(COLNO - 4, 3);
coordxy y = rn1(ROWNO - 4, 3);
if (levl[x][y].typ == LAVAPOOL) {
NhRegion *r = create_gas_cloud(x, y, rn1(30, 20), rn1(10, 5));
NhRegion *r = create_gas_cloud(x, y, rn1(10, sizemin), rn1(10, 5));
clear_heros_fault(r);
snd = TRUE;

View File

@@ -3747,6 +3747,8 @@ lspo_level_flags(lua_State *L)
gl.level.flags.deathdrops = 0;
else if (!strcmpi(s, "noautosearch"))
gl.level.flags.noautosearch = 1;
else if (!strcmpi(s, "fumaroles"))
gl.level.flags.fumaroles = 1;
else {
char buf[BUFSZ];
Sprintf(buf, "Unknown level flag %s", s);