Add poison cloud glyph, fumaroles to fire plane.
When a gas cloud that deals damage is created, it uses a poison cloud glyph instead of the cloud glyph. (A bright green '#', or a bright-green recolor of the cloud tile) The plane of fire has random "stinking clouds", or fumaroles, centered on lava pools. Also make poison cloud glyph override lava, pool and moat glyphs.
This commit is contained in:
@@ -294,6 +294,8 @@ boolean resuming;
|
||||
/* underwater and waterlevel vision are done here */
|
||||
if (Is_waterlevel(&u.uz) || Is_airlevel(&u.uz))
|
||||
movebubbles();
|
||||
else if (Is_firelevel(&u.uz))
|
||||
fumaroles();
|
||||
else if (Underwater)
|
||||
under_water(0);
|
||||
/* vision while buried done here */
|
||||
|
||||
@@ -674,7 +674,12 @@ newsym(x,y)
|
||||
*/
|
||||
lev->waslit = (lev->lit!=0); /* remember lit condition */
|
||||
|
||||
if (reg != NULL && ACCESSIBLE(lev->typ)) {
|
||||
/* normal region shown only on accessible positions, but poison clouds
|
||||
* also shown above lava, pools and moats.
|
||||
*/
|
||||
if (reg != NULL && (ACCESSIBLE(lev->typ) ||
|
||||
(reg->glyph == cmap_to_glyph(S_poisoncloud) &&
|
||||
(lev->typ == LAVAPOOL || lev->typ == POOL || lev->typ == MOAT)))) {
|
||||
show_region(reg,x,y);
|
||||
return;
|
||||
}
|
||||
|
||||
2
src/do.c
2
src/do.c
@@ -1288,6 +1288,8 @@ boolean at_stairs, falling, portal;
|
||||
/* initial movement of bubbles just before vision_recalc */
|
||||
if (Is_waterlevel(&u.uz) || Is_airlevel(&u.uz))
|
||||
movebubbles();
|
||||
else if (Is_firelevel(&u.uz))
|
||||
fumaroles();
|
||||
|
||||
if (level_info[new_ledger].flags & FORGOTTEN) {
|
||||
forget_map(ALL_MAP); /* forget the map */
|
||||
|
||||
@@ -211,6 +211,7 @@ const struct symdef defsyms[MAXPCHARS] = {
|
||||
{'#', "", C(HI_ZAP)},
|
||||
{'@', "", C(HI_ZAP)},
|
||||
{'*', "", C(HI_ZAP)},
|
||||
{'#', "poison cloud", C(CLR_BRIGHT_GREEN)}, /* [part of] a poison cloud */
|
||||
{'/', "", C(CLR_GREEN)}, /* swallow top left */
|
||||
{'-', "", C(CLR_GREEN)}, /* swallow top center */
|
||||
{'\\', "", C(CLR_GREEN)}, /* swallow top right */
|
||||
@@ -614,6 +615,7 @@ struct symparse loadsyms[] = {
|
||||
{SYM_PCHAR, S_hcdbridge, "S_hcdbridge"},
|
||||
{SYM_PCHAR, S_air, "S_air"},
|
||||
{SYM_PCHAR, S_cloud, "S_cloud"},
|
||||
{SYM_PCHAR, S_poisoncloud, "S_poisoncloud"},
|
||||
{SYM_PCHAR, S_water, "S_water"},
|
||||
{SYM_PCHAR, S_arrow_trap, "S_arrow_trap"},
|
||||
{SYM_PCHAR, S_dart_trap, "S_dart_trap"},
|
||||
|
||||
20
src/mkmaze.c
20
src/mkmaze.c
@@ -879,6 +879,26 @@ register xchar x, y, todnum, todlevel;
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
fumaroles()
|
||||
{
|
||||
xchar n;
|
||||
boolean snd = FALSE, loud = FALSE;
|
||||
for (n = rn2(3)+2; n; n--) {
|
||||
xchar x = rn1(COLNO-4,3);
|
||||
xchar y = rn1(ROWNO-4,3);
|
||||
struct trap *ttmp = t_at(x,y);
|
||||
if (levl[x][y].typ == LAVAPOOL) {
|
||||
NhRegion *r = create_gas_cloud(x,y, 4+rn2(5), rn1(10,5));
|
||||
clear_heros_fault(r);
|
||||
snd = TRUE;
|
||||
if (distu(x,y) < 15) loud = TRUE;
|
||||
}
|
||||
}
|
||||
if (snd && !Deaf)
|
||||
Norep("You hear a %swhoosh!", loud ? "loud " : "");
|
||||
}
|
||||
|
||||
/*
|
||||
* Special waterlevel stuff in endgame (TH).
|
||||
*
|
||||
|
||||
@@ -996,7 +996,7 @@ int damage;
|
||||
cloud->arg = zeroany;
|
||||
cloud->arg.a_int = damage;
|
||||
cloud->visible = TRUE;
|
||||
cloud->glyph = cmap_to_glyph(S_cloud);
|
||||
cloud->glyph = cmap_to_glyph(damage ? S_poisoncloud : S_cloud);
|
||||
add_region(cloud);
|
||||
return cloud;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user