diff --git a/rsrc/scenarios/stealth/towns/town20.spec b/rsrc/scenarios/stealth/towns/town20.spec
index 8d0986da..9ae95d9b 100644
--- a/rsrc/scenarios/stealth/towns/town20.spec
+++ b/rsrc/scenarios/stealth/towns/town20.spec
@@ -270,7 +270,7 @@
pic 0, 4
ex1 -1, -1, -1
ex2 -1, -1, -1
- goto -1
+ goto 43
@disp-msg = 39
sdf -1, -1
msg 59, 60, -1
@@ -299,3 +299,10 @@
ex1 1, 34, -1
ex2 -1, -1, -1
goto -1
+@town-visible = 43
+ sdf -1, -1
+ msg -1, -1, -1
+ pic 0, 4
+ ex1 20, -1, -1
+ ex2 0, -1, -1
+ goto -1
diff --git a/rsrc/scenarios/stealth/towns/town20.xml b/rsrc/scenarios/stealth/towns/town20.xml
index 9ac41849..d33f803f 100644
--- a/rsrc/scenarios/stealth/towns/town20.xml
+++ b/rsrc/scenarios/stealth/towns/town20.xml
@@ -12,7 +12,9 @@
41
37
42
-
+
+ true
+
13
13
diff --git a/src/scenario/town.cpp b/src/scenario/town.cpp
index 5ed6eb10..6327094d 100644
--- a/src/scenario/town.cpp
+++ b/src/scenario/town.cpp
@@ -72,6 +72,8 @@ void cTown::import_legacy(legacy::town_record_type& old){
specials[i].import_legacy(old.specials[i]);
difficulty = old.difficulty;
strong_barriers = defy_scrying = defy_mapping = false;
+
+ // Legacy scenarios store is_hidden in an array on scenario_data_type, so that flag is imported in cScenario::import_legacy()
}
cTown::cTown(cScenario& scenario, size_t dim) : cArea(dim), scenario(&scenario), lighting(dim, boost::dynamic_bitset<>(dim)) {
diff --git a/src/scenario/town.hpp b/src/scenario/town.hpp
index 11bd33a8..7f5177d4 100644
--- a/src/scenario/town.hpp
+++ b/src/scenario/town.hpp
@@ -90,7 +90,9 @@ public:
short spec_on_hostile;
std::array timers;
bool strong_barriers, defy_mapping, defy_scrying;
- bool is_hidden, has_tavern;
+ // Whether the town STARTS OUT hidden.
+ bool is_hidden;
+ bool has_tavern;
short difficulty;
// Using std::array here so we can have .size()
// This'll make the transition smoother once it becomes a vector.
@@ -102,6 +104,7 @@ private:
boost::dynamic_bitset<> item_taken;
public:
std::vector door_unlocked;
+ // Whether the town IS CURRENTLY visible.
bool can_find;
long m_killed = 0;