diff --git a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ActorData.xml b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ActorData.xml
index e2383e5f3..2bbcf9191 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ActorData.xml
+++ b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ActorData.xml
@@ -18583,7 +18583,7 @@
-
+
@@ -18592,7 +18592,7 @@
-
+
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/BehaviorData.xml b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/BehaviorData.xml
index d65adb092..ae12998d7 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/BehaviorData.xml
+++ b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/BehaviorData.xml
@@ -813,7 +813,7 @@
-
+
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ButtonData.xml b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ButtonData.xml
index 06bf053a5..2ddeb90a7 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ButtonData.xml
+++ b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ButtonData.xml
@@ -109,8 +109,8 @@
-
-
+
+
@@ -223,11 +223,6 @@
-
-
-
-
-
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/RequirementNodeData.xml b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/RequirementNodeData.xml
index beece523c..749fedcc6 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/RequirementNodeData.xml
+++ b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/RequirementNodeData.xml
@@ -1,9 +1,5 @@
-
-
-
-
@@ -3215,15 +3211,21 @@
-
+
+
+
-
+
+
+
-
+
+
+
@@ -3261,7 +3263,9 @@
-
+
+
+
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/UpgradeData.xml b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/UpgradeData.xml
index 0d086b47f..ae49a1a30 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/UpgradeData.xml
+++ b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/UpgradeData.xml
@@ -1900,7 +1900,7 @@
-
+
@@ -1909,7 +1909,7 @@
-
+
@@ -1925,7 +1925,7 @@
-
+
@@ -1942,7 +1942,7 @@
-
+
@@ -3041,7 +3041,7 @@
-
+
@@ -5512,7 +5512,7 @@
-
+
@@ -5536,7 +5536,7 @@
-
+
@@ -5544,7 +5544,7 @@
-
+
@@ -5568,7 +5568,7 @@
-
+
@@ -5576,7 +5576,7 @@
-
+
@@ -5719,7 +5719,7 @@
-
+
@@ -5746,7 +5746,7 @@
-
+
@@ -6168,7 +6168,7 @@
-
+
@@ -6177,7 +6177,7 @@
-
+
@@ -6353,7 +6353,7 @@
-
+
@@ -6369,7 +6369,7 @@
-
+
@@ -6383,7 +6383,7 @@
-
+
@@ -7140,7 +7140,7 @@
-
+
@@ -7163,7 +7163,7 @@
-
+
@@ -7241,7 +7241,7 @@
-
+
@@ -7402,7 +7402,7 @@
-
+
@@ -7411,7 +7411,7 @@
-
+
@@ -7439,7 +7439,7 @@
-
+
@@ -10269,7 +10269,7 @@
-
+
@@ -10284,7 +10284,7 @@
-
+
@@ -10390,7 +10390,7 @@
-
+
@@ -10502,7 +10502,7 @@
-
+
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/PreloadAssetDB.txt b/Mods/ArchipelagoPlayer.SC2Mod/PreloadAssetDB.txt
index 0bd09af2d..4a419575a 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/PreloadAssetDB.txt
+++ b/Mods/ArchipelagoPlayer.SC2Mod/PreloadAssetDB.txt
@@ -16771,7 +16771,7 @@ id=AP_HercAcidExplosionImmunity
asset=Assets\Textures\btn-upgrade-zerg-hydriaticacid.dds
Actor=AP_GimbalZTurret,CommandUIHarnessAttackProtoss,CommandUIHarnessAttackTerran,CommandUIHarnessAttackZerg,CommandUIHarnessConfirmProtoss,CommandUIHarnessConfirmTerran,CommandUIHarnessConfirmZerg,CommandUIHarnessMoveProtoss,CommandUIHarnessMoveTerran,CommandUIHarnessMoveZerg,CommandUIHarnessRallyProtoss,CommandUIHarnessRallyTerran,CommandUIHarnessRallyZerg,TerrainMgr
id=AP_HercGrapplePull
-asset=AP\Assets\Custom\Textures\btn-ability-herc-grapple-pull.dds
+asset=Assets\Textures\btn-ability-tychus-herc-heavyimpact.dds
Actor=AP_GimbalZTurret,CommandUIHarnessAttackProtoss,CommandUIHarnessAttackTerran,CommandUIHarnessAttackZerg,CommandUIHarnessConfirmProtoss,CommandUIHarnessConfirmTerran,CommandUIHarnessConfirmZerg,CommandUIHarnessMoveProtoss,CommandUIHarnessMoveTerran,CommandUIHarnessMoveZerg,CommandUIHarnessRallyProtoss,CommandUIHarnessRallyTerran,CommandUIHarnessRallyZerg,TerrainMgr
id=AP_StabilizerMedPacks
asset=Assets\Textures\btn-upgrade-raynor-stabilizermedpacks.dds
@@ -16803,10 +16803,6 @@ Actor=AP_GimbalZTurret,CommandUIHarnessAttackProtoss,CommandUIHarnessAttackTerra
id=AP_CerberusMines
asset=assets\textures\btn-upgrade-raynor-cerberusmines.dds
Actor=AP_GimbalZTurret,CommandUIHarnessAttackProtoss,CommandUIHarnessAttackTerran,CommandUIHarnessAttackZerg,CommandUIHarnessConfirmProtoss,CommandUIHarnessConfirmTerran,CommandUIHarnessConfirmZerg,CommandUIHarnessMoveProtoss,CommandUIHarnessMoveTerran,CommandUIHarnessMoveZerg,CommandUIHarnessRallyProtoss,CommandUIHarnessRallyTerran,CommandUIHarnessRallyZerg,TerrainMgr
-id=AP_ResearchSpiderMinesSC1
-asset=AP\Assets\Textures\btn-unit-terran-spidermine.dds
-asset=Assets\Textures\btn-unit-terran-spidermine.dds
-Actor=AP_GimbalZTurret,CommandUIHarnessAttackProtoss,CommandUIHarnessAttackTerran,CommandUIHarnessAttackZerg,CommandUIHarnessConfirmProtoss,CommandUIHarnessConfirmTerran,CommandUIHarnessConfirmZerg,CommandUIHarnessMoveProtoss,CommandUIHarnessMoveTerran,CommandUIHarnessMoveZerg,CommandUIHarnessRallyProtoss,CommandUIHarnessRallyTerran,CommandUIHarnessRallyZerg,TerrainMgr
id=AP_AresClassWeaponsSystem
asset=assets\textures\btn-upgrade-swann-aresclasstargetingsystem.dds
Actor=AP_GimbalZTurret,CommandUIHarnessAttackProtoss,CommandUIHarnessAttackTerran,CommandUIHarnessAttackZerg,CommandUIHarnessConfirmProtoss,CommandUIHarnessConfirmTerran,CommandUIHarnessConfirmZerg,CommandUIHarnessMoveProtoss,CommandUIHarnessMoveTerran,CommandUIHarnessMoveZerg,CommandUIHarnessRallyProtoss,CommandUIHarnessRallyTerran,CommandUIHarnessRallyZerg,TerrainMgr
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/GameHotkeys.txt b/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/GameHotkeys.txt
index 34f9fef17..f928b002b 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/GameHotkeys.txt
+++ b/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/GameHotkeys.txt
@@ -303,7 +303,6 @@ Button/Hotkey/AP_Refinery=R
Button/Hotkey/AP_RepairDrones=E
Button/Hotkey/AP_ResearchCycloneRapidFireLaunchers=A
Button/Hotkey/AP_ResearchMagFieldLaunchers=R
-Button/Hotkey/AP_ResearchSpiderMinesSC1=M
Button/Hotkey/AP_RespawnZergling=Z
Button/Hotkey/AP_Roach=R
Button/Hotkey/AP_RoachWarren=R
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/GameStrings.txt b/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/GameStrings.txt
index 59bc33a15..ef5d6075a 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/GameStrings.txt
+++ b/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/GameStrings.txt
@@ -1389,7 +1389,6 @@ Button/Name/AP_ResearchAlarakHighTemplarPsionicOrbTravelDistancePassive=Chaotic
Button/Name/AP_ResearchCycloneRapidFireLaunchers=Research Rapid Fire Launchers
Button/Name/AP_ResearchLiberatorAGMode=Research Defender Mode
Button/Name/AP_ResearchMagFieldLaunchers=Research Mag-Field Launchers
-Button/Name/AP_ResearchSpiderMinesSC1=Research Spider Mines
Button/Name/AP_RespawnZergling=Zergling Reconstitution
Button/Name/AP_RetributionField=Lightning Field
Button/Name/AP_RipwaveMissiles=Ripwave Missiles
@@ -2458,7 +2457,6 @@ Button/Tooltip/AP_RepairDrones=Two repair drones automatically heal friendly mec
Button/Tooltip/AP_ResearchAlarakHighTemplarPsionicOrbTravelDistancePassive=Increases Psionic Orb's travel distance by 25%.
Button/Tooltip/AP_ResearchCycloneRapidFireLaunchers=Increases the attack speed of the first 12 shots of the Cyclone's Lock On.
Button/Tooltip/AP_ResearchMagFieldLaunchers=Increases Cyclone's attack range by +.
-Button/Tooltip/AP_ResearchSpiderMinesSC1=Enables the Vulture to carry Spider Mines. Spider Mines burrow into the ground and become cloaked unless spotted with a detector or effect. When most types of enemy ground units pass nearby, the Spider Mine will unburrow, chase down the units, and detonate.
Button/Tooltip/AP_RespawnZergling=Respawns up to Zerglings at no cost until all Zerglings have returned to life.
Button/Tooltip/AP_RetributionField=The Predator unleashes a deadly field of electricity each time it attacks. Deals 20 damage.
Button/Tooltip/AP_RipwaveMissiles=Viking missiles deal area damage.
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/ObjectStrings.txt b/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/ObjectStrings.txt
index b2e8f2f21..8f2a93bac 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/ObjectStrings.txt
+++ b/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/ObjectStrings.txt
@@ -2703,7 +2703,6 @@ Button/EditorSuffix/AP_QueenStukovSpawnBroodlings=(Stukov)
Button/EditorSuffix/AP_RapidDeployment=(Hercules)
Button/EditorSuffix/AP_RapidDeploymentTubes=(Medivac)
Button/EditorSuffix/AP_ReaverScarabs=
-Button/EditorSuffix/AP_ResearchSpiderMinesSC1=(Vulture)
Button/EditorSuffix/AP_RuptureUpgrade=Upgrade
Button/EditorSuffix/AP_SpectreConsumption=(Spectre)
Button/EditorSuffix/AP_SpectreHoldFire=(Spectre)
diff --git a/schemas/SchemaRequirementData.xsd b/schemas/SchemaRequirementData.xsd
new file mode 100644
index 000000000..c0d29fc86
--- /dev/null
+++ b/schemas/SchemaRequirementData.xsd
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/schemas/SchemaRequirementNodeData.xsd b/schemas/SchemaRequirementNodeData.xsd
new file mode 100644
index 000000000..0bdd7ef1f
--- /dev/null
+++ b/schemas/SchemaRequirementNodeData.xsd
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/schemas/SchemaUpgradeData.xsd b/schemas/SchemaUpgradeData.xsd
new file mode 100644
index 000000000..2fea50849
--- /dev/null
+++ b/schemas/SchemaUpgradeData.xsd
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/schemas/settings.jsonc b/schemas/settings.jsonc
new file mode 100644
index 000000000..cefd61fa8
--- /dev/null
+++ b/schemas/settings.jsonc
@@ -0,0 +1,8 @@
+{
+ // Use this in your .vscode settings to set the .xsd associations with the Red Hat XML extension
+ "xml.fileAssociations": [
+ {"pattern": "RequirementData.xml", "systemId": "./schemas/SchemaRequirementData.xsd"},
+ {"pattern": "RequirementNodeData.xml", "systemId": "./schemas/SchemaRequirementNodeData.xsd"},
+ {"pattern": "UpgradeData.xml", "systemId": "./schemas/SchemaUpgradeData.xsd"}
+ ]
+}
\ No newline at end of file