[
  {
    "type": "talk_topic",
    "id": "TALK_TEST_START",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [ { "text": "This is a basic test response.", "topic": "TALK_DONE" } ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_FAIL_RESPONSE",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      {
        "condition": { "math": [ "0 > 1" ] },
        "text": "Never See this.",
        "failure_explanation": "Impossible Test",
        "failure_topic": "TALK_TEST_START",
        "topic": "TALK_DONE"
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_SIMPLE_STATS",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      { "text": "This is a strength test response.", "topic": "TALK_DONE", "condition": { "u_has_strength": 7 } },
      { "text": "This is a dexterity test response.", "topic": "TALK_DONE", "condition": { "u_has_dexterity": 7 } },
      {
        "text": "This is an intelligence test response.",
        "topic": "TALK_DONE",
        "condition": { "u_has_intelligence": 7 }
      },
      { "text": "This is a perception test response.", "topic": "TALK_DONE", "condition": { "u_has_perception": 7 } }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_NEGATED_STATS",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is a low strength test response.",
        "topic": "TALK_DONE",
        "condition": { "not": { "u_has_strength": 7 } }
      },
      {
        "text": "This is a low dexterity test response.",
        "topic": "TALK_DONE",
        "condition": { "not": { "u_has_dexterity": 7 } }
      },
      {
        "text": "This is a low intelligence test response.",
        "topic": "TALK_DONE",
        "condition": { "not": { "u_has_intelligence": 7 } }
      },
      {
        "text": "This is a low perception test response.",
        "topic": "TALK_DONE",
        "condition": { "not": { "u_has_perception": 7 } }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_WEARING_AND_TRAIT",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is a trait test response.",
        "topic": "TALK_DONE",
        "condition": { "u_has_any_trait": [ "CANINE_EARS", "LUPINE_EARS", "FELINE_EARS", "URSINE_EARS", "ELFA_EARS" ] }
      },
      {
        "text": "This is a short trait test response.",
        "topic": "TALK_DONE",
        "condition": { "u_has_trait": "ELFA_EARS" }
      },
      {
        "text": "This is a wearing test response.",
        "topic": "TALK_DONE",
        "condition": { "u_is_wearing": "badge_marshal" }
      },
      {
        "text": "This is a npc trait test response.",
        "topic": "TALK_DONE",
        "condition": { "npc_has_any_trait": [ "CANINE_EARS", "LUPINE_EARS", "FELINE_EARS", "URSINE_EARS", "ELFA_EARS" ] }
      },
      {
        "text": "This is a npc short trait test response.",
        "topic": "TALK_DONE",
        "condition": { "npc_has_trait": "ELFA_EARS" }
      },
      {
        "text": "This is a trait flags test response.",
        "topic": "TALK_DONE",
        "condition": { "u_has_flag": "PSYCHOPATH" }
      },
      {
        "text": "This is a npc trait flags test response.",
        "topic": "TALK_DONE",
        "condition": { "npc_has_flag": "SAPIOVORE" }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_EFFECT",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is an npc effect test response.",
        "topic": "TALK_DONE",
        "condition": { "npc_has_effect": "gave_quest_item" }
      },
      {
        "text": "This is a player effect test response.",
        "topic": "TALK_DONE",
        "condition": { "u_has_effect": "gave_quest_item" }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_SERVICE",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      { "text": "This is a cash test response.", "topic": "TALK_DONE", "condition": { "u_has_cash": 500 } },
      { "text": "This is an npc service test response.", "topic": "TALK_DONE", "condition": { "npc_service": 500 } },
      { "text": "This is an npc available test response.", "topic": "TALK_DONE", "condition": "npc_available" }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_LOCATION",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is a om_location_field test response.",
        "topic": "TALK_DONE",
        "condition": { "u_at_om_location": "field" }
      },
      {
        "text": "This is a faction camp any test response.",
        "topic": "TALK_DONE",
        "condition": { "u_at_om_location": "FACTION_CAMP_ANY" }
      },
      {
        "text": "This is a om_location_field direction variant response.",
        "topic": "TALK_DONE",
        "condition": { "u_at_om_location": "evac_center_7" }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_NPC_ROLE",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is a nearby role test response.",
        "topic": "TALK_DONE",
        "condition": { "npc_role_nearby": "TEST_ROLE" }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_NPC_CLASS",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is a class test response.",
        "topic": "TALK_DONE",
        "condition": { "npc_has_class": "NC_TEST_CLASS" }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_NPC_ALLIES",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      { "text": "This is a npc allies 1 test response.", "topic": "TALK_DONE", "condition": { "npc_allies": 1 } },
      {
        "text": "This an error!  npc allies 2 test response.",
        "topic": "TALK_DONE",
        "condition": { "npc_allies": 2 }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_NPC_RULES",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is a npc engagement rule test response.",
        "topic": "TALK_DONE",
        "condition": { "npc_engagement_rule": "ENGAGE_ALL" }
      },
      {
        "text": "This is a npc aim rule test response.",
        "topic": "TALK_DONE",
        "condition": { "npc_aim_rule": "AIM_SPRAY" }
      },
      {
        "text": "This is a npc rule test response.",
        "topic": "TALK_DONE",
        "condition": { "npc_rule": "avoid_doors" }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_NPC_NEEDS",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is a npc thirst test response.",
        "topic": "TALK_DONE",
        "condition": { "npc_need": "thirst", "amount": 75 }
      },
      {
        "text": "This is a npc hunger test response.",
        "topic": "TALK_DONE",
        "condition": { "npc_need": "hunger", "amount": 75 }
      },
      {
        "text": "This is a npc sleepiness test response.",
        "topic": "TALK_DONE",
        "condition": { "npc_need": "sleepiness", "level": "DEAD_TIRED" }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_MISSION_GOAL",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is a mission goal test response.",
        "topic": "TALK_DONE",
        "condition": { "mission_goal": "MGOAL_ASSASSINATE" }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_SEASON",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is a season spring test response.",
        "topic": "TALK_DONE",
        "condition": { "is_season": "spring" }
      },
      {
        "text": "This is a days since Cataclysm 30 test response.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "time_since('cataclysm', 'unit':'days') >= 30" ] }
      },
      {
        "text": "This is a season summer test response.",
        "topic": "TALK_DONE",
        "condition": { "is_season": "summer" }
      },
      {
        "text": "This is a days since Cataclysm 120 test response.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "time_since('cataclysm') >= time('120 days')" ] }
      },
      {
        "text": "This is a season autumn test response.",
        "topic": "TALK_DONE",
        "condition": { "is_season": "autumn" }
      },
      {
        "text": "This is a days since Cataclysm 210 test response.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "time_since('cataclysm') >= time('210 day')" ] }
      },
      {
        "text": "This is a season winter test response.",
        "topic": "TALK_DONE",
        "condition": { "is_season": "winter" }
      },
      {
        "text": "This is a days since Cataclysm 300 test response.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "time_since('cataclysm') >= time('300 d')" ] }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_TIME",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      { "text": "This is a is day test response.", "topic": "TALK_DONE", "condition": "is_day" },
      { "text": "This is a is night test response.", "topic": "TALK_DONE", "condition": { "not": "is_day" } }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_SWITCH",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is an switch 1 test response.",
        "topic": "TALK_DONE",
        "condition": { "u_has_cash": 500 },
        "switch": true
      },
      {
        "text": "This is an switch 2 test response.",
        "topic": "TALK_DONE",
        "condition": { "u_has_cash": 50 },
        "switch": true
      },
      {
        "text": "This is an switch default 1 test response.",
        "topic": "TALK_DONE",
        "condition": { "u_has_cash": 5 },
        "switch": true,
        "default": true
      },
      { "text": "This is an switch default 2 test response.", "topic": "TALK_DONE", "switch": true, "default": true },
      { "text": "This is another basic test response.", "topic": "TALK_DONE" }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_OR",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is an or trait test response.",
        "topic": "TALK_DONE",
        "condition": {
          "or": [
            { "u_has_any_trait": [ "CANINE_EARS", "LUPINE_EARS", "FELINE_EARS", "URSINE_EARS", "ELFA_EARS" ] },
            "npc_available",
            { "u_has_cash": 500 }
          ]
        }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_AND",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is an and cash, available, trait test response.",
        "topic": "TALK_DONE",
        "condition": {
          "and": [
            { "u_has_any_trait": [ "CANINE_EARS", "LUPINE_EARS", "FELINE_EARS", "URSINE_EARS", "ELFA_EARS" ] },
            "npc_available",
            { "u_has_cash": 500 }
          ]
        }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_NESTED",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is a complex nested test response.",
        "topic": "TALK_DONE",
        "condition": {
          "and": [
            { "not": { "or": [ { "u_has_strength": 10 }, { "u_has_dexterity": 10 } ] } },
            { "or": [ { "not": "npc_available" }, { "u_has_intelligence": 10 } ] },
            { "u_has_cash": 500 }
          ]
        }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_TRUE_FALSE_CONDITIONAL",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "truefalsetext": {
          "condition": { "u_has_cash": 500 },
          "true": "This is a true/false true response.",
          "false": "This is a true/false false response."
        },
        "topic": "TALK_DONE"
      },
      {
        "text": "This is a conditional trial response.",
        "trial": { "type": "CONDITION", "condition": { "u_has_cash": 500 } },
        "success": { "topic": "TALK_TEST_TRUE_CONDITION_NEXT" },
        "failure": { "topic": "TALK_TEST_FALSE_CONDITION_NEXT" }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_EFFECTS",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is a u_add_effect - infection response",
        "topic": "TALK_DONE",
        "effect": { "u_add_effect": "infection", "duration": 10 }
      },
      {
        "text": "This is a npc_add_effect - infection response",
        "topic": "TALK_DONE",
        "effect": { "npc_add_effect": "infection", "duration": "PERMANENT" },
        "//": "Response 2"
      },
      {
        "text": "This is a u_lose_effect - infection response",
        "topic": "TALK_DONE",
        "effect": { "u_lose_effect": "infection" }
      },
      {
        "text": "This is a npc_lose_effect - infection response",
        "topic": "TALK_DONE",
        "effect": { "npc_lose_effect": "infection" },
        "//": "Response 4"
      },
      {
        "text": "This is a u_add_trait - FED MARSHALL response",
        "topic": "TALK_DONE",
        "effect": { "u_add_trait": "PROF_FED" }
      },
      {
        "text": "This is a npc_add_trait - FED MARSHALL response",
        "topic": "TALK_DONE",
        "effect": { "npc_add_trait": "PROF_FED" }
      },
      {
        "text": "This is a u_lose_trait - FED MARSHALL response",
        "topic": "TALK_DONE",
        "effect": { "u_lose_trait": "PROF_FED" }
      },
      {
        "text": "This is a npc_lose_trait - FED MARSHALL response",
        "topic": "TALK_DONE",
        "effect": { "npc_lose_trait": "PROF_FED" },
        "//": "Response 8"
      },
      {
        "text": "This is a u_buy_item bottle of beer response",
        "topic": "TALK_DONE",
        "effect": { "u_buy_item": "beer", "cost": 500, "count": 2, "container": "bottle_glass" }
      },
      {
        "text": "This is a u_spawn_item plastic bottle response",
        "topic": "TALK_DONE",
        "effect": { "u_spawn_item": "bottle_plastic" }
      },
      { "text": "This is a u_spend_cash response", "topic": "TALK_DONE", "effect": { "u_spend_cash": 500 } },
      {
        "text": "This is a multi-effect response",
        "topic": "TALK_DONE",
        "effect": [
          { "u_add_effect": "infected", "duration": 10 },
          { "npc_add_effect": "infected", "duration": "PERMANENT" },
          { "u_add_trait": "PROF_SWAT" },
          { "npc_add_trait": "PROF_SWAT" },
          { "u_spend_cash": 1000 },
          { "u_spawn_item": "manual_speech" },
          { "u_spawn_item": "dnd_handbook" },
          "hostile"
        ],
        "//": "Response 12"
      },
      {
        "text": "This is an opinion response",
        "topic": "TALK_DONE",
        "opinion": { "trust": 10, "fear": 11, "value": 12, "anger": 13, "owed": 14 }
      },
      {
        "text": "This is a u_sell_item plastic bottle response",
        "topic": "TALK_DONE",
        "effect": [ { "u_sell_item": "bottle_plastic" }, { "u_sell_item": "beer", "count": 2 } ],
        "//": "Response 14"
      },
      {
        "text": "This is a npc_consume_item beer response",
        "topic": "TALK_DONE",
        "effect": { "npc_consume_item": "beer", "count": 1 },
        "//": "Response 15, out of order"
      },
      {
        "text": "This is a u_spawn_item beer response",
        "topic": "TALK_DONE",
        "effect": { "u_spawn_item": "beer", "container": "bottle_glass" }
      },
      {
        "text": "This is a u_consume_item beer response",
        "topic": "TALK_DONE",
        "effect": { "u_consume_item": "beer", "count": 1 },
        "//": "Response 17"
      },
      {
        "text": "This is a npc_class_change response",
        "topic": "TALK_DONE",
        "effect": { "npc_change_class": "NC_NONE" }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_HAS_ITEM",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is a u_has_item beer test response.",
        "topic": "TALK_DONE",
        "condition": { "u_has_item": "beer" }
      },
      {
        "text": "This is a u_has_item bottle_glass test response.",
        "topic": "TALK_DONE",
        "condition": { "u_has_item": "bottle_glass" }
      },
      {
        "text": "This is a u_has_items beer test response.",
        "topic": "TALK_DONE",
        "condition": { "u_has_items": { "item": "beer", "count": 2 } }
      },
      {
        "text": "Test failure!  This is a u_has_items test response.",
        "topic": "TALK_DONE",
        "condition": { "u_has_items": { "item": "bottle_glass", "count": 2 } }
      },
      {
        "text": "This is a u_has_item_category manuals test response.",
        "topic": "TALK_DONE",
        "condition": { "u_has_item_category": "manuals" }
      },
      {
        "text": "This is a u_has_item_category manuals count 2 test response.",
        "topic": "TALK_DONE",
        "condition": { "u_has_item_category": "manuals", "count": 2 }
      },
      {
        "text": "Failure!  This is a u_has_item_category manuals count 3 test response.",
        "topic": "TALK_DONE",
        "condition": { "u_has_item_category": "manuals", "count": 3 }
      }
    ],
    "repeat_responses": {
      "for_item": "manual_speech",
      "response": { "text": "This is a repeated item manual_speech test response", "topic": "TALK_DONE" }
    }
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_ITEM_REPEAT",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [ { "text": "This is a basic test response.", "topic": "TALK_DONE" } ],
    "repeat_responses": [
      {
        "for_item": [ "beer", "bottle_glass" ],
        "response": { "text": "This is a repeated item beer, bottle_glass test response", "topic": "TALK_DONE" }
      },
      {
        "for_category": "manuals",
        "response": { "text": "This is a repeated category manuals test response", "topic": "TALK_DONE" }
      },
      {
        "for_category": [ "manuals", "food" ],
        "response": { "text": "This is a repeated category manuals, food test response", "topic": "TALK_DONE" }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_ITEM_WIELDED",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is a u_has_wielded_with_weapon_category LONG_SWORDS test response.",
        "topic": "TALK_DONE",
        "condition": { "u_has_wielded_with_weapon_category": "LONG_SWORDS" }
      },
      {
        "text": "This is a u_has_wielded_with_weapon_category KNIVES test response.",
        "topic": "TALK_DONE",
        "condition": { "u_has_wielded_with_weapon_category": "KNIVES" }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_VARS",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is a u_add_var test response.",
        "topic": "TALK_DONE",
        "effect": { "u_add_var": "test_var_test_test", "value": "beer" },
        "condition": { "not": { "compare_string": [ "beer", { "u_val": "test_var_test_test" } ] } }
      },
      {
        "text": "This is a npc_add_var test response.",
        "topic": "TALK_DONE",
        "effect": { "npc_add_var": "test_var_test_test", "value": "reeb" },
        "condition": { "not": { "compare_string": [ "beer", { "u_val": "test_var_test_test" } ] } }
      },
      {
        "text": "This is a compare_string, u_remove_var test response.",
        "topic": "TALK_DONE",
        "condition": { "compare_string": [ "beer", { "u_val": "test_var_test_test" } ] },
        "effect": { "u_lose_var": "test_var_test_test" }
      },
      {
        "text": "This is a compare_string, npc_remove_var test response.",
        "topic": "TALK_DONE",
        "condition": { "compare_string": [ "reeb", { "npc_val": "test_var_test_test" } ] },
        "effect": { "npc_lose_var": "test_var_test_test" }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_VARS_TIME",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is a u_add_var time test response.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_test_var_time_test_test = time('now')" ] },
        "condition": { "math": [ "!has_var(u_test_var_time_test_test)" ] }
      },
      {
        "text": "This is a npc_add_var time test response.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "n_test_var_time_test_test = time('now')" ] },
        "condition": { "math": [ "!has_var(u_test_var_time_test_test)" ] }
      },
      {
        "text": "This is a u_compare_var time test response for > 3_days.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "time_since(u_test_var_time_test_test) > time('3 d')" ] }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_BIONICS",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is a u_has_bionics bio_ads test response.",
        "topic": "TALK_DONE",
        "condition": { "u_has_bionics": "bio_ads" }
      },
      {
        "text": "Failure!  This is a npc_has_bionics bio_ads test response.",
        "topic": "TALK_DONE",
        "condition": { "npc_has_bionics": "bio_ads" }
      },
      {
        "text": "This is a npc_has_bionics ANY response.",
        "topic": "TALK_DONE",
        "condition": { "npc_has_bionics": "ANY" }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_SPEAKER_EFFECT_SIMPLE",
    "speaker_effect": { "effect": { "u_spend_cash": 500 } },
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [ { "text": "This is a basic test response.", "topic": "TALK_DONE" } ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_SPEAKER_EFFECT_SIMPLE_CONDITIONAL",
    "speaker_effect": { "condition": { "u_has_cash": 750 }, "effect": { "u_spend_cash": 500 } },
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [ { "text": "This is a basic test response.", "topic": "TALK_DONE" } ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_SPEAKER_EFFECT_SENTINEL",
    "speaker_effect": { "sentinel": "spend500", "effect": { "u_spend_cash": 500 } },
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [ { "text": "This is a basic test response.", "topic": "TALK_DONE" } ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_SPEAKER_EFFECT_SENTINEL_CONDITIONAL",
    "speaker_effect": { "sentinel": "spend500", "condition": { "u_are_owed": 750 }, "effect": { "u_spend_cash": 500 } },
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [ { "text": "This is a basic test response.", "topic": "TALK_DONE" } ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_SPEAKER_EFFECT_COMPOUND",
    "speaker_effect": [ { "effect": { "u_spend_cash": 500 } }, { "effect": { "u_spend_cash": 500 } } ],
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [ { "text": "This is a basic test response.", "topic": "TALK_DONE" } ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_SPEAKER_EFFECT_COMPOUND_CONDITIONAL",
    "speaker_effect": [
      { "condition": { "u_are_owed": 1500 }, "effect": { "u_spend_cash": 1000 } },
      { "condition": { "u_are_owed": 750 }, "effect": { "u_spend_cash": 500 } }
    ],
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [ { "text": "This is a basic test response.", "topic": "TALK_DONE" } ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_SPEAKER_EFFECT_COMPOUND_SENTINEL",
    "speaker_effect": [ { "sentinel": "spend250", "effect": { "u_spend_cash": 250 } }, { "effect": { "u_spend_cash": 500 } } ],
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [ { "text": "This is a basic test response.", "topic": "TALK_DONE" } ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_SPEAKER_EFFECT_COMPOUND_SENTINEL_CONDITIONAL",
    "speaker_effect": [
      { "sentinel": "spend250", "condition": { "u_are_owed": 750 }, "effect": { "u_spend_cash": 250 } },
      { "sentinel": "spend500", "condition": { "u_are_owed": 750 }, "effect": { "u_spend_cash": 500 } }
    ],
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [ { "text": "This is a basic test response.", "topic": "TALK_DONE" } ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_MAPGEN",
    "dynamic_line": [ "This is an example of mapgen_update effect variations" ],
    "responses": [
      {
        "text": "Please test some simple remote mapgen",
        "topic": "TALK_DONE",
        "effect": { "mapgen_update": "faction_wall_level_N_0", "origin_npc": true }
      },
      {
        "text": "Please test mapgen_update multiples",
        "topic": "TALK_DONE",
        "effect": [
          { "mapgen_update": "faction_wall_level_E_0", "origin_npc": true, "offset_y": 1 },
          { "mapgen_update": "faction_wall_level_W_0", "origin_npc": true, "offset_x": 1 }
        ]
      },
      {
        "text": "Please test mapgen_update linked",
        "topic": "TALK_DONE",
        "effect": { "mapgen_update": [ "faction_wall_level_S_1", "faction_wall_level_N_1" ], "origin_npc": true, "offset_y": -1 }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_SIMPLE_SKILLS",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is a driving test response.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_skill('driving') >= 7" ] }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_NEGATED_SKILLS",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is a low driving test response.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_skill('driving') < 7" ] }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_SET_TOPIC",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      {
        "text": "This is an npc_first_topic test response.",
        "topic": "TALK_DONE",
        "effect": { "npc_first_topic": "TALK_TEST_SET_TOPIC" }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_COMPARE_INT_OP",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "Two = five.", "topic": "TALK_DONE", "condition": { "math": [ "2 == 5" ] } },
      { "text": "Two == five.", "topic": "TALK_DONE", "condition": { "math": [ "2 == 5" ] } },
      { "text": "Two != five.", "topic": "TALK_DONE", "condition": { "math": [ "2 != 5" ] } },
      { "text": "Two <= five.", "topic": "TALK_DONE", "condition": { "math": [ "2 <= 5" ] } },
      { "text": "Two >= five.", "topic": "TALK_DONE", "condition": { "math": [ "2 >= 5" ] } },
      { "text": "Two < five.", "topic": "TALK_DONE", "condition": { "math": [ "2 < 5" ] } },
      { "text": "Two > five.", "topic": "TALK_DONE", "condition": { "math": [ "2 > 5" ] } },
      { "text": "Five = five.", "topic": "TALK_DONE", "condition": { "math": [ "5 == 5" ] } },
      { "text": "Five == five.", "topic": "TALK_DONE", "condition": { "math": [ "5 == 5" ] } },
      { "text": "Five != five.", "topic": "TALK_DONE", "condition": { "math": [ "5 != 5" ] } },
      { "text": "Five <= five.", "topic": "TALK_DONE", "condition": { "math": [ "5 <= 5" ] } },
      { "text": "Five >= five.", "topic": "TALK_DONE", "condition": { "math": [ "5 >= 5" ] } },
      { "text": "Five < five.", "topic": "TALK_DONE", "condition": { "math": [ "5 < 5" ] } },
      { "text": "Five > five.", "topic": "TALK_DONE", "condition": { "math": [ "5 > 5" ] } },
      { "text": "Five = two.", "topic": "TALK_DONE", "condition": { "math": [ "5 == 2" ] } },
      { "text": "Five == two.", "topic": "TALK_DONE", "condition": { "math": [ "5 == 2" ] } },
      { "text": "Five != two.", "topic": "TALK_DONE", "condition": { "math": [ "5 != 2" ] } },
      { "text": "Five <= two.", "topic": "TALK_DONE", "condition": { "math": [ "5 <= 2" ] } },
      { "text": "Five >= two.", "topic": "TALK_DONE", "condition": { "math": [ "5 >= 2" ] } },
      { "text": "Five < two.", "topic": "TALK_DONE", "condition": { "math": [ "5 < 2" ] } },
      { "text": "Five > two.", "topic": "TALK_DONE", "condition": { "math": [ "5 > 2" ] } }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_TAGS",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "Avatar tag is set to <u_val:test_var>.", "topic": "TALK_DONE" },
      { "text": "NPC tag is set to <npc_val:test_var>.", "topic": "TALK_DONE" },
      { "text": "Global tag is set to <global_val:test_var>.", "topic": "TALK_DONE" },
      { "text": "Item name is <item_name:test_rock>.", "topic": "TALK_DONE" },
      { "text": "Item description is <item_description:test_rock>", "topic": "TALK_DONE" },
      { "text": "Trait name is <trait_name:TEST_ENCH_MUTATION>.", "topic": "TALK_DONE" },
      { "text": "Trait description is <trait_description:TEST_ENCH_MUTATION>", "topic": "TALK_DONE" },
      { "text": "Context tag is set to <context_val:test_var>.", "topic": "TALK_DONE" }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_COMPARE_INT",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      {
        "text": "This is a math test response that increments by 1.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_test_var_compare_test_test++" ] }
      },
      {
        "text": "This is an math test response that increments by 2.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "n_test_var_compare_test_test", "+=", "2" ] }
      },
      {
        "text": "This is a u_add_var time test response.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_test_var_time_test_test = time('now')" ] },
        "condition": { "math": [ "!has_var(u_test_var_time_test_test)" ] }
      },
      { "text": "PC strength is five.", "topic": "TALK_DONE", "condition": { "math": [ "u_val('strength') == 5" ] } },
      { "text": "PC dexterity is six.", "topic": "TALK_DONE", "condition": { "math": [ "u_val('dexterity') == 6" ] } },
      {
        "text": "PC intelligence is seven.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_val('intelligence') == 7" ] }
      },
      {
        "text": "PC perception is eight.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_val('perception') == 8" ] }
      },
      { "text": "NPC strength is nine.", "topic": "TALK_DONE", "condition": { "math": [ "n_val('strength') == 9" ] } },
      {
        "text": "NPC dexterity is ten.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "n_val('dexterity') == 10" ] }
      },
      {
        "text": "NPC intelligence is eleven.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "n_val('intelligence') == 11" ] }
      },
      {
        "text": "NPC perception is twelve.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "n_val('perception') == 12" ] }
      },
      {
        "text": "PC Custom var is one.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_test_var_compare_test_test == 1" ] }
      },
      {
        "text": "NPC Custom var is two.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "n_test_var_compare_test_test == 2" ] }
      },
      {
        "text": "This is a u_var time test response for > 3_days.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_test_var_time_test_test > time('3 days')" ] }
      },
      {
        "text": "time_since_cataclysm > 3_days.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "time_since('cataclysm') > time('3 d')" ] }
      },
      {
        "text": "time_since_cataclysm in days > 3",
        "topic": "TALK_DONE",
        "condition": { "math": [ "time_since('cataclysm', 'unit':'days') > 3" ] }
      },
      {
        "text": "This is a time since u_var test response for > 3_days.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "time_since(u_test_var_time_test_test, 'unit':'days') > 3" ] }
      },
      { "text": "Allies equals 1", "topic": "TALK_DONE", "condition": { "math": [ "u_val('allies') == 1" ] } },
      { "text": "Cash equals 13", "topic": "TALK_DONE", "condition": { "math": [ "u_val('cash') == 13" ] } },
      { "text": "Owed amount equals 14", "topic": "TALK_DONE", "condition": { "math": [ "n_val('owed') == 14" ] } },
      {
        "text": "Driving skill more than or equal to 5",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_skill('driving') >= 5" ] }
      },
      {
        "text": "Temperature is 21.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "fahrenheit( weather('temperature') ) == 21" ] }
      },
      { "text": "Windpower is 15.", "topic": "TALK_DONE", "condition": { "math": [ "weather('windpower') == 15" ] } },
      { "text": "Humidity is 16.", "topic": "TALK_DONE", "condition": { "math": [ "weather('humidity') == 16" ] } },
      { "text": "Pressure is 17.", "topic": "TALK_DONE", "condition": { "math": [ "weather('pressure') == 17" ] } },
      { "text": "Pos_x is -1.", "topic": "TALK_DONE", "condition": { "math": [ "u_val('pos_x') == -1" ] } },
      { "text": "Pos_y is -2.", "topic": "TALK_DONE", "condition": { "math": [ "u_val('pos_y') == -2" ] } },
      { "text": "Pos_z is -3.", "topic": "TALK_DONE", "condition": { "math": [ "u_val('pos_z') == -3" ] } },
      { "text": "Pain level is 21.", "topic": "TALK_DONE", "condition": { "math": [ "u_pain() == 21" ] } },
      { "text": "Bionic power is 22.", "topic": "TALK_DONE", "condition": { "math": [ "u_val('power') == 22" ] } },
      {
        "text": "Bionic power max is 44.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_val('power_max') == 44" ] }
      },
      {
        "text": "Bionic power is at 50%.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_val('power_percentage') == 50" ] }
      },
      { "text": "Morale is 23.", "topic": "TALK_DONE", "condition": { "math": [ "u_val('morale') == 23" ] } },
      { "text": "Focus is 24.", "topic": "TALK_DONE", "condition": { "math": [ "u_val('focus') == 24" ] } },
      { "text": "Mana is 25.", "topic": "TALK_DONE", "condition": { "math": [ "u_val('mana') == 25" ] } },
      { "text": "Mana max is 900.", "topic": "TALK_DONE", "condition": { "math": [ "u_val('mana_max') == 900" ] } },
      {
        "text": "Mana is at 2%.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "round( u_val('mana_percentage') ) == 3" ] }
      },
      { "text": "Hunger is 26.", "topic": "TALK_DONE", "condition": { "math": [ "u_val('hunger') == 26" ] } },
      { "text": "Thirst is 27.", "topic": "TALK_DONE", "condition": { "math": [ "u_val('thirst') == 27" ] } },
      {
        "text": "Stored kcal is 118'169.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_calories() == 118169" ] }
      },
      {
        "text": "Has 3 glass bottles.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_item_count('bottle_glass') == 3" ] }
      },
      {
        "text": "Has more or equal to 35 experience.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_val('exp') >= 35" ] }
      },
      {
        "text": "Highest spell level in school test_trait is 1.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_school_level('test_trait') == 1" ] }
      },
      {
        "text": "Spell level of Pew, Pew is 4.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_spell_level('test_spell_pew') == 4" ] }
      },
      {
        "text": "Spell level of highest spell is 12.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_spell_level('null') == 12" ] }
      },
      {
        "text": "Exp of Pew, Pew is -1.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_spell_exp('test_spell_pew') == -1" ] }
      },
      {
        "text": "Exp of Pew, Pew is 11006.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_spell_exp('test_spell_pew') == 11006" ] }
      },
      {
        "text": "Test Proficiency learning is 50% out of 100%.",
        "//": "previously it used the number format '{ u_val: proficiency, proficiency_id: prof_test, format: 10 }', but it is deprecated",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_proficiency('prof_test', 'format': 'percent') == 50" ] }
      },
      {
        "text": "Test Proficiency learning done is 12 hours total.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_proficiency('prof_test', 'format': 'time_spent') == time('12h')" ] }
      },
      {
        "text": "Test Proficiency learning is 50% learnt.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_proficiency('prof_test', 'format': 'percent') == 50" ] }
      },
      {
        "text": "Test Proficiency learning is 500 permille learnt.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_proficiency('prof_test', 'format': 'permille') == 500" ] }
      },
      {
        "text": "Test Proficiency total learning time is 24 hours.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_proficiency('prof_test', 'format': 'total_time_required') == time('24h')" ] }
      },
      {
        "text": "Test Proficiency time lest to learn is 12h.",
        "topic": "TALK_DONE",
        "condition": { "math": [ "u_proficiency('prof_test', 'format': 'time_left') == time('12h')" ] }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_ARITHMETIC",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      {
        "text": "Sets time since cataclysm to 1.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "time('now') = time('cataclysm') + 1" ] }
      },
      {
        "text": "Sets temperature to 2.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "weather('temperature') = from_fahrenheit( 2 )" ] }
      },
      { "text": "Sets windpower to 3.", "topic": "TALK_DONE", "effect": { "math": [ "weather('windpower') = 3" ] } },
      { "text": "Sets humidity to 4.", "topic": "TALK_DONE", "effect": { "math": [ "weather('humidity') = 4" ] } },
      { "text": "Sets pressure to 5.", "topic": "TALK_DONE", "effect": { "math": [ "weather('pressure') = 5" ] } },
      {
        "text": "Sets base strength to 6.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_val('strength_base') = 6" ] }
      },
      {
        "text": "Sets base dexterity to 7.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_val('dexterity_base') = 7" ] }
      },
      {
        "text": "Sets base intelligence to 8.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_val('intelligence_base') = 8" ] }
      },
      {
        "text": "Sets base perception to 9.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_val('perception_base') = 9" ] }
      },
      {
        "text": "Sets custom var to 10.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_test_var_time_test_test = 10" ] }
      },
      { "text": "Sets owed to 12.", "topic": "TALK_DONE", "effect": { "math": [ "n_val('owed') = 12" ] } },
      {
        "text": "Sets skill level in driving to 10.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_skill('driving') = 10" ] }
      },
      {
        "text": "Moves character one tile to the west.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_val('pos_x') = u_val('pos_x') - 1" ] }
      },
      {
        "text": "Moves character two tiles to the south.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_val('pos_y') = u_val('pos_y') + 2" ] }
      },
      {
        "text": "Sets character z level to -3.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_val('pos_z') = -3" ] }
      },
      { "text": "Sets pain to 17.", "topic": "TALK_DONE", "effect": { "math": [ "u_pain() = 17" ] } },
      { "text": "Sets power to 18.", "topic": "TALK_DONE", "effect": { "math": [ "u_val('power') = 18" ] } },
      {
        "text": "Sets power to 20%.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_val('power_percentage') = 20" ] }
      },
      { "text": "Sets focus to 19.", "topic": "TALK_DONE", "effect": { "math": [ "u_val('focus') = 19" ] } },
      { "text": "Sets mana to 21.", "topic": "TALK_DONE", "effect": { "math": [ "u_val('mana') = 21" ] } },
      { "text": "Sets mana to 25%.", "topic": "TALK_DONE", "effect": { "math": [ "u_val('mana_percentage') = 25" ] } },
      { "text": "Sets thirst to 22.", "topic": "TALK_DONE", "effect": { "math": [ "u_val('thirst') = 22" ] } },
      { "text": "Sets calories to 23.", "topic": "TALK_DONE", "effect": { "math": [ "u_calories() = 23" ] } },
      {
        "text": "Sets pew pew's level to -1.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_spell_level('test_spell_pew') = -1" ] }
      },
      {
        "text": "Sets pew pew's level to 4.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_spell_level('test_spell_pew') = 4" ] }
      },
      {
        "text": "Sets pew pew's exp to -1.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_spell_exp('test_spell_pew') = -1" ] }
      },
      {
        "text": "Sets pew pew's exp to 11006.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_spell_exp('test_spell_pew') = 11006" ] }
      },
      {
        "text": "Sets Test Proficiency learning done to 12 hours total.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_proficiency('prof_test', 'format': 'time_spent', 'direct': true) = time('12h')" ] }
      },
      {
        "text": "Sets Test Proficiency learning done to -1.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_proficiency('prof_test', 'format': 'time_spent', 'direct': true) = -1" ] }
      },
      {
        "text": "Sets Test Proficiency learning done to 24h.",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_proficiency('prof_test', 'format': 'time_spent', 'direct': true) = time('24h')" ] }
      },
      {
        "text": "Learns Test Proficiency for 1h",
        "topic": "TALK_DONE",
        "effect": { "math": [ "u_proficiency('prof_test', 'format': 'time_spent')", "+=", "time('1h')" ] }
      }
    ]
  },
  {
    "type": "item_group",
    "id": "test_npc_belt",
    "items": [ [ "leather_belt", 50 ], [ "tool_belt", 10 ] ]
  },
  {
    "type": "item_group",
    "id": "test_npc_eyes",
    "items": [ [ "glasses_safety", 20 ], [ "sunglasses", 20 ] ]
  },
  {
    "type": "item_group",
    "id": "test_npc_hat",
    "items": [
      [ "hat_ball", 20 ],
      [ "hat_hard", 5 ],
      [ "hat_boonie", 5 ],
      [ "hat_cotton", 20 ],
      [ "hat_fur", 5 ],
      [ "hat_knit", 20 ],
      [ "hat_newsboy", 10 ],
      [ "cowboy_hat", 10 ],
      [ "hat_sombrero", 5 ],
      [ "10gal_hat", 5 ],
      [ "straw_hat", 5 ],
      [ "hat_hunting", 10 ],
      [ "hat_hard_hooded", 5 ],
      [ "helmet_bike", 10 ],
      [ "helmet_riot", 5 ],
      [ "helmet_motor", 5 ],
      [ "helmet_skid", 5 ],
      [ "helmet_ball", 5 ],
      [ "helmet_football", 5 ],
      [ "pot_helmet", 10 ],
      [ "firehelmet", 5 ],
      [ "helmet_army", 5 ]
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_FACTION_TRUST",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      { "text": "Faction trust is at least 20.", "topic": "TALK_DONE", "condition": { "u_has_faction_trust": 20 } },
      { "text": "Add 50 to faction trust.", "topic": "TALK_DONE", "effect": { "u_add_faction_trust": 50 } },
      { "text": "Start trade.", "topic": "TALK_DONE", "effect": "start_trade" }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_META",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      { "text": "This is a basic test response.", "topic": "TALK_DONE" },
      { "text": "Mod TESTING DATA is loaded.", "topic": "TALK_DONE", "condition": { "mod_is_loaded": "test_data" } },
      { "text": "Mod Innawood is loaded.", "topic": "TALK_DONE", "condition": { "mod_is_loaded": "innawood" } }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_TOPIC_ITEM_MUTATOR",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [ { "text": "This is a basic test response.", "topic": "TALK_DONE" } ],
    "repeat_responses": [
      {
        "for_item": "bottle_glass",
        "response": { "text": "This is a repeated item bottle_glass test response", "topic": "TALK_TEST_TOPIC_ITEM_MUTATOR_2" }
      }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_TOPIC_ITEM_MUTATOR_2",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      {
        "text": "This is a basic test response.",
        "topic": "TALK_DONE",
        "effect": { "set_string_var": { "mutator": "topic_item" }, "target_var": { "global_val": "key1" } }
      }
    ]
  },
  {
    "type": "npc_class",
    "id": "test_shop_class",
    "name": { "str": "Test NPC class" },
    "job_description": "Participating in unit tests.",
    "common": false,
    "bonus_str": { "rng": [ -4, 0 ] },
    "bonus_dex": { "rng": [ -2, 0 ] },
    "bonus_int": { "rng": [ 1, 5 ] },
    "skills": [
      {
        "skill": "ALL",
        "level": { "mul": [ { "one_in": 3 }, { "sum": [ { "dice": [ 2, 2 ] }, { "constant": -2 }, { "one_in": 4 } ] } ] }
      }
    ],
    "shopkeeper_item_group": [
      { "group": "test_npc_belt" },
      { "group": "test_npc_eyes", "trust": 10 },
      { "group": "test_npc_hat", "trust": 40, "strict": true }
    ]
  },
  {
    "type": "npc",
    "id": "test_shopkeep",
    "//": "NPC in unit tests",
    "name_suffix": "Tester",
    "class": "test_shop_class",
    "attitude": 1,
    "mission": 0,
    "chat": "TALK_TEST_FACTION_TRUST",
    "faction": "free_merchants"
  },
  {
    "type": "npc",
    "id": "test_talker",
    "//": "NPC in unit tests",
    "name_suffix": "Tester",
    "class": "NC_DOCTOR",
    "attitude": 1,
    "mission": 0,
    "chat": "TALK_TEST_START",
    "faction": "tacoma_commune",
    "talk_friend_guard": "TALK_TEST_GUARD"
  },
  {
    "id": [ "TALK_TEST_GUARD" ],
    "type": "talk_topic",
    "responses": [ { "text": "I have a custom response to a common topic", "topic": "TALK_TEST_FACTION_TRUST" } ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_SHOW_ALWAYS",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      {
        "condition": { "math": [ "0 > 1" ] },
        "text": "You should see this response but not be able to select it (except in debug mode).",
        "show_always": true,
        "topic": "TALK_DONE"
      },
      { "text": "All done", "topic": "TALK_DONE" }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_SHOW_ALWAYS3",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      {
        "condition": { "math": [ "1 > 0" ] },
        "text": "You should always see this response and be able to select it.",
        "show_always": true,
        "topic": "TALK_DONE"
      },
      { "text": "All done", "topic": "TALK_DONE" }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_SHOW_ALWAYS2",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      {
        "condition": { "math": [ "0 > 1" ] },
        "text": "You should see this response but not be able to select it (except in debug mode) because",
        "show_always": true,
        "show_reason": "zero isn't greater than one.",
        "topic": "TALK_DONE"
      },
      { "text": "All done", "topic": "TALK_DONE" }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_SHOW_CONDITION",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      {
        "condition": { "math": [ "0 > 1" ] },
        "text": "You should see this response but not be able to select it (except in debug mode) because",
        "topic": "TALK_DONE",
        "show_condition": { "math": [ "1 > 0" ] },
        "show_reason": "zero isn't greater than one."
      },
      { "text": "All done", "topic": "TALK_DONE" }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_SHOW_CONDITION2",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      {
        "condition": { "math": [ "0 > 1" ] },
        "text": "You should not see this response.",
        "topic": "TALK_DONE",
        "show_condition": { "math": [ "0 > 1" ] },
        "show_reason": "zero isn't greater than one."
      },
      { "text": "All done", "topic": "TALK_DONE" }
    ]
  },
  {
    "type": "talk_topic",
    "id": "TALK_TEST_RANDOM",
    "dynamic_line": "This is a test conversation that shouldn't appear in the game.",
    "responses": [
      {
        "condition": { "math": [ "rand(10)", ">", "5" ] },
        "text": "You will see this response half of the time.",
        "topic": "TALK_DONE"
      },
      { "text": "All done", "topic": "TALK_DONE" }
    ]
  }
]
