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;