[
  {
    "type": "effect_on_condition",
    "id": "EOC_difficultysafeguard",
    "//": "This EOC gets called after a teleport is initialized but before it is finished.  It basically just checks if you're running an older save or somehow missed the difficulty assignment.",
    "condition": { "math": [ "has_set_difficulty == 0" ] },
    "effect": [
      {
        "u_message": "You haven't selected a difficulty.  This could be because you're playing an old save.\n\nYour current difficulty has been set to Normal.  In this setting, you will have 4 hours in every expedition to reach the exit and leave safely.  After this, warp sickness sets in and applies heavy debuffs until you exit.  After 6 hours, warp disintegration begins, and you will rapidly lose health until you exit or die.",
        "popup": true
      },
      { "run_eocs": [ "EOC_difficultycheck" ] }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_initiate_randomport",
    "//": "The actual EOC that teleports the player and NPCs that follow to the ground.  If this fails, it will be checked and corrected in the following EOC_safely_landed event, which is also where most values are initialized.  A target location must already be stored when this is called.  When this begins, it also memorizes the player's exact position on leaving, which is where they'll return to when the mission ends or they die.  Note that this also gives a bit of warpcloak before the teleport even happens, so if the player spawns over a pit or hole they will not be injured.",
    "effect": [
      { "u_location_variable": { "global_val": "OM_HQ_origin" } },
      {
        "u_location_variable": { "global_val": "OM_HQ_origin_npc" },
        "passable_only": true,
        "min_radius": 2,
        "max_radius": 10
      },
      { "u_add_effect": "warpcloak", "intensity": 2, "duration": { "global_val": "invistime", "default": "3 s" } },
      {
        "run_eocs": [
          {
            "id": "EOC_PLAYER_WARPCLOAK_WATERWALK",
            "condition": { "math": [ "landing_waterwalk == 1" ] },
            "effect": [
              {
                "u_add_effect": "effect_warped_waterwalking_hidden",
                "intensity": 1,
                "duration": { "global_val": "invistime", "default": "3 s" }
              }
            ]
          }
        ]
      },
      {
        "run_eocs": [
          {
            "id": "EOC_PLAYER_WARPCLOAK_FLIGHT",
            "condition": { "math": [ "landing_flight == 1" ] },
            "effect": [
              { "u_add_effect": "effect_warped_flight", "intensity": 1, "duration": { "global_val": "invistime", "default": "3 s" } }
            ]
          }
        ]
      },
      {
        "run_eocs": [
          {
            "id": "EOC_PLAYER_WARPCLOAK_PHASING",
            "condition": { "math": [ "landing_phase == 1" ] },
            "effect": [
              { "u_add_effect": "effect_warped_phasing", "intensity": 1, "duration": { "global_val": "invistime", "default": "3 s" } }
            ]
          }
        ]
      },
      {
        "run_eocs": [
          {
            "id": "EOC_PLAYER_START_CLAIRVOYANCE",
            "condition": { "math": [ "scoutingclairvoyancetime >= 1" ] },
            "effect": [
              {
                "u_add_effect": "effect_warped_super_clairvoyance",
                "intensity": 1,
                "duration": { "global_val": "scoutingclairvoyancetime", "default": "3 s" }
              }
            ]
          }
        ]
      },
      {
        "u_run_npc_eocs": [
          {
            "id": "EOC_initiate_randomport_npc_follower",
            "condition": "u_following",
            "effect": [
              {
                "u_teleport": { "global_val": "OM_missionspot" },
                "fail_message": "It seems some of your followers couldn't teleport with you.",
                "force": true
              },
              {
                "location_variable_adjust": { "global_val": "OM_missionspot" },
                "//": "Adjust by 1 or 2 in either direction",
                "x_adjust": { "math": [ "((-1) ^ rand(1)) * (rand(1) + 1)" ] },
                "y_adjust": { "math": [ "((-1) ^ rand(1)) * (rand(1) + 1)" ] }
              }
            ]
          }
        ],
        "npc_range": 10,
        "local": true
      },
      {
        "u_teleport": { "global_val": "OM_missionspot" },
        "fail_message": "It seems the portal couldn't find a valid location.",
        "force": true
      },
      { "run_eocs": [ "EOC_safely_landed" ] }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_return_OM_teleport",
    "//": "This is the EOC which actually returns you home.  It brings you home and removes all warp-related effects including warp sickness.  It heals you enough to fix broken limbs.  It also resets the awayfromhome counter to 0 so warp sickness can be tracked properly next time you're out.",
    "effect": [
      {
        "u_run_npc_eocs": [
          {
            "id": "EOC_return_OM_teleport_followers",
            "condition": "u_following",
            "effect": [
              { "u_teleport": { "global_val": "OM_HQ_origin_npc" }, "force": true },
              {
                "location_variable_adjust": { "global_val": "OM_HQ_origin_npc" },
                "x_adjust": [ -2, -1, 1, 2 ],
                "y_adjust": [ -2, -1, 1, 2 ]
              }
            ]
          }
        ],
        "npc_range": 10,
        "local": true
      },
      { "u_teleport": { "global_val": "OM_HQ_origin" }, "force": true },
      { "u_remove_item_with": "warphome" },
      { "u_remove_item_with": "warp_healing_salve" },
      { "math": [ "raidstotal++" ] },
      { "u_lose_trait": "awayfromhome" },
      { "u_lose_effect": [ "warpsickness", "warpdisintegration" ] },
      {
        "run_eocs": [
          "EOC_clearmissions",
          "EOC_clearmissions",
          "EOC_clearmissions",
          "EOC_progressgate1",
          "EOC_progressgate2",
          "EOC_award_material_tokens",
          "EOC_return_heal"
        ]
      },
      { "alter_timed_events": "return_portal_close" },
      { "math": [ "timeawayfromhome = 0 - bonuspulses" ] }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_award_material_tokens",
    "//": "If you got home via an exit portal, award material tokens based on raid length.",
    "condition": { "math": [ "gettokens == 1" ] },
    "effect": [
      { "math": [ "gettokens = 0" ] },
      { "math": [ "owed_material_tokens = lengthofthisraid * 75 + 50" ] },
      {
        "u_message": "You've returned home safely using a designated exit point.  You have earned <global_val:owed_material_tokens> material tokens for your success.",
        "popup": true
      },
      { "u_spawn_item": "warptoken_material", "count": { "global_val": "owed_material_tokens", "default": 50 } }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_progressgate1",
    "//": "Checks to see if you have successfully completed 5 raids and makes Rank Up 1 available if so.",
    "condition": { "and": [ { "math": [ "islandrank == 0" ] }, { "math": [ "raidswon >= 10" ] } ] },
    "effect": [
      {
        "u_message": "You've proved you can survive a few excursions to the world below.  Something in the warp pulls at you, quickening your pulse and turning your vision red.  The sensation is indescribable.  You feel… powerful.\nThe Heart of the Island may have further use for you.\n\nHealing at the Heart of the Island is no longer free.  Be cautious in your future endeavors.",
        "popup": true
      },
      { "math": [ "islandrank = 1" ] }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_progressgate2",
    "//": "Checks to see if you have successfully completed 10 raids and makes Rank Up 2 available if so.",
    "condition": { "and": [ { "math": [ "islandrank == 2" ] }, { "math": [ "raidswon >= 20" ] } ] },
    "effect": [
      {
        "u_message": "You've drank deep of the warpstream and survived to tell the tale, though your unique isolation makes finding ears to listen difficult.  The fragments of this reality have risen against you, and you have weathered the storm… for now.\nYou feel confident, powerful.  Your mouth tastes of blood.  As the familiar world takes shape around you once more, you understand the Heart of the Island will surely be interested in your continued growth.",
        "popup": true
      },
      { "math": [ "islandrank = 3" ] }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_clearmissions",
    "//": "This EOC wipes all missions you might have.  It's more or less a full list of any random missions you can be assigned.",
    "effect": [
      { "remove_active_mission": "MISSION_REACH_EXTRACT" },
      { "remove_active_mission": "MISSION_BONUS_TREASURE" },
      { "remove_active_mission": "MISSION_BONUS_KILL_LIGHT" },
      { "remove_active_mission": "MISSION_BONUS_KILL_HORDE" },
      { "remove_active_mission": "MISSION_BONUS_KILL_MID" },
      { "remove_active_mission": "MISSION_BONUS_KILL_MID_HORDE" },
      { "remove_active_mission": "MISSION_BONUS_KILL_HARD" },
      { "remove_active_mission": "MISSION_BONUS_KILL_ELITE" },
      { "remove_active_mission": "MISSION_BONUS_KILL_BOSS" },
      { "remove_active_mission": "MISSION_BONUS_KILL_BOSS_GROUP" },
      { "remove_active_mission": "MISSION_BONUS_KILL_MIGO" },
      { "remove_active_mission": "MISSION_BONUS_KILL_MIGO_ELITE" },
      { "remove_active_mission": "MISSION_BONUS_KILL_BOSS_MULTI" },
      { "remove_active_mission": "MISSION_BONUS_KILL_BOSS_HORDE" },
      { "finish_mission": "MISSION_BONUS_SLAUGHTER_ZED1", "success": false },
      { "finish_mission": "MISSION_BONUS_SLAUGHTER_ZED2", "success": false },
      { "finish_mission": "MISSION_BONUS_SLAUGHTER_ZED3", "success": false },
      { "finish_mission": "MISSION_BONUS_SLAUGHTER_MIGO", "success": false },
      { "finish_mission": "MISSION_BONUS_SLAUGHTER_NETHER", "success": false },
      { "finish_mission": "MISSION_BONUS_SLAUGHTER_BIRD", "success": false },
      { "finish_mission": "MISSION_BONUS_SLAUGHTER_MAMMAL", "success": false },
      { "remove_active_mission": "MISSION_BONUS_ASSASSIN1" },
      { "remove_active_mission": "MISSION_BONUS_ASSASSIN2" },
      { "remove_active_mission": "MISSION_BONUS_ASSASSIN3" },
      { "remove_active_mission": "MISSION_BONUS_ASSASSIN4" }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_statue_return",
    "//": "This EOC is activated by return portals.  It's just here to confirm that you want to return home, then triggers the actual teleport home.  Behavior based on difficulty selector",
    "effect": {
      "switch": { "math": [ "roomteleportselector" ] },
      "cases": [
        { "case": 0, "effect": [ { "run_eocs": "EOC_statue_return_whole_room" } ] },
        { "case": 1, "effect": [ { "run_eocs": "EOC_statue_return_whole_room_cost" } ] },
        { "case": 2, "effect": [ { "run_eocs": "EOC_statue_return_self_only" } ] }
      ]
    }
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_statue_return_whole_room",
    "//": "This is the version that returns the whole room home.",
    "condition": {
      "u_query": "This will teleport you back to your sky island.  Any items inside the room will be teleported home alongside you.  Are you ready to leave?",
      "default": false
    },
    "effect": [ { "math": [ "raidswon++" ] }, { "math": [ "gettokens = 1" ] }, { "run_eocs": [ "EOC_return_OM_teleport_item" ] } ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_statue_return_whole_room_cost",
    "condition": { "u_has_items": { "item": "warp_vortex_token", "count": 1 } },
    "effect": [ { "run_eocs": [ "EOC_statue_return_whole_room_cost_2" ] } ],
    "false_effect": [ { "run_eocs": [ "EOC_statue_return_self_only" ] } ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_statue_return_whole_room_cost_2",
    "//": "This is the version that returns the whole room home if you pay a vortex token.",
    "condition": {
      "u_query": "This will teleport you back to your sky island.  You will spend your vortex token to return any items in the room home alongside you.  Are you ready to leave?",
      "default": false
    },
    "effect": [
      { "math": [ "raidswon++" ] },
      { "math": [ "gettokens = 1" ] },
      { "u_consume_item": "warp_vortex_token", "count": 1 },
      { "run_eocs": [ "EOC_return_OM_teleport_item" ] }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_statue_return_self_only",
    "//": "This version returns only you home.",
    "condition": {
      "u_query": "This will teleport you back to your sky island.  Any items not on your person WILL BE LOST.  Are you ready to leave?",
      "default": false
    },
    "effect": [ { "math": [ "raidswon++" ] }, { "math": [ "gettokens = 1" ] }, { "run_eocs": [ "EOC_return_OM_teleport" ] } ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_return_OM_teleport_item",
    "effect": [
      { "u_location_variable": { "context_val": "loc" } },
      {
        "u_map_run_item_eocs": "all",
        "loc": { "context_val": "loc" },
        "min_radius": 0,
        "max_radius": 10,
        "true_eocs": [ { "id": "EOC_map_item_run", "effect": [ { "npc_teleport": { "global_val": "OM_HQ_origin" } } ] } ]
      },
      { "run_eocs": [ "EOC_return_OM_teleport" ], "time_in_future": "1 s" },
      { "u_message": "Now teleporting back home.  Please wait…" }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_homewardmote",
    "//": "This EOC is activated by eating a return pill, the homeward mote.  Identical to statue return but with no query to avoid wasting the pill.  Also destroys any motes you were carrying.",
    "effect": [ { "run_eocs": [ "EOC_return_OM_teleport" ] } ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_youdied",
    "//": "This EOC is called when the player dies.  Before anything else happens, it checks if the player has a lifeshield mote.  If so, it warps you home safe and sound, counting as neither a loss nor a victory, and all your stuff comes with you.  Otherwise, it moves on to other death checks below.",
    "eoc_type": "PREVENT_DEATH",
    "condition": { "u_has_item": "warphome" },
    "effect": [
      "u_prevent_death",
      { "run_eocs": [ "EOC_homewardmote", "EOC_healall" ] },
      {
        "u_message": "Moments before your last breath leaves your body, the mote of warp essence on you jolts with a brilliant energy.  Its thin filament immediately snaps tight, reeling you home faster than you can process what it was that just saved your life.  The mote is spent, but you arrive home alive and well.",
        "popup": true
      }
    ],
    "false_effect": [ { "run_eocs": [ "EOC_deathconfirmed" ] } ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_deathconfirmed",
    "//": "The player's death is now confirmed and not protected.  The true effect is when you die on the island, and the false effect is when you die out in the world.  Both make you incorporeal, which saves you from damage but also makes you drop all items behind, then heal you slightly to prevent death.",
    "condition": { "not": { "u_has_trait": "awayfromhome" } },
    "effect": [
      "u_prevent_death",
      { "u_add_effect": "downed", "duration": 1 },
      { "u_add_effect": "incorporeal", "duration": 500 },
      { "run_eocs": [ "EOC_death_heal" ] },
      {
        "u_message": "You died at home?  What's the matter with you?  Stop this.  You are restored.  The powers that be have made you temporarily incorporeal, in case you were stuck in a deadly loop.",
        "popup": true
      }
    ],
    "false_effect": [
      "u_prevent_death",
      { "u_add_effect": "incorporeal", "duration": 1 },
      { "u_add_effect": "downed", "duration": 1 },
      { "run_eocs": [ "EOC_death_heal" ] },
      { "u_spawn_item": "corpse_painful" },
      { "math": [ "raidslost++" ] },
      { "run_eocs": "EOC_return_OM_teleport", "time_in_future": "1 s" },
      {
        "u_message": "You feel the icy grip of death begin to take you, and the world whirls and rushes past.  Reality bends and at the peak of your last mortal moment, something snags you and hauls you through space and time.  Your mind has been preserved, at cost, and your body is not far behind.",
        "popup": true
      }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_HEAL_NEWBIE",
    "//": "Runs when using the HEAL function from the Heart of the Island.  Runs a checklist.  If you're under a certain amount of won raids, it heals you for free.  If you're over and you have 4 warp shards, it takes those and heals you.  If you can't pay, it does nothing.",
    "condition": { "math": [ "islandrank == 0" ] },
    "effect": [
      { "run_eocs": [ "EOC_healall" ] },
      {
        "u_message": "The island's grace heals you at no charge.\nThis effect will only be free until you have survived 10 expeditions.",
        "popup": true
      }
    ],
    "false_effect": [
      {
        "if": { "u_has_items": { "item": "warptoken", "count": 4 } },
        "then": [
          {
            "u_message": "The warp shards you were holding dissipate into a mist and swirl in tiny vortices around your body.  The price is paid, and you are healed.",
            "popup": true
          },
          { "run_eocs": [ "EOC_healall" ] },
          { "u_consume_item": "warptoken", "count": 4 }
        ],
        "else": [ { "u_message": "You must have the required payment on your person to be healed.", "popup": true } ]
      }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_healall",
    "//": "Just a simple EOC to bring all your HP to full, while not addressing most other health factors.  Can only be used at home.",
    "condition": { "not": { "u_has_trait": "awayfromhome" } },
    "effect": [
      {
        "u_message": "Your body mends itself in the blink of an eye.  Underlying health issues may persist, but your structural integrity is restored."
      },
      { "math": [ "u_hp('ALL') = 999" ] },
      { "run_eocs": [ "EOC_healextras" ] }
    ],
    "false_effect": [
      {
        "u_message": "The effect is wasted and you don't feel any better.  You have to be in your sanctuary to be healed by this!"
      }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_healextras",
    "//": "Clears up various conditions beyond just your hp.  Should cover most diseases and infections, prevent extreme thirst and starvation, wipe pain, and even cure a few edge cases like being covered in acid.",
    "effect": [
      { "math": [ "u_calories() = max( u_calories(), 9000)" ] },
      { "math": [ "u_val('thirst') = min( u_val('thirst'), 800)" ] },
      { "math": [ "u_vitamin('redcells') = 0" ] },
      { "math": [ "u_vitamin('bad_food') = 0" ] },
      { "math": [ "u_vitamin('blood') = 0" ] },
      { "math": [ "u_vitamin('instability') = 0" ] },
      { "math": [ "u_pain() = 0" ] },
      { "math": [ "u_val('rad') = 0" ] },
      { "math": [ "u_val('pkill') = 0" ] },
      { "u_add_effect": "panacea", "duration": "30 s", "intensity": 1 },
      {
        "u_lose_effect": [
          "corroding",
          "onfire",
          "dazed",
          "stunned",
          "venom_blind",
          "formication",
          "blisters",
          "frostbite",
          "frostbite_recovery",
          "wet",
          "slimed",
          "migo_atmosphere",
          "fetid_goop",
          "sap",
          "nausea",
          "bleed",
          "fungus",
          "dermatik",
          "bloodworms",
          "paincysts",
          "brainworms",
          "tapeworm",
          "blind",
          "poison",
          "venom_dmg",
          "venom_weaken",
          "stung",
          "badpoison",
          "foodpoison",
          "paralyzepoison",
          "tetanus",
          "rat_bite_fever",
          "infected",
          "asthma",
          "common_cold",
          "flu",
          "pre_flu",
          "pre_common_cold",
          "VITRIFYING"
        ]
      },
      { "alter_timed_events": "vitrified_farm_escape_key" },
      {
        "run_eocs": [ "EOC_FIX_MAGICLYSM_PROBLEMS", "EOC_FIX_MIND_OVER_MATTER_PROBLEMS", "EOC_FIX_XEDRA_EVOLVED_PROBLEMS" ]
      }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_FIX_MAGICLYSM_PROBLEMS",
    "effect": [  ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_FIX_MIND_OVER_MATTER_PROBLEMS",
    "effect": [  ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_FIX_XEDRA_EVOLVED_PROBLEMS",
    "effect": [  ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_death_heal",
    "//": "This is the heal that is called when you die to make sure you have enough health to not-die.  It also lowers your hunger and thirst slightly if they're above an extreme limit.  Finally it sets your sub-parts to full health since they will otherwise get totally ruined and don't seem to have any natural way to heal.",
    "effect": [ { "math": [ "u_hp('ALL') = 999" ] }, { "math": [ "u_hp('ALL_MAJOR') = 15" ] }, { "run_eocs": [ "EOC_healextras" ] } ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_return_heal",
    "//": "Similar to the death heal, but only increases health, never reduces it.  This is to make sure you don't wind up in a scenario where your health is WORSE than if you had died.  To permit some recovery on the island, you are not cured of any afflictions, so warping home while, for example, on fire, means you can still die at home, at which point you WILL be penalized.  This is intended, because even here the worst case scenario is not worse than dying, which it previously was.",
    "effect": [
      { "math": [ "u_hp('torso') = max( u_hp('torso'), 15)" ] },
      { "math": [ "u_hp('head') = max( u_hp('head'), 15)" ] },
      { "math": [ "u_hp('arm_l') = max( u_hp('arm_l'), 15)" ] },
      { "math": [ "u_hp('arm_r') = max( u_hp('arm_r'), 15)" ] },
      { "math": [ "u_hp('leg_l') = max( u_hp('leg_l'), 15)" ] },
      { "math": [ "u_hp('leg_r') = max( u_hp('leg_r'), 15)" ] }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "scenario_warp_begins",
    "//": "This EOC is triggered when the Warper scenario begins.  It initializes a few variables, and memorizes your spawn location for resurrection just in case you somehow die before using the warp obelisk.  Also learns your spell for emergencies.",
    "effect": [
      {
        "u_message": "Welcome to Sky Islands.\n\nSpeak to the Heart of the Island to get your bearings, accept missions, manage upgrades, change your difficulty settings, and more.",
        "popup": true
      },
      { "u_location_variable": { "global_val": "OM_HQ_origin" } },
      { "run_eocs": "EOC_difficulty_DEFAULTS" },
      { "math": [ "currentpulselength = sicknessintervals" ] },
      { "math": [ "timeawayfromhome = 0" ] },
      { "math": [ "raidstotal = 0" ] },
      { "math": [ "raidswon = 0" ] },
      { "math": [ "raidslost = 0" ] },
      { "math": [ "islandrank = 0" ] },
      { "math": [ "missionswon = 0" ] },
      { "math": [ "slaughterswon = 0" ] },
      { "math": [ "hardmissions = 0" ] },
      { "math": [ "hardermissions = 0" ] },
      { "math": [ "hardestmissions = 0" ] },
      { "math": [ "scoutingdistancetargets = 0" ] },
      { "math": [ "scoutingdistancelanding = 0" ] },
      { "math": [ "missiondistancemax = 30" ] },
      { "math": [ "missiondistancemin = 5" ] },
      { "math": [ "exfildistancemax = 35" ] },
      { "math": [ "exfildistancemin = 10" ] },
      { "math": [ "invistime = 60" ] },
      { "math": [ "bonusexits = 0" ] },
      { "math": [ "versionupdate = 1" ] },
      { "math": [ "slaughterunlocked = 0" ] },
      { "math": [ "bonusmissions = 0" ] },
      { "math": [ "bonuspulses = 0" ] },
      { "math": [ "longerraids = 0" ] },
      { "math": [ "basementsunlocked = 0" ] },
      { "math": [ "roofsunlocked = 0" ] },
      { "math": [ "labsunlocked = 0" ] },
      { "math": [ "goingtolabs = 0" ] },
      { "math": [ "skyisland_build_base = 0" ] },
      { "math": [ "skyisland_build_bigroom = 0" ] }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_difficultycheck",
    "effect": [
      {
        "run_eoc_selector": [ "EOC_difficulty0", "EOC_difficulty1", "EOC_difficulty2", "EOC_difficulty3" ],
        "names": [ "Casual", "Normal", "Hard", "Impossible" ],
        "title": "Select a Difficulty",
        "keys": [ "1", "2", "3", "4" ],
        "descriptions": [
          "In Casual difficulty, time limits are more relaxed.\nWarp pulses occur every 30 minutes.  This means warp sickness sets in after 4 hours of being earthside, and disintegration at 6 hours.  You will have more time for activities and reaching the extract should generally not be a problem.",
          "In Normal Difficulty, pulses occur every 15 minutes.  This means on every expedition, you will have 2 hours to explore, fight, loot, and find the exit before warp sickness sets in, and 3 hours total before disintegration begins.\nThis is the intended way to play.  Getting to the exit is not a cakewalk, but you should have time to explore while earthside.",
          "In Hard difficulty, time limits are strict.\nWarp pulses occur every 10 minutes.  This means warp sickness sets in after only 1 hour 20 minutes of being earthside, and disintegration at 2 hours.  You will have much less time to spare and must make getting to the exit your immediate priority.",
          "In Impossible difficulty, time limits are extremely tight.\nWarp pulses occur every 5 minutes.  This means warp sickness sets in after only 40 minutes of being earthside, and disintegration at 1 hour.  Reaching the extract alive will take all the time you can spare, and warp sickness will be common.  You will not be given mercy!"
        ]
      }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_difficulty_DEFAULTS",
    "effect": [
      {
        "u_message": "All difficulty settings set to default.  You can speak to the Heart of the Island to change these at any time."
      },
      { "math": [ "sicknessintervals = time('15 minutes')" ] },
      { "math": [ "roomteleportselector = 1" ] },
      { "math": [ "u_spell_level('warp_home') = -1" ] },
      { "math": [ "u_spell_level('warped_return') = -1" ] },
      { "u_learn_recipe": "warp_skyward_beacon" },
      { "math": [ "has_set_difficulty = 1" ] }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_difficulty0",
    "effect": [
      { "u_message": "Difficulty set to Casual.  You can speak to the Heart of the Island to change this at any time." },
      { "math": [ "sicknessintervals = time('30 minutes')" ] },
      { "run_eocs": "EOC_difficultycheck_2" }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_difficulty1",
    "effect": [
      { "u_message": "Difficulty set to Normal.  You can speak to the Heart of the Island to change this at any time." },
      { "math": [ "sicknessintervals = time('15 minutes')" ] },
      { "run_eocs": "EOC_difficultycheck_2" }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_difficulty2",
    "effect": [
      { "u_message": "Difficulty set to Hard.  You can speak to the Heart of the Island to change this at any time." },
      { "math": [ "sicknessintervals = time('10 minutes')" ] },
      { "run_eocs": "EOC_difficultycheck_2" }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_difficulty3",
    "effect": [
      { "u_message": "Difficulty set to Impossible.  You can speak to the Heart of the Island to change this at any time." },
      { "math": [ "sicknessintervals = time('5 minutes')" ] },
      { "run_eocs": "EOC_difficultycheck_2" }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_difficultycheck_2",
    "effect": [
      {
        "run_eoc_selector": [ "EOC_warphome_adjuster_1", "EOC_warphome_adjuster_2", "EOC_warphome_adjuster_3" ],
        "names": [ "Whole Room", "Whole Room for a Cost", "Self Only" ],
        "title": "Adjust Return Obelisk Behavior",
        "keys": [ "1", "2", "3" ],
        "descriptions": [
          "Set the behavior of the return obelisk.\nWith this option, everything in the room with you will return to your sky island.  Getting resources will generally not be a problem as long as you make it to the extraction point.",
          "Set the behavior of the return obelisk.\nWith this option, if you have a warp vortex token with you, everything in the room with you will return to your sky island.  Otherwise, only what you are carrying on your person will return with you.  You may have to make difficult choices about what to bring back.",
          "Set the behavior of the return obelisk.\nWith this option, only what you are carrying on your person will return with you.  You will always have to make difficult choices about what to bring back."
        ]
      }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_warphome_adjuster_1",
    "effect": [
      {
        "u_message": "Warp home behavior set to whole room.  You can use the Difficulty Adjuster if you wish to change your setting at any time."
      },
      { "math": [ "roomteleportselector = 0" ] },
      { "u_forget_recipe": "warp_vortex_token" },
      { "run_eocs": "EOC_difficultycheck_3" }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_warphome_adjuster_2",
    "effect": [
      {
        "u_message": "Warp home behavior set to whole room at a cost.  You can use the Difficulty Adjuster if you wish to change your setting at any time."
      },
      { "math": [ "roomteleportselector = 1" ] },
      { "u_learn_recipe": "warp_vortex_token" },
      { "run_eocs": "EOC_difficultycheck_3" }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_warphome_adjuster_3",
    "effect": [
      {
        "u_message": "Warp home behavior set to self only.  You can use the Difficulty Adjuster if you wish to change your setting at any time."
      },
      { "math": [ "roomteleportselector = 2" ] },
      { "u_forget_recipe": "warp_vortex_token" },
      { "run_eocs": "EOC_difficultycheck_3" }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_difficultycheck_3",
    "effect": [
      {
        "run_eoc_selector": [ "EOC_warpspell_adjuster_1", "EOC_warpspell_adjuster_2", "EOC_warpspell_adjuster_3", "EOC_warpspell_adjuster_4" ],
        "names": [ "Get the Warp Home spell", "Get the Warped Return spell", "Get the Warped Skyward Beacon recipe", "Get nothing" ],
        "title": "Select Emergency Return Options",
        "keys": [ "1", "2", "3", "4" ],
        "descriptions": [
          "Set the possibility of returning home without the extraction point.\nWith this option, you will receive a spell that will return you home at any time for no cost.  It takes one minute to cast.  Using this will remove most of the challenge of the mod.",
          "Set the possibility of returning home without the extraction point.\nWith this option, you will receive a spell that will return you home at any time by paying 1 warp shard.  It takes one minute to cast.  You may not be near any enemies when the spell is successfully cast or it will have no effect.",
          "Set the possibility of returning home without the extraction point.\nWith this option, you will receive a recipe to craft a Warped Skyward Beacon.  This costs 5 warp shards and when used, casts the Warped Return spell.",
          "Set the possibility of returning home without the extraction point.\nWith this option, your only choice is to find the extraction point.  Good luck!"
        ]
      }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_warpspell_adjuster_1",
    "effect": [
      {
        "u_message": "Warp Home spell granted.  You may find it in your spellcasting menu.  You can use the Difficulty Adjuster if you wish to change your setting at any time."
      },
      { "math": [ "u_spell_level('warped_return') = -1" ] },
      { "u_forget_recipe": "warp_skyward_beacon" },
      { "math": [ "u_spell_level('warp_home') = 0" ] },
      { "math": [ "u_spell_exp('warp_home') = 0" ] },
      { "math": [ "has_set_difficulty = 1" ] }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_warpspell_adjuster_2",
    "effect": [
      {
        "u_message": "Warped Return spell granted.  You may find it in your spellcasting menu.  You can use the Difficulty Adjuster if you wish to change your setting at any time."
      },
      { "math": [ "u_spell_level('warp_home') = -1" ] },
      { "u_forget_recipe": "warp_skyward_beacon" },
      { "math": [ "u_spell_level('warped_return') = 0" ] },
      { "math": [ "u_spell_exp('warped_return') = 0" ] },
      { "math": [ "has_set_difficulty = 1" ] }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_warpspell_adjuster_3",
    "effect": [
      {
        "u_message": "Warped Skyward Beacon recipe granted.  You may find it in the Warp crafting menu.  You can use the Difficulty Adjuster if you wish to change your setting at any time."
      },
      { "math": [ "u_spell_level('warp_home') = -1" ] },
      { "math": [ "u_spell_level('warped_return') = -1" ] },
      { "u_learn_recipe": "warp_skyward_beacon" },
      { "math": [ "has_set_difficulty = 1" ] }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_warpspell_adjuster_4",
    "effect": [
      {
        "u_message": "All additional returning options removed.  You can use the Difficulty Adjuster if you wish to change your setting at any time."
      },
      { "math": [ "u_spell_level('warp_home') = -1" ] },
      { "u_forget_recipe": "warp_skyward_beacon" },
      { "math": [ "u_spell_level('warped_return') = -1" ] },
      { "math": [ "has_set_difficulty = 1" ] }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_claritystone",
    "//": "Triggered on asking the statue about stats, formerly this was the Stat Stone.  View stats, upgrade progress, or try to update their version of the mod.",
    "effect": [
      {
        "run_eoc_selector": [ "EOC_statcheck", "EOC_progresscheck", "EOC_buildcheck" ],
        "names": [ "View Expedition Stats", "View Upgrades", "View Construction" ],
        "title": "What do you wish to learn?",
        "allow_cancel": true,
        "keys": [ "1", "2", "3" ],
        "descriptions": [
          "Displays statistics on how your expeditions have gone so far and how your warp sickness works.",
          "Displays your current progress on permanent upgrades.",
          "Displays your current progress on constructions."
        ]
      }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_progresscheck",
    "//": "Displays the player's progress and upgrades.",
    "effect": [
      {
        "switch": { "math": [ "islandrank" ] },
        "cases": [
          { "case": 0, "effect": [ { "math": [ "islandrank_readable = 0" ] } ] },
          { "case": 1, "effect": [ { "math": [ "islandrank_readable = 0" ] } ] },
          { "case": 2, "effect": [ { "math": [ "islandrank_readable = 1" ] } ] },
          { "case": 3, "effect": [ { "math": [ "islandrank_readable = 1" ] } ] },
          { "case": 4, "effect": [ { "math": [ "islandrank_readable = 2" ] } ] }
        ]
      },
      {
        "switch": { "math": [ "hardmissions" ] },
        "cases": [
          { "case": 0, "effect": [ { "math": [ "hardmissions_readable = 1" ] } ] },
          { "case": 10, "effect": [ { "math": [ "hardmissions_readable = 2" ] } ] },
          { "case": 15, "effect": [ { "math": [ "hardmissions_readable = 3" ] } ] }
        ]
      },
      { "math": [ "totalstarts = 1 + basementsunlocked + roofsunlocked + labsunlocked" ] },
      { "math": [ "totalexits = 1 + bonusexits" ] },
      {
        "u_message": "Island Rank: <global_val:islandrank_readable> of 2\nExpedition Lengths: <global_val:longerraids> of 2\nExpedition Starts: <global_val:totalstarts> of 4\nBonus Pulses: <global_val:bonuspulses> of 4\nTarget reveal distance: <global_val:scoutingdistancetargets> of 10\nLanding reveal distance: <global_val:scoutingdistancelanding> of 24\nWarpcloak duration in seconds: <global_val:invistime> of 120\nSlaughter missions unlocked: <global_val:slaughterunlocked> of 1\nExits per expedition: <global_val:totalexits> of 3\nMissions per expedition: <global_val:bonusmissions> of 3\nMission tiers unlocked: <global_val:hardmissions_readable> of 3",
        "popup": true
      }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_statcheck",
    "//": "Displays the player's expedition stats.",
    "effect": [
      { "math": [ "readablepulselimit = 8 + bonuspulses" ] },
      { "math": [ "readabledisintegrationlimit = 12 + bonuspulses" ] },
      {
        "u_message": "Total expeditions: <global_val:raidstotal>\nWins: <global_val:raidswon>\nLosses: <global_val:raidslost>\nMissions complete: <u_val:missionswon>\nSlaughter missions complete: <global_val:slaughterswon>\n\nCurrent difficulty settings:\nWarpsickness at: <global_val:readablepulselimit> pulses.\nDisintegration at: <global_val:readabledisintegrationlimit> pulses.\nDefault pulse length: <global_val:readablesicknessintervals> minutes.",
        "popup": true
      }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_buildcheck",
    "//": "Displays the player's current constructions.",
    "effect": [
      {
        "u_message": "Entrance: <global_val:skyisland_build_base> of 1\nMain Room: <global_val:skyisland_build_bigroom> of 4",
        "popup": true
      }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_skyisland_versioncheck",
    "eoc_type": "EVENT",
    "required_event": "game_load",
    "//": "On loading a game, checks if the save was made using an old version of this mod.  If so, tries to update it with the necessary new items and variables.  UPDATE THE NUMBER IN THE CONDITION BELOW AS VERSIONS UPDATE, THAT'S WHAT DETERMINES WHAT THE OFFICIAL CURRENT VERSION OF THIS MOD IS.",
    "condition": { "math": [ "versionupdate != 1" ] },
    "effect": [
      { "u_message": "Your save was last used with an older version of Sky Island.  Attempting to update…", "popup": true },
      {
        "if": { "not": { "u_has_trait": "awayfromhome" } },
        "then": [ { "run_eocs": "EOC_skyisland_versionupdate" } ],
        "else": [
          {
            "u_message": "Error.  Update not applied.\n\nReason: Cannot update while on expedition.  Return home, save and close your game, and try loading this save again.",
            "popup": true
          }
        ]
      }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_skyisland_versionupdate",
    "eoc_type": "EVENT",
    "required_event": "game_load",
    "//": "On loading a game, checks if the save was made using an old version of this mod.  If so, tries to update it with the necessary new items and variables.",
    "condition": { "math": [ "versionupdate != 1" ] },
    "effect": [
      {
        "if": { "math": [ "versionupdate < 1" ] },
        "then": [
          {
            "u_message": "Your save was made with a pre-Milestone 1 version of Sky Island, which means it lacks upgrades and the Heart of the Island.  Attempting to update…",
            "popup": true
          },
          { "run_eocs": "EOC_difficultycheck" },
          { "run_eocs": "EOC_memorize_island" },
          {
            "mapgen_update": "mx_skyisland_solidstoneoverride",
            "target_var": { "global_val": "OM_island_subcenter" }
          },
          { "mapgen_update": "mx_skyisland_solidstoneoverride", "target_var": { "global_val": "OM_island_subnw" } },
          { "mapgen_update": "mx_skyisland_solidstoneoverride", "target_var": { "global_val": "OM_island_subn" } },
          { "mapgen_update": "mx_skyisland_solidstoneoverride", "target_var": { "global_val": "OM_island_subne" } },
          { "mapgen_update": "mx_skyisland_solidstoneoverride", "target_var": { "global_val": "OM_island_subw" } },
          { "mapgen_update": "mx_skyisland_solidstoneoverride", "target_var": { "global_val": "OM_island_sube" } },
          { "mapgen_update": "mx_skyisland_solidstoneoverride", "target_var": { "global_val": "OM_island_subsw" } },
          { "mapgen_update": "mx_skyisland_solidstoneoverride", "target_var": { "global_val": "OM_island_subs" } },
          { "mapgen_update": "mx_skyisland_solidstoneoverride", "target_var": { "global_val": "OM_island_subse" } },
          { "math": [ "versionupdate = 1" ] },
          { "math": [ "missiondistancemax = 30" ] },
          { "math": [ "missiondistancemin = 5" ] },
          { "math": [ "exfildistancemax = 35" ] },
          { "math": [ "exfildistancemin = 10" ] },
          { "math": [ "invistime = 60" ] },
          { "u_spawn_item": "warp_folded_heart", "count": 1 },
          {
            "u_message": "Milestone 1 applied.  You have been given a Heartseed.  Activate it while on your island to create the new Heart of the Island.  Interact with the Heart to access new upgrade options.",
            "popup": true
          },
          {
            "if": { "math": [ "raidswon > 0" ] },
            "then": [
              { "math": [ "owed_material_tokens = 50 * raidswon" ] },
              {
                "u_spawn_item": "warptoken_material",
                "count": { "global_val": "owed_material_tokens", "default": 50 }
              },
              {
                "u_message": "You have been retroactively awarded <global_val:owed_material_tokens> material tokens for your past successful expeditions.",
                "popup": true
              },
              { "math": [ "backpaid_raids = raidswon" ] }
            ]
          },
          {
            "u_message": "The stat stone, healing salve, difficulty adjuster, and similar items are removed.  These options are instead accessed by speaking to the Heart of the Island.\n\nWarped bags and quickheals are obsolete.  If you already have any, they can still be used, or salvaged for a refund of warp shards.\n\nAny further changes are documented in the patch notes.",
            "popup": true
          }
        ],
        "else": [ { "u_message": "Your save is post-Milestone 1.  Skipping update 1…", "popup": true } ]
      },
      { "u_message": "Your save should be up to date now.", "popup": true }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_SKY_ISLAND_GAME_LOAD_WARPED_POND_GRANTER",
    "eoc_type": "EVENT",
    "//": "Delete after 0.I",
    "required_event": "game_load",
    "condition": { "math": [ "islandrank >= 2" ] },
    "effect": [ { "u_learn_recipe": "sky_island_warped_pond" } ]
  },
  {
    "id": "warp_home",
    "type": "SPELL",
    "name": "Warp Home",
    "//": "A simple no-failure spell that can be cast with hands full and triggers the EOC to return home.  Flagged as verbal so you make noise while casting, increasing the need to find a safe spot to warp from.  This only exists in case of bugs.",
    "description": "Take a full minute of concentration and return to the safety of your home base.",
    "valid_targets": [ "self" ],
    "spell_class": "NONE",
    "flags": [ "NO_EXPLOSION_SFX", "NO_FAIL", "NO_LEGS", "NO_HANDS", "VERBAL" ],
    "difficulty": 0,
    "min_damage": 1,
    "max_damage": 1,
    "duration_increment": 1,
    "effect": "effect_on_condition",
    "effect_str": "EOC_return_OM_teleport_check",
    "shape": "blast",
    "energy_source": "NONE",
    "base_energy_cost": 0,
    "final_energy_cost": 0,
    "base_casting_time": 6000,
    "final_casting_time": 6000
  },
  {
    "id": "warped_return",
    "type": "SPELL",
    "name": "Warped Return",
    "description": "Take a full minute of concentration, pay one warp shard, and return to the safety of your home base.",
    "valid_targets": [ "self" ],
    "spell_class": "NONE",
    "flags": [ "NO_EXPLOSION_SFX", "NO_FAIL", "NO_LEGS", "NO_HANDS", "VERBAL" ],
    "difficulty": 0,
    "min_damage": 1,
    "max_damage": 1,
    "duration_increment": 1,
    "effect": "effect_on_condition",
    "effect_str": "EOC_warped_return_shard_check",
    "shape": "blast",
    "energy_source": "NONE",
    "base_energy_cost": 0,
    "final_energy_cost": 0,
    "base_casting_time": 6000,
    "final_casting_time": 6000
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_warped_return_shard_check",
    "condition": { "u_has_items": { "item": "warptoken", "count": 1 } },
    "effect": [
      {
        "run_eocs": [
          {
            "id": "EOC_warped_return_shard_check_2",
            "condition": { "math": [ "u_monsters_nearby('radius': u_search_radius == 10) <= 0" ] },
            "effect": [ { "u_consume_item": "warptoken", "count": 1 }, { "run_eocs": "EOC_return_OM_teleport_check" } ],
            "false_effect": [ { "u_message": "You cannot warp home with enemies nearby!", "type": "bad" } ]
          }
        ]
      }
    ],
    "false_effect": [ { "u_message": "You have no warp shards!", "type": "bad" } ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_return_OM_teleport_check",
    "//": "This is the EOC cast at the completion of the on-demand warp home spell It should eventually trigger EOC_return_OM_teleport, which is what actually returns you home.",
    "condition": {
      "u_query": "This will warp you home directly, bypassing the mission structure and need to find an exit point.  Do you want to warp home directly?",
      "default": false
    },
    "effect": [ { "u_cast_spell": { "id": "warp_home_real" } }, { "run_eocs": "EOC_REMOVE_WARPED_SKYWARD_BEACON_CHECK" } ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_REMOVE_WARPED_SKYWARD_BEACON_CHECK",
    "condition": { "u_has_items": { "item": "warp_skyward_beacon", "count": 1 } },
    "effect": [ { "u_consume_item": "warp_skyward_beacon", "count": 1 } ]
  },
  {
    "id": "warp_home_real",
    "type": "SPELL",
    "name": "Warp Home Real",
    "//": "A simple no-failure spell that can be cast with hands full and triggers the EOC to return home.  Flagged as verbal so you make noise while casting, increasing the need to find a safe spot to warp from.  This only exists in case of bugs.",
    "description": "The actual warp home spell.  It's a bug if you have it.",
    "valid_targets": [ "self" ],
    "spell_class": "NONE",
    "flags": [ "NO_EXPLOSION_SFX", "NO_FAIL", "NO_LEGS", "NO_HANDS", "VERBAL" ],
    "difficulty": 0,
    "min_damage": 1,
    "max_damage": 1,
    "duration_increment": 1,
    "effect": "effect_on_condition",
    "effect_str": "EOC_return_OM_teleport",
    "shape": "blast"
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_WARPED_ENEMY_CHECK_RETURN",
    "condition": { "math": [ "u_monsters_nearby('radius': u_search_radius == 10) <= 0" ] },
    "effect": [ { "u_assign_activity": "ACT_WARP_HOME", "duration": "60 seconds" } ],
    "false_effect": [ { "u_message": "You cannot warp home with enemies nearby!", "type": "bad" } ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_WARPED_WATERWALKING",
    "effect": [
      { "u_consume_item": "warp_waterwalking_stone", "count": 1 },
      { "u_message": "You feel somehow lighter.", "type": "good" },
      { "u_add_effect": "effect_warped_waterwalking", "duration": 180 }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_WARPED_POND_CREATION",
    "effect": [
      {
        "u_choose_adjacent_highlight": { "context_val": "warped_pond_location" },
        "condition": {
          "or": [
            { "map_terrain_with_flag": "LIQUID", "loc": { "context_val": "loc" } },
            { "map_terrain_id": "t_wooden_well", "loc": { "context_val": "loc" } },
            { "map_terrain_id": "t_water_pump", "loc": { "context_val": "loc" } }
          ]
        },
        "message": "Select nearby water source"
      },
      {
        "if": { "math": [ "has_var(_warped_pond_location)" ] },
        "then": {
          "run_eoc_selector": [
            "EOC_WARPED_POND_CREATION_NW",
            "EOC_WARPED_POND_CREATION_NE",
            "EOC_WARPED_POND_CREATION_SW",
            "EOC_WARPED_POND_CREATION_SE"
          ],
          "names": [ "Northwest", "Northeast", "Southwest", "Southeast" ],
          "title": "Choose the location for a pond",
          "descriptions": [
            "Place a pond in the northwest.",
            "Place a pond in the northeast.",
            "Place a pond in the southwest.",
            "Place a pond in the southeast."
          ]
        },
        "else": [
          { "u_spawn_item": "warptoken", "count": 30, "suppress_message": true },
          { "u_message": "You must be near a water source to created a warped pond.", "type": "neutral" }
        ]
      }
    ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_WARPED_POND_CREATION_NW",
    "effect": [ { "mapgen_update": "mx_skyisland_pond", "om_terrain": "sky_island_core", "offset_x": -1, "offset_y": -1 } ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_WARPED_POND_CREATION_NE",
    "effect": [ { "mapgen_update": "mx_skyisland_pond", "om_terrain": "sky_island_core", "offset_x": 1, "offset_y": -1 } ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_WARPED_POND_CREATION_SW",
    "effect": [ { "mapgen_update": "mx_skyisland_pond", "om_terrain": "sky_island_core", "offset_x": -1, "offset_y": 1 } ]
  },
  {
    "type": "effect_on_condition",
    "id": "EOC_WARPED_POND_CREATION_SE",
    "effect": [ { "mapgen_update": "mx_skyisland_pond", "om_terrain": "sky_island_core", "offset_x": 1, "offset_y": 1 } ]
  }
]
