Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failed Tests around NPC dialogue trees #49152

Open
Maleclypse opened this issue Jun 3, 2021 · 11 comments
Open

Failed Tests around NPC dialogue trees #49152

Maleclypse opened this issue Jun 3, 2021 · 11 comments
Labels
<Bug> This needs to be fixed Code: Tests Measurement, self-control, statistics, balancing. [JSON] Changes (can be) made in JSON NPC / Factions NPCs, AI, Speech, Factions, Ownership [Python] Code made in Python

Comments

@Maleclypse
Copy link
Member

Describe the bug

There are a ton of fails in the CI tests around NPC dialogue. I'm making a list of them here for people to check off as they fix them.

Steps To Reproduce

[] talk topic TALK_SHELTER referenced in an NPC chat but not defined
[] talk topic TALK_STRANGER_AGGRESSIVE referenced in an NPC chat but not defined
[] talk topic TALK_MISSION_LIST referenced in a response but not defined
[] talk topic TALK_STRANGER_NEUTRAL referenced in an NPC chat but not defined
[] talk topic TALK_LEADER referenced in an NPC chat but not defined
[] talk topic MISSION_PYROMANIAC defined but not referenced in a response
[] talk topic TALK_lighthouse_man_family defined but not referenced in a response
[] talk topic TALK_SHOUT referenced in a response but not defined
[] talk topic TALK_COMBAT_COMMANDS referenced in a response but not defined
[] talk topic TALK_TRAIN_START referenced in a response but not defined
[] talk topic TALK_OPINION referenced in a response but not defined
[] talk topic TALK_DELIVER_ASK referenced in a response but not defined
[] talk topic TALK_MISSION_DESCRIBE_URGENT referenced in an NPC chat but not defined
[] talk topic TALK_REFUGEE_Dana_Background_baking_nobarter defined but not referenced in a response
[] talk topic TALK_pizzaiolo_following defined but not referenced in a response
[] talk topic TALK_REFUGEE_Dana_1_firstmeet defined but not referenced in a response
[] talk topic TALK_MISSION_INQUIRE referenced in a response but not defined
[] talk topic TALK_STRANGER_FRIENDLY referenced in an NPC chat but not defined
[] talk topic TALK_REFUGEE_GENERAL_Refuse_Boris_Mission_1 referenced in a response but not defined
[] talk topic TALK_MISSION_OFFER referenced in a response but not defined
[] talk topic TALK_HOW_MUCH_FURTHER defined but not referenced in a response
[] talk topic TALK_WAKE_UP referenced in an NPC chat but not defined
[] talk topic TALK_FRIEND_CONVERSATION defined but not referenced in a response
[] talk topic TALK_SIZE_UP referenced in a response but not defined
[] talk topic TALK_MUG referenced in an NPC chat but not defined
[] talk topic TALK_LOOK_AT referenced in a response but not defined
[] talk topic TALK_MISSION_LIST_ASSIGNED referenced in a response but not defined
[] talk topic TALK_MISSION_DESCRIBE referenced in a response but not defined
[] talk topic TALK_REFUGEE_Boris_Son_Tough referenced in a response but not defined
[] talk topic TALK_lighthouse_man_cleaning defined but not referenced in a response
[] talk topic TALK_STOLE_ITEM referenced in an NPC chat but not defined
[] talk topic TALK_ENG_LIGHTHOUSE_WORKING defined but not referenced in a response
[] talk topic TALK_MISSION_SUCCESS referenced in a response but not defined
[] no path from a start topic to CWH_FEMA_EVACUEE_1_IDEAS1
[] no path from a start topic to BGSS_OUT_OF_TOWN_1_STORY2
[] no path from a start topic to BGSS_COP_1_STORY1
[] no path from a start topic to BGSS_SCIENTIST_2_STORY1
[] no path from a start topic to BGSS_HOSPITAL_1_STORY4
[] no path from a start topic to BGSS_OUT_OF_TOWN_2_STORY4
[] no path from a start topic to BGSS_SCAVENGER_MERC_1_STORY4
[] no path from a start topic to BGSS_RURAL_1_STORY3
[] no path from a start topic to CWH_LEFT_FOR_DEAD_2_IDEAS1
[] no path from a start topic to BGSS_DREAMER_STORY3a
[] no path from a start topic to BGSS_CODGER_STORY3a
[] no path from a start topic to BGSS_HOSPITAL_2_STORY1
[] no path from a start topic to BGSS_PRISONER_1_STORY4
[] no path from a start topic to BGSS_EVACUEE_5_WASPS
[] no path from a start topic to CWH_LEFT_FOR_DEAD_1_IDEAS2
[] no path from a start topic to BGSS_LEFT_FOR_DEAD_2_STORY2
[] no path from a start topic to BGSS_HOSPITAL_3_STORY2
[] no path from a start topic to BGSS_LOST_PARTNER_2_STORY3
[] no path from a start topic to BGSS_FEMA_EVACUEE_1_STORY1
[] no path from a start topic to BGSS_NO_PAST_4_STORY2
[] no path from a start topic to BGSS_NO_PAST_3_STORY3
[] no path from a start topic to BGSS_LEFT_FOR_DEAD_3_STORY5
[] no path from a start topic to CWH_DREAMER_IDEAS2
[] no path from a start topic to BGSS_PRISONER_1_IN_FOR_OTHER
[] no path from a start topic to BGSS_GUNG_HO_3_STORY2
[] no path from a start topic to BGSS_DREAMER_STORY6
[] no path from a start topic to BGSS_SCAVENGER_MERC_1_FUCKOFF
[] no path from a start topic to BGSS_LEFT_FOR_DEAD_2_STORY3
[] no path from a start topic to CWH_EVACUEE_5_IDEAS1
[] TALK_GODCO_cook_ask_food_family does not reach TALK_DONE
[] no path from a start topic to BGSS_HOSPITAL_3_STORY1
[] no path from a start topic to BGSS_SOLDIER_1_STORY1
[] no path from a start topic to CWH_LEFT_FOR_DEAD_2_IDEAS2
[] TALK_GODCO_cook_1 does not reach TALK_DONE
[] no path from a start topic to CWH_NO_PAST_1_IDEAS2
[] no path from a start topic to BGSS_HIGH_SCHOOL_1_STORY1
[] no path from a start topic to TALK_REFUGEE_Dana_Recruit
[] no path from a start topic to TALK_lighthouse_man_family
[] no path from a start topic to TALK_REFUGEE_Dana_Tacoma
[] no path from a start topic to BGSS_DREAMER_STORY2
[] no path from a start topic to CWH_RELIGIOUS_1_IDEAS2
[] no path from a start topic to BGSS_HUNTER_2_STORY4
[] no path from a start topic to BGSS_LOST_PARTNER_1_STORY1
[] no path from a start topic to BGSS_HOSPITAL_2_STORY4
[] no path from a start topic to BGSS_CRIMINAL_2_STORY1
[] no path from a start topic to BGSS_PRISONER_1_STORY3
[] no path from a start topic to BGSS_HOSPITAL_2_ROOF
[] no path from a start topic to CWH_CONFUSED_1_IDEAS2
[] no path from a start topic to BGSS_CODGER_STORY1
[] no path from a start topic to BGSS_WEDDING_1_STORY1
[] TALK_GODCO_cook_ask_past does not reach TALK_DONE
[] no path from a start topic to BGSS_CODGER_STORY4a
[] no path from a start topic to BGSS_EVACUEE_1_STORY2
[] no path from a start topic to TALK_pizzaiolo_celebrate1
[] no path from a start topic to BGSS_PREPPER_1_STORY1
[] no path from a start topic to BGSS_DREAMER_STORY1
[] no path from a start topic to BGSS_EVACUEE_3_STORY3_EARLY
[] no path from a start topic to BGSS_FEMA_EVACUEE_1_NOTYET
[] TALK_GODCO_cook_ask_goods does not reach TALK_DONE
[] no path from a start topic to BGSS_HIGH_SCHOOL_1_STORY3
[] no path from a start topic to BGSS_SCAVENGER_MERC_1_FREE_MERCHANTS
[] TALK_GODCO_cook_ask_food_bribe does not reach TALK_DONE
[] no path from a start topic to BGSS_CRIMINAL_1_STORY3
[] no path from a start topic to BGSS_GUNG_HO_1_STORY2
[] no path from a start topic to BGSS_LOST_PARTNER_2_STORY2
[] no path from a start topic to BGSS_HUNTER_1_STORY1
[] TALK_GODCO_cook_ask_mood does not reach TALK_DONE
[] no path from a start topic to BGSS_NERD_1_STORY3
[] no path from a start topic to BGSS_PRISONER_1_STORY6
[] no path from a start topic to BGSS_RURAL_2_STORY2
[] no path from a start topic to BGSS_NO_PAST_3_STORY2
[] no path from a start topic to CWH_EVACUEE_2_IDEAS1
[] no path from a start topic to BGSS_RELIGIOUS_1_STORY2
[] no path from a start topic to BGSS_CRIMINAL_2_NECROMANCER
[] no path from a start topic to BGSS_EVACUEE_3_STORY4
[] no path from a start topic to TALK_lighthouse_man_lighthouse
[] no path from a start topic to BGSS_PREPPER_2_NOSALE
[] no path from a start topic to BGSS_LOST_PARTNER_2_SOMESHIT
[] TALK_GODCO_cook_ask_food does not reach TALK_DONE
[] no path from a start topic to BGSS_EVACUEE_2_NOTYET
[] no path from a start topic to CWH_WEDDING_1_IDEAS1
[] no path from a start topic to TALK_REFUGEE_Dana_Background_baking_nobarter
[] no path from a start topic to BGSS_DREAMER_STORY3b
[] no path from a start topic to TALK_REFUGEE_Dana_Background_sorry
[] no path from a start topic to BGSS_PREPPER_2_MAPS
[] no path from a start topic to BGSS_LOST_PARTNER_2_HOME1
[] no path from a start topic to BGSS_COP_1_STORY2
[] no path from a start topic to BGSS_RURAL_1_STORY1
[] no path from a start topic to BGSS_PREPPER_1_LMOE
[] no path from a start topic to BGSS_LAB_1_STORY1
[] no path from a start topic to BGSS_WEDDING_1_STORY2
[] no path from a start topic to BGSS_GUNG_HO_3_STORY1
[] no path from a start topic to BGSS_SOLDIER_2_STORY2
[] no path from a start topic to BGSS_SCAVENGER_MERC_1_STORY2_BADGERME
[] no path from a start topic to BGSS_EVACUEE_5_BEES
[] no path from a start topic to BGSS_PROFESSOR_1_STORY1
[] no path from a start topic to BGSS_NO_PAST_4_STORY1
[] no path from a start topic to BGSS_PREPPER_2_STORY2
[] no path from a start topic to BGSS_EVACUEE_1_STORY3
[] no path from a start topic to BGSS_COP_3_STORY1
[] no path from a start topic to BGSS_PRISONER_1_IN_FOR_METH
[] no path from a start topic to BGSS_PROFESSOR_1_SCIENCEHELP
[] TALK_GODCO_cook_ask_membership does not reach TALK_DONE
[] no path from a start topic to BGSS_PRISONER_1_IN_FOR_NUCLEAR
[] no path from a start topic to BGSS_GRAD_STUDENT_1_STORY2
[] no path from a start topic to BGSS_GUNG_HO_3_SON1
[] no path from a start topic to BGSS_PRISONER_1_IN_FOR_TAXEVASION
[] no path from a start topic to BGSS_PRISONER_1_IN_FOR_GROWOP
[] no path from a start topic to BGSS_LOST_PARTNER_2_STORY1
[] no path from a start topic to TALK_REFUGEE_Dana_2
[] TALK_LIGHTHOUSE_SURVIVOR1 does not reach TALK_DONE
[] no path from a start topic to BGSS_CODGER_STORY5
[] no path from a start topic to BGSS_PRISONER_1_STORY5
[] no path from a start topic to BGSS_EVACUEE_3_STORY3_LATE
[] no path from a start topic to BGSS_NERD_1_STORY2
[] no path from a start topic to BGSS_PREPPER_2_STORY3
[] no path from a start topic to CWH_NO_PAST_4_IDEAS1
[] no path from a start topic to CWH_LEFT_FOR_DEAD_1_EXPLAIN
[] no path from a start topic to TALK_pizzaiolo_following
[] no path from a start topic to TALK_REFUGEE_Dana_1_firstmeet
[] no path from a start topic to BGSS_SOLDIER_2_STORY1
[] no path from a start topic to BGSS_PRISONER_1_STORY1
[] no path from a start topic to CWH_RELIGIOUS_1_IDEAS1
[] no path from a start topic to CWH_CONFUSED_1_IDEAS1
[] TALK_GODCO_cook_currency does not reach TALK_DONE
[] no path from a start topic to TALK_REFUGEE_Dana_Background_baking
[] no path from a start topic to BGSS_SCAVENGER_MERC_1_STORY2_OKAY
[] no path from a start topic to BGSS_CODGER_STORY6
[] no path from a start topic to BGSS_CRIMINAL_1_STORY2
[] no path from a start topic to BGSS_NO_PAST_5_STORY1
[] no path from a start topic to BGSS_FEMA_EVACUEE_1_STORY2
[] no path from a start topic to BGSS_EVACUEE_6_STORY1
[] no path from a start topic to BGSS_OUT_OF_TOWN_1_STORY1
[] no path from a start topic to BGSS_CODGER_STORY2
[] no path from a start topic to BGSS_LOST_PARTNER_2_NOTYET
[] no path from a start topic to BGSS_OUT_OF_TOWN_2_STORY1
[] no path from a start topic to BGSS_LOST_PARTNER_1_TRIFFIDS
[] no path from a start topic to TALK_lighthouse_man_cleaned
[] no path from a start topic to BGSS_NERD_1_PARENTS
[] no path from a start topic to CWH_EVACUEE_5_IDEAS2
[] no path from a start topic to BGSS_PRISONER_1_IN_FOR_ASSAULT
[] no path from a start topic to BGSS_SCIENTIST_1_STORY3
[] no path from a start topic to BGSS_HOSPITAL_1_STORY1
[] no path from a start topic to TALK_REFUGEE_Dana_Tacoma2
[] no path from a start topic to BGSS_RELIGIOUS_2_STORY1
[] no path from a start topic to BGSS_EVACUEE_3_STORY1
[] no path from a start topic to BGSS_OUT_OF_TOWN_2_STORY5
[] TALK_TRAIN does not reach TALK_DONE
[] no path from a start topic to BGSS_PRISONER_1_STORY2
[] no path from a start topic to BGSS_SCAVENGER_MERC_1_STORY1
[] no path from a start topic to BGSS_LEFT_FOR_DEAD_3_STORY1
[] no path from a start topic to BGSS_HOSPITAL_1_STORY2
[] TALK_GODCO_cook_place does not reach TALK_DONE
[] no path from a start topic to BGSS_BURGER_FLIPPER_1_STORY1
[] no path from a start topic to BGSS_EVACUEE_3_STORY2
[] no path from a start topic to TALK_lighthouse_man_fail
[] no path from a start topic to MISSION_PYROMANIAC
[] no path from a start topic to BGSS_CYBORG_1_STORY1
[] no path from a start topic to TALK_lighthouse_man_cleaned_done
[] no path from a start topic to TALK_HOW_MUCH_FURTHER
[] no path from a start topic to BGSS_SCAVENGER_MERC_1_NICETRY
[] no path from a start topic to BGSS_PREPPER_2_STORY1
[] no path from a start topic to BGSS_SCIENTIST_1_SCIENCEHELP
[] no path from a start topic to CWH_NO_PAST_1_IDEAS1
[] no path from a start topic to BGSS_LAB_1_DIONNE1
[] no path from a start topic to BGSS_RURAL_2_STORY3
[] no path from a start topic to BGSS_EVACUEE_2_STORY2
[] no path from a start topic to BGSS_HOSPITAL_1_STORY3
[] no path from a start topic to BGSS_HOSPITAL_2_STORY2
[] no path from a start topic to BGSS_BURGER_FLIPPER_1_STORY2
[] no path from a start topic to CWH_NO_PAST_2_IDEAS1
[] no path from a start topic to BGSS_NO_PAST_3_CRAZY
[] no path from a start topic to BGSS_LAB_1_STORY3
[] no path from a start topic to CWH_LEFT_FOR_DEAD_3_IDEAS1
[] no path from a start topic to TALK_FRIEND_CONVERSATION
[] no path from a start topic to BGSS_RELIGIOUS_1_FAITH1
[] no path from a start topic to BGSS_COP_2_STORY1
[] no path from a start topic to BGSS_LOST_PARTNER_2_HOME2
[] no path from a start topic to CWH_NO_PAST_4_IDEAS2
[] no path from a start topic to BGSS_SCIENTIST_1_STORY2
[] no path from a start topic to BGSS_EVACUEE_1_STORY1
[] no path from a start topic to BGSS_SCIENTIST_1_STORY1
[] no path from a start topic to BGSS_CODGER_STORY3b
[] no path from a start topic to TALK_REFUGEE_Dana_Background
[] no path from a start topic to BGSS_EVACUEE_4_STORY1
[] no path from a start topic to BGSS_HOSPITAL_2_STORY3
[] no path from a start topic to CWH_EVACUEE_3_IDEAS1
[] no path from a start topic to BGSS_SCIENTIST_2_SCIENCEHELP
[] no path from a start topic to BGSS_LAB_1_STORY2
[] no path from a start topic to CWH_NO_PAST_4_SKEPTIC
[] no path from a start topic to BGSS_LEFT_FOR_DEAD_3_STORY2
[] no path from a start topic to BGSS_PREPPER_1_STORY2
[] no path from a start topic to BGSS_LEFT_FOR_DEAD_2_STORY1
[] no path from a start topic to CWH_FEMA_EVACUEE_1_IDEAS3
[] no path from a start topic to BGSS_PREPPER_2_SOLD
[] no path from a start topic to BGSS_SCAVENGER_MERC_1_STORY3
[] no path from a start topic to BGSS_LEFT_FOR_DEAD_3_STORY4
[] no path from a start topic to CWH_EVACUEE_1_IDEAS1
[] no path from a start topic to BGSS_HOSPITAL_3_STORY3
[] no path from a start topic to CWH_LEFT_FOR_DEAD_3_IDEAS2
[] no path from a start topic to BGSS_LEFT_FOR_DEAD_3_STORY3
[] no path from a start topic to BGSS_pizzaiolo_STORY2
[] no path from a start topic to BGSS_BURGER_FLIPPER_1_STORY3
[] no path from a start topic to BGSS_SCAVENGER_MERC_1_STORY2
[] no path from a start topic to BGSS_SCAVENGER_MERC_1_OLD_GUARD
[] no path from a start topic to BGSS_COP_3_STORY2
[] no path from a start topic to BGSS_LOST_PARTNER_2_FUCKOFF
[] no path from a start topic to BGSS_RELIGIOUS_1_STORY1
[] no path from a start topic to BGSS_HUNTER_2_STORY1
[] no path from a start topic to BGSS_COP_3_STORY3
[] no path from a start topic to BGSS_GUNG_HO_1_STORY1
[] TALK_GODCO_cook_firstmeet does not reach TALK_DONE
[] no path from a start topic to CWH_EVACUEE_6_IDEAS1
[] no path from a start topic to BGSS_pizzaiolo_STORY1
[] no path from a start topic to BGSS_HUNTER_2_STORY3
[] no path from a start topic to BGSS_CONFUSED_1_STORY1
[] no path from a start topic to BGSS_WEDDING_1_STORY3
[] no path from a start topic to CWH_DREAMER_IDEAS1
[] no path from a start topic to BGSS_DREAMER_STORY5
[] no path from a start topic to CWH_EVACUEE_3_IDEAS2
[] no path from a start topic to BGSS_PREPPER_1_STORY3
[] no path from a start topic to BGSS_HUNTER_2_STORY2
[] no path from a start topic to BGSS_COP_2_STORY2
[] no path from a start topic to BGSS_PRISONER_1_IN_FOR_BIOWEAPON
[] no path from a start topic to BGSS_LOST_PARTNER_1_NOWAY
[] no path from a start topic to CWH_FEMA_EVACUEE_1_IDEAS2
[] no path from a start topic to BGSS_NO_PAST_2_STORY1
[] no path from a start topic to TALK_REFUGEE_Dana_Background_baking2
[] no path from a start topic to BGSS_LOST_PARTNER_1_STORY2
[] no path from a start topic to BGSS_OUT_OF_TOWN_2_STORY2
[] no path from a start topic to BGSS_HOSPITAL_2_NOTYET
[] no path from a start topic to CWH_RELIGIOUS_2_IDEAS1
[] no path from a start topic to BGSS_NERD_1_STORY1
[] no path from a start topic to BGSS_NO_PAST_3_STORY1
[] no path from a start topic to BGSS_LOST_PARTNER_1_YEAH
[] no path from a start topic to BGSS_FEMA_EVACUEE_1_STORY3
[] no path from a start topic to BGSS_PRISONER_1_IN_FOR_ORGANS
[] no path from a start topic to BGSS_EVACUEE_2_STORY1
[] no path from a start topic to BGSS_GRAD_STUDENT_1_FIELD
[] no path from a start topic to CWH_LEFT_FOR_DEAD_1_IDEAS1
[] no path from a start topic to BGSS_CRIMINAL_1_PAROLE
[] no path from a start topic to BGSS_LEFT_FOR_DEAD_1_STORY1
[] no path from a start topic to TALK_REFUGEE_Dana_Background_baking2_yesbarter
[] no path from a start topic to BGSS_GUNG_HO_2_STORY1
[] no path from a start topic to BGSS_CODGER_STORY4b
[] no path from a start topic to BGSS_GUNG_HO_3_FEMA1
[] no path from a start topic to BGSS_CRIMINAL_2_STORY3
[] no path from a start topic to BGSS_DREAMER_STORY4
[] no path from a start topic to BGSS_GUNG_HO_1_STORY3
[] no path from a start topic to BGSS_HUNTER_1_STORY2
[] no path from a start topic to BGSS_OUT_OF_TOWN_1_STORY3
[] no path from a start topic to BGSS_RELIGIOUS_1_FAITH2
[] no path from a start topic to BGSS_WEDDING_1_CALM
[] no path from a start topic to BGSS_EVACUEE_5_STORY1
[] no path from a start topic to BGSS_EVACUEE_1_STORY4
[] no path from a start topic to CWH_EVACUEE_4_IDEAS1
[] no path from a start topic to TALK_lighthouse_man_cleaning
[] no path from a start topic to BGSS_HIGH_SCHOOL_1_STORY2
[] no path from a start topic to BGSS_RURAL_1_STORY2
[] no path from a start topic to BGSS_RURAL_2_STORY1
[] no path from a start topic to BGSS_EVACUEE_4_STORY2
[] TALK_REFUGEE_JENNY_Teach2 does not reach TALK_DONE
[] no path from a start topic to BGSS_NO_PAST_1_STORY1
[] no path from a start topic to BGSS_EVACUEE_4_STORY3
[] no path from a start topic to TALK_pizzaiolo_celebrate
[] no path from a start topic to BGSS_NO_PAST_4_DROPIT
[] no path from a start topic to TALK_REFUGEE_Dana_Background_baking_revival
[] no path from a start topic to TALK_ENG_LIGHTHOUSE_WORKING
[] no path from a start topic to BGSS_CRIMINAL_2_STORY2
[] TALK_LIGHTHOUSE_SURVIVOR does not reach TALK_DONE
[] no path from a start topic to TALK_REFUGEE_Dana_Background_baking2_nobarter
[] no path from a start topic to BGSS_OUT_OF_TOWN_2_STORY3
[] no path from a start topic to BGSS_CRIMINAL_1_STORY1
[] no path from a start topic to BGSS_GRAD_STUDENT_1_STORY1
[] no path from a start topic to BGSS_GRAD_STUDENT_1_STORY3
[] no path from a start topic to BGSS_FEMA_EVACUEE_1_ESCAPE1
[] no path from a start topic to TALK_REFUGEE_Dana_Situation

Expected behavior

These tests should pass.

Screenshots

Versions and configuration

Additional context

@Maleclypse Maleclypse added <Bug> This needs to be fixed NPC / Factions NPCs, AI, Speech, Factions, Ownership (P5 - Long-term) Long-term WIP, may stay on the list for a while. 0.F String Freeze labels Jun 3, 2021
@Maleclypse
Copy link
Member Author

Per Mlangsdorf “curses! so "npc_first_topic" is an "effect", which means you can use it as part of a mission start/end statement. Which is super cool and the stuff with the lighthouse man is pretty sophisticated. But it also means the dialogue_validator needs to parse mission start/ends, and also needs to be able to make sure that you can access the mission, which is another level of parsing.
so I think #49152 is almost all false positives due to an incomplete dialogue_validator”

aside from this:

--- a/data/json/npcs/refugee_center/surface_refugees/NPC_Dana_Nunez.json
+++ b/data/json/npcs/refugee_center/surface_refugees/NPC_Dana_Nunez.json
@@ -8,7 +8,7 @@
     "class": "NC_REFUGEE_Dana",
     "attitude": 0,
     "mission": 7,
-    "chat": "TALK_REFUGEE_Dana_1",
+    "chat": "TALK_REFUGEE_Dana_1_firstmeet",
     "faction": "free_merchants",
     "mission_offered": "MISSION_REFUGEE_Dana_Sourdough"
   },

@mlangsdorf
Copy link
Contributor

I also have an incomplete parser for "npc_first_topic" in speaker_effects and dialogue responses, but not the mission parsing stuff:

--- a/tools/dialogue_validator.py
+++ b/tools/dialogue_validator.py
@@ -10,6 +10,14 @@ OBSOLETE_TOPICS = [
     "TALK_GIVE_ITEM"
 ]
 
+# TALK_TRAIN_START is technically not a start id
+START_TOPICS = [
+    "TALK_RADIO", "TALK_LEADER", "TALK_FRIEND", "TALK_STOLE_ITEM",
+    "TALK_MISSION_DESCRIBE_URGENT", "TALK_SEDATED", "TALK_WAKE_UP",
+    "TALK_MUG", "TALK_STRANGER_AGGRESSIVE", "TALK_STRANGER_SCARED",
+    "TALK_STRANGER_WARY", "TALK_STRANGER_FRIENDLY", "TALK_REBOOT",
+    "TALK_STRANGER_NEUTRAL", "TALK_SHELTER", "TALK_CAMP_OVERSEER"
+]
 
 args = argparse.ArgumentParser(
     description="Confirm that every talk topic in every response in a "
@@ -71,8 +79,21 @@ def add_topic_by_response(topics, response, topic_branches=None,
     topic_id = response.get("topic")
     if not topic_id:
         return
+
     topics.setdefault(topic_id, {})
     topics[topic_id]["in_response"] = True
+
+    effects = response.get("effect", [])
+    if effects and isinstance(effects, dict):
+        effects = [effects]
+    for effect in effects:
+        if not isinstance(effect, dict):
+           continue;
+        chatbin = effect.get("npc_first_topic")
+        if chatbin:
+            START_TOPICS.append(chatbin)
+            add_topic_by_chat(topics, chatbin, topic_branches)
+
     if not topic_branches:
         return
     for parent_id in this_ids:
@@ -118,28 +139,20 @@ def validate(dialogue):
     refered_ids = [
         "TALK_WAKE_UP", "TALK_RADIO", "TALK_MISSION_DESCRIBE_URGENT",
         "TALK_MISSION_DESCRIBE", "TALK_SHELTER", "TALK_SIZE_UP",
-        "TALK_LOOK_AT", "TALK_OPINION", "TALK_SHOUT",
+        "TALK_LOOK_AT", "TALK_OPINION", "TALK_SHOUT", "TALK_REBOOT",
         "TALK_STRANGER_AGGRESSIVE", "TALK_LEADER", "TALK_TRAIN_START",
         "TALK_STOLE_ITEM", "TALK_SEDATED"
     ]
     for topic_id in refered_ids:
         add_topic_by_chat(topics, topic_id)
 
-    # TALK_TRAIN_START is technically not a start id

The mission parsing stuff is probably more of the same kind of stuff as the rest of the validator, but it's getting complicated enough that a more competent Python programmer may want to revist the entire design.

@jbytheway
Copy link
Contributor

Thanks for looking into this. Once the issues are resolved, please be sure to make this validator actually fail the CI when it detects an error.

@caethan
Copy link
Contributor

caethan commented Jul 4, 2021

Would be interested in taking a look at this, if that's OK. Been looking for something where Python expertise would be useful, and NPC stuff is cool. Looks like a bit of rewrite of the dialogue validator is what's needed?

@Maleclypse
Copy link
Member Author

Would be interested in taking a look at this, if that's OK. Been looking for something where Python expertise would be useful, and NPC stuff is cool. Looks like a bit of rewrite of the dialogue validator is what's needed?

I believe so but after my original starting the issue it quickly spiraled beyond my technical understanding. But I believe you have the gist of it.

@caethan
Copy link
Contributor

caethan commented Jul 4, 2021

Got the script up and running and I'm actually getting way fewer errors than were linked in the original issue:

talk topic TALK_REBOOT defined but not referenced in a response
talk topic TALK_CONVERSATION_RADIO referenced in a response but not defined
talk topic MISSION_PYROMANIAC defined but not referenced in a response
talk topic TALK_lighthouse_man_cleaning defined but not referenced in a response
talk topic TALK_lighthouse_man_family defined but not referenced in a response
talk topic TALK_ENG_LIGHTHOUSE_WORKING defined but not referenced in a response
talk topic TALK_pizzaiolo_following defined but not referenced in a response
talk topic TALK_REFUGEE_Boris_Son_Tough referenced in a response but not defined
talk topic TALK_REFUGEE_GENERAL_Refuse_Boris_Mission_1 referenced in a response but not defined
talk topic TALK_REFUGEE_Dana_1_firstmeet defined but not referenced in a response
talk topic TALK_REFUGEE_Dana_Background_baking_nobarter defined but not referenced in a response
no path from a start topic to TALK_REBOOT
no path from a start topic to MISSION_PYROMANIAC
no path from a start topic to TALK_lighthouse_man_lighthouse
no path from a start topic to TALK_lighthouse_man_cleaning
no path from a start topic to TALK_lighthouse_man_cleaned
no path from a start topic to TALK_lighthouse_man_cleaned_done
no path from a start topic to TALK_lighthouse_man_family
no path from a start topic to TALK_lighthouse_man_fail
no path from a start topic to TALK_ENG_LIGHTHOUSE_WORKING
no path from a start topic to TALK_pizzaiolo_following
no path from a start topic to TALK_pizzaiolo_celebrate
no path from a start topic to TALK_pizzaiolo_celebrate1
no path from a start topic to TALK_REFUGEE_Dana_2
no path from a start topic to TALK_REFUGEE_Dana_Background
no path from a start topic to TALK_REFUGEE_Dana_Background_baking
no path from a start topic to TALK_REFUGEE_Dana_Background_baking_revival
no path from a start topic to TALK_REFUGEE_Dana_Situation
no path from a start topic to TALK_REFUGEE_Dana_1_firstmeet
no path from a start topic to TALK_REFUGEE_Dana_Background_baking_nobarter
no path from a start topic to TALK_REFUGEE_Dana_Background_baking2_yesbarter
no path from a start topic to TALK_REFUGEE_Dana_Background_baking2_nobarter
no path from a start topic to TALK_REFUGEE_Dana_Background_sorry
no path from a start topic to TALK_REFUGEE_Dana_Background_baking2
no path from a start topic to TALK_REFUGEE_Dana_Tacoma
no path from a start topic to TALK_REFUGEE_Dana_Tacoma2
no path from a start topic to TALK_REFUGEE_Dana_Recruit

@Maleclypse
Copy link
Member Author

Maleclypse commented Jul 8, 2021

Got the script up and running and I'm actually getting way fewer errors than were linked in the original issue:

talk topic TALK_REBOOT defined but not referenced in a response
talk topic TALK_CONVERSATION_RADIO referenced in a response but not defined
talk topic MISSION_PYROMANIAC defined but not referenced in a response
talk topic TALK_lighthouse_man_cleaning defined but not referenced in a response
talk topic TALK_lighthouse_man_family defined but not referenced in a response
talk topic TALK_ENG_LIGHTHOUSE_WORKING defined but not referenced in a response
talk topic TALK_pizzaiolo_following defined but not referenced in a response
talk topic TALK_REFUGEE_Boris_Son_Tough referenced in a response but not defined
talk topic TALK_REFUGEE_GENERAL_Refuse_Boris_Mission_1 referenced in a response but not defined
talk topic TALK_REFUGEE_Dana_1_firstmeet defined but not referenced in a response
talk topic TALK_REFUGEE_Dana_Background_baking_nobarter defined but not referenced in a response
no path from a start topic to TALK_REBOOT
no path from a start topic to MISSION_PYROMANIAC
no path from a start topic to TALK_lighthouse_man_lighthouse
no path from a start topic to TALK_lighthouse_man_cleaning
no path from a start topic to TALK_lighthouse_man_cleaned
no path from a start topic to TALK_lighthouse_man_cleaned_done
no path from a start topic to TALK_lighthouse_man_family
no path from a start topic to TALK_lighthouse_man_fail
no path from a start topic to TALK_ENG_LIGHTHOUSE_WORKING
no path from a start topic to TALK_pizzaiolo_following
no path from a start topic to TALK_pizzaiolo_celebrate
no path from a start topic to TALK_pizzaiolo_celebrate1
no path from a start topic to TALK_REFUGEE_Dana_2
no path from a start topic to TALK_REFUGEE_Dana_Background
no path from a start topic to TALK_REFUGEE_Dana_Background_baking
no path from a start topic to TALK_REFUGEE_Dana_Background_baking_revival
no path from a start topic to TALK_REFUGEE_Dana_Situation
no path from a start topic to TALK_REFUGEE_Dana_1_firstmeet
no path from a start topic to TALK_REFUGEE_Dana_Background_baking_nobarter
no path from a start topic to TALK_REFUGEE_Dana_Background_baking2_yesbarter
no path from a start topic to TALK_REFUGEE_Dana_Background_baking2_nobarter
no path from a start topic to TALK_REFUGEE_Dana_Background_sorry
no path from a start topic to TALK_REFUGEE_Dana_Background_baking2
no path from a start topic to TALK_REFUGEE_Dana_Tacoma
no path from a start topic to TALK_REFUGEE_Dana_Tacoma2
no path from a start topic to TALK_REFUGEE_Dana_Recruit

Is that because MLangsdorf added in the fix he listed above?

@Maleclypse
Copy link
Member Author

@actual-nh is this a test issue or are many of these talk topics roadblocked?

@actual-nh
Copy link
Contributor

I'm not quite sure why you're asking me, but I suppose I can try to figure it out.

@actual-nh
Copy link
Contributor

As far as I can tell, the ones for Dana Nunez (which are about half of them) are indeed roadblocked; @I-am-Erk? (There's also the various "barter" mentions all over the place; not sure if those need updating to "persuade" (IIRC).) I can check on the others a bit later.

@actual-nh
Copy link
Contributor

The script does need stuff about "npc_first_topic" added. Any topic that causes an effect with that should be considered as leading to it - as if it were a response - so that it can be recognized that, if you can cause that effect, you can get to the "npc_first_topic" topic.

@actual-nh actual-nh added [JSON] Changes (can be) made in JSON [Python] Code made in Python Code: Tests Measurement, self-control, statistics, balancing. and removed (P5 - Long-term) Long-term WIP, may stay on the list for a while. labels Aug 23, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
<Bug> This needs to be fixed Code: Tests Measurement, self-control, statistics, balancing. [JSON] Changes (can be) made in JSON NPC / Factions NPCs, AI, Speech, Factions, Ownership [Python] Code made in Python
Projects
None yet
Development

No branches or pull requests

5 participants