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:
@@ -6,7 +6,7 @@
|
||||
--
|
||||
des.level_init({ style = "solidfill", fg = " " });
|
||||
|
||||
des.level_flags("mazelevel", "noteleport", "hardfloor", "shortsighted", "hot")
|
||||
des.level_flags("mazelevel", "noteleport", "hardfloor", "shortsighted", "hot", "fumaroles")
|
||||
-- The player lands, upon arrival, in the
|
||||
-- lower-right. The location of the
|
||||
-- portal to the next level is randomly chosen.
|
||||
|
||||
@@ -614,6 +614,7 @@ Set flags for this level.
|
||||
| temperate | Level is neither hot nor cold.
|
||||
| nomongen | Prevents random monster generation.
|
||||
| nodeathdrops | Prevents killed monsters from dropping corpses or random death drops.
|
||||
| fumaroles | Lava emits poison gas clouds at random.
|
||||
|===
|
||||
|
||||
Example:
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
* Incrementing EDITLEVEL can be used to force invalidation of old bones
|
||||
* and save files.
|
||||
*/
|
||||
#define EDITLEVEL 78
|
||||
#define EDITLEVEL 79
|
||||
|
||||
/*
|
||||
* Development status possibilities.
|
||||
|
||||
@@ -392,6 +392,7 @@ struct levelflags {
|
||||
Bitfield(rndmongen, 1); /* random monster generation allowed? */
|
||||
Bitfield(deathdrops, 1); /* monsters may drop corpses/death drops */
|
||||
Bitfield(noautosearch, 1); /* automatic searching disabled */
|
||||
Bitfield(fumaroles, 1); /* lava emits poison gas at random */
|
||||
|
||||
schar temperature; /* +1 == hot, -1 == cold */
|
||||
};
|
||||
|
||||
@@ -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 */
|
||||
|
||||
2
src/do.c
2
src/do.c
@@ -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. */
|
||||
|
||||
16
src/mkmaze.c
16
src/mkmaze.c
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user