[
  {
    "type": "mutation",
    "id": "TEST_DUMMY",
    "name": { "str": "Human Dummy" },
    "points": 0,
    "player_display": false,
    "dummy": true,
    "category": [ "HUMAN" ],
    "cancels": [
      "TEST_ENCH_MUTATION",
      "TEST_GOOD1",
      "TEST_GOOD2",
      "TEST_GOOD3",
      "TEST_GOOD4",
      "TEST_GOOD5",
      "TEST_GOOD6",
      "TEST_BAD1",
      "TEST_BAD2",
      "TEST_BAD3",
      "TEST_BAD4",
      "TEST_BAD5",
      "TEST_BAD6",
      "TEST_REMOVAL_1",
      "TEST_REMOVAL_2"
    ],
    "description": "For legal reasons, you are the regular amount of human."
  },
  {
    "type": "mutation",
    "id": "TEST_ENCH_MUTATION",
    "name": "Ink glands",
    "points": 1,
    "visibility": 1,
    "ugliness": 1,
    "description": "A mutation to test enchantments.",
    "enchantments": [ "TEST_ENCH" ],
    "category": [ "CEPHALOPOD" ]
  },
  {
    "type": "mutation",
    "id": "TEST_TRIGGER",
    "name": { "str": "OR Test trigger" },
    "points": 1,
    "description": "This mutation is meant to test the trigger system.  It is currently off.",
    "triggers": [
      [
        {
          "condition": { "compare_num": [ { "u_val": "morale" }, ">", { "const": 20 } ] },
          "msg_on": { "text": "Your mood is above 20 and triggers the trigger.", "rating": "mixed" }
        },
        {
          "condition": { "and": [ { "compare_num": [ "moon", ">", { "const": 3 } ] }, { "compare_num": [ "moon", "<", { "const": 5 } ] } ] },
          "msg_on": { "text": "This is the full moon and it triggers the trigger.", "rating": "mixed" }
        },
        {
          "condition": { "compare_num": [ { "u_val": "hunger" }, ">", { "const": 110 } ] },
          "msg_on": { "text": "You're very hungry and it triggers the trigger.", "rating": "mixed" }
        },
        {
          "condition": { "math": [ "u_pain()", ">", "110" ] },
          "msg_on": { "text": "You're in pain and it triggers the trigger.", "rating": "mixed" }
        },
        {
          "condition": { "compare_num": [ { "u_val": "thirst" }, ">", { "const": 110 } ] },
          "msg_on": { "text": "You're thirsty and it triggers the trigger.", "rating": "mixed" }
        },
        {
          "condition": { "compare_num": [ { "u_val": "stamina" }, "<", { "const": 1 } ] },
          "msg_on": { "text": "You're low on stamina and it triggers the trigger.", "rating": "mixed" }
        },
        {
          "condition": { "and": [ { "compare_num": [ "hour", ">", { "const": 1 } ] }, { "compare_num": [ "hour", "<", { "const": 3 } ] } ] },
          "msg_on": { "text": "It's 2 am and it triggers the trigger.", "rating": "mixed" }
        }
      ]
    ],
    "transform": { "target": "TEST_TRIGGER_active", "msg_transform": "The trigger is triggered.", "active": true, "moves": 10 }
  },
  {
    "type": "mutation",
    "id": "TEST_TRIGGER_active",
    "name": { "str": "OR Test trigger (on)" },
    "points": 1,
    "description": "This mutation is meant to test the trigger system.  It is currently on.",
    "copy-from": "TEST_TRIGGER",
    "triggers": [
      [
        {
          "condition": { "compare_num": [ { "u_val": "morale" }, "<", { "const": 20 } ] },
          "msg_off": { "text": "Your mood is below 20 and triggers the trigger.", "rating": "mixed" }
        },
        {
          "condition": { "or": [ { "compare_num": [ "moon", "<", { "const": 3 } ] }, { "compare_num": [ "moon", ">", { "const": 5 } ] } ] },
          "msg_on": { "text": "This is not the full moon anymore and it triggers the trigger.", "rating": "mixed" }
        },
        {
          "condition": { "compare_num": [ { "u_val": "hunger" }, "<", { "const": 110 } ] },
          "msg_on": { "text": "You're no longer very hungry and it triggers the trigger.", "rating": "mixed" }
        },
        {
          "condition": { "math": [ "u_pain()", "<", "110" ] },
          "msg_on": { "text": "You're no longer in pain and it triggers the trigger.", "rating": "mixed" }
        },
        {
          "condition": { "compare_num": [ { "u_val": "thirst" }, "<", { "const": 110 } ] },
          "msg_on": { "text": "You're no longer thirsty and it triggers the trigger.", "rating": "mixed" }
        },
        {
          "condition": { "compare_num": [ { "u_val": "stamina" }, ">", { "const": 1 } ] },
          "msg_on": { "text": "You're no longer low on stamina and it triggers the trigger.", "rating": "mixed" }
        },
        {
          "condition": { "or": [ { "compare_num": [ "hour", "<", { "const": 1 } ] }, { "compare_num": [ "hour", ">", { "const": 2 } ] } ] },
          "msg_on": { "text": "It's no longer 2 am and it triggers the trigger.", "rating": "mixed" }
        }
      ]
    ],
    "transform": { "target": "TEST_TRIGGER", "msg_transform": "The trigger (active) is triggered.", "active": false, "moves": 10 }
  },
  {
    "type": "mutation",
    "id": "TEST_TRIGGER_2",
    "name": { "str": " AND Test trigger" },
    "points": 1,
    "description": "This mutation is meant to test the trigger system.  It is currently off.",
    "triggers": [
      [
        {
          "condition": { "and": [ { "compare_num": [ "moon", ">", { "const": 3 } ] }, { "compare_num": [ "moon", "<", { "const": 5 } ] } ] }
        }
      ],
      [ { "condition": { "math": [ "u_pain()", ">", "110" ] } } ]
    ],
    "transform": { "target": "TEST_TRIGGER_2_active", "msg_transform": "The trigger is triggered.", "active": true, "moves": 10 }
  },
  {
    "type": "mutation",
    "id": "TEST_TRIGGER_2_active",
    "name": { "str": "AND Test trigger (on)" },
    "points": 1,
    "description": "This mutation is meant to test the trigger system.  It is currently on.",
    "copy-from": "TEST_TRIGGER",
    "triggers": [
      [
        {
          "condition": { "or": [ { "compare_num": [ "moon", "<", { "const": 3 } ] }, { "compare_num": [ "moon", ">", { "const": 5 } ] } ] },
          "msg_on": { "text": "This is not the full moon anymore and it triggers the trigger.", "rating": "mixed" }
        },
        {
          "condition": { "math": [ "u_pain()", "<", "110" ] },
          "msg_on": { "text": "You're no longer in pain and it triggers the trigger.", "rating": "mixed" }
        }
      ]
    ],
    "transform": { "target": "TEST_TRIGGER_2", "msg_transform": "The trigger (active) is triggered.", "active": false, "moves": 10 }
  },
  {
    "type": "mutation",
    "id": "TEST_ARMOR_MUTATION",
    "name": "Test armor",
    "points": 1,
    "visibility": 1,
    "ugliness": 1,
    "description": "Gives some extra armor to body parts.",
    "armor": [ { "part_types": [ "arm", "torso", "tail" ], "bash": 5 }, { "part_types": [ "ALL" ], "cut": 1 } ]
  },
  {
    "type": "mutation",
    "id": "TEST_GOOD1",
    "name": { "str": "Test good mutation" },
    "points": 1,
    "valid": true,
    "description": "Test good mutation for instability test",
    "category": [ "INST_TEST" ]
  },
  {
    "type": "mutation",
    "id": "TEST_GOOD2",
    "name": { "str": "Test good mutation 2" },
    "points": 1,
    "valid": true,
    "description": "Test good mutation for instability test",
    "category": [ "INST_TEST" ]
  },
  {
    "type": "mutation",
    "id": "TEST_GOOD3",
    "name": { "str": "Test good mutation 3" },
    "points": 1,
    "valid": true,
    "description": "Test good mutation for instability test",
    "category": [ "INST_TEST" ]
  },
  {
    "type": "mutation",
    "id": "TEST_GOOD4",
    "name": { "str": "Test good mutation 4" },
    "points": 1,
    "prereqs": "TEST_GOOD3",
    "valid": true,
    "description": "Test good mutation for instability test",
    "category": [ "INST_TEST" ]
  },
  {
    "type": "mutation",
    "id": "TEST_GOOD5",
    "name": { "str": "Test good mutation 5" },
    "points": 1,
    "valid": true,
    "prereqs": "TEST_GOOD2",
    "description": "Test good mutation for instability test",
    "category": [ "INST_TEST" ]
  },
  {
    "type": "mutation",
    "id": "TEST_GOOD6",
    "name": { "str": "Test good mutation 6" },
    "points": 1,
    "valid": true,
    "prereqs": "TEST_GOOD4",
    "prereqs2": "TEST_GOOD5",
    "description": "Test good mutation for instability test",
    "category": [ "INST_TEST" ]
  },
  {
    "type": "mutation",
    "id": "TEST_BAD1",
    "name": { "str": "Test bad mutation" },
    "points": -1,
    "valid": true,
    "description": "Test bad mutation for instability test",
    "category": [ "INST_TEST" ]
  },
  {
    "type": "mutation",
    "id": "TEST_BAD2",
    "name": { "str": "Test bad mutation 2" },
    "points": -1,
    "valid": true,
    "description": "Test bad mutation for instability test",
    "category": [ "INST_TEST" ]
  },
  {
    "type": "mutation",
    "id": "TEST_BAD3",
    "name": { "str": "Test bad mutation 3" },
    "points": -1,
    "valid": true,
    "description": "Test bad mutation for instability test",
    "category": [ "INST_TEST" ]
  },
  {
    "type": "mutation",
    "id": "TEST_BAD4",
    "name": { "str": "Test bad mutation 4" },
    "points": -1,
    "prereqs": "TEST_BAD3",
    "valid": true,
    "description": "Test bad mutation for instability test",
    "category": [ "INST_TEST" ]
  },
  {
    "type": "mutation",
    "id": "TEST_BAD5",
    "name": { "str": "Test bad mutation 5" },
    "points": -1,
    "valid": true,
    "prereqs": "TEST_BAD2",
    "description": "Test bad mutation for instability test",
    "category": [ "INST_TEST" ]
  },
  {
    "type": "mutation",
    "id": "TEST_BAD6",
    "name": { "str": "Test bad mutation 6" },
    "points": -1,
    "valid": true,
    "prereqs": "TEST_BAD4",
    "prereqs2": "TEST_BAD5",
    "description": "Test bad mutation for instability test",
    "category": [ "INST_TEST" ]
  },
  {
    "type": "mutation",
    "id": "THRESH_TEST",
    "name": { "str": "Test threshold mutations" },
    "points": 0,
    "valid": true,
    "description": "Test threshold for instability test"
  },
  {
    "type": "mutation_category",
    "id": "INST_TEST",
    "name": "Instability test",
    "vitamin": "mutagen_test",
    "threshold_mut": "THRESH_TEST",
    "mutagen_message": "Test category message",
    "wip": true
  },
  {
    "id": "mutagen_test",
    "type": "vitamin",
    "vit_type": "counter",
    "name": { "str": "Test mutagen" },
    "min": 0,
    "max": 2500,
    "rate": "1 h"
  },
  {
    "type": "mutation_category",
    "id": "REMOVAL_TEST",
    "name": "Removal test",
    "vitamin": "mutagen_test_removal",
    "threshold_mut": "THRESH_TEST_REMOVAL",
    "mutagen_message": "Removal test message",
    "base_removal_chance": 100,
    "base_removal_cost_mul": 2.0,
    "wip": true
  },
  {
    "type": "mutation",
    "id": "THRESH_TEST_REMOVAL",
    "name": { "str": "Test threshold mutations" },
    "points": 0,
    "valid": true,
    "description": "Test threshold for removal test"
  },
  {
    "id": "mutagen_test_removal",
    "type": "vitamin",
    "vit_type": "counter",
    "name": { "str": "Removal test mutagen" },
    "min": 0,
    "max": 2500,
    "rate": "1 h"
  },
  {
    "type": "mutation",
    "id": "process_mutation",
    "name": { "str": "Tests processing and using mutation EOCs" },
    "points": 1,
    "valid": true,
    "description": "Tests processing and using mutation EOCs",
    "activated_eocs": [ "EOC_activate_mutation_test" ],
    "deactivated_eocs": [ "EOC_mark_mutation_test" ]
  },
  {
    "type": "mutation",
    "id": "process_mutation_two",
    "name": { "str": "Tests processing and using mutation EOCs" },
    "points": 1,
    "valid": true,
    "description": "Tests processing and using mutation EOCs",
    "activated_eocs": [ "EOC_mark_mutation_test" ],
    "processed_eocs": [ "EOC_mark_mutation_test" ],
    "deactivated_eocs": [ "EOC_mark_mutation_test" ],
    "activated_is_setup": true
  },
  {
    "type": "mutation",
    "id": "TEST_REMOVAL_0",
    "name": { "str": "Removal test zeroth (non-purifiable)" },
    "points": 1,
    "valid": false,
    "purifiable": false,
    "description": "Test mutation for the starting trait removal test",
    "category": [ "INST_TEST" ]
  },
  {
    "type": "mutation",
    "id": "TEST_REMOVAL_1",
    "name": { "str": "Removal test first" },
    "points": 1,
    "valid": true,
    "description": "Test mutation for the starting trait removal test",
    "category": [ "INST_TEST" ]
  },
  {
    "type": "mutation",
    "id": "TEST_REMOVAL_2",
    "name": { "str": "Removal test second" },
    "points": 1,
    "valid": true,
    "cancels": [ "TEST_REMOVAL_1", "TEST_REMOVAL_0" ],
    "description": "Test good mutation for startin trait removal test",
    "category": [ "REMOVAL_TEST" ]
  }
]
