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:
+1
-1
@@ -6,7 +6,7 @@
|
|||||||
--
|
--
|
||||||
des.level_init({ style = "solidfill", fg = " " });
|
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
|
-- The player lands, upon arrival, in the
|
||||||
-- lower-right. The location of the
|
-- lower-right. The location of the
|
||||||
-- portal to the next level is randomly chosen.
|
-- portal to the next level is randomly chosen.
|
||||||
|
|||||||
@@ -614,6 +614,7 @@ Set flags for this level.
|
|||||||
| temperate | Level is neither hot nor cold.
|
| temperate | Level is neither hot nor cold.
|
||||||
| nomongen | Prevents random monster generation.
|
| nomongen | Prevents random monster generation.
|
||||||
| nodeathdrops | Prevents killed monsters from dropping corpses or random death drops.
|
| nodeathdrops | Prevents killed monsters from dropping corpses or random death drops.
|
||||||
|
| fumaroles | Lava emits poison gas clouds at random.
|
||||||
|===
|
|===
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
* Incrementing EDITLEVEL can be used to force invalidation of old bones
|
* Incrementing EDITLEVEL can be used to force invalidation of old bones
|
||||||
* and save files.
|
* and save files.
|
||||||
*/
|
*/
|
||||||
#define EDITLEVEL 78
|
#define EDITLEVEL 79
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Development status possibilities.
|
* Development status possibilities.
|
||||||
|
|||||||
@@ -392,6 +392,7 @@ struct levelflags {
|
|||||||
Bitfield(rndmongen, 1); /* random monster generation allowed? */
|
Bitfield(rndmongen, 1); /* random monster generation allowed? */
|
||||||
Bitfield(deathdrops, 1); /* monsters may drop corpses/death drops */
|
Bitfield(deathdrops, 1); /* monsters may drop corpses/death drops */
|
||||||
Bitfield(noautosearch, 1); /* automatic searching disabled */
|
Bitfield(noautosearch, 1); /* automatic searching disabled */
|
||||||
|
Bitfield(fumaroles, 1); /* lava emits poison gas at random */
|
||||||
|
|
||||||
schar temperature; /* +1 == hot, -1 == cold */
|
schar temperature; /* +1 == hot, -1 == cold */
|
||||||
};
|
};
|
||||||
|
|||||||
+1
-1
@@ -333,7 +333,7 @@ moveloop_core(void)
|
|||||||
/* vision will be updated as bubbles move */
|
/* vision will be updated as bubbles move */
|
||||||
if (Is_waterlevel(&u.uz) || Is_airlevel(&u.uz))
|
if (Is_waterlevel(&u.uz) || Is_airlevel(&u.uz))
|
||||||
movebubbles();
|
movebubbles();
|
||||||
else if (Is_firelevel(&u.uz))
|
else if (gl.level.flags.fumaroles)
|
||||||
fumaroles();
|
fumaroles();
|
||||||
|
|
||||||
/* when immobile, count is in turns */
|
/* when immobile, count is in turns */
|
||||||
|
|||||||
@@ -1730,7 +1730,7 @@ goto_level(
|
|||||||
/* initial movement of bubbles just before vision_recalc */
|
/* initial movement of bubbles just before vision_recalc */
|
||||||
if (Is_waterlevel(&u.uz) || Is_airlevel(&u.uz))
|
if (Is_waterlevel(&u.uz) || Is_airlevel(&u.uz))
|
||||||
movebubbles();
|
movebubbles();
|
||||||
else if (Is_firelevel(&u.uz))
|
else if (gl.level.flags.fumaroles)
|
||||||
fumaroles();
|
fumaroles();
|
||||||
|
|
||||||
/* Reset the screen. */
|
/* Reset the screen. */
|
||||||
|
|||||||
+13
-3
@@ -1390,15 +1390,25 @@ mkportal(coordxy x, coordxy y, xint16 todnum, xint16 todlevel)
|
|||||||
void
|
void
|
||||||
fumaroles(void)
|
fumaroles(void)
|
||||||
{
|
{
|
||||||
xint16 n;
|
xint16 n, nmax = rn2(3);
|
||||||
|
int sizemin = 5;
|
||||||
boolean snd = FALSE, loud = FALSE;
|
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 x = rn1(COLNO - 4, 3);
|
||||||
coordxy y = rn1(ROWNO - 4, 3);
|
coordxy y = rn1(ROWNO - 4, 3);
|
||||||
|
|
||||||
if (levl[x][y].typ == LAVAPOOL) {
|
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);
|
clear_heros_fault(r);
|
||||||
snd = TRUE;
|
snd = TRUE;
|
||||||
|
|||||||
@@ -3747,6 +3747,8 @@ lspo_level_flags(lua_State *L)
|
|||||||
gl.level.flags.deathdrops = 0;
|
gl.level.flags.deathdrops = 0;
|
||||||
else if (!strcmpi(s, "noautosearch"))
|
else if (!strcmpi(s, "noautosearch"))
|
||||||
gl.level.flags.noautosearch = 1;
|
gl.level.flags.noautosearch = 1;
|
||||||
|
else if (!strcmpi(s, "fumaroles"))
|
||||||
|
gl.level.flags.fumaroles = 1;
|
||||||
else {
|
else {
|
||||||
char buf[BUFSZ];
|
char buf[BUFSZ];
|
||||||
Sprintf(buf, "Unknown level flag %s", s);
|
Sprintf(buf, "Unknown level flag %s", s);
|
||||||
|
|||||||
Reference in New Issue
Block a user