From 9fb9fd3169c67782e779189cab4f097d3d80b0a0 Mon Sep 17 00:00:00 2001 From: Pierre Etchemaite Date: Sun, 4 Aug 2024 01:58:11 +0200 Subject: [PATCH 1/6] More expressive remote dungeons selection Currently, for a dungeon required for a quest, a quest writer can either pick a dungeon type, or just any random dungeon. If a dungeon type is specified but no dungeon of that type can be found, the engine picks a random dungeon instead. That fallback means sometimes the quest writer intentions are not followed, including some very bad cases in my opinion (reward map for a rare dungeon type that can be replaced by a map for a random dungeon). So this PR removes the automatic fallback to "any dungeon". On the other hand, it introduces the possibility to provide more than one target dungeon type, as a list: Place _someplace_ remote dungeonA,dungeonB,..,dungeonC The engine will pick in priority dungeons of type dungeonA, then dungeonB, etc, enlarging the pool of dungeons to select from until it reaches the new setting DungeonsPoolSizeTarget (default 3), or no more fallback types have been specified. Of course, "dungeon" can be specified as a last fallback type to get the equivalent of current Daggerfall Unity for some place. DungeonsPoolSizeTarget=0 will totally disable the fallback mechanism DungeonsPoolSizeTarget=999 (or large values in general) will take all fallback dungeons into consideration no matter what, if player prefers randomization over quests consistency. I also edited existing quests to benefit from this feature, but did not spend a lot of time carefully picking the best set of dungeon types for each one, so there's more likely room for improvement. --- Assets/Resources/defaults.ini.txt | 3 +- Assets/Scripts/Game/Questing/Place.cs | 70 ++++++++++++++++------ Assets/Scripts/SettingsManager.cs | 3 + Assets/StreamingAssets/Quests/$CUREVAM.txt | 2 +- Assets/StreamingAssets/Quests/$CUREWER.txt | 4 +- Assets/StreamingAssets/Quests/20C00Y00.txt | 2 +- Assets/StreamingAssets/Quests/60C00Y00.txt | 2 +- Assets/StreamingAssets/Quests/70C00Y00.txt | 2 +- Assets/StreamingAssets/Quests/A0C0XY04.txt | 2 +- Assets/StreamingAssets/Quests/B0B00Y00.txt | 2 +- Assets/StreamingAssets/Quests/B0B10Y04.txt | 2 +- Assets/StreamingAssets/Quests/B0B40Y08.txt | 2 +- Assets/StreamingAssets/Quests/B0B40Y09.txt | 2 +- Assets/StreamingAssets/Quests/B0B60Y12.txt | 2 +- Assets/StreamingAssets/Quests/B0B70Y14.txt | 2 +- Assets/StreamingAssets/Quests/B0B80Y17.txt | 2 +- Assets/StreamingAssets/Quests/B0B81Y02.txt | 2 +- Assets/StreamingAssets/Quests/B0C00Y06.txt | 2 +- Assets/StreamingAssets/Quests/C0B00Y01.txt | 2 +- Assets/StreamingAssets/Quests/C0B00Y03.txt | 2 +- Assets/StreamingAssets/Quests/C0B00Y14.txt | 2 +- Assets/StreamingAssets/Quests/E0B00Y00.txt | 2 +- Assets/StreamingAssets/Quests/H0B00Y00.txt | 2 +- Assets/StreamingAssets/Quests/K0C00Y02.txt | 2 +- Assets/StreamingAssets/Quests/K0C01Y00.txt | 2 +- Assets/StreamingAssets/Quests/K0C01Y10.txt | 2 +- Assets/StreamingAssets/Quests/L0B00Y02.txt | 2 +- Assets/StreamingAssets/Quests/L0B10Y03.txt | 2 +- Assets/StreamingAssets/Quests/L0B20Y02.txt | 2 +- Assets/StreamingAssets/Quests/M0B00Y17.txt | 2 +- Assets/StreamingAssets/Quests/M0B11Y18.txt | 2 +- Assets/StreamingAssets/Quests/M0B1XY01.txt | 2 +- Assets/StreamingAssets/Quests/M0B20Y02.txt | 2 +- Assets/StreamingAssets/Quests/P0B10L07.txt | 2 +- Assets/StreamingAssets/Quests/P0B10L08.txt | 2 +- Assets/StreamingAssets/Quests/Q0C10Y00.txt | 2 +- Assets/StreamingAssets/Quests/R0C10Y21.txt | 2 +- Assets/StreamingAssets/Quests/T0C00Y00.txt | 2 +- Assets/StreamingAssets/Quests/U0C00Y00.txt | 4 +- Assets/StreamingAssets/Quests/__DEMO12.txt | 2 +- 40 files changed, 97 insertions(+), 57 deletions(-) diff --git a/Assets/Resources/defaults.ini.txt b/Assets/Resources/defaults.ini.txt index 25fec25626..f167e2f738 100644 --- a/Assets/Resources/defaults.ini.txt +++ b/Assets/Resources/defaults.ini.txt @@ -170,7 +170,8 @@ TerrainDistance=3 TerrainHeightmapPixelError=5 SmallerDungeons=False CustomBooksImport=True -AssetCacheThreshold = 25 +AssetCacheThreshold=25 +DungeonsPoolSizeTarget=3 [Enhancements] LypyL_GameConsole=True diff --git a/Assets/Scripts/Game/Questing/Place.cs b/Assets/Scripts/Game/Questing/Place.cs index b2652a78e3..68a02b46d5 100644 --- a/Assets/Scripts/Game/Questing/Place.cs +++ b/Assets/Scripts/Game/Questing/Place.cs @@ -42,6 +42,7 @@ public class Place : QuestResource int p1; // Parameter 1 int p2; // Parameter 2 int p3; // Parameter 3 + int[] alternateDungeonTypeIndices; // DFU extension for remote dungeons SiteDetails siteDetails; // Site found using inputs @@ -143,8 +144,7 @@ public override void SetResource(string line) base.SetResource(line); // Match string for Place variants - string matchStr = @"(Place|place) (?[a-zA-Z0-9_.-]+) (?local|remote|permanent) (?\w+)|" + - @"(Place|place) (?[a-zA-Z0-9_.-]+) (?randompermanent) (?[a-zA-Z0-9_.,]+)"; + string matchStr = @"(Place|place) (?[a-zA-Z0-9_.-]+) (?local|remote|permanent|randompermanent) (?[a-zA-Z0-9_.,]+)"; // Try to match source line with pattern bool randomSiteList = false; @@ -183,21 +183,22 @@ public override void SetResource(string line) } // Get place name for parameter lookup - name = match.Groups["siteName"].Value; - if (string.IsNullOrEmpty(name) && !randomSiteList) - { - throw new Exception(string.Format("Place site name empty for source: '{0}'", line)); - } + string srcSiteList = match.Groups["siteList"].Value; + string[] siteNames = srcSiteList.Split(','); // Pick one permanent place from random site list if (randomSiteList) { - string srcSiteList = match.Groups["siteList"].Value; - string[] siteNames = srcSiteList.Split(','); if (siteNames == null || siteNames.Length == 0) throw new Exception(string.Format("Place randompermanent must have at least one site name in source: '{0}'", line)); name = siteNames[UnityEngine.Random.Range(0, siteNames.Length)]; } + else // !randomSiteList + { + if (siteNames == null || siteNames.Length == 0) + throw new Exception(string.Format("Place site name empty for source: '{0}'", line)); + name = siteNames[0]; + } // Try to read place variables from data table Table placesTable = QuestMachine.Instance.PlacesTable; @@ -213,6 +214,24 @@ public override void SetResource(string line) throw new Exception(string.Format("Could not find place name in data table: '{0}'", name)); } + // Alternate places (used for remote dungeon types) + if (siteNames.Length > 1) + { + alternateDungeonTypeIndices = new int[siteNames.Length - 1]; + for (int i = 1; i < siteNames.Length; i++) + { + if (placesTable.HasValue(siteNames[i])) + { + // Store value + alternateDungeonTypeIndices[i - 1] = CustomParseInt(placesTable.GetValue("p2", siteNames[i])); + } + else + { + throw new Exception(string.Format("Could not find place name in data table: '{0}'", siteNames[i])); + } + } + } + // Handle place by scope if (scope == Scopes.Local) { @@ -761,7 +780,7 @@ void SetupRemoteSite(string line) result = SelectRemoteTownSite((DFLocation.BuildingTypes)p2); break; case 1: - result = SelectRemoteDungeonSite(p2); + result = SelectRemoteDungeonSite(p2, alternateDungeonTypeIndices); break; case 2: result = SelectRemoteLocationExteriorSite(p2); @@ -770,10 +789,6 @@ void SetupRemoteSite(string line) throw new Exception(string.Format("An unknown P1 value of {0} was encountered for Place {1}", p1, Symbol.Original)); } - // If searching for a dungeon and first numbered choice not found, then try again with any random dungeon type - if (!result && p1 == 1) - result = SelectRemoteDungeonSite(-1); - // Throw exception when remote place could not be selected, e.g. a dungeon of that type does not exist in this region if (!result) throw new Exception(string.Format("Search failed to locate matching remote site for Place {0} in region {1}. Resource source: '{2}'", Symbol.Original, GameManager.Instance.PlayerGPS.CurrentRegionName, line)); @@ -878,7 +893,7 @@ bool SelectRemoteTownSite(DFLocation.BuildingTypes requiredBuildingType) /// This is probably because types 17-18 don't seem to contain quest markers. /// Warning: Not all dungeon types are available in all regions. http://en.uesp.net/wiki/Daggerfall:Dungeons#Overview_of_Dungeon_Locations /// - bool SelectRemoteDungeonSite(int dungeonTypeIndex) + bool SelectRemoteDungeonSite(int dungeonTypeIndex, int[] alternateDungeonTypeIndices) { // Get player region int regionIndex = GameManager.Instance.PlayerGPS.CurrentRegionIndex; @@ -893,14 +908,35 @@ bool SelectRemoteDungeonSite(int dungeonTypeIndex) // Get indices for all dungeons of this type int[] foundIndices = CollectDungeonIndicesOfType(regionData, dungeonTypeIndex); + + //Debug.LogFormat("Found a total of {0} possible dungeons of type {1} in {2}", foundIndices == null ? 0 : foundIndices.Length, dungeonTypeIndex, regionData.Name); + + // Add equivalence(s) if too few dungeons to select from + if (dungeonTypeIndex >= 0 && alternateDungeonTypeIndices != null) + { + int equivalentIndex = 0; + if (foundIndices == null) + { + foundIndices = new int[] {}; + } + while (foundIndices.Length < DaggerfallUnity.Settings.DungeonsPoolSizeTarget && alternateDungeonTypeIndices.Length > equivalentIndex) + { + int[] equivalentIndices = CollectDungeonIndicesOfType(regionData, alternateDungeonTypeIndices[equivalentIndex]); + if (equivalentIndices != null && equivalentIndices.Length > 0) + { + // Debug.LogFormat("Adding {0} possible dungeons of type {1} by equivalence", equivalentIndices.Length, alternateDungeonTypeIndices[equivalentIndex]); + foundIndices = foundIndices.Concat(equivalentIndices).ToArray(); + } + equivalentIndex++; + } + } + if (foundIndices == null || foundIndices.Length == 0) { Debug.LogFormat("Could not find any random dungeons of type {0} in {1}", dungeonTypeIndex, regionData.Name); return false; } - //Debug.LogFormat("Found a total of {0} possible dungeons of type {1} in {2}", foundIndices.Length, dungeonTypeIndex, regionData.Name); - // Select a random dungeon location index from available list int index = UnityEngine.Random.Range(0, foundIndices.Length); diff --git a/Assets/Scripts/SettingsManager.cs b/Assets/Scripts/SettingsManager.cs index bd0c24924d..be51ec2faf 100644 --- a/Assets/Scripts/SettingsManager.cs +++ b/Assets/Scripts/SettingsManager.cs @@ -322,6 +322,7 @@ string ReadDistributionSuffix() public float TerrainHeightmapPixelError { get; set; } public bool SmallerDungeons { get; set; } public int AssetCacheThreshold { get; set; } + public int DungeonsPoolSizeTarget { get; set; } // [Enhancements] public bool LypyL_GameConsole { get; set; } @@ -555,6 +556,7 @@ public void LoadSettings() TerrainHeightmapPixelError = GetFloat(sectionExperimental, "TerrainHeightmapPixelError", 1, 10); SmallerDungeons = GetBool(sectionExperimental, "SmallerDungeons"); AssetCacheThreshold = GetInt(sectionExperimental, "AssetCacheThreshold", 0, 120); + DungeonsPoolSizeTarget = GetInt(sectionExperimental, "DungeonsPoolSizeTarget", 0, 999); LypyL_GameConsole = GetBool(sectionEnhancements, "LypyL_GameConsole"); LypyL_ModSystem = GetBool(sectionEnhancements, "LypyL_ModSystem"); @@ -747,6 +749,7 @@ public void SaveSettings() SetFloat(sectionExperimental, "TerrainHeightmapPixelError", TerrainHeightmapPixelError); SetBool(sectionExperimental, "SmallerDungeons", SmallerDungeons); SetInt(sectionExperimental, "AssetCacheThreshold", AssetCacheThreshold); + SetInt(sectionExperimental, "DungeonsPoolSizeTarget", DungeonsPoolSizeTarget); SetBool(sectionEnhancements, "LypyL_GameConsole", LypyL_GameConsole); SetBool(sectionEnhancements, "LypyL_ModSystem", LypyL_ModSystem); diff --git a/Assets/StreamingAssets/Quests/$CUREVAM.txt b/Assets/StreamingAssets/Quests/$CUREVAM.txt index 75261c8476..d0890a52bc 100644 --- a/Assets/StreamingAssets/Quests/$CUREVAM.txt +++ b/Assets/StreamingAssets/Quests/$CUREVAM.txt @@ -241,7 +241,7 @@ Person _vamp2_ face 4 factiontype Vampire_Clan male remote Person _hunter_ face 1 factiontype Knightly_Guard remote anyInfo 1011 rumors 1012 Place _fatherdung_ remote dungeon8 -Place _wrongdung_ remote dungeon5 +Place _wrongdung_ remote dungeon5,dungeon6 Clock _S.10_ 1.00:00 2.22:00 Clock _S.13_ 7.00:00 27.23:40 diff --git a/Assets/StreamingAssets/Quests/$CUREWER.txt b/Assets/StreamingAssets/Quests/$CUREWER.txt index 39e3626d26..3eccbd0b0f 100644 --- a/Assets/StreamingAssets/Quests/$CUREWER.txt +++ b/Assets/StreamingAssets/Quests/$CUREWER.txt @@ -338,10 +338,10 @@ Person _alchemist_ group Chemist remote Person _father_ face 5 group Noble male remote anyInfo 1013 rumors 1014 Person _local_ group Resident1 remote -Place _mapdung_ remote dungeon4 +Place _mapdung_ remote dungeon4,dungeon7 Place glenmorilCoven permanent GlenmorilCoven Place _childhouse_ remote house2 -Place _hintdung_ remote dungeon11 +Place _hintdung_ remote dungeon11,dungeon2 Clock _S.05_ 7.00:00 27.23:40 Clock _huntstart_ 60.00:00 0 diff --git a/Assets/StreamingAssets/Quests/20C00Y00.txt b/Assets/StreamingAssets/Quests/20C00Y00.txt index 09072bab1a..45ab31282d 100644 --- a/Assets/StreamingAssets/Quests/20C00Y00.txt +++ b/Assets/StreamingAssets/Quests/20C00Y00.txt @@ -137,7 +137,7 @@ Person _dummy_ face 1 group Spellcaster remote Place _mondung_ remote dungeon9 Place _tavern_ remote tavern -Place _hideout_ remote dungeon11 +Place _hideout_ remote dungeon11,dungeon2 Clock _1stparton_ 00:00 0 flag 1 range 0 5 Clock _S.08_ 00:01 00:04 diff --git a/Assets/StreamingAssets/Quests/60C00Y00.txt b/Assets/StreamingAssets/Quests/60C00Y00.txt index 6afd88d028..5bb195993c 100644 --- a/Assets/StreamingAssets/Quests/60C00Y00.txt +++ b/Assets/StreamingAssets/Quests/60C00Y00.txt @@ -146,7 +146,7 @@ Person _questgiver_ face 112 named Sheogorath anyInfo 1012 Person _qgfriend_ face 1 group Innkeeper remote anyInfo 1011 rumors 1014 Place _mondung_ remote dungeon -Place _contactdung_ remote dungeon3 +Place _contactdung_ remote dungeon3,dungeon Clock _1stparton_ 00:00 0 flag 1 range 2 5 diff --git a/Assets/StreamingAssets/Quests/70C00Y00.txt b/Assets/StreamingAssets/Quests/70C00Y00.txt index 5098682e44..cd59b8dfb7 100644 --- a/Assets/StreamingAssets/Quests/70C00Y00.txt +++ b/Assets/StreamingAssets/Quests/70C00Y00.txt @@ -131,7 +131,7 @@ Item _artifact_ artifact Sanguine_Rose anyInfo 1014 Person _questgiver_ face 112 named Sanguine anyInfo 1011 Person _contact_ face 232 faction The_Cabal remote anyInfo 1012 -Place _mondung_ remote dungeon4 +Place _mondung_ remote dungeon4,dungeon7 Clock _1stparton_ 00:00 0 flag 1 range 2 5 diff --git a/Assets/StreamingAssets/Quests/A0C0XY04.txt b/Assets/StreamingAssets/Quests/A0C0XY04.txt index dc945dc81f..496bf0ea0f 100644 --- a/Assets/StreamingAssets/Quests/A0C0XY04.txt +++ b/Assets/StreamingAssets/Quests/A0C0XY04.txt @@ -179,7 +179,7 @@ Person _dummymage_ face 1 faction The_Mages_Guild remote Person _dummyorc_ face 1 named Gortwog Person _dummydarkb_ face 49 faction The_Dark_Brotherhood remote -Place _dungeon_ remote dungeon7 +Place _dungeon_ remote dungeon7,dungeon4,dungeon Place _meetingplace_ local apothecary Clock _extratime_ 00:30 0 flag 1 range 0 1 diff --git a/Assets/StreamingAssets/Quests/B0B00Y00.txt b/Assets/StreamingAssets/Quests/B0B00Y00.txt index 88d675d973..11f66b8f55 100644 --- a/Assets/StreamingAssets/Quests/B0B00Y00.txt +++ b/Assets/StreamingAssets/Quests/B0B00Y00.txt @@ -156,7 +156,7 @@ Person _qgiver_ group Questor Person _lady_ face 2 group Noble female local Person _vamp_ face 40 factiontype Vampire_Clan local -Place _mondung_ remote dungeon8 +Place _mondung_ remote dungeon8,dungeon Clock _2mondung_ 00:00 0 flag 17 range 0 2 Clock _S.07_ 10:00 1.16:00 diff --git a/Assets/StreamingAssets/Quests/B0B10Y04.txt b/Assets/StreamingAssets/Quests/B0B10Y04.txt index c708e1cc87..afc8c13b02 100644 --- a/Assets/StreamingAssets/Quests/B0B10Y04.txt +++ b/Assets/StreamingAssets/Quests/B0B10Y04.txt @@ -134,7 +134,7 @@ QBN: Person _qgiver_ group Questor -Place _mondung_ remote dungeon1 +Place _mondung_ remote dungeon1,dungeon Place tavern local tavern Clock _2mondung_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/B0B40Y08.txt b/Assets/StreamingAssets/Quests/B0B40Y08.txt index f93c02e848..2eafeb1577 100644 --- a/Assets/StreamingAssets/Quests/B0B40Y08.txt +++ b/Assets/StreamingAssets/Quests/B0B40Y08.txt @@ -83,7 +83,7 @@ QBN: Person _qgiver_ group Questor Person _local_ face 207 group Resident2 female local -Place _dungeon_ remote dungeon1 +Place _dungeon_ remote dungeon1,dungeon Clock _2dung_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/B0B40Y09.txt b/Assets/StreamingAssets/Quests/B0B40Y09.txt index 2e0a79ad64..076ec2e4af 100644 --- a/Assets/StreamingAssets/Quests/B0B40Y09.txt +++ b/Assets/StreamingAssets/Quests/B0B40Y09.txt @@ -90,7 +90,7 @@ Item _gold_ gold Person _qgiver_ group Questor Person _local_ face 207 group Resident2 female local -Place _dungeon_ remote dungeon13 +Place _dungeon_ remote dungeon13,dungeon Clock _2dung_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/B0B60Y12.txt b/Assets/StreamingAssets/Quests/B0B60Y12.txt index cd43da3664..e4da4cc82d 100644 --- a/Assets/StreamingAssets/Quests/B0B60Y12.txt +++ b/Assets/StreamingAssets/Quests/B0B60Y12.txt @@ -124,7 +124,7 @@ Person _qgiver_ group Questor Person _nobleman_ group Resident1 remote Person _local_ face 1 group Resident2 local -Place _dungeon_ remote dungeon0 +Place _dungeon_ remote dungeon0,dungeon Clock _2dung_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/B0B70Y14.txt b/Assets/StreamingAssets/Quests/B0B70Y14.txt index 33fc301135..c46acb2a2e 100644 --- a/Assets/StreamingAssets/Quests/B0B70Y14.txt +++ b/Assets/StreamingAssets/Quests/B0B70Y14.txt @@ -131,7 +131,7 @@ Item _gold_ gold Person _qgiver_ group Questor -Place _dungeon_ remote dungeon7 +Place _dungeon_ remote dungeon7,dungeon4,dungeon Clock _2dung_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/B0B80Y17.txt b/Assets/StreamingAssets/Quests/B0B80Y17.txt index 7fafe75a4b..c818ebd22b 100644 --- a/Assets/StreamingAssets/Quests/B0B80Y17.txt +++ b/Assets/StreamingAssets/Quests/B0B80Y17.txt @@ -95,7 +95,7 @@ QBN: Person _qgiver_ group Questor Person _local_ face 1 group Resident2 local -Place _dungeon_ remote dungeon0 +Place _dungeon_ remote dungeon0,dungeon11,dungeon Clock _2dung_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/B0B81Y02.txt b/Assets/StreamingAssets/Quests/B0B81Y02.txt index 6e93c8acc0..2b84ae08ff 100644 --- a/Assets/StreamingAssets/Quests/B0B81Y02.txt +++ b/Assets/StreamingAssets/Quests/B0B81Y02.txt @@ -228,7 +228,7 @@ Person _wizard_ face 1 group Spellcaster remote Place _dungeon_ remote dungeon Place _dungeon2_ remote dungeon Place _mageguild_ remote magery -Place _dungeon3_ remote dungeon0 +Place _dungeon3_ remote dungeon0,dungeon11 Clock _2dung_ 00:00 0 flag 17 range 0 2 Clock _S.30_ 180.13:20 0 flag 1 range 0 1 diff --git a/Assets/StreamingAssets/Quests/B0C00Y06.txt b/Assets/StreamingAssets/Quests/B0C00Y06.txt index 845e2d8673..acabd87ad7 100644 --- a/Assets/StreamingAssets/Quests/B0C00Y06.txt +++ b/Assets/StreamingAssets/Quests/B0C00Y06.txt @@ -94,7 +94,7 @@ QBN: Person _qgiver_ group Questor Person _local_ face 207 group Resident2 female local -Place _dungeon_ remote dungeon13 +Place _dungeon_ remote dungeon13,dungeon Clock _2dung_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/C0B00Y01.txt b/Assets/StreamingAssets/Quests/C0B00Y01.txt index e38303b1dd..780fe47233 100644 --- a/Assets/StreamingAssets/Quests/C0B00Y01.txt +++ b/Assets/StreamingAssets/Quests/C0B00Y01.txt @@ -471,7 +471,7 @@ Person _prophet_ face 1 group Local_4.0 anyInfo 1038 Person _replace_ face 3 factiontype Temple female anyInfo 1023 Person _lover_ face 104 group Group_7.0 remote anyInfo 1017 -Place _mondung_ remote dungeon4 +Place _mondung_ remote dungeon4,dungeon7 Place _tavern_ remote tavern Place _prophouse_ remote tavern diff --git a/Assets/StreamingAssets/Quests/C0B00Y03.txt b/Assets/StreamingAssets/Quests/C0B00Y03.txt index 652d4136a0..93e61f3a15 100644 --- a/Assets/StreamingAssets/Quests/C0B00Y03.txt +++ b/Assets/StreamingAssets/Quests/C0B00Y03.txt @@ -118,7 +118,7 @@ QBN: Person _qgiver_ group Questor Person _cleric_ face 105 factiontype Temple -Place _mondung_ remote dungeon4 +Place _mondung_ remote dungeon4,dungeon7,dungeon Clock _queston_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/C0B00Y14.txt b/Assets/StreamingAssets/Quests/C0B00Y14.txt index a98c2dcb65..cec242a096 100644 --- a/Assets/StreamingAssets/Quests/C0B00Y14.txt +++ b/Assets/StreamingAssets/Quests/C0B00Y14.txt @@ -146,7 +146,7 @@ Item _I.00_ item class 10 subclass 4 Person _questgiver_ group Questor Person _priest_ group Cleric remote -Place _mondung_ remote dungeon4 +Place _mondung_ remote dungeon4,dungeon7 Clock _qtime_ 00:00 0 flag 17 range 1 5 diff --git a/Assets/StreamingAssets/Quests/E0B00Y00.txt b/Assets/StreamingAssets/Quests/E0B00Y00.txt index a96f4bf6f3..4498c7be45 100644 --- a/Assets/StreamingAssets/Quests/E0B00Y00.txt +++ b/Assets/StreamingAssets/Quests/E0B00Y00.txt @@ -124,7 +124,7 @@ Item _reward_ gold Person _questgiver_ group Questor -Place _mondung_ remote dungeon4 +Place _mondung_ remote dungeon4,dungeon7,dungeon Clock _1stparton_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/H0B00Y00.txt b/Assets/StreamingAssets/Quests/H0B00Y00.txt index cf91dcbab9..218a48bdc8 100644 --- a/Assets/StreamingAssets/Quests/H0B00Y00.txt +++ b/Assets/StreamingAssets/Quests/H0B00Y00.txt @@ -100,7 +100,7 @@ Item _reward_ gold Person _questgiver_ group Questor -Place _mondung_ remote dungeon4 +Place _mondung_ remote dungeon4,dungeon7 Clock _1stparton_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/K0C00Y02.txt b/Assets/StreamingAssets/Quests/K0C00Y02.txt index 3ab6dc70ee..8d8d04d925 100644 --- a/Assets/StreamingAssets/Quests/K0C00Y02.txt +++ b/Assets/StreamingAssets/Quests/K0C00Y02.txt @@ -137,7 +137,7 @@ Item _I.07_ gold Person _qgiver_ group Questor Place _depository_ remote bank -Place _mondung_ remote dungeon2 +Place _mondung_ remote dungeon2,dungeon15 Place _palace_ remote palace Place _mansion_ remote house1 diff --git a/Assets/StreamingAssets/Quests/K0C01Y00.txt b/Assets/StreamingAssets/Quests/K0C01Y00.txt index 8ae186cbb2..dbae640c0c 100644 --- a/Assets/StreamingAssets/Quests/K0C01Y00.txt +++ b/Assets/StreamingAssets/Quests/K0C01Y00.txt @@ -194,7 +194,7 @@ Person _victim_ face 1 group Group_7.0 Person _tg_ faction The_Thieves_Guild local Place _mondung_ remote dungeon -Place _mondung2_ remote dungeon2 +Place _mondung2_ remote dungeon2,dungeon15 Clock _queston1_ 00:00 0 flag 17 range 0 2 Clock _S.05_ 08:20 3.11:20 diff --git a/Assets/StreamingAssets/Quests/K0C01Y10.txt b/Assets/StreamingAssets/Quests/K0C01Y10.txt index f791109c04..9ac408596c 100644 --- a/Assets/StreamingAssets/Quests/K0C01Y10.txt +++ b/Assets/StreamingAssets/Quests/K0C01Y10.txt @@ -189,7 +189,7 @@ Item _bothdorjii_ letter used 1011 Person _qgiver_ group Questor -Place _mondung_ remote dungeon4 +Place _mondung_ remote dungeon4,dungeon7 Clock _queston_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/L0B00Y02.txt b/Assets/StreamingAssets/Quests/L0B00Y02.txt index 78a70a69b2..070712c375 100644 --- a/Assets/StreamingAssets/Quests/L0B00Y02.txt +++ b/Assets/StreamingAssets/Quests/L0B00Y02.txt @@ -149,7 +149,7 @@ Item _letter_ letter used 1011 Person _qgiver_ face 110 group Questor Place _mondung_ remote dungeon -Place _stronghold_ remote dungeon2 +Place _stronghold_ remote dungeon2,dungeon15 Clock _queston_ 00:00 0 flag 17 range 0 5 diff --git a/Assets/StreamingAssets/Quests/L0B10Y03.txt b/Assets/StreamingAssets/Quests/L0B10Y03.txt index 5171cf6e9c..41abb320f5 100644 --- a/Assets/StreamingAssets/Quests/L0B10Y03.txt +++ b/Assets/StreamingAssets/Quests/L0B10Y03.txt @@ -147,7 +147,7 @@ QBN: Person _qgiver_ group Questor Person _contact_ face 176 group Innkeeper -Place _mondung_ remote dungeon8 +Place _mondung_ remote dungeon8,dungeon Clock _queston_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/L0B20Y02.txt b/Assets/StreamingAssets/Quests/L0B20Y02.txt index b28753ed23..106ac8cba3 100644 --- a/Assets/StreamingAssets/Quests/L0B20Y02.txt +++ b/Assets/StreamingAssets/Quests/L0B20Y02.txt @@ -111,7 +111,7 @@ Item _reward_ gold Person _questgiver_ face 112 group Questor Person _damsel_ face 2 group Group_6.0 female local -Place _mondung_ remote dungeon2 +Place _mondung_ remote dungeon2,dungeon15 Clock _1stparton_ 00:00 0 flag 18 range 0 2 diff --git a/Assets/StreamingAssets/Quests/M0B00Y17.txt b/Assets/StreamingAssets/Quests/M0B00Y17.txt index 8e9a216b06..5db23b2763 100644 --- a/Assets/StreamingAssets/Quests/M0B00Y17.txt +++ b/Assets/StreamingAssets/Quests/M0B00Y17.txt @@ -208,7 +208,7 @@ Person _victim_ face 1 group Group_6.0 remote Person _love_ face 1 group Group_7.0 remote Person _dummy_ group Noble local -Place _mondung_ remote dungeon6 +Place _mondung_ remote dungeon6,dungeon5 Place _newdung_ remote dungeon --unneeded dungeon variable Place _lovehouse_ local house2 diff --git a/Assets/StreamingAssets/Quests/M0B11Y18.txt b/Assets/StreamingAssets/Quests/M0B11Y18.txt index 8622dc36c8..68e3a1f48a 100644 --- a/Assets/StreamingAssets/Quests/M0B11Y18.txt +++ b/Assets/StreamingAssets/Quests/M0B11Y18.txt @@ -338,7 +338,7 @@ Person _enemy_ face 1 group Resident2 remote Person _traitor_ face 1 named Lord_K'avar Place _L.00_ remote dungeon -Place _stronghold_ remote dungeon2 +Place _stronghold_ remote dungeon2,dungeon15 Place _tavern_ local tavern Place _targethouse_ local house2 Place _palace_ remote palace diff --git a/Assets/StreamingAssets/Quests/M0B1XY01.txt b/Assets/StreamingAssets/Quests/M0B1XY01.txt index 58a3765b8f..069637c632 100644 --- a/Assets/StreamingAssets/Quests/M0B1XY01.txt +++ b/Assets/StreamingAssets/Quests/M0B1XY01.txt @@ -108,7 +108,7 @@ Item _reward_ gold Person _questgiver_ group Questor -Place _mondung_ remote dungeon10 +Place _mondung_ remote dungeon Place _newdung_ remote dungeon Clock _1stparton_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/M0B20Y02.txt b/Assets/StreamingAssets/Quests/M0B20Y02.txt index 8036469bea..cec69985e6 100644 --- a/Assets/StreamingAssets/Quests/M0B20Y02.txt +++ b/Assets/StreamingAssets/Quests/M0B20Y02.txt @@ -113,7 +113,7 @@ Item _reward_ gold Person _questgiver_ group Questor -Place _mondung_ remote dungeon13 +Place _mondung_ remote dungeon13,dungeon Place _newdung_ remote dungeon Clock _1stparton_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/P0B10L07.txt b/Assets/StreamingAssets/Quests/P0B10L07.txt index af592dfe9c..dce1d00d0a 100644 --- a/Assets/StreamingAssets/Quests/P0B10L07.txt +++ b/Assets/StreamingAssets/Quests/P0B10L07.txt @@ -159,7 +159,7 @@ Item _jewelry_ trinket Person _vamp_ factiontype Vampire_Clan local Person _knight_ face 69 factiontype Knightly_Guard male remote -Place _mondung_ remote dungeon2 +Place _mondung_ remote dungeon2,dungeon15 Clock _queston_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/P0B10L08.txt b/Assets/StreamingAssets/Quests/P0B10L08.txt index 6778876510..be182226ae 100644 --- a/Assets/StreamingAssets/Quests/P0B10L08.txt +++ b/Assets/StreamingAssets/Quests/P0B10L08.txt @@ -194,7 +194,7 @@ Item _gem_ gem Person _vamp_ factiontype Vampire_Clan local Person _daedra_ face 1 factiontype Daedra remote -Place _mondung_ remote dungeon7 +Place _mondung_ remote dungeon7,dungeon4 Clock _queston_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/Q0C10Y00.txt b/Assets/StreamingAssets/Quests/Q0C10Y00.txt index 01d89be5e7..202186ddd7 100644 --- a/Assets/StreamingAssets/Quests/Q0C10Y00.txt +++ b/Assets/StreamingAssets/Quests/Q0C10Y00.txt @@ -140,7 +140,7 @@ Item _reward3_ jade Person _qgiver_ group Questor anyInfo 1011 -Place _dungeon1_ remote dungeon6 +Place _dungeon1_ remote dungeon6,dungeon5 Place _dungeon2_ remote dungeon12 Place _dungeon3_ remote dungeon10 diff --git a/Assets/StreamingAssets/Quests/R0C10Y21.txt b/Assets/StreamingAssets/Quests/R0C10Y21.txt index 2cb4eaa59d..a7ae53c8d2 100644 --- a/Assets/StreamingAssets/Quests/R0C10Y21.txt +++ b/Assets/StreamingAssets/Quests/R0C10Y21.txt @@ -120,7 +120,7 @@ Person _questgiver_ face 112 group Questor Person _qgfriend_ group Noble remote anyInfo 1011 Person _dummyorc_ faction Orsinium remote -Place _mondung_ remote dungeon4 +Place _mondung_ remote dungeon4,dungeon7 Clock _1stparton_ 00:00 0 flag 1 range 2 5 diff --git a/Assets/StreamingAssets/Quests/T0C00Y00.txt b/Assets/StreamingAssets/Quests/T0C00Y00.txt index 02f5a35507..6f6e99c7dc 100644 --- a/Assets/StreamingAssets/Quests/T0C00Y00.txt +++ b/Assets/StreamingAssets/Quests/T0C00Y00.txt @@ -140,7 +140,7 @@ Item _artifact_ artifact Azuras_Star anyInfo 1014 Person _questgiver_ face 112 named Azura anyInfo 1013 Person _qgfriend_ group Librarian anyInfo 1011 rumors 1012 -Place _mondung_ remote dungeon4 +Place _mondung_ remote dungeon4,dungeon7 Clock _1stparton_ 00:00 0 flag 1 range 2 5 diff --git a/Assets/StreamingAssets/Quests/U0C00Y00.txt b/Assets/StreamingAssets/Quests/U0C00Y00.txt index 12cd41c653..768a34c7a7 100644 --- a/Assets/StreamingAssets/Quests/U0C00Y00.txt +++ b/Assets/StreamingAssets/Quests/U0C00Y00.txt @@ -176,8 +176,8 @@ Person _questgiver_ face 112 named Boethiah anyInfo 1013 Person _qgfriend_ group Librarian anyInfo 1011 rumors 1012 Person _mfriend_ group Local_4.0 remote -Place _mondung_ remote dungeon2 -Place _hideout_ remote dungeon6 +Place _mondung_ remote dungeon2,dungeon15 +Place _hideout_ remote dungeon6,dungeon5 Clock _1stparton_ 00:00 0 flag 1 range 2 5 Clock _escapetime_ 00:00 0 flag 1 range 2 3 diff --git a/Assets/StreamingAssets/Quests/__DEMO12.txt b/Assets/StreamingAssets/Quests/__DEMO12.txt index 1537f82ccc..8399eae764 100644 --- a/Assets/StreamingAssets/Quests/__DEMO12.txt +++ b/Assets/StreamingAssets/Quests/__DEMO12.txt @@ -141,7 +141,7 @@ Item _gold_ gold Person _qgiver_ group Questor male -Place _mondung_ remote dungeon0 +Place _mondung_ remote dungeon0,dungeon8 Clock _queston_ 00:00 0 flag 17 range 0 2 From 723166dd653b708bdf7d98f75585a73337d2c406 Mon Sep 17 00:00:00 2001 From: Pierre Etchemaite Date: Thu, 11 Jun 2026 22:20:11 +0200 Subject: [PATCH 2/6] Reverse remote dungeons fallback Instead of adding "...,dungeon" at the end of acceptable dungeon types to get the classic DFU behavior (fallback to any type), add "... only" after acceptable dungeon types to prevent picking a random dungeon if none, or not enough, acceptable dungeons have been found. --- Assets/Scripts/Game/Questing/Place.cs | 34 ++++++++++++++++------ Assets/StreamingAssets/Quests/$CUREVAM.txt | 4 +-- Assets/StreamingAssets/Quests/$CUREWER.txt | 4 +-- Assets/StreamingAssets/Quests/00B00Y00.txt | 2 +- Assets/StreamingAssets/Quests/20C00Y00.txt | 4 +-- Assets/StreamingAssets/Quests/60C00Y00.txt | 2 +- Assets/StreamingAssets/Quests/70C00Y00.txt | 2 +- Assets/StreamingAssets/Quests/A0C0XY04.txt | 2 +- Assets/StreamingAssets/Quests/A0C41Y18.txt | 2 +- Assets/StreamingAssets/Quests/B0B00Y00.txt | 2 +- Assets/StreamingAssets/Quests/B0B10Y04.txt | 2 +- Assets/StreamingAssets/Quests/B0B20Y07.txt | 2 +- Assets/StreamingAssets/Quests/B0B40Y08.txt | 2 +- Assets/StreamingAssets/Quests/B0B40Y09.txt | 2 +- Assets/StreamingAssets/Quests/B0B50Y11.txt | 2 +- Assets/StreamingAssets/Quests/B0B60Y12.txt | 2 +- Assets/StreamingAssets/Quests/B0B70Y14.txt | 2 +- Assets/StreamingAssets/Quests/B0B70Y16.txt | 2 +- Assets/StreamingAssets/Quests/B0B80Y17.txt | 2 +- Assets/StreamingAssets/Quests/B0B81Y02.txt | 2 +- Assets/StreamingAssets/Quests/B0C00Y06.txt | 2 +- Assets/StreamingAssets/Quests/B0C00Y10.txt | 2 +- Assets/StreamingAssets/Quests/C0B00Y01.txt | 2 +- Assets/StreamingAssets/Quests/C0B00Y03.txt | 2 +- Assets/StreamingAssets/Quests/C0B00Y14.txt | 2 +- Assets/StreamingAssets/Quests/E0B00Y00.txt | 2 +- Assets/StreamingAssets/Quests/H0B00Y00.txt | 2 +- Assets/StreamingAssets/Quests/K0C00Y02.txt | 2 +- Assets/StreamingAssets/Quests/K0C00Y05.txt | 2 +- Assets/StreamingAssets/Quests/K0C01Y00.txt | 2 +- Assets/StreamingAssets/Quests/K0C01Y10.txt | 2 +- Assets/StreamingAssets/Quests/K0C0XY01.txt | 2 +- Assets/StreamingAssets/Quests/L0B00Y02.txt | 2 +- Assets/StreamingAssets/Quests/L0B10Y03.txt | 2 +- Assets/StreamingAssets/Quests/L0B20Y02.txt | 2 +- Assets/StreamingAssets/Quests/M0B00Y17.txt | 2 +- Assets/StreamingAssets/Quests/M0B11Y18.txt | 2 +- Assets/StreamingAssets/Quests/M0B20Y02.txt | 2 +- Assets/StreamingAssets/Quests/M0B30Y04.txt | 2 +- Assets/StreamingAssets/Quests/M0B50Y09.txt | 2 +- Assets/StreamingAssets/Quests/N0B00Y06.txt | 2 +- Assets/StreamingAssets/Quests/N0B20Y05.txt | 2 +- Assets/StreamingAssets/Quests/N0B40Y07.txt | 2 +- Assets/StreamingAssets/Quests/P0A01L00.txt | 2 +- Assets/StreamingAssets/Quests/P0B00L03.txt | 2 +- Assets/StreamingAssets/Quests/P0B00L06.txt | 2 +- Assets/StreamingAssets/Quests/P0B10L07.txt | 2 +- Assets/StreamingAssets/Quests/P0B10L08.txt | 2 +- Assets/StreamingAssets/Quests/Q0C00Y06.txt | 2 +- Assets/StreamingAssets/Quests/Q0C00Y07.txt | 2 +- Assets/StreamingAssets/Quests/Q0C10Y00.txt | 6 ++-- Assets/StreamingAssets/Quests/Q0C4XY04.txt | 2 +- Assets/StreamingAssets/Quests/R0C10Y06.txt | 2 +- Assets/StreamingAssets/Quests/R0C10Y21.txt | 2 +- Assets/StreamingAssets/Quests/R0C20Y07.txt | 2 +- Assets/StreamingAssets/Quests/S0000018.txt | 2 +- Assets/StreamingAssets/Quests/T0C00Y00.txt | 2 +- Assets/StreamingAssets/Quests/U0C00Y00.txt | 4 +-- Assets/StreamingAssets/Quests/__DEMO12.txt | 2 +- 59 files changed, 89 insertions(+), 73 deletions(-) diff --git a/Assets/Scripts/Game/Questing/Place.cs b/Assets/Scripts/Game/Questing/Place.cs index 68a02b46d5..f6861ce66b 100644 --- a/Assets/Scripts/Game/Questing/Place.cs +++ b/Assets/Scripts/Game/Questing/Place.cs @@ -43,6 +43,7 @@ public class Place : QuestResource int p2; // Parameter 2 int p3; // Parameter 3 int[] alternateDungeonTypeIndices; // DFU extension for remote dungeons + bool listedSitesOnly; // DFU extension for remote dungeons SiteDetails siteDetails; // Site found using inputs @@ -144,7 +145,7 @@ public override void SetResource(string line) base.SetResource(line); // Match string for Place variants - string matchStr = @"(Place|place) (?[a-zA-Z0-9_.-]+) (?local|remote|permanent|randompermanent) (?[a-zA-Z0-9_.,]+)"; + string matchStr = @"(Place|place) (?[a-zA-Z0-9_.-]+) (?local|remote|permanent|randompermanent) (?[a-zA-Z0-9_.,]+)(? only)?"; // Try to match source line with pattern bool randomSiteList = false; @@ -182,6 +183,9 @@ public override void SetResource(string line) throw new Exception(string.Format("Place found no site type match found for source: '{0}'. Must be local|remote|permanent.", line)); } + string only = match.Groups["only"].Value; + listedSitesOnly = (string.Compare(only, " only", true) == 0); + // Get place name for parameter lookup string srcSiteList = match.Groups["siteList"].Value; string[] siteNames = srcSiteList.Split(','); @@ -780,7 +784,7 @@ void SetupRemoteSite(string line) result = SelectRemoteTownSite((DFLocation.BuildingTypes)p2); break; case 1: - result = SelectRemoteDungeonSite(p2, alternateDungeonTypeIndices); + result = SelectRemoteDungeonSite(p2); break; case 2: result = SelectRemoteLocationExteriorSite(p2); @@ -893,7 +897,7 @@ bool SelectRemoteTownSite(DFLocation.BuildingTypes requiredBuildingType) /// This is probably because types 17-18 don't seem to contain quest markers. /// Warning: Not all dungeon types are available in all regions. http://en.uesp.net/wiki/Daggerfall:Dungeons#Overview_of_Dungeon_Locations /// - bool SelectRemoteDungeonSite(int dungeonTypeIndex, int[] alternateDungeonTypeIndices) + bool SelectRemoteDungeonSite(int dungeonTypeIndex) { // Get player region int regionIndex = GameManager.Instance.PlayerGPS.CurrentRegionIndex; @@ -919,15 +923,27 @@ bool SelectRemoteDungeonSite(int dungeonTypeIndex, int[] alternateDungeonTypeInd { foundIndices = new int[] {}; } - while (foundIndices.Length < DaggerfallUnity.Settings.DungeonsPoolSizeTarget && alternateDungeonTypeIndices.Length > equivalentIndex) + while (foundIndices.Length < DaggerfallUnity.Settings.DungeonsPoolSizeTarget) { - int[] equivalentIndices = CollectDungeonIndicesOfType(regionData, alternateDungeonTypeIndices[equivalentIndex]); - if (equivalentIndices != null && equivalentIndices.Length > 0) + if (alternateDungeonTypeIndices.Length > equivalentIndex) { - // Debug.LogFormat("Adding {0} possible dungeons of type {1} by equivalence", equivalentIndices.Length, alternateDungeonTypeIndices[equivalentIndex]); - foundIndices = foundIndices.Concat(equivalentIndices).ToArray(); + int[] equivalentIndices = CollectDungeonIndicesOfType(regionData, alternateDungeonTypeIndices[equivalentIndex]); + if (equivalentIndices != null && equivalentIndices.Length > 0) + { + // Debug.LogFormat("Adding {0} possible dungeons of type {1} by equivalence", equivalentIndices.Length, alternateDungeonTypeIndices[equivalentIndex]); + foundIndices = foundIndices.Concat(equivalentIndices).ToArray(); + } + equivalentIndex++; + } + else + { + if (!listedSitesOnly) + { + // If everything failed, pick any dungeon (DFU classic behavior) + foundIndices = CollectDungeonIndicesOfType(regionData, -1); + } + break; } - equivalentIndex++; } } diff --git a/Assets/StreamingAssets/Quests/$CUREVAM.txt b/Assets/StreamingAssets/Quests/$CUREVAM.txt index d0890a52bc..1e3f6b07a9 100644 --- a/Assets/StreamingAssets/Quests/$CUREVAM.txt +++ b/Assets/StreamingAssets/Quests/$CUREVAM.txt @@ -240,8 +240,8 @@ Person _vamp1_ face 40 factiontype Vampire_Clan remote Person _vamp2_ face 4 factiontype Vampire_Clan male remote Person _hunter_ face 1 factiontype Knightly_Guard remote anyInfo 1011 rumors 1012 -Place _fatherdung_ remote dungeon8 -Place _wrongdung_ remote dungeon5,dungeon6 +Place _fatherdung_ remote dungeon8 only +Place _wrongdung_ remote dungeon5,dungeon6 only Clock _S.10_ 1.00:00 2.22:00 Clock _S.13_ 7.00:00 27.23:40 diff --git a/Assets/StreamingAssets/Quests/$CUREWER.txt b/Assets/StreamingAssets/Quests/$CUREWER.txt index 3eccbd0b0f..fa53d7dc8e 100644 --- a/Assets/StreamingAssets/Quests/$CUREWER.txt +++ b/Assets/StreamingAssets/Quests/$CUREWER.txt @@ -338,10 +338,10 @@ Person _alchemist_ group Chemist remote Person _father_ face 5 group Noble male remote anyInfo 1013 rumors 1014 Person _local_ group Resident1 remote -Place _mapdung_ remote dungeon4,dungeon7 +Place _mapdung_ remote dungeon4,dungeon7 only Place glenmorilCoven permanent GlenmorilCoven Place _childhouse_ remote house2 -Place _hintdung_ remote dungeon11,dungeon2 +Place _hintdung_ remote dungeon11,dungeon2 only Clock _S.05_ 7.00:00 27.23:40 Clock _huntstart_ 60.00:00 0 diff --git a/Assets/StreamingAssets/Quests/00B00Y00.txt b/Assets/StreamingAssets/Quests/00B00Y00.txt index 678a1ea84f..4e63a97103 100644 --- a/Assets/StreamingAssets/Quests/00B00Y00.txt +++ b/Assets/StreamingAssets/Quests/00B00Y00.txt @@ -95,7 +95,7 @@ Item _reward_ gold Person _questgiver_ group Questor -Place _mondung_ remote dungeon9 +Place _mondung_ remote dungeon9 only Clock _1stparton_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/20C00Y00.txt b/Assets/StreamingAssets/Quests/20C00Y00.txt index 45ab31282d..40904fe329 100644 --- a/Assets/StreamingAssets/Quests/20C00Y00.txt +++ b/Assets/StreamingAssets/Quests/20C00Y00.txt @@ -135,9 +135,9 @@ Person _questgiver_ face 112 named Molag_Bal anyInfo 1011 Person _contact_ face 233 faction The_Cabal remote anyInfo 1012 Person _dummy_ face 1 group Spellcaster remote -Place _mondung_ remote dungeon9 +Place _mondung_ remote dungeon9 only Place _tavern_ remote tavern -Place _hideout_ remote dungeon11,dungeon2 +Place _hideout_ remote dungeon11,dungeon2 only Clock _1stparton_ 00:00 0 flag 1 range 0 5 Clock _S.08_ 00:01 00:04 diff --git a/Assets/StreamingAssets/Quests/60C00Y00.txt b/Assets/StreamingAssets/Quests/60C00Y00.txt index 5bb195993c..6afd88d028 100644 --- a/Assets/StreamingAssets/Quests/60C00Y00.txt +++ b/Assets/StreamingAssets/Quests/60C00Y00.txt @@ -146,7 +146,7 @@ Person _questgiver_ face 112 named Sheogorath anyInfo 1012 Person _qgfriend_ face 1 group Innkeeper remote anyInfo 1011 rumors 1014 Place _mondung_ remote dungeon -Place _contactdung_ remote dungeon3,dungeon +Place _contactdung_ remote dungeon3 Clock _1stparton_ 00:00 0 flag 1 range 2 5 diff --git a/Assets/StreamingAssets/Quests/70C00Y00.txt b/Assets/StreamingAssets/Quests/70C00Y00.txt index cd59b8dfb7..421fd680e9 100644 --- a/Assets/StreamingAssets/Quests/70C00Y00.txt +++ b/Assets/StreamingAssets/Quests/70C00Y00.txt @@ -131,7 +131,7 @@ Item _artifact_ artifact Sanguine_Rose anyInfo 1014 Person _questgiver_ face 112 named Sanguine anyInfo 1011 Person _contact_ face 232 faction The_Cabal remote anyInfo 1012 -Place _mondung_ remote dungeon4,dungeon7 +Place _mondung_ remote dungeon4,dungeon7 only Clock _1stparton_ 00:00 0 flag 1 range 2 5 diff --git a/Assets/StreamingAssets/Quests/A0C0XY04.txt b/Assets/StreamingAssets/Quests/A0C0XY04.txt index 496bf0ea0f..598d14e5c8 100644 --- a/Assets/StreamingAssets/Quests/A0C0XY04.txt +++ b/Assets/StreamingAssets/Quests/A0C0XY04.txt @@ -179,7 +179,7 @@ Person _dummymage_ face 1 faction The_Mages_Guild remote Person _dummyorc_ face 1 named Gortwog Person _dummydarkb_ face 49 faction The_Dark_Brotherhood remote -Place _dungeon_ remote dungeon7,dungeon4,dungeon +Place _dungeon_ remote dungeon7,dungeon4 Place _meetingplace_ local apothecary Clock _extratime_ 00:30 0 flag 1 range 0 1 diff --git a/Assets/StreamingAssets/Quests/A0C41Y18.txt b/Assets/StreamingAssets/Quests/A0C41Y18.txt index 09c770c528..00d40a3ae8 100644 --- a/Assets/StreamingAssets/Quests/A0C41Y18.txt +++ b/Assets/StreamingAssets/Quests/A0C41Y18.txt @@ -187,7 +187,7 @@ Person _sage_ group Cleric remote anyInfo 1050 rumors 1050 Person _giver_ group Questor Person _dummy_ group Innkeeper remote -Place _dungeon_ remote dungeon0 +Place _dungeon_ remote dungeon0 only Clock _S.10_ 1001.00:00 0 flag 1 range 0 1 diff --git a/Assets/StreamingAssets/Quests/B0B00Y00.txt b/Assets/StreamingAssets/Quests/B0B00Y00.txt index 11f66b8f55..88d675d973 100644 --- a/Assets/StreamingAssets/Quests/B0B00Y00.txt +++ b/Assets/StreamingAssets/Quests/B0B00Y00.txt @@ -156,7 +156,7 @@ Person _qgiver_ group Questor Person _lady_ face 2 group Noble female local Person _vamp_ face 40 factiontype Vampire_Clan local -Place _mondung_ remote dungeon8,dungeon +Place _mondung_ remote dungeon8 Clock _2mondung_ 00:00 0 flag 17 range 0 2 Clock _S.07_ 10:00 1.16:00 diff --git a/Assets/StreamingAssets/Quests/B0B10Y04.txt b/Assets/StreamingAssets/Quests/B0B10Y04.txt index afc8c13b02..c708e1cc87 100644 --- a/Assets/StreamingAssets/Quests/B0B10Y04.txt +++ b/Assets/StreamingAssets/Quests/B0B10Y04.txt @@ -134,7 +134,7 @@ QBN: Person _qgiver_ group Questor -Place _mondung_ remote dungeon1,dungeon +Place _mondung_ remote dungeon1 Place tavern local tavern Clock _2mondung_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/B0B20Y07.txt b/Assets/StreamingAssets/Quests/B0B20Y07.txt index 503c428384..b771f2fa35 100644 --- a/Assets/StreamingAssets/Quests/B0B20Y07.txt +++ b/Assets/StreamingAssets/Quests/B0B20Y07.txt @@ -108,7 +108,7 @@ QBN: Person _qgiver_ group Questor Person _local_ face 1 group Resident2 local -Place _dungeon_ remote dungeon1 +Place _dungeon_ remote dungeon1 only Clock _2dung_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/B0B40Y08.txt b/Assets/StreamingAssets/Quests/B0B40Y08.txt index 2eafeb1577..f93c02e848 100644 --- a/Assets/StreamingAssets/Quests/B0B40Y08.txt +++ b/Assets/StreamingAssets/Quests/B0B40Y08.txt @@ -83,7 +83,7 @@ QBN: Person _qgiver_ group Questor Person _local_ face 207 group Resident2 female local -Place _dungeon_ remote dungeon1,dungeon +Place _dungeon_ remote dungeon1 Clock _2dung_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/B0B40Y09.txt b/Assets/StreamingAssets/Quests/B0B40Y09.txt index 076ec2e4af..2e0a79ad64 100644 --- a/Assets/StreamingAssets/Quests/B0B40Y09.txt +++ b/Assets/StreamingAssets/Quests/B0B40Y09.txt @@ -90,7 +90,7 @@ Item _gold_ gold Person _qgiver_ group Questor Person _local_ face 207 group Resident2 female local -Place _dungeon_ remote dungeon13,dungeon +Place _dungeon_ remote dungeon13 Clock _2dung_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/B0B50Y11.txt b/Assets/StreamingAssets/Quests/B0B50Y11.txt index cd80dc7824..296e82551f 100644 --- a/Assets/StreamingAssets/Quests/B0B50Y11.txt +++ b/Assets/StreamingAssets/Quests/B0B50Y11.txt @@ -91,7 +91,7 @@ Person _qgiver_ group Questor Person _nobleman_ face 182 factiontype Province remote Person _local_ face 77 group Resident2 male local -Place _dungeon_ remote dungeon11 +Place _dungeon_ remote dungeon11 only Clock _2dung_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/B0B60Y12.txt b/Assets/StreamingAssets/Quests/B0B60Y12.txt index e4da4cc82d..cd43da3664 100644 --- a/Assets/StreamingAssets/Quests/B0B60Y12.txt +++ b/Assets/StreamingAssets/Quests/B0B60Y12.txt @@ -124,7 +124,7 @@ Person _qgiver_ group Questor Person _nobleman_ group Resident1 remote Person _local_ face 1 group Resident2 local -Place _dungeon_ remote dungeon0,dungeon +Place _dungeon_ remote dungeon0 Clock _2dung_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/B0B70Y14.txt b/Assets/StreamingAssets/Quests/B0B70Y14.txt index c46acb2a2e..e25b13bfa2 100644 --- a/Assets/StreamingAssets/Quests/B0B70Y14.txt +++ b/Assets/StreamingAssets/Quests/B0B70Y14.txt @@ -131,7 +131,7 @@ Item _gold_ gold Person _qgiver_ group Questor -Place _dungeon_ remote dungeon7,dungeon4,dungeon +Place _dungeon_ remote dungeon7,dungeon4 Clock _2dung_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/B0B70Y16.txt b/Assets/StreamingAssets/Quests/B0B70Y16.txt index 051f2f902b..a3dc95cbf1 100644 --- a/Assets/StreamingAssets/Quests/B0B70Y16.txt +++ b/Assets/StreamingAssets/Quests/B0B70Y16.txt @@ -131,7 +131,7 @@ QBN: Person _qgiver_ group Questor Person _local_ face 93 group Resident2 male local -Place _dungeon_ remote dungeon14 +Place _dungeon_ remote dungeon14 only Clock _2dung_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/B0B80Y17.txt b/Assets/StreamingAssets/Quests/B0B80Y17.txt index c818ebd22b..90ee7fe595 100644 --- a/Assets/StreamingAssets/Quests/B0B80Y17.txt +++ b/Assets/StreamingAssets/Quests/B0B80Y17.txt @@ -95,7 +95,7 @@ QBN: Person _qgiver_ group Questor Person _local_ face 1 group Resident2 local -Place _dungeon_ remote dungeon0,dungeon11,dungeon +Place _dungeon_ remote dungeon0,dungeon11 Clock _2dung_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/B0B81Y02.txt b/Assets/StreamingAssets/Quests/B0B81Y02.txt index 2b84ae08ff..f1fb776252 100644 --- a/Assets/StreamingAssets/Quests/B0B81Y02.txt +++ b/Assets/StreamingAssets/Quests/B0B81Y02.txt @@ -228,7 +228,7 @@ Person _wizard_ face 1 group Spellcaster remote Place _dungeon_ remote dungeon Place _dungeon2_ remote dungeon Place _mageguild_ remote magery -Place _dungeon3_ remote dungeon0,dungeon11 +Place _dungeon3_ remote dungeon0,dungeon11 only Clock _2dung_ 00:00 0 flag 17 range 0 2 Clock _S.30_ 180.13:20 0 flag 1 range 0 1 diff --git a/Assets/StreamingAssets/Quests/B0C00Y06.txt b/Assets/StreamingAssets/Quests/B0C00Y06.txt index acabd87ad7..845e2d8673 100644 --- a/Assets/StreamingAssets/Quests/B0C00Y06.txt +++ b/Assets/StreamingAssets/Quests/B0C00Y06.txt @@ -94,7 +94,7 @@ QBN: Person _qgiver_ group Questor Person _local_ face 207 group Resident2 female local -Place _dungeon_ remote dungeon13,dungeon +Place _dungeon_ remote dungeon13 Clock _2dung_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/B0C00Y10.txt b/Assets/StreamingAssets/Quests/B0C00Y10.txt index fcff6614ad..5868ed6a00 100644 --- a/Assets/StreamingAssets/Quests/B0C00Y10.txt +++ b/Assets/StreamingAssets/Quests/B0C00Y10.txt @@ -95,7 +95,7 @@ QBN: Person _qgiver_ group Questor Person _local_ face 1 group Resident2 local -Place _dungeon_ remote dungeon1 +Place _dungeon_ remote dungeon1 only Clock _2dung_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/C0B00Y01.txt b/Assets/StreamingAssets/Quests/C0B00Y01.txt index 780fe47233..372e8b01cf 100644 --- a/Assets/StreamingAssets/Quests/C0B00Y01.txt +++ b/Assets/StreamingAssets/Quests/C0B00Y01.txt @@ -471,7 +471,7 @@ Person _prophet_ face 1 group Local_4.0 anyInfo 1038 Person _replace_ face 3 factiontype Temple female anyInfo 1023 Person _lover_ face 104 group Group_7.0 remote anyInfo 1017 -Place _mondung_ remote dungeon4,dungeon7 +Place _mondung_ remote dungeon4,dungeon7 only Place _tavern_ remote tavern Place _prophouse_ remote tavern diff --git a/Assets/StreamingAssets/Quests/C0B00Y03.txt b/Assets/StreamingAssets/Quests/C0B00Y03.txt index 93e61f3a15..36eee31344 100644 --- a/Assets/StreamingAssets/Quests/C0B00Y03.txt +++ b/Assets/StreamingAssets/Quests/C0B00Y03.txt @@ -118,7 +118,7 @@ QBN: Person _qgiver_ group Questor Person _cleric_ face 105 factiontype Temple -Place _mondung_ remote dungeon4,dungeon7,dungeon +Place _mondung_ remote dungeon4,dungeon7 Clock _queston_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/C0B00Y14.txt b/Assets/StreamingAssets/Quests/C0B00Y14.txt index cec242a096..dbc53711fa 100644 --- a/Assets/StreamingAssets/Quests/C0B00Y14.txt +++ b/Assets/StreamingAssets/Quests/C0B00Y14.txt @@ -146,7 +146,7 @@ Item _I.00_ item class 10 subclass 4 Person _questgiver_ group Questor Person _priest_ group Cleric remote -Place _mondung_ remote dungeon4,dungeon7 +Place _mondung_ remote dungeon4,dungeon7 only Clock _qtime_ 00:00 0 flag 17 range 1 5 diff --git a/Assets/StreamingAssets/Quests/E0B00Y00.txt b/Assets/StreamingAssets/Quests/E0B00Y00.txt index 4498c7be45..ff4d7ac70f 100644 --- a/Assets/StreamingAssets/Quests/E0B00Y00.txt +++ b/Assets/StreamingAssets/Quests/E0B00Y00.txt @@ -124,7 +124,7 @@ Item _reward_ gold Person _questgiver_ group Questor -Place _mondung_ remote dungeon4,dungeon7,dungeon +Place _mondung_ remote dungeon4,dungeon7 Clock _1stparton_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/H0B00Y00.txt b/Assets/StreamingAssets/Quests/H0B00Y00.txt index 218a48bdc8..ae5b24fd4b 100644 --- a/Assets/StreamingAssets/Quests/H0B00Y00.txt +++ b/Assets/StreamingAssets/Quests/H0B00Y00.txt @@ -100,7 +100,7 @@ Item _reward_ gold Person _questgiver_ group Questor -Place _mondung_ remote dungeon4,dungeon7 +Place _mondung_ remote dungeon4,dungeon7 only Clock _1stparton_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/K0C00Y02.txt b/Assets/StreamingAssets/Quests/K0C00Y02.txt index 8d8d04d925..f183d129b9 100644 --- a/Assets/StreamingAssets/Quests/K0C00Y02.txt +++ b/Assets/StreamingAssets/Quests/K0C00Y02.txt @@ -137,7 +137,7 @@ Item _I.07_ gold Person _qgiver_ group Questor Place _depository_ remote bank -Place _mondung_ remote dungeon2,dungeon15 +Place _mondung_ remote dungeon2,dungeon15 only Place _palace_ remote palace Place _mansion_ remote house1 diff --git a/Assets/StreamingAssets/Quests/K0C00Y05.txt b/Assets/StreamingAssets/Quests/K0C00Y05.txt index c0b11182f2..9c75bdd1c5 100644 --- a/Assets/StreamingAssets/Quests/K0C00Y05.txt +++ b/Assets/StreamingAssets/Quests/K0C00Y05.txt @@ -211,7 +211,7 @@ Person _qgiver_ group Questor Person _knight_ face 216 faction The_Fighters_Guild remote Person _child_ faction Children female -Place _mondung_ remote dungeon1 +Place _mondung_ remote dungeon1 only Place _childlocale_ local house2 Clock _queston_ 00:00 0 flag 17 range 0 5 diff --git a/Assets/StreamingAssets/Quests/K0C01Y00.txt b/Assets/StreamingAssets/Quests/K0C01Y00.txt index dbae640c0c..1272b59799 100644 --- a/Assets/StreamingAssets/Quests/K0C01Y00.txt +++ b/Assets/StreamingAssets/Quests/K0C01Y00.txt @@ -194,7 +194,7 @@ Person _victim_ face 1 group Group_7.0 Person _tg_ faction The_Thieves_Guild local Place _mondung_ remote dungeon -Place _mondung2_ remote dungeon2,dungeon15 +Place _mondung2_ remote dungeon2,dungeon15 only Clock _queston1_ 00:00 0 flag 17 range 0 2 Clock _S.05_ 08:20 3.11:20 diff --git a/Assets/StreamingAssets/Quests/K0C01Y10.txt b/Assets/StreamingAssets/Quests/K0C01Y10.txt index 9ac408596c..eebf1337c4 100644 --- a/Assets/StreamingAssets/Quests/K0C01Y10.txt +++ b/Assets/StreamingAssets/Quests/K0C01Y10.txt @@ -189,7 +189,7 @@ Item _bothdorjii_ letter used 1011 Person _qgiver_ group Questor -Place _mondung_ remote dungeon4,dungeon7 +Place _mondung_ remote dungeon4,dungeon7 only Clock _queston_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/K0C0XY01.txt b/Assets/StreamingAssets/Quests/K0C0XY01.txt index 821c08d6f8..ba18b10ac8 100644 --- a/Assets/StreamingAssets/Quests/K0C0XY01.txt +++ b/Assets/StreamingAssets/Quests/K0C0XY01.txt @@ -194,7 +194,7 @@ Item _jewelry_ trinket Person _qgiver_ group Questor Person _contact_ face 1 faction The_Fighters_Guild remote -Place _mondung_ remote dungeon10 +Place _mondung_ remote dungeon10 only Clock _2mondung_ 00:00 0 flag 17 range 0 2 Clock _S.05_ 16:40 1.09:20 diff --git a/Assets/StreamingAssets/Quests/L0B00Y02.txt b/Assets/StreamingAssets/Quests/L0B00Y02.txt index 070712c375..20bf143e36 100644 --- a/Assets/StreamingAssets/Quests/L0B00Y02.txt +++ b/Assets/StreamingAssets/Quests/L0B00Y02.txt @@ -149,7 +149,7 @@ Item _letter_ letter used 1011 Person _qgiver_ face 110 group Questor Place _mondung_ remote dungeon -Place _stronghold_ remote dungeon2,dungeon15 +Place _stronghold_ remote dungeon2,dungeon15 only Clock _queston_ 00:00 0 flag 17 range 0 5 diff --git a/Assets/StreamingAssets/Quests/L0B10Y03.txt b/Assets/StreamingAssets/Quests/L0B10Y03.txt index 41abb320f5..5171cf6e9c 100644 --- a/Assets/StreamingAssets/Quests/L0B10Y03.txt +++ b/Assets/StreamingAssets/Quests/L0B10Y03.txt @@ -147,7 +147,7 @@ QBN: Person _qgiver_ group Questor Person _contact_ face 176 group Innkeeper -Place _mondung_ remote dungeon8,dungeon +Place _mondung_ remote dungeon8 Clock _queston_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/L0B20Y02.txt b/Assets/StreamingAssets/Quests/L0B20Y02.txt index 106ac8cba3..cb410a4509 100644 --- a/Assets/StreamingAssets/Quests/L0B20Y02.txt +++ b/Assets/StreamingAssets/Quests/L0B20Y02.txt @@ -111,7 +111,7 @@ Item _reward_ gold Person _questgiver_ face 112 group Questor Person _damsel_ face 2 group Group_6.0 female local -Place _mondung_ remote dungeon2,dungeon15 +Place _mondung_ remote dungeon2,dungeon15 only Clock _1stparton_ 00:00 0 flag 18 range 0 2 diff --git a/Assets/StreamingAssets/Quests/M0B00Y17.txt b/Assets/StreamingAssets/Quests/M0B00Y17.txt index 5db23b2763..0d6756b31d 100644 --- a/Assets/StreamingAssets/Quests/M0B00Y17.txt +++ b/Assets/StreamingAssets/Quests/M0B00Y17.txt @@ -208,7 +208,7 @@ Person _victim_ face 1 group Group_6.0 remote Person _love_ face 1 group Group_7.0 remote Person _dummy_ group Noble local -Place _mondung_ remote dungeon6,dungeon5 +Place _mondung_ remote dungeon6,dungeon5 only Place _newdung_ remote dungeon --unneeded dungeon variable Place _lovehouse_ local house2 diff --git a/Assets/StreamingAssets/Quests/M0B11Y18.txt b/Assets/StreamingAssets/Quests/M0B11Y18.txt index 68e3a1f48a..9e2aab1e19 100644 --- a/Assets/StreamingAssets/Quests/M0B11Y18.txt +++ b/Assets/StreamingAssets/Quests/M0B11Y18.txt @@ -338,7 +338,7 @@ Person _enemy_ face 1 group Resident2 remote Person _traitor_ face 1 named Lord_K'avar Place _L.00_ remote dungeon -Place _stronghold_ remote dungeon2,dungeon15 +Place _stronghold_ remote dungeon2,dungeon15 only Place _tavern_ local tavern Place _targethouse_ local house2 Place _palace_ remote palace diff --git a/Assets/StreamingAssets/Quests/M0B20Y02.txt b/Assets/StreamingAssets/Quests/M0B20Y02.txt index cec69985e6..8036469bea 100644 --- a/Assets/StreamingAssets/Quests/M0B20Y02.txt +++ b/Assets/StreamingAssets/Quests/M0B20Y02.txt @@ -113,7 +113,7 @@ Item _reward_ gold Person _questgiver_ group Questor -Place _mondung_ remote dungeon13,dungeon +Place _mondung_ remote dungeon13 Place _newdung_ remote dungeon Clock _1stparton_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/M0B30Y04.txt b/Assets/StreamingAssets/Quests/M0B30Y04.txt index 8a9eda921d..956a620af1 100644 --- a/Assets/StreamingAssets/Quests/M0B30Y04.txt +++ b/Assets/StreamingAssets/Quests/M0B30Y04.txt @@ -117,7 +117,7 @@ Item _reward_ gold Person _questgiver_ group Questor Place _mondung_ remote dungeon -Place _newdung_ remote dungeon14 +Place _newdung_ remote dungeon14 only Clock _1stparton_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/M0B50Y09.txt b/Assets/StreamingAssets/Quests/M0B50Y09.txt index fada4d9cf3..e6f8ac2149 100644 --- a/Assets/StreamingAssets/Quests/M0B50Y09.txt +++ b/Assets/StreamingAssets/Quests/M0B50Y09.txt @@ -96,7 +96,7 @@ Item _gold_ gold Person _qgiver_ group Questor Place _dungeon_ remote dungeon -Place _newdung_ remote dungeon8 +Place _newdung_ remote dungeon8 only Clock _2dung_ 00:00 0 flag 17 range 0 2 Clock _end_ 00:00 diff --git a/Assets/StreamingAssets/Quests/N0B00Y06.txt b/Assets/StreamingAssets/Quests/N0B00Y06.txt index 310abe66d2..ef7c1d95ae 100644 --- a/Assets/StreamingAssets/Quests/N0B00Y06.txt +++ b/Assets/StreamingAssets/Quests/N0B00Y06.txt @@ -150,7 +150,7 @@ Item _gold_ gold Person _qgiver_ group Questor -Place _mondung_ remote dungeon0 +Place _mondung_ remote dungeon0 only Clock _queston_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/N0B20Y05.txt b/Assets/StreamingAssets/Quests/N0B20Y05.txt index 2c68fa485d..8428969fca 100644 --- a/Assets/StreamingAssets/Quests/N0B20Y05.txt +++ b/Assets/StreamingAssets/Quests/N0B20Y05.txt @@ -122,7 +122,7 @@ Item _reward_ magic_item Person _questgiver_ group Questor Person _wizard_ face 249 faction The_Mages_Guild remote -Place _mondung_ remote dungeon9 +Place _mondung_ remote dungeon9 only Clock _1stparton_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/N0B40Y07.txt b/Assets/StreamingAssets/Quests/N0B40Y07.txt index 0af06dd936..6f1efca235 100644 --- a/Assets/StreamingAssets/Quests/N0B40Y07.txt +++ b/Assets/StreamingAssets/Quests/N0B40Y07.txt @@ -155,7 +155,7 @@ Item _spellScroll_ letter used 1030 Person _qgiver_ group Questor Person _dummydaedra_ face 249 factiontype Daedra remote -Place _mondung_ remote dungeon9 +Place _mondung_ remote dungeon9 only Place aide remote dungeon Clock _queston_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/P0A01L00.txt b/Assets/StreamingAssets/Quests/P0A01L00.txt index bc512ac526..9b37267dff 100644 --- a/Assets/StreamingAssets/Quests/P0A01L00.txt +++ b/Assets/StreamingAssets/Quests/P0A01L00.txt @@ -133,7 +133,7 @@ Item _letter_ letter used QuestorOffer Person _questgiver_ factiontype Vampire_Clan remote anyInfo 1010 rumors 1011 -Place _mondung_ remote dungeon0 +Place _mondung_ remote dungeon0 only Clock _1stparton_ 00:00 0 flag 1 range 2 5 diff --git a/Assets/StreamingAssets/Quests/P0B00L03.txt b/Assets/StreamingAssets/Quests/P0B00L03.txt index 3c222d9c4c..51b53d4e7a 100644 --- a/Assets/StreamingAssets/Quests/P0B00L03.txt +++ b/Assets/StreamingAssets/Quests/P0B00L03.txt @@ -169,7 +169,7 @@ Item _letter_ letter used 1020 Person _vampire_ face 40 factiontype Vampire_Clan local anyInfo 1011 rumors 1012 Person _vampname_ face 4 factiontype Vampire_Clan male remote -Place _mondung_ remote dungeon8 +Place _mondung_ remote dungeon8 only Clock _1stparton_ 00:00 0 flag 1 range 2 5 diff --git a/Assets/StreamingAssets/Quests/P0B00L06.txt b/Assets/StreamingAssets/Quests/P0B00L06.txt index 7f1dfde0d5..fec10a2b67 100644 --- a/Assets/StreamingAssets/Quests/P0B00L06.txt +++ b/Assets/StreamingAssets/Quests/P0B00L06.txt @@ -268,7 +268,7 @@ Person _vamp_ factiontype Vampire_Clan local Person _mg_ faction The_Mages_Guild local Person _mage_ face 1 group Group_5.1 remote -Place _mondung_ remote dungeon9 +Place _mondung_ remote dungeon9 only Clock _queston_ 00:00 0 flag 17 range 0 2 Clock _2ndparton_ 00:10 00:30 flag 9 range 0 0 diff --git a/Assets/StreamingAssets/Quests/P0B10L07.txt b/Assets/StreamingAssets/Quests/P0B10L07.txt index dce1d00d0a..cc70aeab53 100644 --- a/Assets/StreamingAssets/Quests/P0B10L07.txt +++ b/Assets/StreamingAssets/Quests/P0B10L07.txt @@ -159,7 +159,7 @@ Item _jewelry_ trinket Person _vamp_ factiontype Vampire_Clan local Person _knight_ face 69 factiontype Knightly_Guard male remote -Place _mondung_ remote dungeon2,dungeon15 +Place _mondung_ remote dungeon2,dungeon15 only Clock _queston_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/P0B10L08.txt b/Assets/StreamingAssets/Quests/P0B10L08.txt index be182226ae..8f923231b3 100644 --- a/Assets/StreamingAssets/Quests/P0B10L08.txt +++ b/Assets/StreamingAssets/Quests/P0B10L08.txt @@ -194,7 +194,7 @@ Item _gem_ gem Person _vamp_ factiontype Vampire_Clan local Person _daedra_ face 1 factiontype Daedra remote -Place _mondung_ remote dungeon7,dungeon4 +Place _mondung_ remote dungeon7,dungeon4 only Clock _queston_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/Q0C00Y06.txt b/Assets/StreamingAssets/Quests/Q0C00Y06.txt index 1d58046bba..7d68d1ade7 100644 --- a/Assets/StreamingAssets/Quests/Q0C00Y06.txt +++ b/Assets/StreamingAssets/Quests/Q0C00Y06.txt @@ -120,7 +120,7 @@ Item _reward_ magic_item Person _witch_ face 44 group Questor anyInfo 1011 rumors 1012 -Place _mondung_ remote dungeon8 +Place _mondung_ remote dungeon8 only --removed extraneous underscore from __mondung_. Clock _1stparton_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/Q0C00Y07.txt b/Assets/StreamingAssets/Quests/Q0C00Y07.txt index 4e0261cdcf..af8a943f95 100644 --- a/Assets/StreamingAssets/Quests/Q0C00Y07.txt +++ b/Assets/StreamingAssets/Quests/Q0C00Y07.txt @@ -114,7 +114,7 @@ Person _qgiver_ group Questor Person _witch_ face 1 faction The_Prostitutes female remote Person _daedra_ face 105 factiontype Daedra -Place _mondung_ remote dungeon3 +Place _mondung_ remote dungeon3 only Clock _queston_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/Q0C10Y00.txt b/Assets/StreamingAssets/Quests/Q0C10Y00.txt index 202186ddd7..e17f465b67 100644 --- a/Assets/StreamingAssets/Quests/Q0C10Y00.txt +++ b/Assets/StreamingAssets/Quests/Q0C10Y00.txt @@ -140,9 +140,9 @@ Item _reward3_ jade Person _qgiver_ group Questor anyInfo 1011 -Place _dungeon1_ remote dungeon6,dungeon5 -Place _dungeon2_ remote dungeon12 -Place _dungeon3_ remote dungeon10 +Place _dungeon1_ remote dungeon6,dungeon5 only +Place _dungeon2_ remote dungeon12 only +Place _dungeon3_ remote dungeon10 only Clock _queston_ 6.22:40 10.10:00 flag 17 range 0 5 diff --git a/Assets/StreamingAssets/Quests/Q0C4XY04.txt b/Assets/StreamingAssets/Quests/Q0C4XY04.txt index ef92e23dba..bd3707fc56 100644 --- a/Assets/StreamingAssets/Quests/Q0C4XY04.txt +++ b/Assets/StreamingAssets/Quests/Q0C4XY04.txt @@ -122,7 +122,7 @@ Item _heart_ daedra_heart Person _questgiver_ group Questor anyInfo 1011 -Place _mondung_ remote dungeon8 anyInfo 1012 +Place _mondung_ remote dungeon8 only anyInfo 1012 Clock _1stparton_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/R0C10Y06.txt b/Assets/StreamingAssets/Quests/R0C10Y06.txt index 69b6107703..a482363533 100644 --- a/Assets/StreamingAssets/Quests/R0C10Y06.txt +++ b/Assets/StreamingAssets/Quests/R0C10Y06.txt @@ -114,7 +114,7 @@ Item _reward_ gold Person _questgiver_ face 112 group Questor -Place _itemdung_ remote dungeon1 +Place _itemdung_ remote dungeon1 only Clock _1stparton_ 00:00 0 flag 17 range 0 2 diff --git a/Assets/StreamingAssets/Quests/R0C10Y21.txt b/Assets/StreamingAssets/Quests/R0C10Y21.txt index a7ae53c8d2..848fc708e6 100644 --- a/Assets/StreamingAssets/Quests/R0C10Y21.txt +++ b/Assets/StreamingAssets/Quests/R0C10Y21.txt @@ -120,7 +120,7 @@ Person _questgiver_ face 112 group Questor Person _qgfriend_ group Noble remote anyInfo 1011 Person _dummyorc_ faction Orsinium remote -Place _mondung_ remote dungeon4,dungeon7 +Place _mondung_ remote dungeon4,dungeon7 only Clock _1stparton_ 00:00 0 flag 1 range 2 5 diff --git a/Assets/StreamingAssets/Quests/R0C20Y07.txt b/Assets/StreamingAssets/Quests/R0C20Y07.txt index 765f4ae6e3..dac8907c76 100644 --- a/Assets/StreamingAssets/Quests/R0C20Y07.txt +++ b/Assets/StreamingAssets/Quests/R0C20Y07.txt @@ -116,7 +116,7 @@ Item _item_ sapphire Person _questgiver_ face 112 group Questor Person _qgfriend_ group Local_3.0 remote -Place _itemdung_ remote dungeon13 +Place _itemdung_ remote dungeon13 only Clock _1stparton_ 00:00 0 flag 1 range 2 5 --changed flags on timer, was giving very short time limits before diff --git a/Assets/StreamingAssets/Quests/S0000018.txt b/Assets/StreamingAssets/Quests/S0000018.txt index cedd0fd60b..480852585a 100644 --- a/Assets/StreamingAssets/Quests/S0000018.txt +++ b/Assets/StreamingAssets/Quests/S0000018.txt @@ -109,7 +109,7 @@ Person _medora_ named Medora atHome Person _gortwog_ named Gortwog atHome Place _orsinium_ permanent OrsiniumCastle2 -Place _crypt_ remote dungeon0 +Place _crypt_ remote dungeon0 only Clock _delay_ 00:02 0 flag 1 range 0 1 Clock _S.01_ 00:02 0 flag 1 range 0 1 diff --git a/Assets/StreamingAssets/Quests/T0C00Y00.txt b/Assets/StreamingAssets/Quests/T0C00Y00.txt index 6f6e99c7dc..92ac3be698 100644 --- a/Assets/StreamingAssets/Quests/T0C00Y00.txt +++ b/Assets/StreamingAssets/Quests/T0C00Y00.txt @@ -140,7 +140,7 @@ Item _artifact_ artifact Azuras_Star anyInfo 1014 Person _questgiver_ face 112 named Azura anyInfo 1013 Person _qgfriend_ group Librarian anyInfo 1011 rumors 1012 -Place _mondung_ remote dungeon4,dungeon7 +Place _mondung_ remote dungeon4,dungeon7 only Clock _1stparton_ 00:00 0 flag 1 range 2 5 diff --git a/Assets/StreamingAssets/Quests/U0C00Y00.txt b/Assets/StreamingAssets/Quests/U0C00Y00.txt index 768a34c7a7..656c7e0f46 100644 --- a/Assets/StreamingAssets/Quests/U0C00Y00.txt +++ b/Assets/StreamingAssets/Quests/U0C00Y00.txt @@ -176,8 +176,8 @@ Person _questgiver_ face 112 named Boethiah anyInfo 1013 Person _qgfriend_ group Librarian anyInfo 1011 rumors 1012 Person _mfriend_ group Local_4.0 remote -Place _mondung_ remote dungeon2,dungeon15 -Place _hideout_ remote dungeon6,dungeon5 +Place _mondung_ remote dungeon2,dungeon15 only +Place _hideout_ remote dungeon6,dungeon5 only Clock _1stparton_ 00:00 0 flag 1 range 2 5 Clock _escapetime_ 00:00 0 flag 1 range 2 3 diff --git a/Assets/StreamingAssets/Quests/__DEMO12.txt b/Assets/StreamingAssets/Quests/__DEMO12.txt index 8399eae764..38a92b3780 100644 --- a/Assets/StreamingAssets/Quests/__DEMO12.txt +++ b/Assets/StreamingAssets/Quests/__DEMO12.txt @@ -141,7 +141,7 @@ Item _gold_ gold Person _qgiver_ group Questor male -Place _mondung_ remote dungeon0,dungeon8 +Place _mondung_ remote dungeon0,dungeon8 only Clock _queston_ 00:00 0 flag 17 range 0 2 From 2432e85721934d88f2f9a249897faf9c11a0cd2a Mon Sep 17 00:00:00 2001 From: Pierre Etchemaite Date: Thu, 11 Jun 2026 22:37:35 +0200 Subject: [PATCH 3/6] "any" fallback even with no alternates Delay testing if alternateDungeonTypeIndices is null so that fallback to picking any dungeon (in the absence of the "only" keyword) still works --- Assets/Scripts/Game/Questing/Place.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Assets/Scripts/Game/Questing/Place.cs b/Assets/Scripts/Game/Questing/Place.cs index f6861ce66b..8c1383acfb 100644 --- a/Assets/Scripts/Game/Questing/Place.cs +++ b/Assets/Scripts/Game/Questing/Place.cs @@ -915,17 +915,17 @@ bool SelectRemoteDungeonSite(int dungeonTypeIndex) //Debug.LogFormat("Found a total of {0} possible dungeons of type {1} in {2}", foundIndices == null ? 0 : foundIndices.Length, dungeonTypeIndex, regionData.Name); - // Add equivalence(s) if too few dungeons to select from - if (dungeonTypeIndex >= 0 && alternateDungeonTypeIndices != null) + if (dungeonTypeIndex >= 0) { int equivalentIndex = 0; if (foundIndices == null) { foundIndices = new int[] {}; } + // Add equivalence(s) if too few dungeons to select from while (foundIndices.Length < DaggerfallUnity.Settings.DungeonsPoolSizeTarget) { - if (alternateDungeonTypeIndices.Length > equivalentIndex) + if (alternateDungeonTypeIndices != null && alternateDungeonTypeIndices.Length > equivalentIndex) { int[] equivalentIndices = CollectDungeonIndicesOfType(regionData, alternateDungeonTypeIndices[equivalentIndex]); if (equivalentIndices != null && equivalentIndices.Length > 0) From e5efa6e9e6e564aacdb7b65cebd8364179cdce17 Mon Sep 17 00:00:00 2001 From: Pierre Etchemaite Date: Fri, 12 Jun 2026 02:57:55 +0200 Subject: [PATCH 4/6] Debugging logs --- Assets/Scripts/Game/Questing/Place.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Assets/Scripts/Game/Questing/Place.cs b/Assets/Scripts/Game/Questing/Place.cs index 8c1383acfb..c735fcffd7 100644 --- a/Assets/Scripts/Game/Questing/Place.cs +++ b/Assets/Scripts/Game/Questing/Place.cs @@ -925,12 +925,13 @@ bool SelectRemoteDungeonSite(int dungeonTypeIndex) // Add equivalence(s) if too few dungeons to select from while (foundIndices.Length < DaggerfallUnity.Settings.DungeonsPoolSizeTarget) { + Debug.LogFormat("Dungeon candidates list too short ({}) for proper randomization", foundIndices.Length); if (alternateDungeonTypeIndices != null && alternateDungeonTypeIndices.Length > equivalentIndex) { int[] equivalentIndices = CollectDungeonIndicesOfType(regionData, alternateDungeonTypeIndices[equivalentIndex]); if (equivalentIndices != null && equivalentIndices.Length > 0) { - // Debug.LogFormat("Adding {0} possible dungeons of type {1} by equivalence", equivalentIndices.Length, alternateDungeonTypeIndices[equivalentIndex]); + Debug.LogFormat("Adding {0} possible dungeons of type {1} by equivalence", equivalentIndices.Length, alternateDungeonTypeIndices[equivalentIndex]); foundIndices = foundIndices.Concat(equivalentIndices).ToArray(); } equivalentIndex++; @@ -940,8 +941,13 @@ bool SelectRemoteDungeonSite(int dungeonTypeIndex) if (!listedSitesOnly) { // If everything failed, pick any dungeon (DFU classic behavior) + Debug.LogFormat("Falling back to picking any dungeon (classic DFU behavior)"); foundIndices = CollectDungeonIndicesOfType(regionData, -1); } + else + { + Debug.LogFormat("No dungeon types fallback, continuing with available pool"); + } break; } } From 3bfed7554272b19891cff17de66dd2713bdc3dc7 Mon Sep 17 00:00:00 2001 From: Pierre Etchemaite Date: Fri, 12 Jun 2026 02:58:46 +0200 Subject: [PATCH 5/6] M0B20Y02: giant stronghold only As mentionned in the quest text --- Assets/StreamingAssets/Quests/M0B20Y02.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/StreamingAssets/Quests/M0B20Y02.txt b/Assets/StreamingAssets/Quests/M0B20Y02.txt index 8036469bea..24a40a661c 100644 --- a/Assets/StreamingAssets/Quests/M0B20Y02.txt +++ b/Assets/StreamingAssets/Quests/M0B20Y02.txt @@ -113,7 +113,7 @@ Item _reward_ gold Person _questgiver_ group Questor -Place _mondung_ remote dungeon13 +Place _mondung_ remote dungeon13 only Place _newdung_ remote dungeon Clock _1stparton_ 00:00 0 flag 17 range 0 2 From a4950e5e1723b33c598dae1bb6f67337ea293986 Mon Sep 17 00:00:00 2001 From: Pierre Etchemaite Date: Fri, 12 Jun 2026 03:32:37 +0200 Subject: [PATCH 6/6] Relax N0B00Y06 Crypt makes sense for a mummy, but is not mentionned in the quest, so let's make it just a hint --- Assets/StreamingAssets/Quests/N0B00Y06.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/StreamingAssets/Quests/N0B00Y06.txt b/Assets/StreamingAssets/Quests/N0B00Y06.txt index db047e4099..9981382f28 100644 --- a/Assets/StreamingAssets/Quests/N0B00Y06.txt +++ b/Assets/StreamingAssets/Quests/N0B00Y06.txt @@ -150,7 +150,7 @@ Item _gold_ gold Person _qgiver_ group Questor -Place _mondung_ remote dungeon0 only +Place _mondung_ remote dungeon0 Clock _queston_ 00:00 0 flag 17 range 0 2