diff --git a/public/AlliedAntiAirShip.xml b/public/AlliedAntiAirShip.xml
new file mode 100644
index 0000000..75fb525
--- /dev/null
+++ b/public/AlliedAntiAirShip.xml
@@ -0,0 +1,545 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name:AlliedAntiAirShip
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FXGradient01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FXGrid_3
+
+
+ FXInterlacedMask2
+
+
+ 0.00000
+ 2.00000
+ 1.000000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AlliedHydroScrambler_Sparks
+ AlliedHydroScrambler_Start
+
+
+ Upgrade_Veterancy_HEROIC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/ButtonStateDataCommon.xml b/public/ButtonStateDataCommon.xml
new file mode 100644
index 0000000..5970eb0
--- /dev/null
+++ b/public/ButtonStateDataCommon.xml
@@ -0,0 +1,1577 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/Locomotor.xml b/public/Locomotor.xml
new file mode 100644
index 0000000..c491bcd
--- /dev/null
+++ b/public/Locomotor.xml
@@ -0,0 +1,3253 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TankBounceKickTerrainMapping
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TankBounceKickTerrainMapping
+
+
+
+
+ TankBounceKickTerrainMapping
+
+
+
+
+
+
+
+
+
+
+
+ TankBounceKickTerrainMapping
+
+
+
+ TankBounceKickTerrainMapping
+
+
+
+
+ TankBounceKickTerrainMapping
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TankBounceKickTerrainMapping
+
+
+
+ TankBounceKickTerrainMapping
+
+
+
+
+ TankBounceKickTerrainMapping
+
+
+
+
+
+ TankBounceKickTerrainMapping
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TankBounceKickTerrainMapping
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TankBounceKickTerrainMapping
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/LogicCommand.xml b/public/LogicCommand.xml
new file mode 100644
index 0000000..d1c27e7
--- /dev/null
+++ b/public/LogicCommand.xml
@@ -0,0 +1,2291 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SpecialPowerMoveToPositionAndEvacuate
+
+
+
+
+
+
+ SpecialPower_ToggleAlliedEngineerHeal
+
+
+
+ SpecialPower_TargetedRepairVehicle
+
+
+
+ SpecialPower_ChargeDefensesTrigger
+
+
+
+ SpecialPowerCaptureControlPoint
+
+
+
+
+
+
+ SpecialPowerReturnToProducer
+
+
+
+ SpecialPowerReturnToProducer
+
+
+
+
+ SpecialPowerReturnToProducer
+
+
+
+
+ SpecialPowerReturnToProducer
+
+
+
+
+ SpecialPower_UnpackReplaceSelf
+
+
+
+
+ SpecialPower_UnpackReplaceSelf
+
+
+
+
+ SpecialPower_UnpackReplaceSelf
+
+
+
+
+ SpecialPower_UnpackReplaceSelf
+
+
+
+
+ SpecialPower_UnpackReplaceSelf
+
+
+
+
+ SpecialPower_UnpackReplaceSelf
+
+
+
+
+ SpecialPower_UnpackReplaceSelf
+
+
+
+
+ SpecialPower_UnpackReplaceSelf
+
+
+
+
+ SpecialPower_UnpackReplaceSelf
+
+
+
+
+ SpecialPower_UnpackReplaceSelf
+
+
+
+
+ SpecialPower_UnpackReplaceSelf
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SpecialPower_RecallAllAircraft
+
+
+
+ Upgrade_AlliedTech2
+
+
+
+
+ Upgrade_AlliedTech3
+
+
+
+
+ SpecialPowerHighTechnology
+
+
+
+ SpecialPowerAirPower
+
+
+
+ SpecialPowerAlliedFreeTrade
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Upgrade_AlliedCrane
+
+
+
+
+
+ Upgrade_AlliedRadarDish
+
+
+ Upgrade_AlliedConstructionYardRepairBay
+
+
+ Upgrade_AlliedPowerPlantTurbine
+
+
+
+ Upgrade_AlliedNavalYardRepairBay
+
+
+
+ Upgrade_AlliedWarFactoryRepairBay
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SpecialPower_PackReplaceSelf
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SpecialPower_UnpackReplaceSelf
+
+
+
+
+ SpecialPower_UnpackReplaceSelf
+
+
+
+
+ SpecialPower_ToggleMirageField
+
+
+
+
+ SpecialPower_ToggleTargetPainter
+
+
+
+
+ SpecialPower_ToggleWeaponScrambler
+
+
+
+
+ SpecialPower_ToggleMagneticArmor
+
+
+
+
+ SpecialPower_ToggleShortCircuit
+
+
+
+
+ SpecialPower_ToggleShortCircuit
+
+
+
+
+ SpecialPower_TeslaNova
+
+
+
+
+
+
+ SpecialPower_EjectPassengers
+
+
+
+
+ SpecialPower_EjectPassengersUntargeted
+
+
+
+
+ SpecialPower_PilotSnipe
+
+
+
+
+ SpecialPower_TriggerLeap
+
+
+
+
+
+
+
+ SpecialPower_TriggerEMPCruiseMissle
+
+
+
+
+
+
+ SpecialPower_TriggerJump
+
+
+
+
+ SpecialPower_Bark
+
+
+
+
+
+
+ SpecialPower_Bribe
+
+
+
+
+ SpecialPower_TimeBelt
+
+
+
+
+ SpecialPower_InfantryDisguise
+
+
+
+
+ SpecialPower_ToggleRiotShield
+
+
+
+
+ SpecialPower_ToggleLeechBeam
+
+
+
+
+ SpecialPower_ActivateSuperSonic
+
+
+
+
+ SpecialPowerParticleCannon
+
+
+
+
+
+
+ SpecialPowerPrecisionStrike
+
+
+
+
+
+
+
+
+
+
+ SpecialPower_DesolatorBomb_Level1
+
+
+
+
+
+ SpecialPower_DesolatorBomb_Level2
+
+
+
+
+
+ SpecialPower_DesolatorBomb_Level3
+
+
+
+
+
+
+ SpecialPower_ProductionKickbacks
+
+
+
+
+
+
+ SpecialPower_PointDefenseDrones
+
+
+
+
+
+
+ SpecialPowerSatelliteSweep
+
+
+
+
+
+ SpecialPowerOrbitalRefuse_Rank1
+
+
+
+
+
+
+ SpecialPowerOrbitalRefuse_Rank2
+
+
+
+
+
+
+ SpecialPowerOrbitalRefuse_Rank3
+
+
+
+
+
+
+ SpecialPowerChronoRiftSelectLvl1
+
+
+
+
+
+
+
+ SpecialPowerChronoRiftSelectLvl2
+
+
+
+
+
+
+
+ SpecialPowerChronoRiftSelectLvl3
+
+
+
+
+
+
+
+ SpecialPowerChronoSwapSelect
+
+
+
+
+
+ SpecialPowerChronoSwapTeleport
+
+
+
+ SpecialPowerTimeBombLvl1
+
+
+
+
+
+
+ SpecialPowerTimeBombLvl2
+
+
+
+
+
+
+ SpecialPowerTimeBombLvl3
+
+
+
+
+
+
+ SpecialPowerCryoSatelliteLvl1
+
+
+
+
+
+
+ SpecialPowerCryoSatelliteLvl2
+
+
+
+
+
+
+ SpecialPowerCryoSatelliteLvl3
+
+
+
+
+
+
+ SpecialPowerChronosphereObjectSelect
+
+
+ SpecialPowerChronosphereObjectSpawn
+
+
+
+ SpecialPower_RadarLock
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Upgrade_SovietCrane
+
+
+ Upgrade_SovietRadarDish
+
+
+ Upgrade_SovietConstructionYardSalvageYard
+
+
+ Upgrade_SovietWarFactorySalvageYard
+
+
+ Upgrade_SovietNavalYardSalvageYard
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SpecialPowerIronCurtain
+
+
+
+
+
+ SpecialPowerVacuumBomb
+
+
+
+
+
+
+ SpecialPowerMagneticSingularity
+
+
+
+
+
+
+ SpecialPowerMagneticSatelliteLvl1
+
+
+
+
+
+ SpecialPowerMagneticSatelliteLvl2
+
+
+
+
+
+ SpecialPowerMagneticSatelliteLvl3
+
+
+
+
+
+
+ SpecialPowerSovietMassProduction
+
+
+
+ SpecialPowerTerrorDroneEggs
+
+
+
+ SpecialPowerCrushPuppies
+
+
+
+ SpecialPower_MIRV
+
+
+
+
+ SpecialPower_ConstructSovietBunker
+
+
+
+ SpecialPower_MolotovCocktail
+
+
+
+
+ SpecialPower_MagneticBomb
+
+
+
+
+ SpecialPower_ToggleRapidLaunch
+
+
+
+
+ SpecialPower_SuperTorpedos
+
+
+
+
+ SpecialPower_RecallAllAircraft
+
+
+
+ SpecialPower_ToggleBinaryWeapons
+
+
+
+
+ SpecialPower_ToggleArmorUp
+
+
+
+
+ SpecialPower_ToggleAfterburners
+
+
+
+
+ SpecialPower_ToggleShieldSphere
+
+
+
+
+ SpecialPower_Roar
+
+
+
+
+
+
+ SpecialPower_PackReplaceSelf
+
+
+
+ SpecialPower_UnpackReplaceSelf
+
+
+
+ SpecialPower_UnpackReplaceSelf
+
+
+
+
+ SpecialPower_Harpoon
+
+
+
+
+ SpecialPower_IrradiateTarget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Upgrade_JapanRadarDish
+
+
+ Upgrade_JapanRepairBay
+
+
+
+
+
+
+ SpecialPower_JapanScoutInfantryBomb
+
+
+
+
+ SpecialPower_JapanEngineerSprint
+
+
+
+
+ SpecialPower_JapanAntiInfantryInfantryBonzai
+
+
+
+
+ SpecialPower_UnpackReplaceSelf
+
+
+
+ SpecialPower_PackReplaceSelf
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SpecialPowerJapanEnhancedKamikaze
+
+
+
+ SpecialPowerJapanNavalPower
+
+
+
+ SpecialPowerJapanAdvancedMissilePacks
+
+
+
+ SpecialPowerJapanBalloonAttack_L1
+
+
+
+
+
+
+ SpecialPowerJapanBalloonAttack_L2
+
+
+
+
+
+
+ SpecialPowerJapanBalloonAttack_L3
+
+
+
+
+
+
+ SpecialPowerJapanRoboticAssembly
+
+
+
+ SpecialPowerJapanAmbush
+
+
+
+
+
+ SpecialPowerJapanEmperorsResolve_L1
+
+
+
+
+
+ SpecialPowerJapanEmperorsResolve_L2
+
+
+
+
+
+ SpecialPowerJapanEmperorsResolve_L3
+
+
+
+
+
+ SpecialPowerNanoSwarmHive
+
+
+
+ SpecialPowerTelekineticProjectorDevice
+
+
+
+
+
+
+ SpecialPower_PsyonicBlast
+
+
+
+
+
+
+ SpecialPower_ToggleLockDownGun
+
+
+
+
+ SpecialPower_SmokeBomb
+
+
+
+
+ SpecialPower_KamikazeAttack
+
+
+
+
+ SpecialPower_JAAS_Transform
+
+
+
+
+ SpecialPower_JAIV_Transform
+
+
+
+
+ Upgrade_JapanBarracksTech2
+
+
+
+
+ Upgrade_JapanBarracksTech3
+
+
+
+
+ Upgrade_JapanNavalYardTech2
+
+
+
+
+ Upgrade_JapanNavalYardTech3
+
+
+
+
+ Upgrade_JapanWarFactoryTech2
+
+
+
+
+ Upgrade_JapanWarFactoryTech3
+
+
+
+
+ SpecialPower_ShrinkRay
+
+
+
+
+ Upgrade_JapanPowerPlantTurbine
+
+
+
+ SpecialPower_JAAVT1_Transform
+
+
+
+
+ SpecialPower_JASV_FireKiCannon
+
+
+
+
+ SpecialPower_JapanBaseDefenseAdvanced_FireKiCannon
+
+
+
+
+ SpecialPower_TorpedoSpread
+
+
+
+
+ SpecialPower_ToggleSpiderHole
+
+
+
+
+ SpecialPower_ToggleEnergizedArmor
+
+
+
+
+ SpecialPower_TriggerRushAttack
+
+
+
+
+ SpecialPower_RammingSpeed
+
+
+
+
+ SpecialPower_ToggleDeployWeapon
+
+
+
+
+ SpecialPower_JapanBaseDefenseTransform
+
+
+
+
+
+
+
+ SpecialPowerFinalSquadron_L1
+
+
+
+
+
+ SpecialPowerFinalSquadron_L2
+
+
+
+
+
+ SpecialPowerFinalSquadron_L3
+
+
+
+
+
+
+
+
+ SpecialPowerCAMPAlliedBomberDrop1
+
+
+ SpecialPowerCAMPAlliedBomberDrop2
+
+
+
+ SpecialPower_TriggerEmperorRushAttack
+
+
+
+
+ SpecialPower_MechaKingShockwave
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/LogicCommandSet.xml b/public/LogicCommandSet.xml
new file mode 100644
index 0000000..e366d22
--- /dev/null
+++ b/public/LogicCommandSet.xml
@@ -0,0 +1,1097 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command_Stop
+
+
+
+
+
+
+
+
+
+
+ Command_CivilianStructureEvacuate
+
+
+
+
+ Command_ConstructAlliedPowerPlant
+ Command_ConstructAlliedBarracks
+ Command_ConstructAlliedRefinery
+ Command_ConstructAlliedWarFactory
+ Command_ConstructAlliedNavalYard
+ Command_ConstructAlliedAirfield
+ Command_ConstructAlliedTechStructure
+ Command_ConstructAlliedWall
+ Command_ConstructAlliedBaseDefense
+ Command_ConstructAlliedBaseDefenseAdvanced
+ Command_ConstructAlliedSuperWeapon
+ Command_ConstructAlliedSuperWeaponAdvanced
+ Command_PackAlliedMCV
+
+
+
+
+ Command_PurchaseAlliedTech2
+
+
+ Command_PurchaseAlliedTech3
+
+
+
+ Command_ConstructAlliedAntiGroundAircraft
+ Command_ConstructAlliedFighterAircraft
+ Command_ConstructAlliedSupportAircraft
+ Command_ConstructAlliedBomberAircraft
+ Command_AlliedRecallAllAircraft
+
+
+
+ Command_ConstructAlliedScoutInfantry
+ Command_ConstructAlliedAntiInfantryInfantry
+ Command_ConstructAlliedAntiVehicleInfantry
+ Command_ConstructAlliedEngineer
+ Command_ConstructAlliedInfiltrationInfantry
+ Command_ConstructAlliedCommandoTech1
+
+
+
+ Command_ConstructAlliedPowerPlant
+ Command_ConstructAlliedRefinery
+ Command_ConstructAlliedTechStructure
+ Command_ConstructAlliedBarracks
+ Command_ConstructAlliedWarFactory
+ Command_ConstructAlliedAirfield
+ Command_ConstructAlliedNavalYard
+ Command_ConstructAlliedBaseDefense
+ Command_ConstructAlliedBaseDefenseAdvanced
+ Command_ConstructAlliedSuperWeapon
+ Command_ConstructAlliedSuperWeaponAdvanced
+ Command_ConstructAlliedOutpost
+
+
+
+
+
+
+ Command_RepairVehicle
+
+
+
+ Command_RepairVehicle
+
+
+
+ Command_RepairVehicle
+
+
+
+ Command_PurchaseAlliedTech2
+
+
+
+ Command_PurchaseAlliedTech3
+
+
+
+ Command_AlliedBaseDefenseEvacuate
+
+
+
+ Command_ActivateEMPCruiseMissleSpecialPower
+ Command_AttackMove
+
+
+
+ Command_ConstructAlliedMiner_Naval
+ Command_ConstructAlliedAntiNavalScout
+ Command_ConstructAlliedAntiInfantryVehicle
+ Command_ConstructAlliedAntiAirShip
+ Command_ConstructAlliedAntiNavyShipTech1
+ Command_ConstructAlliedAntiStructureShip
+ Command_ConstructAlliedMCV_Naval
+
+
+
+
+
+
+
+
+
+
+ Command_ConstructAlliedMinerFromRefinery
+
+
+
+ Command_SelectObjectsForChrono
+ Command_SpawnObjectsForChrono
+
+
+
+ Command_ParticleCannonSuperWeapon
+
+
+
+ Command_ChargeDefenses
+
+
+
+ Command_ConstructAlliedMiner
+ Command_ConstructAlliedAntiInfantryVehicle_Ground
+ Command_ConstructAlliedAntiAirVehicleTech1
+ Command_ConstructAlliedAntiVehicleVehicleTech1
+ Command_ConstructAlliedAntiStructureVehicle
+ Command_ConstructAlliedAntiVehicleVehicleTech3
+ Command_ConstructAlliedMCV
+
+
+
+
+ Command_UnPackAlliedMCV
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ToggleAlliedEngineerHeal
+ Command_CaptureBuilding
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_TimeBeltSpecialPower
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_AlliedSupportAircraftShrinkRay
+ Command_AttackMove
+
+
+
+ Command_ToggleMagneticArmor
+ Command_AttackMove
+
+
+
+ Command_ActivateEjectPassengersSpecialPowerUntargeted
+ Command_AttackMove
+
+
+
+
+ Command_UnPackAlliedMiner
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_AlliedAntiGroundAircraftReturnToAirfield
+ Command_AttackMove
+
+
+
+ Command_ActivateJumpSpecialPower
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ActivateBarkSpecialPower
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ActivateBribeSpecialPower
+ Command_MoveToPositionAndCollect
+ Command_ActivateDisguiseSpecialPower
+
+
+
+ Command_ToggleRiotShieldSpecialPower
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ToggleRadarLockSpecialPower
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ToggleTargetPainter
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ToggleMirageField
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_AlliedFighterAircraftReturnToAirfield
+ Command_AttackMove
+
+
+
+ Command_ToggleShieldSphere
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ToggleWeaponScrambler
+ Command_AttackMove
+
+
+
+ Command_Evacuate
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_AlliedAntiInfantryVehicleEvacuate
+ Command_AttackMove
+
+
+
+
+
+ Command_ConstructSovietWall
+ Command_ConstructSovietPowerPlant
+ Command_ConstructSovietBarracks
+ Command_ConstructSovietRefinery
+ Command_ConstructSovietWarFactory
+ Command_ConstructSovietNavalYard
+ Command_ConstructSovietAirfield
+ Command_ConstructSovietPowerPlantAdvanced
+ Command_ConstructSovietTechStructure
+ Command_ConstructSovietBaseDefenseGround
+ Command_ConstructSovietBaseDefenseAir
+ Command_ConstructSovietBaseDefenseAdvanced
+ Command_ConstructSovietSuperWeapon
+ Command_ConstructSovietSuperWeaponAdvanced
+ Command_ConstructSovietCrane
+ Command_PackSovietMCV
+
+
+
+
+ Command_SovietBattleBunkerEvacuate
+
+
+
+
+
+
+ Command_ConstructSovietAntiGroundAircraft
+ Command_ConstructSovietFighterAircraft
+ Command_ConstructSovietBomberAircraft
+ Command_SovietRecallAllAircraft
+
+
+
+ Command_ConstructSovietScoutInfantry
+ Command_ConstructSovietAntiInfantryInfantry
+ Command_ConstructSovietAntiVehicleInfantry
+ Command_ConstructSovietEngineer
+ Command_ConstructSovietHeavyAntiVehicleInfantry
+ Command_ConstructSovietCommandoTech1
+
+
+
+ Command_ConstructSovietWall
+ Command_ConstructSovietPowerPlant
+ Command_ConstructSovietBarracks
+ Command_ConstructSovietRefinery
+ Command_ConstructSovietWarFactory
+ Command_ConstructSovietNavalYard
+ Command_ConstructSovietAirfield
+ Command_ConstructSovietPowerPlantAdvanced
+ Command_ConstructSovietTechStructure
+ Command_ConstructSovietBaseDefenseGround
+ Command_ConstructSovietBaseDefenseAir
+ Command_ConstructSovietBaseDefenseAdvanced
+ Command_ConstructSovietSuperWeapon
+ Command_ConstructSovietSuperWeaponAdvanced
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command_ConstructSovietMiner_Naval
+ Command_ConstructSovietSurveyor_Naval
+ Command_ConstructSovietAntiNavyShipTech1
+ Command_ConstructSovietAntiAirShip
+ Command_ConstructSovietAntiNavyShipTech2
+ Command_ConstructSovietAntiStructureShip
+ Command_ConstructSovietMCV_Naval
+ Command_RepairVehicle
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command_ConstructSovietMinerFromRefinery
+
+
+
+ Command_IronCurtain
+
+
+
+ Command_VacuumBomb
+
+
+
+
+
+
+
+
+
+ Command_ConstructSovietMiner
+ Command_ConstructSovietSurveyor
+ Command_ConstructSovietScoutVehicle
+ Command_ConstructSovietAntiInfantryVehicle
+ Command_ConstructSovietAntiAirShip_Ground
+ Command_ConstructSovietAntiVehicleVehicleTech1
+ Command_ConstructSovietAntiStructureVehicle
+ Command_ConstructSovietAntiVehicleVehicleTech3
+ Command_ConstructSovietMCV
+ Command_RepairVehicle
+
+
+
+
+ Command_ToggleBinaryWeapon
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ActivateRoarSpecialPower
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ToggleShortCircuit
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ToggleArmorUp
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_UnPackSovietMCV
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_UnPackSovietSurveyor
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ConstructSovietBunker
+ Command_CaptureBuilding
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ActivateTeslaNova
+ Command_AttackMove
+
+
+
+ Command_ActivateSuperTorpedos
+ Command_AttackMove
+
+
+
+ Command_ActivatePilotSnipeSpecialPower
+ Command_MoveToPositionAndCollect
+ Command_AttackMove
+
+
+
+ Command_ActivateEjectPassengersSpecialPower
+ Command_AttackMove
+
+
+
+ Command_ActivateLeapSpecialPower
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_AttackMove
+ Command_ToggleLeechBeam
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ToggleShortCircuitTank
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ToggleMIRVSpecialPower
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ToggleMolotovCocktailSpecialPower
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ToggleMagneticBombSpecialPower
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_AttackMove
+ Command_ToggleAfterburners
+
+
+
+ Command_SovietFighterAircraftReturnToAirfield
+ Command_AttackMove
+
+
+
+ Command_SovietAntiGroundAircraftEvacuate
+ Command_AttackMove
+
+
+
+ Command_ToggleRapidLaunchSpecialPower
+ Command_AttackMove
+
+
+
+ Command_Evacuate
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ToggleHarpoonSpecialPower
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+
+
+ Command_ConstructJapanWall
+ Command_ConstructJapanPowerPlantEgg
+ Command_ConstructJapanBarracksEgg
+ Command_ConstructJapanRefineryEgg
+ Command_ConstructJapanWarFactoryEgg
+ Command_ConstructJapanNavalYardEgg
+ Command_ConstructJapanTechStructureEgg
+ Command_ConstructJapanBaseDefenseEgg
+ Command_ConstructJapanBaseDefenseAdvancedEgg
+ Command_ConstructJapanSuperWeaponEgg
+ Command_ConstructJapanSuperWeaponAdvancedEgg
+
+ Command_PackJapanMCV
+
+
+
+
+
+
+ Command_ConstructJapanScoutInfantry
+ Command_ConstructJapanAntiInfantryInfantry
+ Command_ConstructJapanAntiVehicleInfantry
+ Command_ConstructJapanEngineer
+ Command_ConstructJapanInfiltrationInfantry
+ Command_ConstructJapanAntiVehicleInfantryTech3
+ Command_ConstructJapanCommandoTech1
+
+
+ Command_PurchaseJapanBarracksTech2
+
+
+ Command_PurchaseJapanBarracksTech3
+
+
+
+ Command_JapanBaseDefenseToggleBinaryWeapon
+
+
+
+ Command_JapanBaseDefenseAdvanced_FireKiCannon
+
+
+
+
+
+
+ Command_ConstructJapanMiner_Naval
+ Command_ConstructJapanNavyScoutShip
+ Command_ConstructJapanAntiVehicleVehicleTech1_Naval
+ Command_ConstructJapanAntiAirShip
+ Command_ConstructJapanAntiVehicleShip
+ Command_ConstructJapanAntiStructureShip
+ Command_ConstructJapanMCV_Naval
+ Command_RepairVehicle
+
+
+ Command_PurchaseJapanNavalYardTech2
+
+
+ Command_PurchaseJapanNavalYardTech3
+
+
+
+
+
+
+ Command_ConstructJapanMinerFromRefinery
+
+
+
+ Command_NanoSwarmHive
+
+
+
+ Command_TelekineticProjectorDevice
+
+
+
+ Command_RepairVehicle
+
+
+
+ Command_ConstructJapanMiner
+ Command_ConstructJapanLightTransportVehicle
+ Command_ConstructJapanAntiInfantryVehicle
+ Command_ConstructJapanAntiVehicleVehicleTech1
+ Command_ConstructJapanAntiAirVehicleTech1
+ Command_ConstructJapanAntiVehicleVehicleTech3
+ Command_ConstructJapanAntiStructureVehicle
+
+ Command_ConstructJapanMCV
+
+
+ Command_PurchaseJapanWarFactoryTech2
+
+
+ Command_PurchaseJapanWarFactoryTech3
+
+
+
+ Command_UnPackJapanRefineryEgg
+
+
+
+ Command_UnPackJapanBarracksEgg
+
+
+
+ Command_UnPackJapanPowerPlantEgg
+
+
+
+ Command_UnPackJapanWarFactoryEgg
+
+
+
+ Command_UnPackJapanNavalYardEgg
+
+
+
+ Command_UnPackJapanTechStructureEgg
+
+
+
+ Command_UnPackJapanSuperWeaponEgg
+
+
+
+ Command_UnPackJapanSuperWeaponAdvancedEgg
+
+
+
+ Command_UnPackJapanBaseDefenseEgg
+
+
+
+ Command_UnPackJapanBaseDefenseAdvancedEgg
+
+
+
+ Command_UnPackJapanConstructionYardEgg
+
+
+
+ Command_JapanEngineerSprint
+ Command_CaptureBuilding
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_JapanAntiInfantryInfantryBonzai
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_JapanScoutInfantryBomb
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_UnPackJapanMCV
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ToggleKamikazeAttackSpecialPower
+ Command_AttackMove
+
+
+
+ Command_JAAS_Transform
+ Command_AttackMove
+
+
+
+ Command_AttackMove
+ Command_JAAVT1_Transform
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_JAIV_Transform
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_DisguisedEvacuate
+ Command_ActivateDisguiseSpecialPower
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_AttackMove
+ Command_ToggleEnergizedArmorSpecialPower
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_AttackMove
+ Command_TriggerRushAttackSpecialPower
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_AttackMove
+ Command_JASV_FireKiCannon
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_SmokeBombSpecialPower
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ActivateTorpedoSpread
+ Command_AttackMove
+
+
+
+ Command_AttackMove
+ Command_ActivateMechaKingShockwave
+
+
+
+
+ Command_PsyonicBlastSpecialPower
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ToggleLockDownGunSpecialPower
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ToggleSpiderHole
+ Command_AttackMove
+ Command_MoveToPositionAndCollect
+
+
+
+ Command_ToggleDeployWeapon
+ Command_MoveToPositionAndCollect
+ Command_AttackMove
+
+
+
+ Command_RammingSpeed
+ Command_AttackMove
+
+
+
+
+ Command_SelectObjectsForChrono
+ Command_SpawnObjectsForChrono
+ Command_ChronoSwapSelect
+ Command_ParticleCannonSuperWeapon
+ Command_PrecisionStrike
+ Command_SatelliteSweep
+ Command_ChronoRiftSelectLvl1
+ Command_ChronoRiftSelectLvl2
+ Command_ChronoRiftSelectLvl3
+ Command_TimeBombLvl1
+ Command_TimeBombLvl2
+ Command_TimeBombLvl3
+ Command_HighTechnology
+ Command_AirPower
+ Command_CryoSatelliteLvl1
+ Command_CryoSatelliteLvl2
+ Command_CryoSatelliteLvl3
+
+
+ Command_IronCurtain
+ Command_VacuumBomb
+ Command_MagneticSingularity
+ Command_MagneticSatelliteLvl1
+ Command_MagneticSatelliteLvl2
+ Command_MagneticSatelliteLvl3
+ Command_OrbitalRefuse_Rank1
+ Command_OrbitalRefuse_Rank2
+ Command_OrbitalRefuse_Rank3
+ Command_DesolatorAirstrikeLvl1
+ Command_DesolatorAirstrikeLvl2
+ Command_DesolatorAirstrikeLvl3
+ Command_TerrorDroneEggs
+ Command_CrushPuppiesPower
+ Command_ProductionKickbacks
+ Command_IrradiateTarget
+
+
+ Command_TelekineticProjectorDevice
+ Command_NanoSwarmHive
+ Command_JapanEnhancedKamikaze
+ Command_FinalSquadron_L1
+ Command_FinalSquadron_L2
+ Command_FinalSquadron_L3
+ Command_PointDefenseDrones
+ Command_JapanNavalPower
+ Command_JapanAdvancedMissilePacks
+ Command_JapanRoboticAssembly
+ Command_JapanAmbush
+ Command_JapanEmperorsResolve_L1
+ Command_JapanEmperorsResolve_L2
+ Command_JapanEmperorsResolve_L3
+ Command_JapanBalloonAttack_L1
+ Command_JapanBalloonAttack_L2
+ Command_JapanBalloonAttack_L3
+
+
+
+
+
+ Command_CAMPAlliedBomberDrop1
+ Command_CAMPAlliedBomberDrop2
+
+
+
+ Command_ConstructJapanScoutInfantry
+ Command_ConstructJapanAntiInfantryInfantry
+ Command_ConstructJapanAntiVehicleInfantry
+ Command_ConstructJapanEngineer
+ Command_ConstructJapanInfiltrationInfantry
+ Command_ConstructJapanAntiVehicleInfantryTech3
+ Command_ConstructJapanCommandoTech1
+
+ Command_PurchaseJapanBarracksTech2
+ Command_PurchaseJapanBarracksTech3
+
+ Command_ConstructJapanMiner
+ Command_ConstructJapanLightTransportVehicle
+ Command_ConstructJapanAntiInfantryVehicle
+ Command_ConstructJapanAntiVehicleVehicleTech1
+ Command_ConstructJapanAntiAirVehicleTech1
+ Command_ConstructJapanAntiVehicleVehicleTech3
+ Command_ConstructJapanAntiStructureVehicle
+ Command_ConstructJapanMCV
+
+ Command_PurchaseJapanWarFactoryTech2
+ Command_PurchaseJapanWarFactoryTech3
+
+
+
+
+
+
+ Command_ActivateEjectPassengersSpecialPower
+
+
+
+ Command_AttackMove
+ Command_TriggerEmperorRushAttackSpecialPower
+
+
+
+ Command_ConstructSovietMiner
+ Command_ConstructSovietSurveyor
+ Command_ConstructSovietScoutVehicle
+ Command_ConstructSovietAntiInfantryVehicle
+ Command_ConstructSovietAntiAirShip_Ground
+ Command_ConstructSovietAntiVehicleVehicleTech2
+ Command_ConstructSovietAntiStructureVehicle
+ Command_ConstructSovietAntiVehicleVehicleTech3
+ Command_ConstructSovietMCV
+ Command_RepairVehicle
+
+
+
+ Command_Evacuate
+ Command_AttackMove
+
+
+
+ Command_ActivateEjectPassengersSpecialPower
+ Command_ReturnToAirfield
+ Command_AttackMove
+
+
+
+
+
diff --git a/public/SpecialPowerTemplates.xml b/public/SpecialPowerTemplates.xml
new file mode 100644
index 0000000..634e8a5
--- /dev/null
+++ b/public/SpecialPowerTemplates.xml
@@ -0,0 +1,1649 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SovietConstructionYard
+
+
+
+
+
+ SovietConstructionYard
+
+ PlayerTech_Soviet_MagneticSatellite_Rank_2
+ PlayerTech_Soviet_MagneticSatellite_Rank_3
+
+
+
+ SovietConstructionYard
+
+ PlayerTech_Soviet_MagneticSatellite_Rank_3
+
+
+
+ SovietConstructionYard
+
+
+
+
+
+
+
+
+
+
+
+ NanoSwarmHiveEffect
+
+
+
+
+
+
+
+
+
+
+ AlliedConstructionYard
+
+ PlayerTech_Allied_TimeBomb_Rank2
+ PlayerTech_Allied_TimeBomb_Rank3
+
+
+
+
+ AlliedConstructionYard
+
+ PlayerTech_Allied_TimeBomb_Rank3
+
+
+
+
+ AlliedConstructionYard
+
+
+
+
+
+
+ AlliedConstructionYard
+
+ PlayerTech_Allied_CryoSatellite_Rank2
+ PlayerTech_Allied_CryoSatellite_Rank3
+
+
+
+
+
+ AlliedConstructionYard
+
+ PlayerTech_Allied_CryoSatellite_Rank3
+
+
+
+
+
+ AlliedConstructionYard
+
+
+
+
+
+ AlliedConstructionYard
+
+
+
+
+
+ AlliedConstructionYard
+
+
+
+
+
+
+
+ AlliedTimeBombLvl1
+ AlliedTimeBombLvl2
+ AlliedTimeBombLvl3
+
+
+
+
+
+ AlliedTimeBombLvl1
+ AlliedTimeBombLvl2
+ AlliedTimeBombLvl3
+ NanoSwarmHiveEffect
+
+
+ AlliedConstructionYard
+
+
+
+
+ PlayerTech_Allied_ChronoRift_Rank2
+ PlayerTech_Allied_ChronoRift_Rank3
+
+
+ PlayerTech_Allied_ChronoRift_Rank2
+ PlayerTech_Allied_ChronoRift_Rank3
+
+
+
+ PlayerTech_Allied_ChronoRift_Rank3
+
+
+ PlayerTech_Allied_ChronoRift_Rank3
+
+
+
+
+
+
+
+
+
+
+ AlliedTimeBombLvl1
+ AlliedTimeBombLvl2
+ AlliedTimeBombLvl3
+
+
+ AlliedConstructionYard
+
+
+
+
+
+ AlliedTimeBombLvl1
+ AlliedTimeBombLvl2
+ AlliedTimeBombLvl3
+
+
+ AlliedConstructionYard
+
+
+
+
+
+ AlliedTimeBombLvl1
+ AlliedTimeBombLvl2
+ AlliedTimeBombLvl3
+
+
+
+
+
+
+ AlliedTimeBombLvl1
+ AlliedTimeBombLvl2
+ AlliedTimeBombLvl3
+
+
+
+
+
+ AlliedConstructionYard
+
+
+
+
+
+ AlliedConstructionYard
+
+
+
+
+
+
+
+ AlliedBaseDefenseAdvanced
+
+
+
+
+
+ AlliedConstructionYard
+
+
+
+
+
+
+
+
+
+
+
+ SovietBaseDefenseAdvanced
+
+
+
+
+
+ SovietConstructionYard
+
+ PlayerTech_Soviet_OrbitalRefuse_Rank2
+ PlayerTech_Soviet_OrbitalRefuse_Rank3
+
+
+
+ SovietConstructionYard
+
+ PlayerTech_Soviet_OrbitalRefuse_Rank3
+
+
+
+ SovietConstructionYard
+
+
+
+
+
+ SovietConstructionYard
+
+
+
+
+
+ SovietConstructionYard
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AlliedCommandoTech1
+ AlliedInfiltrationInfantry
+ AlliedScoutInfantry
+ AlliedAntiNavalScout
+
+ SovietCommandoTech1
+ SovietSurveyor
+ SovietScoutInfantry
+ SovietScoutVehicle
+
+ JapanCommandoTech1
+ JapanInfiltrationInfantry
+ JapanScoutInfantry
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SovietScoutVehicle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NanoSwarmHiveEffect
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OreNode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ JapanConstructionYard
+
+
+
+
+
+
+ JapanConstructionYard
+
+
+
+
+
+
+ JapanConstructionYard
+
+ PlayerTech_Japan_EmperorsRage_Rank2
+ PlayerTech_Japan_EmperorsRage_Rank3
+
+
+
+
+ JapanConstructionYard
+
+ PlayerTech_Japan_EmperorsRage_Rank3
+
+
+
+
+ JapanConstructionYard
+
+
+
+
+
+ JapanConstructionYard
+
+ PlayerTech_Japan_BalloonAttack_Rank2
+ PlayerTech_Japan_BalloonAttack_Rank3
+
+
+
+
+ JapanConstructionYard
+
+ PlayerTech_Japan_BalloonAttack_Rank3
+
+
+
+
+ JapanConstructionYard
+
+
+
+
+
+ JapanConstructionYard
+
+
+
+
+
+ SovietConstructionYard
+
+
+
+
+
+ JapanConstructionYard
+
+
+
+
+
+ JapanConstructionYard
+
+
+
+
+
+
+
+ SovietConstructionYard
+
+
+
+
+
+
+
+
+
+ SovietConstructionYard
+
+ PlayerTech_Soviet_DesolatorBomb_Rank2
+ PlayerTech_Soviet_DesolatorBomb_Rank3
+
+
+
+ SovietConstructionYard
+
+ PlayerTech_Soviet_DesolatorBomb_Rank3
+
+
+
+ SovietConstructionYard
+
+
+
+
+
+
+ SovietConstructionYard
+
+
+
+
+
+
+
+ JapanPointDefenseDrone
+
+
+ JapanConstructionYard
+
+
+
+
+
+ JapanConstructionYard
+
+ PlayerTech_Japan_FinalSquadron_Rank2
+ PlayerTech_Japan_FinalSquadron_Rank3
+
+
+
+ JapanConstructionYard
+
+ PlayerTech_Japan_FinalSquadron_Rank3
+
+
+
+ JapanConstructionYard
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/UnitAbilityButtonTemplates.xml b/public/UnitAbilityButtonTemplates.xml
new file mode 100644
index 0000000..582abcf
--- /dev/null
+++ b/public/UnitAbilityButtonTemplates.xml
@@ -0,0 +1,1088 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ButtonStateAbilityAlliedEngineerHeal
+ ButtonStateAbilityAlliedEngineerHealOff
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ButtonStateToggleMirageField
+ ButtonStateToggleMirageFieldOff
+
+
+
+
+
+
+
+ ButtonStateToggleTargetPainter
+ ButtonStateToggleTargetPainterOff
+
+
+
+
+
+
+
+ ButtonStateToggleMagneticArmor
+ ButtonStateToggleMagneticArmorOff
+
+
+
+
+
+
+
+ ButtonStateToggleShortCircuit
+ ButtonStateToggleShortCircuitOff
+
+
+
+
+
+
+
+ ButtonStateToggleShortCircuitTank
+ ButtonStateToggleShortCircuitTankOff
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ButtonStateToggleRiotShield
+ ButtonStateToggleRiotShieldOff
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ButtonStateToggleLeechBeam
+ ButtonStateToggleLeechBeamOff
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ButtonStateToggleRadarLock
+ ButtonStateToggleRadarLockOff
+
+
+
+
+
+
+
+ ButtonStateToggleWeaponScrambler
+ ButtonStateToggleWeaponScramblerOff
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ButtonStateAbilityRapidLaunch
+ ButtonStateAbilityRapidLaunchOff
+
+
+
+
+
+
+
+ ButtonStateAbilityMIRV
+ ButtonStateAbilityMIRVOff
+
+
+
+
+
+
+
+ ButtonStateAbilityMolotovCocktail
+ ButtonStateAbilityMolotovCocktailOff
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ButtonStateAbilityToggleLockDownGun
+ ButtonStateAbilityToggleLockDownGunOff
+
+
+
+
+
+
+
+ ButtonStateAbilityMagneticBomb
+ ButtonStateAbilityMagneticBombOff
+
+
+
+
+
+
+
+ ButtonStateToggleBinaryWeapon
+ ButtonStateToggleBinaryWeaponOff
+
+
+
+
+
+
+
+ ButtonStateToggleArmorUp
+ ButtonStateToggleArmorUpOff
+
+
+
+
+
+
+
+ ButtonStateToggleAfterburners
+ ButtonStateToggleAfterburnersOff
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ButtonStateToggleHarpoon
+ ButtonStateToggleHarpoonOff
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ButtonStateJAIV_Transform
+ ButtonStateJAIV_TransformOff
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ButtonStateSpecialPowerJAAVT1_Transform
+ ButtonStateSpecialPowerJAAVT1_TransformOff
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ButtonStateJapanBaseDefenseToggleBinaryWeapon
+ ButtonStateJapanBaseDefenseToggleBinaryWeaponOff
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ButtonStateSpecialPowerToggleDeployWeapon
+ ButtonStateSpecialPowerToggleDeployWeaponOff
+
+
+
+
+
+
+
+ ButtonStateSpecialPowerJAASTransform
+ ButtonStateSpecialPowerJAASTransformOff
+
+
+
+
+
+
+
+ ButtonStateSpecialPowerToggleSpiderHole
+ ButtonStateSpecialPowerToggleSpiderHoleOff
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/RankContestant.vue b/src/components/RankContestant.vue
index 584de10..fee3d67 100644
--- a/src/components/RankContestant.vue
+++ b/src/components/RankContestant.vue
@@ -73,7 +73,7 @@ const fetchRankData = async () => {
if (!playerStats[playerName]) {
playerStats[playerName] = {
username: playerName,
- faction: player.faction || player.team_name || '',
+ faction: player.faction || player.team_name || '',
totalWin: 0,
totalLose: 0,
totalPoints: 0,
@@ -113,7 +113,7 @@ const fetchRankData = async () => {
bracket_type: 'winners',
score: `${player.totalWin}胜${player.totalLose}负 (${player.totalPoints.toFixed(1)}分)`,
rounds: player.rounds.join(',')
- }))
+ }))
console.log('RankContestant 最终排名结果:', sortedPlayers)
rankData.value = sortedPlayers
diff --git a/src/components/TournamentBracket.vue b/src/components/TournamentBracket.vue
index ee34c40..1529427 100644
--- a/src/components/TournamentBracket.vue
+++ b/src/components/TournamentBracket.vue
@@ -165,16 +165,16 @@ const generateSingleEliminationBracket = async () => {
// 获取所有存在的轮次
const existingRounds = Object.keys(roundsData).map(Number).sort((a, b) => a - b);
console.log('存在的轮次:', existingRounds);
-
+
// 生成所有轮次的比赛
for (const round of existingRounds) {
- if (round === 0) {
+ if (round === 0) {
await generateRound0Matches(roundsData[round] || []);
- } else {
+ } else {
await generateRoundMatches(round, roundsData[round] || []);
+ }
}
- }
-
+
// 更新总轮数为实际存在的最大轮次
if (existingRounds.length > 0) {
tournament.value.rounds = Math.max(...existingRounds);
@@ -182,131 +182,176 @@ const generateSingleEliminationBracket = async () => {
};
const generateRound0Matches = async (round0Data) => {
- const matches = [];
- const usedPlayers = new Set();
-
+ const matches = [];
+ const usedPlayers = new Set();
+
// 处理正常配对
for (const player of round0Data) {
- if (usedPlayers.has(player.id)) continue;
-
- const rivalName = player.rival_name;
- const isBye = rivalName === '轮空' || rivalName === 'bye' || rivalName === 'BYE' || rivalName === 'Bye';
- const isPending = rivalName === '待定' || rivalName === 'pending' || rivalName === 'PENDING' || rivalName === 'Pending';
-
+ if (usedPlayers.has(player.id)) continue;
+
+ const rivalName = player.rival_name;
+ const isBye = rivalName === '轮空' || rivalName === 'bye' || rivalName === 'BYE' || rivalName === 'Bye';
+ const isPending = rivalName === '待定' || rivalName === 'pending' || rivalName === 'PENDING' || rivalName === 'Pending';
+
if (isBye || isPending) continue;
- // 寻找对手
+ // 寻找对手
const rival = round0Data.find(p =>
- p.sign_name === rivalName && p.id !== player.id && !usedPlayers.has(p.id)
- );
-
- if (rival) {
- const matchNumber = matches.length + 1;
- matches.push({
+ p.sign_name === rivalName && p.id !== player.id && !usedPlayers.has(p.id)
+ );
+
+ if (rival) {
+ const matchNumber = matches.length + 1;
+ matches.push({
id: `0-${matchNumber}`,
round: 0,
- matchNumber: matchNumber,
+ matchNumber: matchNumber,
participant1: { id: player.id, name: player.sign_name },
participant2: { id: rival.id, name: rival.sign_name },
- winner: null,
- score1: parseInt(player.win || 0),
- score2: parseInt(rival.win || 0),
- decided: false
- });
- usedPlayers.add(player.id);
- usedPlayers.add(rival.id);
- }
- }
-
+ winner: null,
+ score1: parseInt(player.win || 0),
+ score2: parseInt(rival.win || 0),
+ decided: false
+ });
+ usedPlayers.add(player.id);
+ usedPlayers.add(rival.id);
+ }
+ }
+
// 处理轮空
for (const player of round0Data) {
- if (usedPlayers.has(player.id)) continue;
-
- const rivalName = player.rival_name;
- const isBye = rivalName === '轮空' || rivalName === 'bye' || rivalName === 'BYE' || rivalName === 'Bye';
-
- if (isBye) {
- const matchNumber = matches.length + 1;
- matches.push({
+ if (usedPlayers.has(player.id)) continue;
+
+ const rivalName = player.rival_name;
+ const isBye = rivalName === '轮空' || rivalName === 'bye' || rivalName === 'BYE' || rivalName === 'Bye';
+
+ if (isBye) {
+ const matchNumber = matches.length + 1;
+ matches.push({
id: `0-${matchNumber}`,
round: 0,
- matchNumber: matchNumber,
+ matchNumber: matchNumber,
participant1: { id: player.id, name: player.sign_name },
- participant2: null,
+ participant2: null,
winner: { id: player.id, name: player.sign_name },
- score1: 1,
- score2: 0,
- decided: true
- });
- usedPlayers.add(player.id);
- }
- }
-
- tournament.value.matches.push(...matches);
+ score1: 1,
+ score2: 0,
+ decided: true
+ });
+ usedPlayers.add(player.id);
+ }
+ }
+
+ tournament.value.matches.push(...matches);
};
const generateRoundMatches = async (round, roundData) => {
- const matches = [];
- const usedPlayers = new Set();
-
+ const matches = [];
+ const usedPlayers = new Set();
+
console.log(`生成第${round}轮比赛,数据:`, roundData);
+ console.log(`第${round}轮详细数据:`, roundData.map(p => ({
+ id: p.id,
+ sign_name: p.sign_name,
+ rival_name: p.rival_name,
+ status: p.status,
+ win: p.win,
+ lose: p.lose
+ })));
// 处理已有数据的比赛
for (const player of roundData) {
- if (usedPlayers.has(player.id)) continue;
-
- const rivalName = player.rival_name;
- const isBye = rivalName === '轮空' || rivalName === 'bye' || rivalName === 'BYE' || rivalName === 'Bye';
- const isPending = rivalName === '待定' || rivalName === 'pending' || rivalName === 'PENDING' || rivalName === 'Pending';
-
- if (isBye || isPending) continue;
-
- // 寻找对手
- const rival = roundData.find(p =>
- p.sign_name === rivalName && p.id !== player.id && !usedPlayers.has(p.id)
- );
-
- if (rival) {
- const matchNumber = matches.length + 1;
- matches.push({
- id: `${round}-${matchNumber}`,
- round: round,
- matchNumber: matchNumber,
- participant1: { id: player.id, name: player.sign_name },
- participant2: { id: rival.id, name: rival.sign_name },
- winner: null,
- score1: parseInt(player.win || 0),
- score2: parseInt(rival.win || 0),
- decided: false
- });
- usedPlayers.add(player.id);
- usedPlayers.add(rival.id);
+ if (usedPlayers.has(player.id)) {
+ console.log(`玩家 ${player.sign_name} (ID: ${player.id}) 已被使用,跳过`);
+ continue;
}
- }
-
+
+ const rivalName = player.rival_name;
+ const isBye = rivalName === '轮空' || rivalName === 'bye' || rivalName === 'BYE' || rivalName === 'Bye';
+ const isPending = rivalName === '待定' || rivalName === 'pending' || rivalName === 'PENDING' || rivalName === 'Pending';
+
+ if (isBye || isPending) {
+ console.log(`玩家 ${player.sign_name} 的对手是 ${rivalName},跳过正常比赛处理`);
+ continue;
+ }
+
+ // 寻找对手
+ const rival = roundData.find(p =>
+ p.sign_name === rivalName && p.id !== player.id && !usedPlayers.has(p.id)
+ );
+
+ if (rival) {
+ const matchNumber = matches.length + 1;
+
+ // 判断比赛是否已完成
+ const playerStatus = player.status;
+ const rivalStatus = rival.status;
+ const playerWin = parseInt(player.win || 0);
+ const rivalWin = parseInt(rival.win || 0);
+
+ // 如果任一玩家有胜场,说明比赛已完成
+ const isDecided = playerWin > 0 || rivalWin > 0 ||
+ playerStatus === 'win' || playerStatus === 'lose' ||
+ rivalStatus === 'win' || rivalStatus === 'lose';
+
+ // 确定获胜者
+ let winner = null;
+ if (playerStatus === 'win' || playerWin > rivalWin) {
+ winner = { id: player.id, name: player.sign_name };
+ } else if (rivalStatus === 'win' || rivalWin > playerWin) {
+ winner = { id: rival.id, name: rival.sign_name };
+ }
+
+ console.log(`创建比赛 ${matchNumber}: ${player.sign_name} vs ${rival.sign_name}`, {
+ playerStatus,
+ rivalStatus,
+ isDecided,
+ winner: winner?.name,
+ playerData: { id: player.id, name: player.sign_name, status: player.status, win: player.win, lose: player.lose },
+ rivalData: { id: rival.id, name: rival.sign_name, status: rival.status, win: rival.win, lose: rival.lose }
+ });
+
+ matches.push({
+ id: `${round}-${matchNumber}`,
+ round: round,
+ matchNumber: matchNumber,
+ participant1: { id: player.id, name: player.sign_name },
+ participant2: { id: rival.id, name: rival.sign_name },
+ winner: winner,
+ score1: parseInt(player.win || 0),
+ score2: parseInt(rival.win || 0),
+ decided: isDecided
+ });
+ usedPlayers.add(player.id);
+ usedPlayers.add(rival.id);
+ } else {
+ console.log(`未找到玩家 ${player.sign_name} 的对手 ${rivalName}`);
+ }
+ }
+
// 处理轮空
for (const player of roundData) {
if (usedPlayers.has(player.id)) continue;
-
- const rivalName = player.rival_name;
- const isBye = rivalName === '轮空' || rivalName === 'bye' || rivalName === 'BYE' || rivalName === 'Bye';
-
- if (isBye) {
- const matchNumber = matches.length + 1;
- matches.push({
- id: `${round}-${matchNumber}`,
- round: round,
- matchNumber: matchNumber,
- participant1: { id: player.id, name: player.sign_name },
- participant2: null,
- winner: { id: player.id, name: player.sign_name },
- score1: 1,
- score2: 0,
- decided: true
- });
- usedPlayers.add(player.id);
- }
- }
+
+ const rivalName = player.rival_name;
+ const isBye = rivalName === '轮空' || rivalName === 'bye' || rivalName === 'BYE' || rivalName === 'Bye';
+
+ if (isBye) {
+ const matchNumber = matches.length + 1;
+ matches.push({
+ id: `${round}-${matchNumber}`,
+ round: round,
+ matchNumber: matchNumber,
+ participant1: { id: player.id, name: player.sign_name },
+ participant2: null,
+ winner: { id: player.id, name: player.sign_name },
+ score1: 1,
+ score2: 0,
+ decided: true
+ });
+ usedPlayers.add(player.id);
+ }
+ }
// 处理待定的玩家(单独显示)
for (const player of roundData) {
@@ -317,43 +362,84 @@ const generateRoundMatches = async (round, roundData) => {
if (isPending) {
const matchNumber = matches.length + 1;
+
+ // 判断比赛是否已完成(如果玩家状态是win或lose,或者有胜场,说明比赛已完成)
+ const playerWin = parseInt(player.win || 0);
+ const isDecided = player.status === 'win' || player.status === 'lose' || playerWin > 0;
+ let winner = null;
+ if (player.status === 'win' || playerWin > 0) {
+ winner = { id: player.id, name: player.sign_name };
+ }
+
+ console.log(`创建待定比赛 ${matchNumber}: ${player.sign_name} vs 待定`, {
+ playerStatus: player.status,
+ isDecided,
+ winner: winner?.name
+ });
+
matches.push({
id: `${round}-${matchNumber}`,
round: round,
matchNumber: matchNumber,
participant1: { id: player.id, name: player.sign_name },
participant2: null,
- winner: null,
+ winner: winner,
score1: parseInt(player.win || 0),
score2: 0,
- decided: false
+ decided: isDecided
});
usedPlayers.add(player.id);
}
}
console.log(`第${round}轮生成比赛:`, matches);
- tournament.value.matches.push(...matches);
+ tournament.value.matches.push(...matches);
};
// 检查比赛顺序是否合法
const isMatchOrderValid = (match) => {
+ console.log('检查比赛顺序:', {
+ matchId: match.id,
+ round: match.round,
+ matchNumber: match.matchNumber
+ });
+
const currentRoundMatches = tournament.value.matches
.filter(m => m.round === match.round)
.sort((a, b) => a.matchNumber - b.matchNumber);
+ console.log('当前轮次所有比赛:', currentRoundMatches.map(m => ({
+ id: m.id,
+ matchNumber: m.matchNumber,
+ decided: m.decided,
+ participant1: m.participant1?.name,
+ participant2: m.participant2?.name,
+ winner: m.winner?.name,
+ score1: m.score1,
+ score2: m.score2
+ })));
+
const currentMatchIndex = currentRoundMatches.findIndex(m => m.id === match.id);
+ console.log('当前比赛索引:', currentMatchIndex);
// 检查是否有更小编号的比赛未完成
for (let i = 0; i < currentMatchIndex; i++) {
const previousMatch = currentRoundMatches[i];
+ console.log(`检查第${i + 1}场比赛:`, {
+ id: previousMatch.id,
+ matchNumber: previousMatch.matchNumber,
+ decided: previousMatch.decided
+ });
+
if (!previousMatch.decided) {
+ console.log(`第${previousMatch.matchNumber}场比赛未完成,阻止进行第${match.matchNumber}场比赛`);
return false;
}
}
+ console.log('比赛顺序验证通过');
return true;
};
@@ -474,6 +560,14 @@ const handlePlayerAdvancement = async (match) => {
};
const confirmScore = async (match) => {
+ console.log('确认比分,比赛信息:', {
+ id: match.id,
+ round: match.round,
+ matchNumber: match.matchNumber,
+ participant1: match.participant1?.name,
+ participant2: match.participant2?.name
+ });
+
// 检查比赛顺序
if (!isMatchOrderValid(match)) {
const currentRoundMatches = tournament.value.matches
@@ -483,6 +577,12 @@ const confirmScore = async (match) => {
const currentMatchIndex = currentRoundMatches.findIndex(m => m.id === match.id);
const previousMatch = currentRoundMatches[currentMatchIndex - 1];
+ console.log('比赛顺序验证失败,阻止的比赛:', {
+ currentMatch: match.matchNumber,
+ previousMatch: previousMatch?.matchNumber,
+ previousMatchId: previousMatch?.id
+ });
+
errorDialog.value = {
visible: true,
message: `请先完成第${previousMatch.matchNumber}场比赛`
@@ -531,16 +631,16 @@ const confirmScore = async (match) => {
await addSignUpResult(newRecord);
console.log(`轮空玩家 ${p1Data.sign_name} 晋级到第${nextRound}轮`);
}
- } catch (error) {
+ } catch (error) {
console.error('处理轮空晋级失败:', error);
- }
+ }
nextTick(() => drawD3Bracket());
await loadTournamentData();
emit('refreshPlayers');
return;
- }
-
+ }
+
// 验证比分
const s1 = Number(match.score1);
const s2 = Number(match.score2);
@@ -670,9 +770,9 @@ const drawD3Bracket = () => {
const roundMatches = tournament.value.matches
.filter(m => m.round === round)
.sort((a, b) => a.matchNumber - b.matchNumber);
-
+
console.log(`绘制第${round}轮比赛:`, roundMatches);
-
+
const matchesInRound = roundMatches.length;
const roundX = round * (matchWidth + roundGap);
const roundStartY = (maxMatchesInRound * (matchHeight + matchGap) - matchesInRound * (matchHeight + matchGap)) / 2;
diff --git a/src/router/index.js b/src/router/index.js
index e3ab972..8e96794 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -49,13 +49,15 @@ const routes = [
path: 'weapon-match',
name: 'WeaponMatch',
component: () => import('@/views/weapon/WeaponMatch.vue'),
- meta: { requiresAuth: true, requiredPrivilege: ['lv-admin','lv-mod'] }
+ // meta: { requiresAuth: true, requiredPrivilege: ['lv-admin','lv-mod'] }
+ meta: { requiresAuth: true}
},
{
path: 'configEditor',
name: 'ConfigEditor',
component: () => import('@/views/index/ConfigEditor.vue'),
- meta: { requiresAuth: true, requiredPrivilege: ['lv-admin','lv-mod'] }
+ // meta: { requiresAuth: true, requiredPrivilege: ['lv-admin','lv-mod'] }
+ meta: { requiresAuth: true}
},
{
path: 'competition',
@@ -102,13 +104,13 @@ const routes = [
path: 'PIC2TGA',
name: 'PIC2TGA',
component: () => import('@/views/index/PIC2TGA.vue'),
- meta: { requiredPrivilege: ['lv-admin','lv-mod','lv-map','lv-competitor'] }
+ // meta: { requiredPrivilege: ['lv-admin','lv-mod','lv-map','lv-competitor'] }
},
{
path: 'terrainGenerate',
name: 'TerrainGenerate',
component: () => import('@/views/index/TerrainGenerate.vue'),
- meta: { requiredPrivilege: ['lv-admin','lv-mod','lv-map','lv-competitor'] }
+ // meta: { requiredPrivilege: ['lv-admin','lv-mod','lv-map','lv-competitor'] }
}
]
},
diff --git a/src/views/index.vue b/src/views/index.vue
index bba370c..611dd92 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -437,12 +437,12 @@ function handlePasswordChangeError(errorMessage) {
:message="errorDialogMessage"
@close="errorDialogVisible = false"
/>
-
+
+
+
+
+
+
-
-