From 504969eef8d285c2557f708dd628a24f0c12e67e Mon Sep 17 00:00:00 2001 From: Ferital Date: Sun, 15 Dec 2024 08:46:24 +0100 Subject: [PATCH] Fix inconsistency in NPC answers about a person and their location --- Assets/Scripts/Game/TalkManager.cs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Assets/Scripts/Game/TalkManager.cs b/Assets/Scripts/Game/TalkManager.cs index 62dc44da49..faedb64d28 100644 --- a/Assets/Scripts/Game/TalkManager.cs +++ b/Assets/Scripts/Game/TalkManager.cs @@ -580,6 +580,28 @@ NPCKnowledgeAboutItem GetNPCKnowledgeAboutItem(ListItem listItem) return NPCKnowledgeAboutItem.KnowsAboutItem; } + // Fixed from classic: an NPC who is no aware of the location of a quest building + // where a quest person is located obviously can't know the person location + if (listItem.questionType == QuestionType.Person && currentKeySubjectBuildingKey != -1) + { + foreach (ListItem buildingGroupListItem in listTopicLocation) + { + ListItem buildingListItem = buildingGroupListItem.listChildItems.Find(x => x.buildingKey == currentKeySubjectBuildingKey); + if (buildingListItem != null) + { + // Set the NPC knowledge about the building if it has not been set yet + if (buildingListItem.npcKnowledgeAboutItem == NPCKnowledgeAboutItem.NotSet) + buildingListItem.npcKnowledgeAboutItem = GetNPCKnowledgeAboutItem(buildingListItem); + + if (buildingListItem.npcKnowledgeAboutItem == NPCKnowledgeAboutItem.DoesNotKnowAboutItem) + return NPCKnowledgeAboutItem.DoesNotKnowAboutItem; + + // Found the building, no need to continue + break; + } + } + } + // Make roll result be the same every time for a given NPC if (currentNPCType == NPCType.Mobile) DFRandom.Seed = (uint)lastTargetMobileNPC.GetHashCode();