diff --git a/Cargo.lock b/Cargo.lock index 0ca98a3..5fc1d38 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1781,6 +1781,8 @@ dependencies = [ "polariton", "polariton_auth", "polariton_server", + "serde", + "serde_json", "tokio", ] diff --git a/Cargo.toml b/Cargo.toml index cb8ea3a..bfd512b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,3 +21,5 @@ env_logger = "0.11" clap = { version = "4.5", features = [ "derive" ] } polariton = { version = "0.2", path = "../polariton", features = [ "tokio-async" ] } polariton_server = { version = "0.2", path = "../polariton/server", features = [ "tokio-async" ] } +serde = { version = "1.0", features = [ "derive" ] } +serde_json = "1.0" diff --git a/assets/robocraft/asset_notes.md b/assets/robocraft/asset_notes.md new file mode 100644 index 0000000..b522266 --- /dev/null +++ b/assets/robocraft/asset_notes.md @@ -0,0 +1,9 @@ +# Asset Retrieval + +[UABE](https://github.com/SeriousCache/UABE) is pretty great for this. + +## Cubes + +Cube data is contained in `cubetypelist_steam` as a sub-asset (UABE dumps the actual asset as `unnamed asset-CAB_e94be3f69d8179602fb05811b2ba5579-4300557138948789011`). + +I've written a Python script to process that asset (exported as JSON) into the JSON format I've designed. diff --git a/assets/robocraft/cubes.json b/assets/robocraft/cubes.json new file mode 100644 index 0000000..6918a36 --- /dev/null +++ b/assets/robocraft/cubes.json @@ -0,0 +1,8271 @@ +{ + "cubes": { + "MediumCube hexCode:0d8ae0c6 intCode:227205318": { + "id": 227205318, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": { + "MASS": "15 Kg", + "ARMOR": "1,026", + "CPU LOAD": "1 pFLOP", + "ROBOT RANKING": "7626.00", + "OVERCLOCK": "Armor cubes do not Overclock." + }, + "description": "Tougher and Heavier than lower Tier Armor.", + "size": "T2", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 1026 + }, + "spriteName": "Medium_Cube", + "nameStrKey": "strMediumCubeName", + "mirrorCubeId": "", + "hexId": "0d8ae0c6" + }, + "MediumEdge hexCode:0d95c05c intCode:227917916": { + "id": 227917916, + "info": { + "category": "NotAFunctionalItem", + "placements": 54, + "stats": { + "MASS": "7.5 Kg", + "ARMOR": "1,026", + "CPU LOAD": "1 pFLOP", + "ROBOT RANKING": "7626.00", + "OVERCLOCK": "Armor cubes do not Overclock." + }, + "description": "Tougher and Heavier than lower Tier Armor.", + "size": "T2", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 1026 + }, + "spriteName": "Medium_Edge", + "nameStrKey": "strMediumEdgeName", + "mirrorCubeId": "", + "hexId": "0d95c05c" + }, + "MediumCorner hexCode:73230aec intCode:1931676396": { + "id": 1931676396, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": { + "MASS": "4.95 Kg", + "ARMOR": "1,026", + "CPU LOAD": "1 pFLOP", + "ROBOT RANKING": "7626.00", + "OVERCLOCK": "Armor cubes do not Overclock." + }, + "description": "Tougher and Heavier than lower Tier Armor.", + "size": "T2", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 1026 + }, + "spriteName": "Medium_Corner", + "nameStrKey": "strMediumCornerName", + "mirrorCubeId": "", + "hexId": "73230aec" + }, + "MediumInner hexCode:d4297ab0 intCode:3559488176": { + "id": 3559488176, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": { + "MASS": "10.05 Kg", + "ARMOR": "1,026", + "CPU LOAD": "1 pFLOP", + "ROBOT RANKING": "7626.00", + "OVERCLOCK": "Armor cubes do not Overclock." + }, + "description": "Tougher and Heavier than lower Tier Armor.", + "size": "T2", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 1026 + }, + "spriteName": "Medium_Inner", + "nameStrKey": "strMediumInnerName", + "mirrorCubeId": "", + "hexId": "d4297ab0" + }, + "MediumEdgeRound hexCode:1aa69c2c intCode:447126572": { + "id": 447126572, + "info": { + "category": "NotAFunctionalItem", + "placements": 54, + "stats": {}, + "description": "MediumEdgeRound (447126572_10|1aa69c2c_16) without a description", + "size": "T2", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Medium_Edge_Round", + "nameStrKey": "strMediumEdgeRoundName", + "mirrorCubeId": "", + "hexId": "1aa69c2c" + }, + "MediumCornerRound hexCode:9a57627f intCode:2589418111": { + "id": 2589418111, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "MediumCornerRound (2589418111_10|9a57627f_16) without a description", + "size": "T2", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Medium_Corner_Round", + "nameStrKey": "strMediumCornerRoundName", + "mirrorCubeId": "", + "hexId": "9a57627f" + }, + "MediumInnerRound hexCode:6d82c5ca intCode:1837286858": { + "id": 1837286858, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "MediumInnerRound (1837286858_10|6d82c5ca_16) without a description", + "size": "T2", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Medium_Inner_Round", + "nameStrKey": "strMediumInnerRoundName", + "mirrorCubeId": "", + "hexId": "6d82c5ca" + }, + "MediumEdgeSlope hexCode:5bb7e3bf intCode:1538778047": { + "id": 1538778047, + "info": { + "category": "NotAFunctionalItem", + "placements": 54, + "stats": {}, + "description": "MediumEdgeSlope (1538778047_10|5bb7e3bf_16) without a description", + "size": "T2", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Medium_Edge_Slope", + "nameStrKey": "strMediumEdgeSlopeName", + "mirrorCubeId": "", + "hexId": "5bb7e3bf" + }, + "MediumCornerSlope hexCode:213366fe intCode:557016830": { + "id": 557016830, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "MediumCornerSlope (557016830_10|213366fe_16) without a description", + "size": "T2", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Medium_Corner_Slope", + "nameStrKey": "strMediumCornerSlopeName", + "mirrorCubeId": "", + "hexId": "213366fe" + }, + "MediumInnerSlope hexCode:1d873729 intCode:495400745": { + "id": 495400745, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "MediumInnerSlope (495400745_10|1d873729_16) without a description", + "size": "T2", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Medium_Inner_Slope", + "nameStrKey": "strMediumInnerSlopeName", + "mirrorCubeId": "", + "hexId": "1d873729" + }, + "MediumCone hexCode:5099747a intCode:1352234106": { + "id": 1352234106, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "MediumCone (1352234106_10|5099747a_16) without a description", + "size": "T2", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Medium_Cone", + "nameStrKey": "strMediumConeName", + "mirrorCubeId": "", + "hexId": "5099747a" + }, + "MediumPyramid hexCode:a0224bf0 intCode:2686602224": { + "id": 2686602224, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "MediumPyramid (2686602224_10|a0224bf0_16) without a description", + "size": "T2", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Medium_Pyramid", + "nameStrKey": "strMediumPyramidName", + "mirrorCubeId": "", + "hexId": "a0224bf0" + }, + "HeavyCube hexCode:07629812 intCode:123901970": { + "id": 123901970, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "HeavyCube (123901970_10|07629812_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Heavy_Cube", + "nameStrKey": "strHeavyCubeName", + "mirrorCubeId": "", + "hexId": "07629812" + }, + "HeavyEdge hexCode:49123011 intCode:1225928721": { + "id": 1225928721, + "info": { + "category": "NotAFunctionalItem", + "placements": 54, + "stats": {}, + "description": "HeavyEdge (1225928721_10|49123011_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Heavy_Edge", + "nameStrKey": "strHeavyEdgeName", + "mirrorCubeId": "", + "hexId": "49123011" + }, + "HeavyCorner hexCode:0d3c95d9 intCode:222074329": { + "id": 222074329, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "HeavyCorner (222074329_10|0d3c95d9_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Heavy_Corner", + "nameStrKey": "strHeavyCornerName", + "mirrorCubeId": "", + "hexId": "0d3c95d9" + }, + "HeavyInner hexCode:99a7330b intCode:2577871627": { + "id": 2577871627, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "HeavyInner (2577871627_10|99a7330b_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Heavy_Inner", + "nameStrKey": "strHeavyInnerName", + "mirrorCubeId": "", + "hexId": "99a7330b" + }, + "HeavyEdgeRound hexCode:15f00615 intCode:368051733": { + "id": 368051733, + "info": { + "category": "NotAFunctionalItem", + "placements": 54, + "stats": {}, + "description": "HeavyEdgeRound (368051733_10|15f00615_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Heavy_Edge_Round", + "nameStrKey": "strHeavyEdgeRoundName", + "mirrorCubeId": "", + "hexId": "15f00615" + }, + "HeavyCornerRound hexCode:800d4786 intCode:2148353926": { + "id": 2148353926, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "HeavyCornerRound (2148353926_10|800d4786_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Heavy_Corner_Round", + "nameStrKey": "strHeavyCornerRoundName", + "mirrorCubeId": "", + "hexId": "800d4786" + }, + "HeavyInnerRound hexCode:27aeb83a intCode:665761850": { + "id": 665761850, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "HeavyInnerRound (665761850_10|27aeb83a_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Heavy_Inner_Round", + "nameStrKey": "strHeavyInnerRoundName", + "mirrorCubeId": "", + "hexId": "27aeb83a" + }, + "HeavyEdgeSlope hexCode:4f8afd7c intCode:1334508924": { + "id": 1334508924, + "info": { + "category": "NotAFunctionalItem", + "placements": 54, + "stats": {}, + "description": "HeavyEdgeSlope (1334508924_10|4f8afd7c_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Heavy_Edge_Slope", + "nameStrKey": "strHeavyEdgeSlopeName", + "mirrorCubeId": "", + "hexId": "4f8afd7c" + }, + "HeavyCornerSlope hexCode:da77bcef intCode:3665280239": { + "id": 3665280239, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "HeavyCornerSlope (3665280239_10|da77bcef_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Heavy_Corner_Slope", + "nameStrKey": "strHeavyCornerSlopeName", + "mirrorCubeId": "", + "hexId": "da77bcef" + }, + "HeavyInnerSlope hexCode:7dd44353 intCode:2111062867": { + "id": 2111062867, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "HeavyInnerSlope (2111062867_10|7dd44353_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Heavy_Inner_Slope", + "nameStrKey": "strHeavyInnerSlopeName", + "mirrorCubeId": "", + "hexId": "7dd44353" + }, + "HeavytCone hexCode:e7a1bae3 intCode:3886136035": { + "id": 3886136035, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "HeavytCone (3886136035_10|e7a1bae3_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Heavy_Cone", + "nameStrKey": "strHeavytConeName", + "mirrorCubeId": "", + "hexId": "e7a1bae3" + }, + "HeavyPyramid hexCode:f966f81e intCode:4184274974": { + "id": 4184274974, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "HeavyPyramid (4184274974_10|f966f81e_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Heavy_Pyramid", + "nameStrKey": "strHeavyPyramidName", + "mirrorCubeId": "", + "hexId": "f966f81e" + }, + "LightCube hexCode:758dc189 intCode:1972224393": { + "id": 1972224393, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "LightCube (1972224393_10|758dc189_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Light_Cube", + "nameStrKey": "strLightCubeName", + "mirrorCubeId": "", + "hexId": "758dc189" + }, + "LightEdge hexCode:f7c87b0d intCode:4157111053": { + "id": 4157111053, + "info": { + "category": "NotAFunctionalItem", + "placements": 54, + "stats": {}, + "description": "LightEdge (4157111053_10|f7c87b0d_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Light_Edge", + "nameStrKey": "strLightEdgeName", + "mirrorCubeId": "", + "hexId": "f7c87b0d" + }, + "LightCorner hexCode:504d7def intCode:1347255791": { + "id": 1347255791, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "LightCorner (1347255791_10|504d7def_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Light_Corner", + "nameStrKey": "strLightCornerName", + "mirrorCubeId": "", + "hexId": "504d7def" + }, + "LightInner hexCode:73bbba89 intCode:1941682825": { + "id": 1941682825, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "LightInner (1941682825_10|73bbba89_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Light_Inner", + "nameStrKey": "strLightInnerName", + "mirrorCubeId": "", + "hexId": "73bbba89" + }, + "LightEdgeRound hexCode:76d3abd9 intCode:1993583577": { + "id": 1993583577, + "info": { + "category": "NotAFunctionalItem", + "placements": 54, + "stats": {}, + "description": "LightEdgeRound (1993583577_10|76d3abd9_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Light_Edge_Round", + "nameStrKey": "strLightEdgeRoundName", + "mirrorCubeId": "", + "hexId": "76d3abd9" + }, + "LightCornerRound hexCode:22b169fc intCode:582052348": { + "id": 582052348, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "LightCornerRound (582052348_10|22b169fc_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Light_Corner_Round", + "nameStrKey": "strLightCornerRoundName", + "mirrorCubeId": "", + "hexId": "22b169fc" + }, + "LightInnerRound hexCode:5e1426ca intCode:1578378954": { + "id": 1578378954, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "LightInnerRound (1578378954_10|5e1426ca_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Light_Inner_Round", + "nameStrKey": "strLightInnerRoundName", + "mirrorCubeId": "", + "hexId": "5e1426ca" + }, + "LightEdgeSlope hexCode:b8642d05 intCode:3093572869": { + "id": 3093572869, + "info": { + "category": "NotAFunctionalItem", + "placements": 54, + "stats": {}, + "description": "LightEdgeSlope (3093572869_10|b8642d05_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Light_Edge_Slope", + "nameStrKey": "strLightEdgeSlopeName", + "mirrorCubeId": "", + "hexId": "b8642d05" + }, + "LightCornerSlope hexCode:ec06ef20 intCode:3959877408": { + "id": 3959877408, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "LightCornerSlope (3959877408_10|ec06ef20_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Light_Corner_Slope", + "nameStrKey": "strLightCornerSlopeName", + "mirrorCubeId": "", + "hexId": "ec06ef20" + }, + "LightInnerSlope hexCode:90a3a016 intCode:2426642454": { + "id": 2426642454, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "LightInnerSlope (2426642454_10|90a3a016_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Light_Inner_Slope", + "nameStrKey": "strLightInnerSlopeName", + "mirrorCubeId": "", + "hexId": "90a3a016" + }, + "LightCone hexCode:54c2a1ff intCode:1422041599": { + "id": 1422041599, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "LightCone (1422041599_10|54c2a1ff_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Light_Cone", + "nameStrKey": "strLightConeName", + "mirrorCubeId": "", + "hexId": "54c2a1ff" + }, + "LightPyramid hexCode:34c65f6d intCode:885415789": { + "id": 885415789, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "LightPyramid (885415789_10|34c65f6d_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Light_Pyramid", + "nameStrKey": "strLightPyramidName", + "mirrorCubeId": "", + "hexId": "34c65f6d" + }, + "CompactCube hexCode:5dfcef0e intCode:1576857358": { + "id": 1576857358, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "CompactCube (1576857358_10|5dfcef0e_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "TX_Cube", + "nameStrKey": "strCompactCubeName", + "mirrorCubeId": "", + "hexId": "5dfcef0e" + }, + "CompactEdge hexCode:138c470d intCode:327960333": { + "id": 327960333, + "info": { + "category": "NotAFunctionalItem", + "placements": 54, + "stats": {}, + "description": "CompactEdge (327960333_10|138c470d_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "TX_Edge", + "nameStrKey": "strCompactEdgeName", + "mirrorCubeId": "", + "hexId": "138c470d" + }, + "CompactCorner hexCode:07880166 intCode:126353766": { + "id": 126353766, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "CompactCorner (126353766_10|07880166_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "TX_Corner", + "nameStrKey": "strCompactCornerName", + "mirrorCubeId": "", + "hexId": "07880166" + }, + "CompactInner hexCode:8dbdb005 intCode:2378018821": { + "id": 2378018821, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "CompactInner (2378018821_10|8dbdb005_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "TX_Inner", + "nameStrKey": "strCompactInnerName", + "mirrorCubeId": "", + "hexId": "8dbdb005" + }, + "CompactEdgeRound hexCode:2851c2a7 intCode:676446887": { + "id": 676446887, + "info": { + "category": "NotAFunctionalItem", + "placements": 54, + "stats": {}, + "description": "CompactEdgeRound (676446887_10|2851c2a7_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "TX_Edge_Round", + "nameStrKey": "strCompactEdgeRoundName", + "mirrorCubeId": "", + "hexId": "2851c2a7" + }, + "CompactCornerRound hexCode:6700787b intCode:1728084091": { + "id": 1728084091, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "CompactCornerRound (1728084091_10|6700787b_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "TX_Corner_Round", + "nameStrKey": "strCompactCornerRoundName", + "mirrorCubeId": "", + "hexId": "6700787b" + }, + "CompactInnerRound hexCode:3725a54a intCode:925214026": { + "id": 925214026, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "CompactInnerRound (925214026_10|3725a54a_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "TX_Inner_Round", + "nameStrKey": "strCompactInnerRoundName", + "mirrorCubeId": "", + "hexId": "3725a54a" + }, + "CompactEdgeSlope hexCode:722b39ce intCode:1915435470": { + "id": 1915435470, + "info": { + "category": "NotAFunctionalItem", + "placements": 54, + "stats": {}, + "description": "CompactEdgeSlope (1915435470_10|722b39ce_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "TX_Edge_Slope", + "nameStrKey": "strCompactEdgeSlopeName", + "mirrorCubeId": "", + "hexId": "722b39ce" + }, + "CompactCornerSlope hexCode:7022093f intCode:1881278783": { + "id": 1881278783, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "CompactCornerSlope (1881278783_10|7022093f_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "TX_Corner_Slope", + "nameStrKey": "strCompactCornerSlopeName", + "mirrorCubeId": "", + "hexId": "7022093f" + }, + "CompactInnerSlope hexCode:6d5f5e23 intCode:1834966563": { + "id": 1834966563, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "CompactInnerSlope (1834966563_10|6d5f5e23_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "TX_Inner_Slope", + "nameStrKey": "strCompactInnerSlopeName", + "mirrorCubeId": "", + "hexId": "6d5f5e23" + }, + "CompactCone hexCode:75feeab0 intCode:1979640496": { + "id": 1979640496, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "CompactCone (1979640496_10|75feeab0_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "TX_Cone", + "nameStrKey": "strCompactConeName", + "mirrorCubeId": "", + "hexId": "75feeab0" + }, + "CompactPyramid hexCode:3a5c3d0f intCode:979123471": { + "id": 979123471, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "CompactPyramid (979123471_10|3a5c3d0f_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "TX_Pyramid", + "nameStrKey": "strCompactPyramidName", + "mirrorCubeId": "", + "hexId": "3a5c3d0f" + }, + "GlassCube hexCode:c65a6486 intCode:3327812742": { + "id": 3327812742, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": { + "MASS": "5 Kg", + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.50", + "ARMOR": "55", + "OVERCLOCK": "Chassis cubes do not Overclock" + }, + "description": "A transparent cube made from reinforced space glass used for Robot\ncockpits so the SCU can see out.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 55 + }, + "spriteName": "Glass_Cube", + "nameStrKey": "strGlassCubeName", + "mirrorCubeId": "", + "hexId": "c65a6486" + }, + "GlassEdge hexCode:fc718dad intCode:4235300269": { + "id": 4235300269, + "info": { + "category": "NotAFunctionalItem", + "placements": 54, + "stats": { + "MASS": "4 Kg", + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.50", + "ARMOR": "55", + "OVERCLOCK": "Chassis cubes do not Overclock" + }, + "description": "A transparent cube made from reinforced space glass used for Robot\ncockpits so the SCU can see out.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 55 + }, + "spriteName": "Glass_Edge", + "nameStrKey": "strGlassEdgeName", + "mirrorCubeId": "", + "hexId": "fc718dad" + }, + "GlassCorner hexCode:41445670 intCode:1094997616": { + "id": 1094997616, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": { + "MASS": "3 Kg", + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.50", + "ARMOR": "55", + "OVERCLOCK": "Chassis cubes do not Overclock" + }, + "description": "A transparent cube made from reinforced space glass used for Robot\ncockpits so the SCU can see out.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 55 + }, + "spriteName": "Glass_Corner", + "nameStrKey": "strGlassCornerName", + "mirrorCubeId": "", + "hexId": "41445670" + }, + "GlassInner hexCode:1a933d9f intCode:445857183": { + "id": 445857183, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": { + "MASS": "3.35 Kg", + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.50", + "ARMOR": "55", + "OVERCLOCK": "Chassis cubes do not Overclock" + }, + "description": "A transparent cube made from reinforced space glass used for Robot\ncockpits so the SCU can see out.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 55 + }, + "spriteName": "Glass_Inner", + "nameStrKey": "strGlassInnerName", + "mirrorCubeId": "", + "hexId": "1a933d9f" + }, + "GlassEdgeRound hexCode:d85174e0 intCode:3629216992": { + "id": 3629216992, + "info": { + "category": "NotAFunctionalItem", + "placements": 54, + "stats": {}, + "description": "GlassEdgeRound (3629216992_10|d85174e0_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Glass_Edge_Round", + "nameStrKey": "strGlassEdgeRoundName", + "mirrorCubeId": "", + "hexId": "d85174e0" + }, + "GlassCornerRound hexCode:8de3751a intCode:2380494106": { + "id": 2380494106, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "GlassCornerRound (2380494106_10|8de3751a_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Glass_Corner_Round", + "nameStrKey": "strGlassCornerRoundName", + "mirrorCubeId": "", + "hexId": "8de3751a" + }, + "GlassInnerRound hexCode:b6cb4d81 intCode:3066776961": { + "id": 3066776961, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "GlassInnerRound (3066776961_10|b6cb4d81_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Glass_Inner_Round", + "nameStrKey": "strGlassInnerRoundName", + "mirrorCubeId": "", + "hexId": "b6cb4d81" + }, + "CubewithC6Logo hexCode:c8b8331b intCode:3367514907": { + "id": 3367514907, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "CubewithC6Logo (3367514907_10|c8b8331b_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Cube_with_C6_Logo", + "nameStrKey": "strCubewithC6LogoName", + "mirrorCubeId": "", + "hexId": "c8b8331b" + }, + "CubewithCARBONLetters hexCode:8e9d1f83 intCode:2392661891": { + "id": 2392661891, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "CubewithCARBONLetters (2392661891_10|8e9d1f83_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Cube_with_CARBON_Letters", + "nameStrKey": "strCubewithCARBONLettersName", + "mirrorCubeId": "", + "hexId": "8e9d1f83" + }, + "MediumCubeCardLife hexCode:7bd98d90 intCode:2077855120": { + "id": 2077855120, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "MediumCubeCardLife (2077855120_10|7bd98d90_16) without a description", + "size": "T2", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Medium_Cube_Cardlife", + "nameStrKey": "strMediumCubeCardLifeName", + "mirrorCubeId": "", + "hexId": "7bd98d90" + }, + "MediumEdgeCardLife hexCode:14c3e911 intCode:348383505": { + "id": 348383505, + "info": { + "category": "NotAFunctionalItem", + "placements": 54, + "stats": {}, + "description": "MediumEdgeCardLife (348383505_10|14c3e911_16) without a description", + "size": "T2", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Medium_Edge_Cardlife", + "nameStrKey": "strMediumEdgeCardLifeName", + "mirrorCubeId": "", + "hexId": "14c3e911" + }, + "Rod hexCode:6c66f501 intCode:1818686721": { + "id": 1818686721, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "Rod (1818686721_10|6c66f501_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Rod", + "nameStrKey": "strRodName", + "mirrorCubeId": "", + "hexId": "6c66f501" + }, + "RodShort hexCode:4e3fd53b intCode:1312806203": { + "id": 1312806203, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "RodShort (1312806203_10|4e3fd53b_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Rod_Short", + "nameStrKey": "strRodShortName", + "mirrorCubeId": "", + "hexId": "4e3fd53b" + }, + "RodLong hexCode:cfffcb18 intCode:3489647384": { + "id": 3489647384, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "RodLong (3489647384_10|cfffcb18_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Rod_Long", + "nameStrKey": "strRodLongName", + "mirrorCubeId": "", + "hexId": "cfffcb18" + }, + "RodArc hexCode:92534b2f intCode:2454932271": { + "id": 2454932271, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "RodArc (2454932271_10|92534b2f_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Rod_Arc", + "nameStrKey": "strRodArcName", + "mirrorCubeId": "", + "hexId": "92534b2f" + }, + "RodArcShort hexCode:d4b7bf38 intCode:3568811832": { + "id": 3568811832, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "RodArcShort (3568811832_10|d4b7bf38_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Rod_Arc_Short", + "nameStrKey": "strRodArcShortName", + "mirrorCubeId": "", + "hexId": "d4b7bf38" + }, + "RodDiagonal2D hexCode:1783a6e7 intCode:394503911": { + "id": 394503911, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "RodDiagonal2D (394503911_10|1783a6e7_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Rod_Diagonal_2D", + "nameStrKey": "strRodDiagonal2DName", + "mirrorCubeId": "", + "hexId": "1783a6e7" + }, + "RodDiagonal2DShort hexCode:4e770e02 intCode:1316425218": { + "id": 1316425218, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "RodDiagonal2DShort (1316425218_10|4e770e02_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Rod_Diagonal_Short", + "nameStrKey": "strRodDiagonal2DShortName", + "mirrorCubeId": "", + "hexId": "4e770e02" + }, + "RodDiagonal3D hexCode:dcdf7542 intCode:3705632066": { + "id": 3705632066, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "RodDiagonal3D (3705632066_10|dcdf7542_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Rod_Diagonal_3D", + "nameStrKey": "strRodDiagonal3DName", + "mirrorCubeId": "", + "hexId": "dcdf7542" + }, + "RodPlus hexCode:6859df84 intCode:1750720388": { + "id": 1750720388, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "RodPlus (1750720388_10|6859df84_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Rod_Plus", + "nameStrKey": "strRodPlusName", + "mirrorCubeId": "", + "hexId": "6859df84" + }, + "RodSkewedPlus hexCode:26d81727 intCode:651695911": { + "id": 651695911, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "RodSkewedPlus (651695911_10|26d81727_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Rod_Skewed_Plus", + "nameStrKey": "strRodSkewedPlusName", + "mirrorCubeId": "", + "hexId": "26d81727" + }, + "RodCross hexCode:fe433e2e intCode:4265819694": { + "id": 4265819694, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "RodCross (4265819694_10|fe433e2e_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Rod_Cross", + "nameStrKey": "strRodCrossName", + "mirrorCubeId": "", + "hexId": "fe433e2e" + }, + "Strut hexCode:fe107283 intCode:4262490755": { + "id": 4262490755, + "info": { + "category": "NotAFunctionalItem", + "placements": 0, + "stats": {}, + "description": "Strut (4262490755_10|fe107283_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Strut", + "nameStrKey": "strStrutName", + "mirrorCubeId": "", + "hexId": "fe107283" + }, + "StrutShort hexCode:623da213 intCode:1648206355": { + "id": 1648206355, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "StrutShort (1648206355_10|623da213_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Strut_Short", + "nameStrKey": "strStrutShortName", + "mirrorCubeId": "", + "hexId": "623da213" + }, + "StrutLong hexCode:b7e07454 intCode:3084940372": { + "id": 3084940372, + "info": { + "category": "NotAFunctionalItem", + "placements": 0, + "stats": {}, + "description": "StrutLong (3084940372_10|b7e07454_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Strut_Long", + "nameStrKey": "strStrutLongName", + "mirrorCubeId": "", + "hexId": "b7e07454" + }, + "StrutArc hexCode:2c4fe423 intCode:743433251": { + "id": 743433251, + "info": { + "category": "NotAFunctionalItem", + "placements": 0, + "stats": {}, + "description": "StrutArc (743433251_10|2c4fe423_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Strut_Arc", + "nameStrKey": "strStrutArcName", + "mirrorCubeId": "", + "hexId": "2c4fe423" + }, + "StrutSlice hexCode:7ebdb029 intCode:2126360617": { + "id": 2126360617, + "info": { + "category": "NotAFunctionalItem", + "placements": 0, + "stats": {}, + "description": "StrutSlice (2126360617_10|7ebdb029_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Strut_Slice", + "nameStrKey": "strStrutSliceName", + "mirrorCubeId": "", + "hexId": "7ebdb029" + }, + "StrutSliceShort hexCode:9b813c56 intCode:2608938070": { + "id": 2608938070, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "StrutSliceShort (2608938070_10|9b813c56_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Strut_Slice_Short", + "nameStrKey": "strStrutSliceShortName", + "mirrorCubeId": "", + "hexId": "9b813c56" + }, + "StrutRamp hexCode:ee696771 intCode:3999885169": { + "id": 3999885169, + "info": { + "category": "NotAFunctionalItem", + "placements": 0, + "stats": {}, + "description": "StrutRamp (3999885169_10|ee696771_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Strut_Ramp", + "nameStrKey": "strStrutRampName", + "mirrorCubeId": "", + "hexId": "ee696771" + }, + "StrutDiagonal2D hexCode:00e039f7 intCode:14694903": { + "id": 14694903, + "info": { + "category": "NotAFunctionalItem", + "placements": 0, + "stats": {}, + "description": "StrutDiagonal2D (14694903_10|00e039f7_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Strut_Diagonal_2D", + "nameStrKey": "strStrutDiagonal2DName", + "mirrorCubeId": "", + "hexId": "00e039f7" + }, + "StrutDiagonal2DShort hexCode:d45022d3 intCode:3562021587": { + "id": 3562021587, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "StrutDiagonal2DShort (3562021587_10|d45022d3_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Strut_Diagonal_Short", + "nameStrKey": "strStrutDiagonal2DShortName", + "mirrorCubeId": "", + "hexId": "d45022d3" + }, + "StrutDiagonal3DL hexCode:78ed11ec intCode:2028802540": { + "id": 2028802540, + "info": { + "category": "NotAFunctionalItem", + "placements": 0, + "stats": {}, + "description": "StrutDiagonal3DL (2028802540_10|78ed11ec_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Strut_Diagonal_3D_Left", + "nameStrKey": "strStrutDiagonal3DLName", + "mirrorCubeId": "776147a9", + "hexId": "78ed11ec" + }, + "StrutDiagonal3DR hexCode:776147a9 intCode:2002864041": { + "id": 2002864041, + "info": { + "category": "NotAFunctionalItem", + "placements": 0, + "stats": {}, + "description": "StrutDiagonal3DR (2002864041_10|776147a9_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Strut_Diagonal_3D_Right", + "nameStrKey": "strStrutDiagonal3DRName", + "mirrorCubeId": "78ed11ec", + "hexId": "776147a9" + }, + "StrutPlus hexCode:1e77c077 intCode:511164535": { + "id": 511164535, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "StrutPlus (511164535_10|1e77c077_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Strut_Plus", + "nameStrKey": "strStrutPlusName", + "mirrorCubeId": "", + "hexId": "1e77c077" + }, + "StrutSkewedPlus hexCode:5aaf711f intCode:1521447199": { + "id": 1521447199, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "StrutSkewedPlus (1521447199_10|5aaf711f_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Strut_Skewed_Plus", + "nameStrKey": "strStrutSkewedPlusName", + "mirrorCubeId": "", + "hexId": "5aaf711f" + }, + "StrutCross hexCode:2eeeebb5 intCode:787409845": { + "id": 787409845, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "StrutCross (787409845_10|2eeeebb5_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Strut_Cross", + "nameStrKey": "strStrutCrossName", + "mirrorCubeId": "", + "hexId": "2eeeebb5" + }, + "Helium hexCode:c052c94a intCode:3226650954": { + "id": 3226650954, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": { + "LIFT": "336,000N", + "ARMOR": "606", + "CPU LOAD": "18 pFLOPS", + "ROBOT RANKING": "137,261.00" + }, + "description": "Armored and lighter than air, so can be used to make flying Robots.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 18, + "health": 606 + }, + "spriteName": "Helium", + "nameStrKey": "strHeliumName", + "mirrorCubeId": "", + "hexId": "c052c94a" + }, + "T0SteeringWheel hexCode:37959eb5 intCode:932552373": { + "id": 932552373, + "info": { + "category": "Wheel", + "placements": 2, + "stats": {}, + "description": "T0SteeringWheel (932552373_10|37959eb5_16) without a description", + "size": "T0", + "type": "Movement", + "active": true + }, + "spriteName": "Steering_Wheel_Tiny", + "nameStrKey": "strT0SteeringWheelName", + "mirrorCubeId": "", + "hexId": "37959eb5" + }, + "T0Wheel hexCode:6befc670 intCode:1810876016": { + "id": 1810876016, + "info": { + "category": "Wheel", + "placements": 2, + "stats": {}, + "description": "T0Wheel (1810876016_10|6befc670_16) without a description", + "size": "T0", + "type": "Movement", + "active": true + }, + "spriteName": "Wheel_Tiny", + "nameStrKey": "strT0WheelName", + "mirrorCubeId": "", + "hexId": "6befc670" + }, + "T1SteeringWheel hexCode:0a1f8ccf intCode:169839823": { + "id": 169839823, + "info": { + "category": "Wheel", + "placements": 2, + "stats": {}, + "description": "T1SteeringWheel (169839823_10|0a1f8ccf_16) without a description", + "size": "T1", + "type": "Movement", + "active": true + }, + "spriteName": "Steering_Wheel_Small", + "nameStrKey": "strT1SteeringWheelName", + "mirrorCubeId": "", + "hexId": "0a1f8ccf" + }, + "T1Wheel hexCode:f8b8b9dd intCode:4172855773": { + "id": 4172855773, + "info": { + "category": "Wheel", + "placements": 2, + "stats": {}, + "description": "T1Wheel (4172855773_10|f8b8b9dd_16) without a description", + "size": "T1", + "type": "Movement", + "active": true + }, + "spriteName": "Wheel_Small", + "nameStrKey": "strT1WheelName", + "mirrorCubeId": "", + "hexId": "f8b8b9dd" + }, + "T2SteeringWheel hexCode:b0598626 intCode:2958657062": { + "id": 2958657062, + "info": { + "category": "Wheel", + "placements": 2, + "stats": {}, + "description": "T2SteeringWheel (2958657062_10|b0598626_16) without a description", + "size": "T2", + "type": "Movement", + "active": true + }, + "spriteName": "Steering_Wheel_Medium", + "nameStrKey": "strT2SteeringWheelName", + "mirrorCubeId": "", + "hexId": "b0598626" + }, + "T2Wheel hexCode:ae4bb256 intCode:2924196438": { + "id": 2924196438, + "info": { + "category": "Wheel", + "placements": 2, + "stats": {}, + "description": "T2Wheel (2924196438_10|ae4bb256_16) without a description", + "size": "T2", + "type": "Movement", + "active": true + }, + "spriteName": "Wheel_Medium", + "nameStrKey": "strT2WheelName", + "mirrorCubeId": "", + "hexId": "ae4bb256" + }, + "T3SteeringWheel hexCode:462d2e13 intCode:1177366035": { + "id": 1177366035, + "info": { + "category": "Wheel", + "placements": 2, + "stats": {}, + "description": "T3SteeringWheel (1177366035_10|462d2e13_16) without a description", + "size": "T3", + "type": "Movement", + "active": true + }, + "spriteName": "Steering_Wheel_Large", + "nameStrKey": "strT3SteeringWheelName", + "mirrorCubeId": "", + "hexId": "462d2e13" + }, + "T3Wheel hexCode:b48a1b01 intCode:3028949761": { + "id": 3028949761, + "info": { + "category": "Wheel", + "placements": 2, + "stats": {}, + "description": "T3Wheel (3028949761_10|b48a1b01_16) without a description", + "size": "T3", + "type": "Movement", + "active": true + }, + "spriteName": "Wheel_Large", + "nameStrKey": "strT3WheelName", + "mirrorCubeId": "", + "hexId": "b48a1b01" + }, + "T4SteeringWheel hexCode:149105ca intCode:345048522": { + "id": 345048522, + "info": { + "category": "Wheel", + "placements": 2, + "stats": {}, + "description": "T4SteeringWheel (345048522_10|149105ca_16) without a description", + "size": "T4", + "type": "Movement", + "active": true + }, + "spriteName": "Steering_Wheel_Huge", + "nameStrKey": "strT4SteeringWheelName", + "mirrorCubeId": "", + "hexId": "149105ca" + }, + "T4Wheel hexCode:48eb5d0f intCode:1223384335": { + "id": 1223384335, + "info": { + "category": "Wheel", + "placements": 2, + "stats": {}, + "description": "T4Wheel (1223384335_10|48eb5d0f_16) without a description", + "size": "T4", + "type": "Movement", + "active": true + }, + "spriteName": "Wheel_Huge", + "nameStrKey": "strT4WheelName", + "mirrorCubeId": "", + "hexId": "48eb5d0f" + }, + "T4SteeringWheelCardLife hexCode:01eb245b intCode:32187483": { + "id": 32187483, + "info": { + "category": "Wheel", + "placements": 2, + "stats": {}, + "description": "T4SteeringWheelCardLife (32187483_10|01eb245b_16) without a description", + "size": "T4", + "type": "Movement", + "active": true + }, + "spriteName": "T4_Wheel_Cardlife", + "nameStrKey": "strT4SteeringWheelCardLifeName", + "mirrorCubeId": "", + "hexId": "01eb245b" + }, + "T4WheelCardLife hexCode:7d7ba3f9 intCode:2105254905": { + "id": 2105254905, + "info": { + "category": "Wheel", + "placements": 2, + "stats": {}, + "description": "T4WheelCardLife (2105254905_10|7d7ba3f9_16) without a description", + "size": "T4", + "type": "Movement", + "active": true + }, + "spriteName": "T4_Wheel_Cardlife", + "nameStrKey": "strT4WheelCardLifeName", + "mirrorCubeId": "", + "hexId": "7d7ba3f9" + }, + "T5SteeringWheel hexCode:02df9a33 intCode:48208435": { + "id": 48208435, + "info": { + "category": "Wheel", + "placements": 2, + "stats": {}, + "description": "T5SteeringWheel (48208435_10|02df9a33_16) without a description", + "size": "T5", + "type": "Movement", + "active": true + }, + "spriteName": "Mega_Wheel_Steering", + "nameStrKey": "strT5SteeringWheelName", + "mirrorCubeId": "", + "hexId": "02df9a33" + }, + "T5Wheel hexCode:c4c3bd27 intCode:3301162279": { + "id": 3301162279, + "info": { + "category": "Wheel", + "placements": 2, + "stats": {}, + "description": "T5Wheel (3301162279_10|c4c3bd27_16) without a description", + "size": "T5", + "type": "Movement", + "active": true + }, + "spriteName": "Mega_Wheel", + "nameStrKey": "strT5WheelName", + "mirrorCubeId": "", + "hexId": "c4c3bd27" + }, + "T1TankTrack hexCode:f1752e70 intCode:4050988656": { + "id": 4050988656, + "info": { + "category": "TankTrack", + "placements": 2, + "stats": {}, + "description": "T1TankTrack (4050988656_10|f1752e70_16) without a description", + "size": "T1", + "type": "Movement", + "active": true + }, + "spriteName": "Tank_Track_Tiny", + "nameStrKey": "strT1TankTrackName", + "mirrorCubeId": "", + "hexId": "f1752e70" + }, + "T2TankTrack hexCode:64cc6601 intCode:1691117057": { + "id": 1691117057, + "info": { + "category": "TankTrack", + "placements": 2, + "stats": { + "MASS": "11786 Kg", + "ARMOR": "2,572", + "CPU LOAD": "36 pFLOP", + "ROBOT RANKING": "708.59", + "MAX SPEED": "88 mph", + "OVERCLOCKER": "Max Speed increases up to 180%." + }, + "description": "Powerful movement type which includes multiple connection points.", + "size": "T2", + "type": "Movement", + "active": true, + "cpu": 36, + "health": 2572 + }, + "spriteName": "Tank_Track_Small", + "nameStrKey": "strT2TankTrackName", + "mirrorCubeId": "", + "hexId": "64cc6601" + }, + "T3TankTrack hexCode:0af7e408 intCode:184017928": { + "id": 184017928, + "info": { + "category": "TankTrack", + "placements": 2, + "stats": { + "MASS": "20357 Kg", + "ARMOR": "6,782", + "CPU LOAD": "40 pFLOP", + "ROBOT RANKING": "5,739.56", + "MAX SPEED": "90 mph", + "OVERCLOCKER": "Max Speed increases up to 180%." + }, + "description": "Powerful movement type which includes multiple connection points.", + "size": "T3", + "type": "Movement", + "active": true, + "cpu": 40, + "health": 6782 + }, + "spriteName": "Tank_Track_Medium", + "nameStrKey": "strT3TankTrackName", + "mirrorCubeId": "", + "hexId": "0af7e408" + }, + "T4TankTrack hexCode:00576a34 intCode:5728820": { + "id": 5728820, + "info": { + "category": "TankTrack", + "placements": 2, + "stats": { + "MASS": "28929 Kg", + "ARMOR": "14,818", + "CPU LOAD": "44 pFLOP", + "ROBOT RANKING": "46,025.55", + "MAX SPEED": "92 mph", + "OVERCLOCKER": "Max Speed increases up to 180%." + }, + "description": "Powerful movement type which includes multiple connection points.", + "size": "T4", + "type": "Movement", + "active": true, + "cpu": 44, + "health": 14818 + }, + "spriteName": "Tank_Track_Large", + "nameStrKey": "strT4TankTrackName", + "mirrorCubeId": "", + "hexId": "00576a34" + }, + "T5TankTrack hexCode:19b4f590 intCode:431289744": { + "id": 431289744, + "info": { + "category": "TankTrack", + "placements": 2, + "stats": { + "MASS": "37500 Kg", + "ARMOR": "26,319", + "CPU LOAD": "48 pFLOP", + "ROBOT RANKING": "366,028.68", + "MAX SPEED": "94 mph", + "OVERCLOCKER": "Max Speed increases up to 180%." + }, + "description": "Powerful movement type which includes multiple connection points.", + "size": "T5", + "type": "Movement", + "active": true, + "cpu": 48, + "health": 26319 + }, + "spriteName": "Tank_Track_Huge", + "nameStrKey": "strT5TankTrackName", + "mirrorCubeId": "", + "hexId": "19b4f590" + }, + "T0MechLeg hexCode:b6c71d1e intCode:3066502430": { + "id": 3066502430, + "info": { + "category": "MechLeg", + "placements": 2, + "stats": {}, + "description": "T0MechLeg (3066502430_10|b6c71d1e_16) without a description", + "size": "T0", + "type": "Movement", + "active": true + }, + "spriteName": "Mech_Leg_Tiny", + "nameStrKey": "strT0MechLegName", + "mirrorCubeId": "", + "hexId": "b6c71d1e" + }, + "T1MechLeg hexCode:048a9b04 intCode:76192516": { + "id": 76192516, + "info": { + "category": "MechLeg", + "placements": 2, + "stats": {}, + "description": "T1MechLeg (76192516_10|048a9b04_16) without a description", + "size": "T1", + "type": "Movement", + "active": true + }, + "spriteName": "Mech_Leg_Small", + "nameStrKey": "strT1MechLegName", + "mirrorCubeId": "", + "hexId": "048a9b04" + }, + "T2MechLeg hexCode:6ab1190d intCode:1789991181": { + "id": 1789991181, + "info": { + "category": "MechLeg", + "placements": 2, + "stats": {}, + "description": "T2MechLeg (1789991181_10|6ab1190d_16) without a description", + "size": "T2", + "type": "Movement", + "active": true + }, + "spriteName": "Mech_Leg_Medium", + "nameStrKey": "strT2MechLegName", + "mirrorCubeId": "", + "hexId": "6ab1190d" + }, + "T3MechLeg hexCode:60119731 intCode:1611765553": { + "id": 1611765553, + "info": { + "category": "MechLeg", + "placements": 2, + "stats": {}, + "description": "T3MechLeg (1611765553_10|60119731_16) without a description", + "size": "T3", + "type": "Movement", + "active": true + }, + "spriteName": "Mech_Leg_Large", + "nameStrKey": "strT3MechLegName", + "mirrorCubeId": "", + "hexId": "60119731" + }, + "T4MechLeg hexCode:922f6341 intCode:2452579137": { + "id": 2452579137, + "info": { + "category": "MechLeg", + "placements": 2, + "stats": {}, + "description": "T4MechLeg (2452579137_10|922f6341_16) without a description", + "size": "T4", + "type": "Movement", + "active": true + }, + "spriteName": "Mech_Leg_Huge", + "nameStrKey": "strT4MechLegName", + "mirrorCubeId": "", + "hexId": "922f6341" + }, + "T5MechLeg hexCode:f6c88297 intCode:4140335767": { + "id": 4140335767, + "info": { + "category": "MechLeg", + "placements": 2, + "stats": {}, + "description": "T5MechLeg (4140335767_10|f6c88297_16) without a description", + "size": "T5", + "type": "Movement", + "active": true + }, + "spriteName": "Mega_Mech_Leg", + "nameStrKey": "strT5MechLegName", + "mirrorCubeId": "", + "hexId": "f6c88297" + }, + "T3SprinterLeg hexCode:c767dd68 intCode:3345472872": { + "id": 3345472872, + "info": { + "category": "SprinterLeg", + "placements": 2, + "stats": {}, + "description": "T3SprinterLeg (3345472872_10|c767dd68_16) without a description", + "size": "T3", + "type": "Movement", + "active": true + }, + "spriteName": "Sprinter_Leg_Small", + "nameStrKey": "strT3SprinterLegName", + "mirrorCubeId": "", + "hexId": "c767dd68" + }, + "T4SprinterLeg hexCode:45aebff7 intCode:1169080311": { + "id": 1169080311, + "info": { + "category": "SprinterLeg", + "placements": 2, + "stats": {}, + "description": "T4SprinterLeg (1169080311_10|45aebff7_16) without a description", + "size": "T4", + "type": "Movement", + "active": true + }, + "spriteName": "Sprinter_Leg_Large", + "nameStrKey": "strT4SprinterLegName", + "mirrorCubeId": "", + "hexId": "45aebff7" + }, + "T4SprinterLegCarbon6 hexCode:93783fc5 intCode:2474131397": { + "id": 2474131397, + "info": { + "category": "SprinterLeg", + "placements": 2, + "stats": {}, + "description": "T4SprinterLegCarbon6 (2474131397_10|93783fc5_16) without a description", + "size": "T4", + "type": "Movement", + "active": true + }, + "spriteName": "Sprinter_Leg_Large_Carbon_6", + "nameStrKey": "strT4SprinterLegCarbon6Name", + "mirrorCubeId": "", + "hexId": "93783fc5" + }, + "T3InsectLeg hexCode:079bf4af intCode:127661231": { + "id": 127661231, + "info": { + "category": "InsectLeg", + "placements": 2, + "stats": { + "CPU": "42 pFLOPS", + "ROBOT RANKING": "43,933", + "ARMOR": "12,447", + "CARRYING CAPACITY": "1,191 Kg", + "MASS": "12.5 Kg" + }, + "description": "Faster, more heavily armored, and can carry more mass than the T7\nLeg.", + "size": "T3", + "type": "Movement", + "active": true, + "health": 12447 + }, + "spriteName": "Insect_Leg_Large", + "nameStrKey": "strT3InsectLegName", + "mirrorCubeId": "", + "hexId": "079bf4af" + }, + "T3InsectLegBladed hexCode:9f3a3d02 intCode:2671394050": { + "id": 2671394050, + "info": { + "category": "InsectLeg", + "placements": 2, + "stats": { + "CPU": "40 pFLOPS", + "ROBOT RANKING": "9,766", + "ARMOR": "9,958", + "CARRYING CAPACITY": "1,050 Kg", + "MASS": "12.5 Kg" + }, + "description": "Wolf Legs spike into terrain allowing Robots to scale sheer cliff\nfaces and hang upside down. They can also jump and crouch.", + "size": "T3", + "type": "Movement", + "active": true, + "health": 9958 + }, + "spriteName": "Insect_Leg_Large_Overwolf", + "nameStrKey": "strT3InsectLegBladedName", + "mirrorCubeId": "", + "hexId": "9f3a3d02" + }, + "T4InsectLeg hexCode:637741e5 intCode:1668760037": { + "id": 1668760037, + "info": { + "category": "InsectLeg", + "placements": 2, + "stats": { + "CPU": "46 pFLOPS", + "ROBOT RANKING": "350,777", + "ARMOR": "22,108", + "CARRYING CAPACITY": "1,500 Kg", + "MASS": "15 Kg" + }, + "description": "Can carry extremely heavily armored Robots up sheer faces at fantastic\nspeeds.", + "size": "T4", + "type": "Movement", + "active": true, + "health": 22108 + }, + "spriteName": "Insect_Leg_Huge", + "nameStrKey": "strT4InsectLegName", + "mirrorCubeId": "", + "hexId": "637741e5" + }, + "T4InsectLegSpider hexCode:342d70cd intCode:875393229": { + "id": 875393229, + "info": { + "category": "InsectLeg", + "placements": 2, + "stats": {}, + "description": "T4InsectLegSpider (875393229_10|342d70cd_16) without a description", + "size": "T4", + "type": "Movement", + "active": true + }, + "spriteName": "Insect_Leg_Huge_Spider", + "nameStrKey": "strT4InsectLegSpiderName", + "mirrorCubeId": "", + "hexId": "342d70cd" + }, + "T2Ski hexCode:14b4c4e3 intCode:347391203": { + "id": 347391203, + "info": { + "category": "Ski", + "placements": 2, + "stats": { + "ARMOR": "1170", + "CPU LOAD": "25 pFLOP", + "ROBOT RANKING": "1329", + "MASS": "10 Kg" + }, + "description": "A Straight Ski that allows light Robots to slide quickly over terrain.", + "size": "T2", + "type": "Movement", + "active": true, + "cpu": 25, + "health": 1170 + }, + "spriteName": "Ski", + "nameStrKey": "strT2SkiName", + "mirrorCubeId": "", + "hexId": "14b4c4e3" + }, + "T2SteeringSki hexCode:b79e9a9b intCode:3080624795": { + "id": 3080624795, + "info": { + "category": "Ski", + "placements": 2, + "stats": { + "ARMOR": "1170", + "CPU LOAD": "25 pFLOP", + "ROBOT RANKING": "1329", + "MASS": "10 Kg" + }, + "description": "A Steering Ski that allows light Robots to slide quickly over terrain.", + "size": "T2", + "type": "Movement", + "active": true, + "cpu": 25, + "health": 1170 + }, + "spriteName": "Steering_Ski", + "nameStrKey": "strT2SteeringSkiName", + "mirrorCubeId": "", + "hexId": "b79e9a9b" + }, + "T0Hover hexCode:6e5ee8c2 intCode:1851713730": { + "id": 1851713730, + "info": { + "category": "Hover", + "placements": 2, + "stats": { + "TOP SPEED": "62 MPH", + "MAX LIFT": "395,136N", + "ROBOT RANKING": "56.70", + "ARMOR": "321", + "CPU LOAD": "21 pFLOPS", + "MASS": "5 Kg" + }, + "description": "A higher performance and more heavily armoured version of the T1\nHover Blade.", + "size": "T0", + "type": "Movement", + "active": true, + "cpu": 21, + "health": 321 + }, + "spriteName": "Hover_Blade_Tiny", + "nameStrKey": "strT0HoverName", + "mirrorCubeId": "", + "hexId": "6e5ee8c2" + }, + "T1Hover hexCode:bd0103b0 intCode:3170960304": { + "id": 3170960304, + "info": { + "category": "Hover", + "placements": 2, + "stats": { + "TOP SPEED": "65 MPH", + "MAX LIFT": "618,240N", + "ROBOT RANKING": "452.71", + "ARMOR": "1,003", + "CPU LOAD": "23 pFLOPS", + "MASS": "7.5 Kg" + }, + "description": "A higher performance and more heavily armoured version of the T3\nHover Blade.", + "size": "T1", + "type": "Movement", + "active": true, + "cpu": 23, + "health": 1003 + }, + "spriteName": "Hover_Blade_Small", + "nameStrKey": "strT1HoverName", + "mirrorCubeId": "", + "hexId": "bd0103b0" + }, + "T2Hover hexCode:61c01a62 intCode:1639979618": { + "id": 1639979618, + "info": { + "category": "Hover", + "placements": 2, + "stats": { + "TOP SPEED": "68 MPH", + "MAX LIFT": "817,152N", + "ROBOT RANKING": "3587.00", + "ARMOR": "2,645", + "CPU LOAD": "25 pFLOPS", + "MASS": "10 Kg" + }, + "description": "A higher performance and more heavily armoured version of the T5\nHover Blade.", + "size": "T2", + "type": "Movement", + "active": true, + "cpu": 25, + "health": 2645 + }, + "spriteName": "Hover_Blade_Medium", + "nameStrKey": "strT2HoverName", + "mirrorCubeId": "", + "hexId": "61c01a62" + }, + "T3Hover hexCode:1bbed555 intCode:465491285": { + "id": 465491285, + "info": { + "category": "Hover", + "placements": 2, + "stats": { + "TOP SPEED": "71 MPH", + "MAX LIFT": "999,744N", + "ROBOT RANKING": "28,243.00", + "ARMOR": "5,779", + "CPU LOAD": "27 pFLOPS", + "MASS": "12.5 Kg" + }, + "description": "A higher performance and more heavily armoured version of the T7\nHover Blade.", + "size": "T3", + "type": "Movement", + "active": true, + "cpu": 27, + "health": 5779 + }, + "spriteName": "Hover_Blade_Large", + "nameStrKey": "strT3HoverName", + "mirrorCubeId": "", + "hexId": "1bbed555" + }, + "T4Hover hexCode:c77fcc87 intCode:3347041415": { + "id": 3347041415, + "info": { + "category": "Hover", + "placements": 2, + "stats": { + "TOP SPEED": "74 MPH", + "MAX LIFT": "1,152,000N", + "ROBOT RANKING": "221,142.00", + "ARMOR": "10,264", + "CPU LOAD": "29 pFLOPS", + "MASS": "15 Kg" + }, + "description": "A higher performance and more heavily armoured version of the T9\nHover Blade.", + "size": "T4", + "type": "Movement", + "active": true, + "cpu": 29, + "health": 10264 + }, + "spriteName": "Hover_Blade_Huge", + "nameStrKey": "strT4HoverName", + "mirrorCubeId": "", + "hexId": "c77fcc87" + }, + "T5Hover hexCode:e4989890 intCode:3835205776": { + "id": 3835205776, + "info": { + "category": "Hover", + "placements": 2, + "stats": { + "TOP SPEED": "74 MPH", + "MAX LIFT": "2,139,426N", + "ROBOT RANKING": "11,118,121", + "ARMOR": "17,417", + "CPU LOAD": "200 pFLOPS", + "MASS": "50 Kg" + }, + "description": "A Massive Massive Hoverblade.", + "size": "T5", + "type": "Movement", + "active": true, + "cpu": 200, + "health": 17417 + }, + "spriteName": "Mega_Hover_Blade", + "nameStrKey": "strT5HoverName", + "mirrorCubeId": "", + "hexId": "e4989890" + }, + "T1Thruster hexCode:325a4b05 intCode:844778245": { + "id": 844778245, + "info": { + "category": "Thruster", + "placements": 2, + "stats": { + "THRUST": "90,667N", + "CPU LOAD": "11 pFLOPS", + "ROBOT RANKING": "29.70", + "ARMOR": "164", + "MASS": "5 Kg" + }, + "description": "A more powerful and more armoured version of the T1 Thruster.", + "size": "T1", + "type": "Movement", + "active": true, + "cpu": 11, + "health": 164 + }, + "spriteName": "Thruster_Tiny", + "nameStrKey": "strT1ThrusterName", + "mirrorCubeId": "", + "hexId": "325a4b05" + }, + "T2Thruster hexCode:94e59de0 intCode:2498076128": { + "id": 2498076128, + "info": { + "category": "Thruster", + "placements": 2, + "stats": { + "THRUST": "176,000N", + "CPU LOAD": "13 pFLOPS", + "ROBOT RANKING": "255.88", + "ARMOR": "514", + "MASS": "7.5 Kg" + }, + "description": "A more powerful and more armoured version of the T3 Thruster.", + "size": "T2", + "type": "Movement", + "active": true, + "cpu": 13, + "health": 514 + }, + "spriteName": "Thruster_Small", + "nameStrKey": "strT2ThrusterName", + "mirrorCubeId": "", + "hexId": "94e59de0" + }, + "T3Thruster hexCode:e06375b2 intCode:3764614578": { + "id": 3764614578, + "info": { + "category": "Thruster", + "placements": 2, + "stats": { + "THRUST": "261,333N", + "CPU LOAD": "15 pFLOPS", + "ROBOT RANKING": "2152.00", + "ARMOR": "1356", + "MASS": "10 Kg" + }, + "description": "A more powerful and more armoured version of the T5 Thruster.", + "size": "T3", + "type": "Movement", + "active": true, + "cpu": 15, + "health": 1356 + }, + "spriteName": "Thruster_Medium", + "nameStrKey": "strT3ThrusterName", + "mirrorCubeId": "", + "hexId": "e06375b2" + }, + "T4Thruster hexCode:eac3fb8e intCode:3938712462": { + "id": 3938712462, + "info": { + "category": "Thruster", + "placements": 2, + "stats": { + "THRUST": "346,667N", + "CPU LOAD": "17 pFLOPS", + "ROBOT RANKING": "17,783.00", + "ARMOR": "2964", + "MASS": "12.5 Kg" + }, + "description": "A more powerful and more armoured version of the T7 Thruster.", + "size": "T4", + "type": "Movement", + "active": true, + "cpu": 17, + "health": 2964 + }, + "spriteName": "Thruster_Large", + "nameStrKey": "strT4ThrusterName", + "mirrorCubeId": "", + "hexId": "eac3fb8e" + }, + "T5Thruster hexCode:b105d593 intCode:2969949587": { + "id": 2969949587, + "info": { + "category": "Thruster", + "placements": 2, + "stats": { + "THRUST": "432,000N", + "CPU LOAD": "19 pFLOPS", + "ROBOT RANKING": "144,886.00", + "ARMOR": "5264", + "MASS": "15 Kg" + }, + "description": "A more powerful and more armoured version of the T9 Thruster.", + "size": "T5", + "type": "Movement", + "active": true, + "cpu": 19, + "health": 5264 + }, + "spriteName": "Thruster_Huge", + "nameStrKey": "strT5ThrusterName", + "mirrorCubeId": "", + "hexId": "b105d593" + }, + "T5ThrusterCarbon6 hexCode:384998ef intCode:944347375": { + "id": 944347375, + "info": { + "category": "Thruster", + "placements": 2, + "stats": {}, + "description": "T5ThrusterCarbon6 (944347375_10|384998ef_16) without a description", + "size": "T5", + "type": "Movement", + "active": true + }, + "spriteName": "Thruster_Huge_Carbon_6", + "nameStrKey": "strT5ThrusterCarbon6Name", + "mirrorCubeId": "", + "hexId": "384998ef" + }, + "T3Propeller hexCode:c3df94b7 intCode:3286209719": { + "id": 3286209719, + "info": { + "category": "Propeller", + "placements": 2, + "stats": {}, + "description": "T3Propeller (3286209719_10|c3df94b7_16) without a description", + "size": "T3", + "type": "Movement", + "active": true + }, + "spriteName": "propeller_small", + "nameStrKey": "strT3PropellerName", + "mirrorCubeId": "", + "hexId": "c3df94b7" + }, + "T4Propeller hexCode:a5f8dace intCode:2784549582": { + "id": 2784549582, + "info": { + "category": "Propeller", + "placements": 2, + "stats": {}, + "description": "T4Propeller (2784549582_10|a5f8dace_16) without a description", + "size": "T4", + "type": "Movement", + "active": true + }, + "spriteName": "propeller_large", + "nameStrKey": "strT4PropellerName", + "mirrorCubeId": "", + "hexId": "a5f8dace" + }, + "T2Rotor hexCode:eb45664f intCode:3947193935": { + "id": 3947193935, + "info": { + "category": "Rotor", + "placements": 62, + "stats": { + "MASS": "12.5 Kg", + "CPU LOAD": "31 pFLOPS", + "ROBOT RANKING": "4448", + "ARMOR": "4476" + }, + "description": "Stable hover flight at high altitude, with multiple connections for\nadded toughness.", + "size": "T2", + "type": "Movement", + "active": true, + "cpu": 31, + "health": 4476 + }, + "spriteName": "Rotor_Blade_Medium", + "nameStrKey": "strT2RotorName", + "mirrorCubeId": "", + "hexId": "eb45664f" + }, + "T3Rotor hexCode:e1e5e873 intCode:3789940851": { + "id": 3789940851, + "info": { + "category": "Rotor", + "placements": 62, + "stats": { + "MASS": "17.5 Kg", + "CPU LOAD": "34 pFLOPS", + "ROBOT RANKING": "35565", + "ARMOR": "11,558" + }, + "description": "Stable hover flight at high altitude, with multiple connections for\nadded toughness.", + "size": "T3", + "type": "Movement", + "active": true, + "cpu": 34, + "health": 11558 + }, + "spriteName": "Rotor_Blade_Large", + "nameStrKey": "strT3RotorName", + "mirrorCubeId": "", + "hexId": "e1e5e873" + }, + "T4Rotor hexCode:6b758638 intCode:1802864184": { + "id": 1802864184, + "info": { + "category": "Rotor", + "placements": 62, + "stats": { + "MASS": "22.5 Kg", + "CPU LOAD": "36 pFLOPS", + "ROBOT RANKING": "274522", + "ARMOR": "23,687" + }, + "description": "Stable hover flight at high altitude, with multiple connections for\nadded toughness.", + "size": "T4", + "type": "Movement", + "active": true, + "cpu": 36, + "health": 23687 + }, + "spriteName": "Rotor_Blade_Huge", + "nameStrKey": "strT4RotorName", + "mirrorCubeId": "", + "hexId": "6b758638" + }, + "T2Wing hexCode:ed482724 intCode:3980928804": { + "id": 3980928804, + "info": { + "category": "Wing", + "placements": 2, + "stats": { + "CPU": "23pFLOPS", + "ROBOT RANKING": "453.00", + "ARMOR": "1,029", + "LOAD CAPACITY PER WING": "545Kg", + "MASS": "7.5 Kg" + }, + "description": "Aerofoil stabilises aircraft and allows for midflight agility control\nand tight manouvres.", + "size": "T2", + "type": "Movement", + "active": true, + "health": 1029 + }, + "spriteName": "Wing_Small", + "nameStrKey": "strT2WingName", + "mirrorCubeId": "", + "hexId": "ed482724" + }, + "T3Wing hexCode:8373a52d intCode:2205394221": { + "id": 2205394221, + "info": { + "category": "Wing", + "placements": 2, + "stats": { + "CPU": "25 pFLOPS", + "ROBOT RANKING": "3,587.00", + "ARMOR": "2,713", + "LOAD CAPACITY PER WING": "753.8 Kg", + "MASS": "10 Kg" + }, + "description": "Aerofoil stabilises aircraft and allows for midflight agility control\nand tight manouvres. Has more armour and Load capacity than the T5 Wings", + "size": "T3", + "type": "Movement", + "active": true, + "health": 2713 + }, + "spriteName": "Wing_Medium", + "nameStrKey": "strT3WingName", + "mirrorCubeId": "", + "hexId": "8373a52d" + }, + "T4Wing hexCode:89d32b11 intCode:2312317713": { + "id": 2312317713, + "info": { + "category": "Wing", + "placements": 2, + "stats": { + "CPU": "27 pFLOPS", + "ROBOT RANKING": "28,243.00", + "ARMOR": "5,927", + "LOAD CAPACITY PER WING": "961.9 Kg", + "MASS": "12.5 Kg" + }, + "description": "Aerofoil stabilises aircraft and allows for midflight agility control\nand tight manouvres. Has more armour and Load capacity than the T7 Wings", + "size": "T4", + "type": "Movement", + "active": true, + "health": 5927 + }, + "spriteName": "Wing_Large", + "nameStrKey": "strT4WingName", + "mirrorCubeId": "", + "hexId": "89d32b11" + }, + "T4WingBat hexCode:aad3001e intCode:2865954846": { + "id": 2865954846, + "info": { + "category": "Wing", + "placements": 2, + "stats": { + "CPU LOAD": "27 pFLOPS", + "ROBOT RANKING": "28,243.00", + "ARMOR": "5,927", + "LOAD CAPACITY PER WING": "961.9 Kg" + }, + "description": "The performance of this aerofoil matches that of the T8 Aerofoil,\nbut it looks much cooler.", + "size": "T4", + "type": "Movement", + "active": true, + "cpu": 27, + "health": 5927 + }, + "spriteName": "Bat_Wing", + "nameStrKey": "strT4WingBatName", + "mirrorCubeId": "", + "hexId": "aad3001e" + }, + "T5Wing hexCode:92e0975e intCode:2464192350": { + "id": 2464192350, + "info": { + "category": "Wing", + "placements": 2, + "stats": { + "CPU": "29 pFLOPS", + "ROBOT RANKING": "221,142.00", + "ARMOR": "10,528", + "LOAD CAPACITY PER WING": "1170.0 Kg", + "MASS": "15 Kg" + }, + "description": "Aerofoil stabilises aircraft and allows for midflight agility control\nand tight manouvres. Has more armour and Load capacity than the T9 Wings", + "size": "T5", + "type": "Movement", + "active": true, + "health": 10528 + }, + "spriteName": "Wing_Huge", + "nameStrKey": "strT5WingName", + "mirrorCubeId": "", + "hexId": "92e0975e" + }, + "T5WingBat hexCode:aab2c475 intCode:2863842421": { + "id": 2863842421, + "info": { + "category": "Wing", + "placements": 2, + "stats": {}, + "description": "T5WingBat (2863842421_10|aab2c475_16) without a description", + "size": "T5", + "type": "Movement", + "active": true + }, + "spriteName": "Vampire_Bat_Wing", + "nameStrKey": "strT5WingBatName", + "mirrorCubeId": "", + "hexId": "aab2c475" + }, + "T2Rudder hexCode:8d3ff3d4 intCode:2369778644": { + "id": 2369778644, + "info": { + "category": "Rudder", + "placements": 2, + "stats": { + "CPU": "20 pFLOPS", + "ROBOT RANKING": "394.00", + "ARMOR": "1,029", + "LOAD CAPACITY PER WING": "352.4 Kg", + "MASS": "7.5 Kg" + }, + "description": "The Rudder stabilises aircraft and allows for midflight agility control\nand tight manouvres.", + "size": "T2", + "type": "Movement", + "active": true, + "health": 1029 + }, + "spriteName": "Rudder_Small", + "nameStrKey": "strT2RudderName", + "mirrorCubeId": "", + "hexId": "8d3ff3d4" + }, + "T3Rudder hexCode:e30471dd intCode:3808719325": { + "id": 3808719325, + "info": { + "category": "Rudder", + "placements": 2, + "stats": { + "CPU": "22 pFLOPS", + "ROBOT RANKING": "3,157.00", + "ARMOR": "2,713", + "LOAD CAPACITY PER WING": "490.0 Kg", + "MASS": "10 Kg" + }, + "description": "The Rudder stabilises aircraft and allows for midflight agility control\nand tight manouvres.", + "size": "T3", + "type": "Movement", + "active": true, + "health": 2713 + }, + "spriteName": "Rudder_Medium", + "nameStrKey": "strT3RudderName", + "mirrorCubeId": "", + "hexId": "e30471dd" + }, + "T4Rudder hexCode:e9a4ffe1 intCode:3919904737": { + "id": 3919904737, + "info": { + "category": "Rudder", + "placements": 2, + "stats": { + "CPU": "24 pFLOPS", + "ROBOT RANKING": "25,105.00", + "ARMOR": "5,927", + "LOAD CAPACITY PER WING": "625.2 Kg", + "MASS": "12.5 Kg" + }, + "description": "The Rudder stabilises aircraft and allows for midflight agility control\nand tight manouvres.", + "size": "T4", + "type": "Movement", + "active": true, + "health": 5927 + }, + "spriteName": "Rudder_Large", + "nameStrKey": "strT4RudderName", + "mirrorCubeId": "", + "hexId": "e9a4ffe1" + }, + "T4RudderBat hexCode:8f4ee207 intCode:2404311559": { + "id": 2404311559, + "info": { + "category": "Rudder", + "placements": 2, + "stats": { + "CPU LOAD": "24 pFLOPS", + "ROBOT RANKING": "25,105.00", + "ARMOR": "5,927", + "LOAD CAPACITY PER WING": "625.2 Kg" + }, + "description": "The performance of this rudder matches that of the T8 Rudder, but\nit looks much cooler.", + "size": "T4", + "type": "Movement", + "active": true, + "cpu": 24, + "health": 5927 + }, + "spriteName": "Bat_Rudder", + "nameStrKey": "strT4RudderBatName", + "mirrorCubeId": "", + "hexId": "8f4ee207" + }, + "T5Rudder hexCode:9b7d5803 intCode:2608683011": { + "id": 2608683011, + "info": { + "category": "Rudder", + "placements": 2, + "stats": { + "CPU": "26 pFLOPS", + "ROBOT RANKING": "198,266.00", + "ARMOR": "10,528", + "LOAD CAPACITY PER WING": "760.5 Kg", + "MASS": "15 Kg" + }, + "description": "The Rudder stabilises aircraft and allows for midflight agility control\nand tight manouvres.", + "size": "T5", + "type": "Movement", + "active": true, + "health": 10528 + }, + "spriteName": "Rudder_Huge", + "nameStrKey": "strT5RudderName", + "mirrorCubeId": "", + "hexId": "9b7d5803" + }, + "T5RudderBat hexCode:ae93c600 intCode:2928920064": { + "id": 2928920064, + "info": { + "category": "Rudder", + "placements": 2, + "stats": {}, + "description": "T5RudderBat (2928920064_10|ae93c600_16) without a description", + "size": "T5", + "type": "Movement", + "active": true + }, + "spriteName": "Vampire_Bat_Rudder", + "nameStrKey": "strT5RudderBatName", + "mirrorCubeId": "", + "hexId": "ae93c600" + }, + "T0FrontLaser hexCode:cacbc116 intCode:3402350870": { + "id": 3402350870, + "info": { + "category": "Laser", + "placements": 2, + "stats": { + "DAMAGE at 160m": "234", + "DAMAGE at 320m": "187", + "ROBOT RANKING": "32.40", + "ARMOR": "575", + "CPU LOAD": "12 pFLOPS", + "MASS": "5 Kg" + }, + "description": "Front mounted Subatomic Machine Gun. Deals more damage than the T1.", + "size": "T0", + "type": "Weapon", + "active": true, + "cpu": 12, + "health": 575 + }, + "spriteName": "Front_Laser_Tiny", + "nameStrKey": "strT0FrontLaserName", + "mirrorCubeId": "", + "hexId": "cacbc116", + "weapon": { + "damage_inflicted": 42 + } + }, + "T1FrontLaser hexCode:94ae23fa intCode:2494440442": { + "id": 2494440442, + "info": { + "category": "Laser", + "placements": 2, + "stats": { + "DAMAGE at 160m": "753", + "DAMAGE at 320m": "603", + "ROBOT RANKING": "314.93", + "ARMOR": "1801", + "CPU LOAD": "16 pFLOPS", + "MASS": "7.5 Kg" + }, + "description": "Front mounted Subatomic Machine Gun. Deals more damage than the T3.", + "size": "T1", + "type": "Weapon", + "active": true, + "cpu": 16, + "health": 1801 + }, + "spriteName": "Front_Laser_Small", + "nameStrKey": "strT1FrontLaserName", + "mirrorCubeId": "", + "hexId": "94ae23fa", + "weapon": { + "damage_inflicted": 420 + } + }, + "T2FrontLaser hexCode:5e7282a1 intCode:1584562849": { + "id": 1584562849, + "info": { + "category": "Laser", + "placements": 2, + "stats": { + "DAMAGE at 160m": "1,808", + "DAMAGE at 320m": "1,446", + "ROBOT RANKING": "2869.78", + "ARMOR": "4747", + "CPU LOAD": "20 pFLOPS", + "MASS": "10 Kg" + }, + "description": "Front mounted Subatomic Machine Gun. Deals more damage than the T5.", + "size": "T2", + "type": "Weapon", + "active": true, + "cpu": 20, + "health": 4747 + }, + "spriteName": "Front_Laser_Medium", + "nameStrKey": "strT2FrontLaserName", + "mirrorCubeId": "", + "hexId": "5e7282a1", + "weapon": { + "damage_inflicted": 4200 + } + }, + "T3FrontLaser hexCode:9f792627 intCode:2675516967": { + "id": 2675516967, + "info": { + "category": "Laser", + "placements": 2, + "stats": { + "DAMAGE at 160m": "3,367", + "DAMAGE at 320m": "2,694", + "ROBOT RANKING": "25,104.85", + "ARMOR": "10373", + "CPU LOAD": "24 pFLOPS", + "MASS": "12.5 Kg" + }, + "description": "Front mounted Subatomic Machine Gun. Deals more damage than the T7.", + "size": "T3", + "type": "Weapon", + "active": true, + "cpu": 24, + "health": 10373 + }, + "spriteName": "Front_Laser_Large", + "nameStrKey": "strT3FrontLaserName", + "mirrorCubeId": "", + "hexId": "9f792627", + "weapon": { + "damage_inflicted": 42000 + } + }, + "T4FrontLaser hexCode:55a5877c intCode:1436911484": { + "id": 1436911484, + "info": { + "category": "Laser", + "placements": 2, + "stats": { + "DAMAGE at 160m": "4,891", + "DAMAGE at 320m": "3,913", + "ROBOT RANKING": "213,516.73", + "ARMOR": "18423", + "CPU LOAD": "28 pFLOPS", + "MASS": "15 Kg" + }, + "description": "Front mounted Subatomic Machine Gun. Deals more damage than the T9.", + "size": "T4", + "type": "Weapon", + "active": true, + "cpu": 28, + "health": 18423 + }, + "spriteName": "Front_Laser_Huge", + "nameStrKey": "strT4FrontLaserName", + "mirrorCubeId": "", + "hexId": "55a5877c", + "weapon": { + "damage_inflicted": 420000 + } + }, + "T0Laser hexCode:e31663e3 intCode:3809895395": { + "id": 3809895395, + "info": { + "category": "Laser", + "placements": 2, + "stats": { + "DAMAGE at 160m": "234", + "DAMAGE at 320m": "187", + "ROBOT RANKING": "32.40", + "ARMOR": "575", + "CPU LOAD": "12 pFLOPS", + "MASS": "5 Kg" + }, + "description": "Top mounted Subatomic Machine Gun. Deals more damage than the T1.", + "size": "T0", + "type": "Weapon", + "active": true, + "cpu": 12, + "health": 575 + }, + "spriteName": "Top_Laser_Tiny", + "nameStrKey": "strT0LaserName", + "mirrorCubeId": "", + "hexId": "e31663e3", + "weapon": { + "damage_inflicted": 42 + } + }, + "T1Laser hexCode:bd73810f intCode:3178463503": { + "id": 3178463503, + "info": { + "category": "Laser", + "placements": 2, + "stats": { + "DAMAGE at 160m": "753", + "DAMAGE at 320m": "603", + "ROBOT RANKING": "314.93", + "ARMOR": "1,801", + "CPU LOAD": "16 pFLOPS", + "MASS": "7.5 Kg" + }, + "description": "Top mounted Subatomic Machine Gun. Deals more damage than the T3.", + "size": "T1", + "type": "Weapon", + "active": true, + "cpu": 16, + "health": 1801 + }, + "spriteName": "Top_Laser_Small", + "nameStrKey": "strT1LaserName", + "mirrorCubeId": "", + "hexId": "bd73810f", + "weapon": { + "damage_inflicted": 420 + } + }, + "T2Laser hexCode:77af2054 intCode:2007965780": { + "id": 2007965780, + "info": { + "category": "Laser", + "placements": 2, + "stats": { + "DAMAGE at 160m": "1,808", + "DAMAGE at 320m": "1,446", + "ROBOT RANKING": "2,869.78", + "ARMOR": "4,747", + "CPU LOAD": "20 pFLOPS", + "MASS": "10 Kg" + }, + "description": "Top mounted Subatomic Machine Gun. Deals more damage than the T5.", + "size": "T2", + "type": "Weapon", + "active": true, + "cpu": 20, + "health": 4747 + }, + "spriteName": "Top_Laser_Medium", + "nameStrKey": "strT2LaserName", + "mirrorCubeId": "", + "hexId": "77af2054", + "weapon": { + "damage_inflicted": 4200 + } + }, + "T3Laser hexCode:b6a484d2 intCode:3064235218": { + "id": 3064235218, + "info": { + "category": "Laser", + "placements": 2, + "stats": { + "DAMAGE at 160m": "3,367", + "DAMAGE at 320m": "2,694", + "ROBOT RANKING": "25,104.85", + "ARMOR": "10,373", + "CPU LOAD": "24 pFLOPS", + "MASS": "12.5 Kg" + }, + "description": "Top mounted Subatomic Machine Gun. Deals more damage than the T7.", + "size": "T3", + "type": "Weapon", + "active": true, + "cpu": 24, + "health": 10373 + }, + "spriteName": "Top_Laser_Large", + "nameStrKey": "strT3LaserName", + "mirrorCubeId": "", + "hexId": "b6a484d2", + "weapon": { + "damage_inflicted": 42000 + } + }, + "T4Laser hexCode:7c782589 intCode:2088248713": { + "id": 2088248713, + "info": { + "category": "Laser", + "placements": 2, + "stats": { + "DAMAGE at 160m": "4,891", + "DAMAGE at 320m": "3,913", + "ROBOT RANKING": "213,516.73", + "ARMOR": "18,423", + "CPU LOAD": "28 pFLOPS", + "MASS": "15 Kg" + }, + "description": "Top mounted Subatomic Machine Gun. Deals more damage than the T9.", + "size": "T4", + "type": "Weapon", + "active": true, + "cpu": 28, + "health": 18423 + }, + "spriteName": "Top_Laser_Huge", + "nameStrKey": "strT4LaserName", + "mirrorCubeId": "", + "hexId": "7c782589", + "weapon": { + "damage_inflicted": 420000 + } + }, + "T5LaserGolden hexCode:e5946e66 intCode:3851710054": { + "id": 3851710054, + "info": { + "category": "Laser", + "placements": 2, + "stats": {}, + "description": "T5LaserGolden (3851710054_10|e5946e66_16) without a description", + "size": "T5", + "type": "Weapon", + "active": true + }, + "spriteName": "Mega_Laser_Golden", + "nameStrKey": "strT5LaserGoldenName", + "mirrorCubeId": "", + "hexId": "e5946e66", + "weapon": { + "damage_inflicted": 4200000 + } + }, + "T4LaserCarbon6 hexCode:d88a7e09 intCode:3632954889": { + "id": 3632954889, + "info": { + "category": "Laser", + "placements": 2, + "stats": {}, + "description": "T4LaserCarbon6 (3632954889_10|d88a7e09_16) without a description", + "size": "T4", + "type": "Weapon", + "active": true + }, + "spriteName": "Top_Laser_Huge_Carbon_6", + "nameStrKey": "strT4LaserCarbon6Name", + "mirrorCubeId": "", + "hexId": "d88a7e09", + "weapon": { + "damage_inflicted": 420000 + } + }, + "T5Laser hexCode:bf457455 intCode:3209000021": { + "id": 3209000021, + "info": { + "category": "Laser", + "placements": 2, + "stats": { + "DAMAGE at 160m": "10,512", + "DAMAGE at 320m": "8,410", + "ROBOT RANKING": "13,897,651", + "ARMOR": "31,260", + "CPU LOAD": "250 pFLOPS", + "MASS": "50 Kg" + }, + "description": "Massively massively powerful SMG.", + "size": "T5", + "type": "Weapon", + "active": true, + "cpu": 250, + "health": 31260 + }, + "spriteName": "Mega_Laser", + "nameStrKey": "strT5LaserName", + "mirrorCubeId": "", + "hexId": "bf457455", + "weapon": { + "damage_inflicted": 4200000 + } + }, + "T5LaserCarbon6 hexCode:477e482f intCode:1199458351": { + "id": 1199458351, + "info": { + "category": "Laser", + "placements": 2, + "stats": { + "DAMAGE at 160m": "10,512", + "DAMAGE at 320m": "8,410", + "ROBOT RANKING": "13,897,651", + "ARMOR": "31,260", + "CPU LOAD": "250 pFLOPS", + "MASS": "50 Kg" + }, + "description": "Massively massively powerful MSMG.", + "size": "T5", + "type": "Weapon", + "active": true, + "cpu": 250, + "health": 31260 + }, + "spriteName": "Mega_Laser_Carbon_6", + "nameStrKey": "strT5LaserCarbon6Name", + "mirrorCubeId": "", + "hexId": "477e482f", + "weapon": { + "damage_inflicted": 4200000 + } + }, + "T0Plasma hexCode:9e465554 intCode:2655409492": { + "id": 2655409492, + "info": { + "category": "Plasma", + "placements": 2, + "stats": {}, + "description": "T0Plasma (2655409492_10|9e465554_16) without a description", + "size": "T0", + "type": "Weapon", + "active": true + }, + "spriteName": "Plasma_Tiny", + "nameStrKey": "strT0PlasmaName", + "mirrorCubeId": "", + "hexId": "9e465554" + }, + "T1Plasma hexCode:4d19be26 intCode:1293532710": { + "id": 1293532710, + "info": { + "category": "Plasma", + "placements": 2, + "stats": { + "DAMAGE": "2,410", + "BLAST": "15.09m", + "ROBOT RANKING": "393.66", + "ARMOR": "1,801", + "CPU LOAD": "20 pFLOPS", + "MASS": "7.5 Kg" + }, + "description": "An explosive Plasma projectile weapon. More powerful than the T3.\nMultiple cannon will fire together.", + "size": "T1", + "type": "Weapon", + "active": true, + "cpu": 20, + "health": 1801 + }, + "spriteName": "Plasma_Small", + "nameStrKey": "strT1PlasmaName", + "mirrorCubeId": "", + "hexId": "4d19be26" + }, + "T2Plasma hexCode:91d8a7f4 intCode:2446895092": { + "id": 2446895092, + "info": { + "category": "Plasma", + "placements": 2, + "stats": { + "DAMAGE": "5,785", + "BLAST": "17.65m", + "ROBOT RANKING": "3,443.74", + "ARMOR": "4,747", + "CPU LOAD": "24 pFLOPS", + "MASS": "10 Kg" + }, + "description": "An explosive Plasma projectile weapon. More powerful than the T5.\nMultiple cannon will fire together.", + "size": "T2", + "type": "Weapon", + "active": true, + "cpu": 24, + "health": 4747 + }, + "spriteName": "Plasma_Medium", + "nameStrKey": "strT2PlasmaName", + "mirrorCubeId": "", + "hexId": "91d8a7f4" + }, + "T3Plasma hexCode:eba668c3 intCode:3953551555": { + "id": 3953551555, + "info": { + "category": "Plasma", + "placements": 2, + "stats": { + "DAMAGE": "10,775", + "BLAST": "20.20m", + "ROBOT RANKING": "29,288.99", + "ARMOR": "10,373", + "CPU LOAD": "28 pFLOPS", + "MASS": "12.5 Kg" + }, + "description": "An explosive Plasma projectile weapon. More powerful than the T7.\nMultiple cannons will fire together.", + "size": "T3", + "type": "Weapon", + "active": true, + "cpu": 28, + "health": 10373 + }, + "spriteName": "Plasma_Large", + "nameStrKey": "strT3PlasmaName", + "mirrorCubeId": "", + "hexId": "eba668c3" + }, + "T4Plasma hexCode:37677111 intCode:929526033": { + "id": 929526033, + "info": { + "category": "Plasma", + "placements": 2, + "stats": { + "DAMAGE": "17,218", + "BLAST": "22.75m", + "ROBOT RANKING": "244,019.12", + "ARMOR": "18,423", + "CPU LOAD": "32 pFLOPS", + "MASS": "15 Kg" + }, + "description": "The most powerful Plasma Cannon, packing an enormous explosive punch.", + "size": "T4", + "type": "Weapon", + "active": true, + "cpu": 32, + "health": 18423 + }, + "spriteName": "Plasma_Huge", + "nameStrKey": "strT4PlasmaName", + "mirrorCubeId": "", + "hexId": "37677111" + }, + "T4PlasmaCarbon6 hexCode:5ef426bf intCode:1593059007": { + "id": 1593059007, + "info": { + "category": "Plasma", + "placements": 2, + "stats": {}, + "description": "T4PlasmaCarbon6 (1593059007_10|5ef426bf_16) without a description", + "size": "T4", + "type": "Weapon", + "active": true + }, + "spriteName": "Plasma_Huge_Carbon_6", + "nameStrKey": "strT4PlasmaCarbon6Name", + "mirrorCubeId": "", + "hexId": "5ef426bf" + }, + "T5Plasma hexCode:0a381807 intCode:171448327": { + "id": 171448327, + "info": { + "category": "Plasma", + "placements": 2, + "stats": { + "DAMAGE": "2x 10,331", + "BLAST": "22.75m", + "ROBOT RANKING": "16,677,182", + "ARMOR": "31,260", + "CPU LOAD": "300 pFLOPS", + "MASS": "50 Kg" + }, + "description": "Massively massively powerful Plasma Cannon that fires two shots per\ncannon.", + "size": "T5", + "type": "Weapon", + "active": true, + "cpu": 300, + "health": 31260 + }, + "spriteName": "Mega_Plasma", + "nameStrKey": "strT5PlasmaName", + "mirrorCubeId": "", + "hexId": "0a381807" + }, + "T5PlasmaCarbon6 hexCode:af6ef6c7 intCode:2943284935": { + "id": 2943284935, + "info": { + "category": "Plasma", + "placements": 2, + "stats": {}, + "description": "T5PlasmaCarbon6 (2943284935_10|af6ef6c7_16) without a description", + "size": "T5", + "type": "Weapon", + "active": true + }, + "spriteName": "Mega_Plasma_Carbon_6", + "nameStrKey": "strT5PlasmaCarbon6Name", + "mirrorCubeId": "", + "hexId": "af6ef6c7" + }, + "T1Rail hexCode:61c11443 intCode:1640043587": { + "id": 1640043587, + "info": { + "category": "Rail", + "placements": 2, + "stats": { + "DAMAGE": "4,258", + "ROBOT RANKING": "511.76", + "ARMOR": "1,801", + "CPU LOAD": "20 pFLOPS", + "MASS": "7.5 Kg" + }, + "description": "Very long range and very accurate. Moving reduces accuracy. Push\n'R' to reload.", + "size": "T1", + "type": "Weapon", + "active": true, + "cpu": 20, + "health": 1801 + }, + "spriteName": "Rail_Small", + "nameStrKey": "strT1RailName", + "mirrorCubeId": "", + "hexId": "61c11443" + }, + "T2Rail hexCode:ab1db518 intCode:2870850840": { + "id": 2870850840, + "info": { + "category": "Rail", + "placements": 2, + "stats": { + "DAMAGE": "10,218", + "ROBOT RANKING": "4,476.86", + "ARMOR": "4,747", + "CPU LOAD": "24 pFLOPS", + "MASS": "10 Kg" + }, + "description": "Deals more damage than the T5. Very long range and very accurate.\nMoving reduces accuracy. Push 'R' to reload.", + "size": "T2", + "type": "Weapon", + "active": true, + "cpu": 24, + "health": 4747 + }, + "spriteName": "Rail_Medium", + "nameStrKey": "strT2RailName", + "mirrorCubeId": "", + "hexId": "ab1db518" + }, + "T3Rail hexCode:6a16119e intCode:1779831198": { + "id": 1779831198, + "info": { + "category": "Rail", + "placements": 2, + "stats": { + "DAMAGE": "19,033", + "ROBOT RANKING": "38,075.69", + "ARMOR": "10,373", + "CPU LOAD": "28 pFLOPS", + "MASS": "12.5 Kg" + }, + "description": "Deals more damage than the T7. Very long range and very accurate.\nMoving reduces accuracy. Push 'R' to reload.", + "size": "T3", + "type": "Weapon", + "active": true, + "cpu": 28, + "health": 10373 + }, + "spriteName": "Rail_Large", + "nameStrKey": "strT3RailName", + "mirrorCubeId": "", + "hexId": "6a16119e" + }, + "T4Rail hexCode:a0cab0c5 intCode:2697638085": { + "id": 2697638085, + "info": { + "category": "Rail", + "placements": 2, + "stats": { + "DAMAGE": "27,647", + "ROBOT RANKING": "317,224.86", + "ARMOR": "18,423", + "CPU LOAD": "32 pFLOPS", + "MASS": "15 Kg" + }, + "description": "Deals more damage than the T9. Very long range and very accurate.\nMoving reduces accuracy. Push 'R' to reload.", + "size": "T4", + "type": "Weapon", + "active": true, + "cpu": 32, + "health": 18423 + }, + "spriteName": "Rail_Huge", + "nameStrKey": "strT4RailName", + "mirrorCubeId": "", + "hexId": "a0cab0c5" + }, + "T5Rail hexCode:7c2d3fb6 intCode:2083340214": { + "id": 2083340214, + "info": { + "category": "Rail", + "placements": 2, + "stats": {}, + "description": "T5Rail (2083340214_10|7c2d3fb6_16) without a description", + "size": "T5", + "type": "Weapon", + "active": true + }, + "spriteName": "Rail_Mega", + "nameStrKey": "strT5RailName", + "mirrorCubeId": "", + "hexId": "7c2d3fb6" + }, + "T2Nano hexCode:6904833f intCode:1761903423": { + "id": 1761903423, + "info": { + "category": "Nano", + "placements": 2, + "stats": { + "CPU": "20 pFLOPS", + "ROBOT RANKING": "2,869.78", + "ARMOR": "4,747", + "Damage Rate": "1,808 DPS", + "Heal Rate": "1,226 HPS", + "MASS": "10 Kg" + }, + "description": "A beam of nano disruption which can both cause damage to enemies\nand re-generate allies. Alternate fire can auto target up to six allied targets\nat once.", + "size": "T2", + "type": "Weapon", + "active": true, + "health": 4747 + }, + "spriteName": "Nano_Medium", + "nameStrKey": "strT2NanoName", + "mirrorCubeId": "", + "hexId": "6904833f" + }, + "T3Nano hexCode:63a40d03 intCode:1671695619": { + "id": 1671695619, + "info": { + "category": "Nano", + "placements": 2, + "stats": { + "CPU": "24 pFLOPS", + "ROBOT RANKING": "25,104.85", + "ARMOR": "10,373", + "Damage Rate": "3,367 DPS", + "Heal Rate": "2,284 HPS", + "MASS": "12.5 Kg" + }, + "description": "A beam of nano disruption which can both cause damage to enemies\nand re-generate allies. Alternate fire can auto target up to six allied targets\nat once.", + "size": "T3", + "type": "Weapon", + "active": true, + "health": 10373 + }, + "spriteName": "Nano_Large", + "nameStrKey": "strT3NanoName", + "mirrorCubeId": "", + "hexId": "63a40d03" + }, + "T4Nano hexCode:8cea733d intCode:2364175165": { + "id": 2364175165, + "info": { + "category": "Nano", + "placements": 2, + "stats": { + "CPU": "28 pFLOPS", + "ROBOT RANKING": "213,516.73", + "ARMOR": "18,423", + "Damage Rate": "4,891 DPS", + "Heal Rate": "4,147 HPS", + "MASS": "15 Kg" + }, + "description": "A beam of nano disruption which can both cause damage to enemies\nand re-generate allies. Alternate fire can auto target up to six allied targets\nat once.", + "size": "T4", + "type": "Weapon", + "active": true, + "health": 18423 + }, + "spriteName": "Nano_Huge", + "nameStrKey": "strT4NanoName", + "mirrorCubeId": "", + "hexId": "8cea733d" + }, + "T4Aeroflak hexCode:eb500d40 intCode:3947892032": { + "id": 3947892032, + "info": { + "category": "Aeroflak", + "placements": 62, + "stats": {}, + "description": "T4Aeroflak (3947892032_10|eb500d40_16) without a description", + "size": "T4", + "type": "Weapon", + "active": true + }, + "spriteName": "Flak_Huge", + "nameStrKey": "strT4AeroflakName", + "mirrorCubeId": "", + "hexId": "eb500d40" + }, + "T5Aeroflak hexCode:046328f5 intCode:73607413": { + "id": 73607413, + "info": { + "category": "Aeroflak", + "placements": 2, + "stats": {}, + "description": "T5Aeroflak (73607413_10|046328f5_16) without a description", + "size": "T5", + "type": "Weapon", + "active": true + }, + "spriteName": "Aeroflak", + "nameStrKey": "strT5AeroflakName", + "mirrorCubeId": "", + "hexId": "046328f5" + }, + "T3Seeker hexCode:02deb667 intCode:48150119": { + "id": 48150119, + "info": { + "category": "Seeker", + "placements": 62, + "stats": {}, + "description": "T3Seeker (48150119_10|02deb667_16) without a description", + "size": "T3", + "type": "Weapon", + "active": true + }, + "spriteName": "Seeker", + "nameStrKey": "strT3SeekerName", + "mirrorCubeId": "", + "hexId": "02deb667" + }, + "T4Seeker hexCode:14e875fd intCode:350778877": { + "id": 350778877, + "info": { + "category": "Seeker", + "placements": 62, + "stats": {}, + "description": "T4Seeker (350778877_10|14e875fd_16) without a description", + "size": "T4", + "type": "Weapon", + "active": true + }, + "spriteName": "Lock_On_Missile_Launcher_Huge", + "nameStrKey": "strT4SeekerName", + "mirrorCubeId": "", + "hexId": "14e875fd" + }, + "T5Seeker hexCode:903b4f3d intCode:2419806013": { + "id": 2419806013, + "info": { + "category": "Seeker", + "placements": 2, + "stats": {}, + "description": "T5Seeker (2419806013_10|903b4f3d_16) without a description", + "size": "T5", + "type": "Weapon", + "active": true + }, + "spriteName": "Lock_On_Missile_Launcher", + "nameStrKey": "strT5SeekerName", + "mirrorCubeId": "", + "hexId": "903b4f3d" + }, + "T4Ion hexCode:d3149701 intCode:3541341953": { + "id": 3541341953, + "info": { + "category": "Ion", + "placements": 62, + "stats": {}, + "description": "T4Ion (3541341953_10|d3149701_16) without a description", + "size": "T4", + "type": "Weapon", + "active": true + }, + "spriteName": "Ion_Destabiliser", + "nameStrKey": "strT4IonName", + "mirrorCubeId": "", + "hexId": "d3149701" + }, + "T5Ion hexCode:4694c17c intCode:1184153980": { + "id": 1184153980, + "info": { + "category": "Ion", + "placements": 2, + "stats": {}, + "description": "T5Ion (1184153980_10|4694c17c_16) without a description", + "size": "T5", + "type": "Weapon", + "active": true + }, + "spriteName": "Ion_Distorter", + "nameStrKey": "strT5IonName", + "mirrorCubeId": "", + "hexId": "4694c17c" + }, + "T5IonCardLife hexCode:88ce2835 intCode:2295212085": { + "id": 2295212085, + "info": { + "category": "Ion", + "placements": 2, + "stats": {}, + "description": "T5IonCardLife (2295212085_10|88ce2835_16) without a description", + "size": "T5", + "type": "Weapon", + "active": true + }, + "spriteName": "T5_Ion_Cardlife", + "nameStrKey": "strT5IonCardLifeName", + "mirrorCubeId": "", + "hexId": "88ce2835" + }, + "T4Chaingun hexCode:4e910d6c intCode:1318129004": { + "id": 1318129004, + "info": { + "category": "Chaingun", + "placements": 62, + "stats": {}, + "description": "T4Chaingun (1318129004_10|4e910d6c_16) without a description", + "size": "T4", + "type": "Weapon", + "active": true + }, + "spriteName": "ChaingunSplitter", + "nameStrKey": "strT4ChaingunName", + "mirrorCubeId": "", + "hexId": "4e910d6c" + }, + "T5Chaingun hexCode:6b0a6196 intCode:1795842454": { + "id": 1795842454, + "info": { + "category": "Chaingun", + "placements": 2, + "stats": {}, + "description": "T5Chaingun (1795842454_10|6b0a6196_16) without a description", + "size": "T5", + "type": "Weapon", + "active": true + }, + "spriteName": "ChaingunShredder", + "nameStrKey": "strT5ChaingunName", + "mirrorCubeId": "", + "hexId": "6b0a6196" + }, + "T5Mortar hexCode:7067cb41 intCode:1885850433": { + "id": 1885850433, + "info": { + "category": "Mortar", + "placements": 2, + "stats": {}, + "description": "T5Mortar (1885850433_10|7067cb41_16) without a description", + "size": "T5", + "type": "Weapon", + "active": true + }, + "spriteName": "Mortar_Mega", + "nameStrKey": "strT5MortarName", + "mirrorCubeId": "", + "hexId": "7067cb41" + }, + "T2Tesla hexCode:7842f73c intCode:2017654588": { + "id": 2017654588, + "info": { + "category": "Tesla", + "placements": 2, + "stats": { + "MASS": "12.5 Kg", + "ARMOR": "4,060", + "CPU LOAD": "20 pFLOP", + "ROBOT RANKING": "23,012.78", + "DAMAGE": "28,910" + }, + "description": "A Melee weapon that packs a powerful punch.", + "size": "T2", + "type": "Weapon", + "active": true, + "cpu": 20, + "health": 4060 + }, + "spriteName": "Tesla_Medium", + "nameStrKey": "strT2TeslaName", + "mirrorCubeId": "", + "hexId": "7842f73c" + }, + "T3Tesla hexCode:cf5f3638 intCode:3479123512": { + "id": 3479123512, + "info": { + "category": "Tesla", + "placements": 2, + "stats": { + "MASS": "15 Kg", + "ARMOR": "5,561", + "CPU LOAD": "22 pFLOP", + "ROBOT RANKING": "67,783.09", + "DAMAGE": "38,020" + }, + "description": "A Melee weapon that packs a powerful punch.", + "size": "T3", + "type": "Weapon", + "active": true, + "cpu": 22, + "health": 5561 + }, + "spriteName": "Tesla_Large", + "nameStrKey": "strT3TeslaName", + "mirrorCubeId": "", + "hexId": "cf5f3638" + }, + "T4Tesla hexCode:a121e82b intCode:2703353899": { + "id": 2703353899, + "info": { + "category": "Tesla", + "placements": 2, + "stats": { + "MASS": "15 Kg", + "ARMOR": "7,211", + "CPU LOAD": "24 pFLOP", + "ROBOT RANKING": "198,265.53", + "DAMAGE": "47,400" + }, + "description": "A Melee weapon that packs a powerful punch.", + "size": "T4", + "type": "Weapon", + "active": true, + "cpu": 24, + "health": 7211 + }, + "spriteName": "Tesla_Huge", + "nameStrKey": "strT4TeslaName", + "mirrorCubeId": "", + "hexId": "a121e82b" + }, + "T5EnergyModule hexCode:64e33e30 intCode:1692614192": { + "id": 1692614192, + "info": { + "category": "EnergyModule", + "placements": 2, + "stats": { + "MASS": "5 Kg", + "CPU LOAD": "0 pFLOPS", + "ROBOT RANKING": "0.00" + }, + "description": "You pilot your Megabot from this seat. The Mega seat also increases\nyour maximum CPU.", + "size": "T5", + "type": "Module", + "active": true, + "cpu": 0 + }, + "spriteName": "Power_Booster", + "nameStrKey": "strT5EnergyModuleName", + "mirrorCubeId": "", + "hexId": "64e33e30" + }, + "T5ShieldModule hexCode:c285b585 intCode:3263542661": { + "id": 3263542661, + "info": { + "category": "ShieldModule", + "placements": 2, + "stats": {}, + "description": "T5ShieldModule (3263542661_10|c285b585_16) without a description", + "size": "T5", + "type": "Module", + "active": true + }, + "spriteName": "Disc_Shield_Module", + "nameStrKey": "strT5ShieldModuleName", + "mirrorCubeId": "", + "hexId": "c285b585" + }, + "T5BlinkModule hexCode:eda88952 intCode:3987245394": { + "id": 3987245394, + "info": { + "category": "BlinkModule", + "placements": 2, + "stats": {}, + "description": "T5BlinkModule (3987245394_10|eda88952_16) without a description", + "size": "T5", + "type": "Module", + "active": true + }, + "spriteName": "Teleport_Module", + "nameStrKey": "strT5BlinkModuleName", + "mirrorCubeId": "", + "hexId": "eda88952" + }, + "T5GhostModule hexCode:fc266bcd intCode:4230376397": { + "id": 4230376397, + "info": { + "category": "GhostModule", + "placements": 2, + "stats": {}, + "description": "T5GhostModule (4230376397_10|fc266bcd_16) without a description", + "size": "T5", + "type": "Module", + "active": true + }, + "spriteName": "Cloak_Module", + "nameStrKey": "strT5GhostModuleName", + "mirrorCubeId": "", + "hexId": "fc266bcd" + }, + "T5EmpModule hexCode:273fbcf0 intCode:658488560": { + "id": 658488560, + "info": { + "category": "EmpModule", + "placements": 2, + "stats": {}, + "description": "T5EmpModule (658488560_10|273fbcf0_16) without a description", + "size": "T5", + "type": "Module", + "active": true + }, + "spriteName": "EMP_Module", + "nameStrKey": "strT5EmpModuleName", + "mirrorCubeId": "", + "hexId": "273fbcf0" + }, + "T5WindowmakerModule hexCode:148241ee intCode:344080878": { + "id": 344080878, + "info": { + "category": "WindowmakerModule", + "placements": 2, + "stats": {}, + "description": "T5WindowmakerModule (344080878_10|148241ee_16) without a description", + "size": "T5", + "type": "Module", + "active": true + }, + "spriteName": "Radar_Module", + "nameStrKey": "strT5WindowmakerModuleName", + "mirrorCubeId": "", + "hexId": "148241ee" + }, + "ElectroshieldL hexCode:4b5abaa6 intCode:1264237222": { + "id": 1264237222, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ElectroshieldL (1264237222_10|4b5abaa6_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Electroshield_Left", + "nameStrKey": "strElectroshieldLName", + "mirrorCubeId": "b0bbc394", + "hexId": "4b5abaa6" + }, + "ElectroshieldR hexCode:b0bbc394 intCode:2965095316": { + "id": 2965095316, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ElectroshieldR (2965095316_10|b0bbc394_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Electroshield_Right", + "nameStrKey": "strElectroshieldRName", + "mirrorCubeId": "4b5abaa6", + "hexId": "b0bbc394" + }, + "ElectroshieldAL hexCode:927cf9ab intCode:2457663915": { + "id": 2457663915, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ElectroshieldAL (2457663915_10|927cf9ab_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Electroshield_A_Left", + "nameStrKey": "strElectroshieldALName", + "mirrorCubeId": "699d8099", + "hexId": "927cf9ab" + }, + "ElectroshieldAR hexCode:699d8099 intCode:1771929753": { + "id": 1771929753, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ElectroshieldAR (1771929753_10|699d8099_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Electroshield_A_Right", + "nameStrKey": "strElectroshieldARName", + "mirrorCubeId": "927cf9ab", + "hexId": "699d8099" + }, + "ElectroshieldBL hexCode:256138af intCode:627128495": { + "id": 627128495, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ElectroshieldBL (627128495_10|256138af_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Electroshield_B_Left", + "nameStrKey": "strElectroshieldBLName", + "mirrorCubeId": "de80419d", + "hexId": "256138af" + }, + "ElectroshieldBR hexCode:de80419d intCode:3732947357": { + "id": 3732947357, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ElectroshieldBR (3732947357_10|de80419d_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Electroshield_B_Right", + "nameStrKey": "strElectroshieldBRName", + "mirrorCubeId": "256138af", + "hexId": "de80419d" + }, + "ElectroshieldCL hexCode:20317fb1 intCode:540114865": { + "id": 540114865, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ElectroshieldCL (540114865_10|20317fb1_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Electroshield_C_Left", + "nameStrKey": "strElectroshieldCLName", + "mirrorCubeId": "dbd00683", + "hexId": "20317fb1" + }, + "ElectroshieldCR hexCode:dbd00683 intCode:3687843459": { + "id": 3687843459, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ElectroshieldCR (3687843459_10|dbd00683_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Electroshield_C_Right", + "nameStrKey": "strElectroshieldCRName", + "mirrorCubeId": "20317fb1", + "hexId": "dbd00683" + }, + "ElectroshieldDL hexCode:972cbeb5 intCode:2536292021": { + "id": 2536292021, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ElectroshieldDL (2536292021_10|972cbeb5_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Electroshield_D_Left", + "nameStrKey": "strElectroshieldDLName", + "mirrorCubeId": "6ccdc787", + "hexId": "972cbeb5" + }, + "ElectroshieldDR hexCode:6ccdc787 intCode:1825425287": { + "id": 1825425287, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ElectroshieldDR (1825425287_10|6ccdc787_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Electroshield_D_Right", + "nameStrKey": "strElectroshieldDRName", + "mirrorCubeId": "972cbeb5", + "hexId": "6ccdc787" + }, + "T3ElectroShieldDLFootball hexCode:c19d8fec intCode:3248328684": { + "id": 3248328684, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU": "36 pFLOPS", + "ROBOT RANKING": "1,913.19", + "ARMOR": "513", + "SHIELD": "5,126", + "MASS": "10 Kg" + }, + "description": "A powerful defensive item which utilizes an electrical shield for\ndefence, strong against high powered weapons", + "size": "T3", + "type": "NotAFunctionalItem", + "active": true, + "health": 513 + }, + "spriteName": "Football_Plate_Left", + "nameStrKey": "strT3ElectroShieldDLFootballName", + "mirrorCubeId": "bbe6109c", + "hexId": "c19d8fec" + }, + "T3ElectroShieldDRFootball hexCode:bbe6109c intCode:3152416924": { + "id": 3152416924, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU": "36 pFLOPS", + "ROBOT RANKING": "1,913.19", + "ARMOR": "513", + "SHIELD": "5,126", + "MASS": "10 Kg" + }, + "description": "A powerful defensive item which utilizes an electrical shield for\ndefence, strong against high powered weapons", + "size": "T3", + "type": "NotAFunctionalItem", + "active": true, + "health": 513 + }, + "spriteName": "Football_Plate_Right", + "nameStrKey": "strT3ElectroShieldDRFootballName", + "mirrorCubeId": "c19d8fec", + "hexId": "bbe6109c" + }, + "T3ElectroShieldDLSpiked hexCode:2b50eede intCode:726724318": { + "id": 726724318, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU": "36 pFLOPS", + "ROBOT RANKING": "1,913.19", + "ARMOR": "513", + "SHIELD": "5,126", + "MASS": "10 Kg" + }, + "description": "A powerful defensive item which utilizes an electrical shield for\ndefence, strong against high powered weapons", + "size": "T3", + "type": "NotAFunctionalItem", + "active": true, + "health": 513 + }, + "spriteName": "Spiked_Plate_Left", + "nameStrKey": "strT3ElectroShieldDLSpikedName", + "mirrorCubeId": "512b71ae", + "hexId": "2b50eede" + }, + "T3ElectroShieldDRSpiked hexCode:512b71ae intCode:1361801646": { + "id": 1361801646, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU": "36 pFLOPS", + "ROBOT RANKING": "1,913.19", + "ARMOR": "513", + "SHIELD": "5,126", + "MASS": "10 Kg" + }, + "description": "A powerful defensive item which utilizes an electrical shield for\ndefence, strong against high powered weapons", + "size": "T3", + "type": "NotAFunctionalItem", + "active": true, + "health": 513 + }, + "spriteName": "Spiked_Plate_Right", + "nameStrKey": "strT3ElectroShieldDRSpikedName", + "mirrorCubeId": "2b50eede", + "hexId": "512b71ae" + }, + "ElectroshieldEL hexCode:4e0afdb8 intCode:1309343160": { + "id": 1309343160, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ElectroshieldEL (1309343160_10|4e0afdb8_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Electroshield_E_Left", + "nameStrKey": "strElectroshieldELName", + "mirrorCubeId": "b5eb848a", + "hexId": "4e0afdb8" + }, + "ElectroshieldER hexCode:b5eb848a intCode:3052110986": { + "id": 3052110986, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ElectroshieldER (3052110986_10|b5eb848a_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Electroshield_E_Right", + "nameStrKey": "strElectroshieldERName", + "mirrorCubeId": "4e0afdb8", + "hexId": "b5eb848a" + }, + "ElectroshieldFL hexCode:f9173cbc intCode:4179049660": { + "id": 4179049660, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ElectroshieldFL (4179049660_10|f9173cbc_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Electroshield_F_Left", + "nameStrKey": "strElectroshieldFLName", + "mirrorCubeId": "02f6458e", + "hexId": "f9173cbc" + }, + "ElectroshieldFR hexCode:02f6458e intCode:49694094": { + "id": 49694094, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ElectroshieldFR (49694094_10|02f6458e_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Electroshield_F_Right", + "nameStrKey": "strElectroshieldFRName", + "mirrorCubeId": "f9173cbc", + "hexId": "02f6458e" + }, + "ElectroshieldGL hexCode:44aa7384 intCode:1152021380": { + "id": 1152021380, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ElectroshieldGL (1152021380_10|44aa7384_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Electroshield_G_Left", + "nameStrKey": "strElectroshieldGLName", + "mirrorCubeId": "bf4b0ab6", + "hexId": "44aa7384" + }, + "ElectroshieldGR hexCode:bf4b0ab6 intCode:3209366198": { + "id": 3209366198, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ElectroshieldGR (3209366198_10|bf4b0ab6_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Electroshield_G_Right", + "nameStrKey": "strElectroshieldGRName", + "mirrorCubeId": "44aa7384", + "hexId": "bf4b0ab6" + }, + "ElectroshieldHL hexCode:f3b7b280 intCode:4088902272": { + "id": 4088902272, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ElectroshieldHL (4088902272_10|f3b7b280_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Electroshield_H_Left", + "nameStrKey": "strElectroshieldHLName", + "mirrorCubeId": "0856cbb2", + "hexId": "f3b7b280" + }, + "ElectroshieldHR hexCode:0856cbb2 intCode:139905970": { + "id": 139905970, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ElectroshieldHR (139905970_10|0856cbb2_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Electroshield_H_Right", + "nameStrKey": "strElectroshieldHRName", + "mirrorCubeId": "f3b7b280", + "hexId": "0856cbb2" + }, + "ElectroshieldIL hexCode:e3dff8e5 intCode:3823106277": { + "id": 3823106277, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU": "56 pFLOPS", + "ROBOT RANKING": "427,033.46", + "ARMOR": "1,026", + "SHIELD": "24,420", + "MASS": "83 Kg", + "OVERCLOCK": "Recharges more quickly with a reduced cooldown wait time." + }, + "description": "A tough lightweight shield that self-recharges after taking damage.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "health": 1026 + }, + "spriteName": "Electroshield_I_Left", + "nameStrKey": "strElectroshieldILName", + "mirrorCubeId": "709a2d95", + "hexId": "e3dff8e5" + }, + "ElectroshieldIR hexCode:709a2d95 intCode:1889152405": { + "id": 1889152405, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU": "56pFLOPS", + "ROBOT RANKING": "427,033.46", + "ARMOR": "1,026", + "SHIELD": "24,420", + "MASS": "83 Kg", + "OVERCLOCK": "Recharges more quickly with a reduced cooldown wait time." + }, + "description": "A tough lightweight shield that self-recharges after taking damage.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "health": 1026 + }, + "spriteName": "Electroshield_I_Right", + "nameStrKey": "strElectroshieldIRName", + "mirrorCubeId": "e3dff8e5", + "hexId": "709a2d95" + }, + "ElectroshieldJL hexCode:b2e8edf0 intCode:3001609712": { + "id": 3001609712, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU": "200 pFLOPS", + "ROBOT RANKING": "11,118,121", + "ARMOR": "1,436", + "SHIELD": "34,188", + "MASS": "135 Kg", + "OVERCLOCK": "Recharges more quickly with a reduced cooldown wait time." + }, + "description": "A Massive Massive Electroplate", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "health": 1436 + }, + "spriteName": "Electroshield_J_Left", + "nameStrKey": "strElectroshieldJLName", + "mirrorCubeId": "c8937280", + "hexId": "b2e8edf0" + }, + "ElectroshieldJR hexCode:c8937280 intCode:3365106304": { + "id": 3365106304, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU": "200 pFLOPS", + "ROBOT RANKING": "11,118,121", + "ARMOR": "1,436", + "SHIELD": "34,188", + "MASS": "135 Kg", + "OVERCLOCK": "Recharges more quickly with a reduced cooldown wait time." + }, + "description": "A Massive Massive Electroplate", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "health": 1436 + }, + "spriteName": "Electroshield_J_Right", + "nameStrKey": "strElectroshieldJRName", + "mirrorCubeId": "b2e8edf0", + "hexId": "c8937280" + }, + "ElectroshieldKL hexCode:3b1d84f2 intCode:991790322": { + "id": 991790322, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU": "200 pFLOPS", + "ROBOT RANKING": "11,118,121", + "ARMOR": "1,436", + "SHIELD": "34,188", + "MASS": "169 Kg", + "OVERCLOCK": "Recharges more quickly with a reduced cooldown wait time." + }, + "description": "A Massive Massive Electroplate", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "health": 1436 + }, + "spriteName": "Electroshield_K_Left", + "nameStrKey": "strElectroshieldKLName", + "mirrorCubeId": "41661b82", + "hexId": "3b1d84f2" + }, + "ElectroshieldKR hexCode:41661b82 intCode:1097210754": { + "id": 1097210754, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU": "200 pFLOPS", + "ROBOT RANKING": "11,118,121", + "ARMOR": "1,436", + "SHIELD": "34,188", + "MASS": "169 Kg", + "OVERCLOCK": "Recharges more quickly with a reduced cooldown wait time." + }, + "description": "A Massive Massive Electroplate", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "health": 1436 + }, + "spriteName": "Electroshield_K_Right", + "nameStrKey": "strElectroshieldKRName", + "mirrorCubeId": "3b1d84f2", + "hexId": "41661b82" + }, + "BronzeLeagueBadge hexCode:4d9a121b intCode:1301942811": { + "id": 1301942811, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "BronzeLeagueBadge (1301942811_10|4d9a121b_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Bronze_League_Bade", + "nameStrKey": "strBronzeLeagueBadgeName", + "mirrorCubeId": "", + "hexId": "4d9a121b" + }, + "SilverLeagueBadge hexCode:f7cfef23 intCode:4157599523": { + "id": 4157599523, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "SilverLeagueBadge (4157599523_10|f7cfef23_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Silver_League_Badge", + "nameStrKey": "strSilverLeagueBadgeName", + "mirrorCubeId": "", + "hexId": "f7cfef23" + }, + "GoldLeagueBadge hexCode:70d66255 intCode:1893098069": { + "id": 1893098069, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "GoldLeagueBadge (1893098069_10|70d66255_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Gold_League_Badge", + "nameStrKey": "strGoldLeagueBadgeName", + "mirrorCubeId": "", + "hexId": "70d66255" + }, + "DiamondLeagueBadge hexCode:24453eee intCode:608517870": { + "id": 608517870, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "DiamondLeagueBadge (608517870_10|24453eee_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Diamond_League_Badge", + "nameStrKey": "strDiamondLeagueBadgeName", + "mirrorCubeId": "", + "hexId": "24453eee" + }, + "ProtoniumLeagueBadge hexCode:7a022945 intCode:2046961989": { + "id": 2046961989, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ProtoniumLeagueBadge (2046961989_10|7a022945_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Protonium_League_Badge", + "nameStrKey": "strProtoniumLeagueBadgeName", + "mirrorCubeId": "", + "hexId": "7a022945" + }, + "ProtoniumLeagueFiveStarsBadge hexCode:767ed0ea intCode:1988022506": { + "id": 1988022506, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ProtoniumLeagueFiveStarsBadge (1988022506_10|767ed0ea_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Protonium_League_Five_Stars_Badge", + "nameStrKey": "strProtoniumLeagueFiveStarsBadgeName", + "mirrorCubeId": "", + "hexId": "767ed0ea" + }, + "VigilantEyeL hexCode:659d177e intCode:1704793982": { + "id": 1704793982, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "VigilantEyeL (1704793982_10|659d177e_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Vigilant_Eye_Left", + "nameStrKey": "strVigilantEyeLName", + "mirrorCubeId": "d41a8639", + "hexId": "659d177e" + }, + "VigilantEyeR hexCode:d41a8639 intCode:3558508089": { + "id": 3558508089, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "VigilantEyeR (3558508089_10|d41a8639_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Vigilant_Eye_Right", + "nameStrKey": "strVigilantEyeRName", + "mirrorCubeId": "659d177e", + "hexId": "d41a8639" + }, + "CatEyeL hexCode:2dc41644 intCode:767825476": { + "id": 767825476, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "CatEyeL (767825476_10|2dc41644_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Cat_Eye_Left", + "nameStrKey": "strCatEyeLName", + "mirrorCubeId": "28c42e58", + "hexId": "2dc41644" + }, + "CatEyeR hexCode:28c42e58 intCode:683945560": { + "id": 683945560, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "CatEyeR (683945560_10|28c42e58_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Cat_Eye_Right", + "nameStrKey": "strCatEyeRName", + "mirrorCubeId": "2dc41644", + "hexId": "28c42e58" + }, + "CyborgEye hexCode:5feff773 intCode:1609561971": { + "id": 1609561971, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "CyborgEye (1609561971_10|5feff773_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Cyborg_Eye", + "nameStrKey": "strCyborgEyeName", + "mirrorCubeId": "", + "hexId": "5feff773" + }, + "SpikePin hexCode:067a55f3 intCode:108680691": { + "id": 108680691, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "SpikePin (108680691_10|067a55f3_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Spike_Pin", + "nameStrKey": "strSpikePinName", + "mirrorCubeId": "", + "hexId": "067a55f3" + }, + "SpikeNeedle hexCode:38f43a8e intCode:955529870": { + "id": 955529870, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "SpikeNeedle (955529870_10|38f43a8e_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Spike_Needle", + "nameStrKey": "strSpikeNeedleName", + "mirrorCubeId": "", + "hexId": "38f43a8e" + }, + "SpikeDagger hexCode:2903f025 intCode:688123941": { + "id": 688123941, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A Cosmetic Spike which is used to make fierce looking Robots", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Spike_Dagger", + "nameStrKey": "strSpikeDaggerName", + "mirrorCubeId": "", + "hexId": "2903f025" + }, + "SpikeClaw hexCode:76b44270 intCode:1991524976": { + "id": 1991524976, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "SpikeClaw (1991524976_10|76b44270_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Spike_Claw", + "nameStrKey": "strSpikeClawName", + "mirrorCubeId": "", + "hexId": "76b44270" + }, + "VaporTrailSingle hexCode:d738f0a1 intCode:3610833057": { + "id": 3610833057, + "info": { + "category": "Rail", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic vapor trail to leave a cool looking trail wherever you\ndrive.", + "size": "NoTier", + "type": "Weapon", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Vapor_Trail_Single", + "nameStrKey": "strVaporTrailSingleName", + "mirrorCubeId": "", + "hexId": "d738f0a1" + }, + "VaporTrailTwin hexCode:0e1eb3ac intCode:236893100": { + "id": 236893100, + "info": { + "category": "Rail", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "7.5 Kg" + }, + "description": "Leave a twin trail and a longer trail than the L1.", + "size": "NoTier", + "type": "Weapon", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Vapor_Trail_Twin", + "nameStrKey": "strVaporTrailTwinName", + "mirrorCubeId": "", + "hexId": "0e1eb3ac" + }, + "RobotNameBanner hexCode:a5d4fb7a intCode:2782198650": { + "id": 2782198650, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Get your Robot name on the side of your Robot with this banner.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Robot_Name_Banner", + "nameStrKey": "strRobotNameBannerName", + "mirrorCubeId": "", + "hexId": "a5d4fb7a" + }, + "Headlamp hexCode:517de57b intCode:1367205243": { + "id": 1367205243, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "MASS": "5 Kg", + "LIGHT OUTPUT": "7000 lm", + "CPU LOAD": "25 pFLOPS", + "ROBOT RANKING": "25.00", + "ARMOR": "120" + }, + "description": "Casts light forwards. Very useful on dark planets or when the sun\ngoes down.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 25, + "health": 120 + }, + "spriteName": "Headlamp", + "nameStrKey": "strHeadlampName", + "mirrorCubeId": "", + "hexId": "517de57b" + }, + "Altimeter hexCode:a81b6ebe intCode:2820370110": { + "id": 2820370110, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "ARMOR": "88", + "CPU LOAD": "1 pFLOP", + "ROBOT RANKING": "0.00", + "MASS": "5 Kg" + }, + "description": "A visual display for the current height of your robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Altimeter", + "nameStrKey": "strAltimeterName", + "mirrorCubeId": "", + "hexId": "a81b6ebe" + }, + "Speedometer hexCode:d27bbf3a intCode:3531325242": { + "id": 3531325242, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "ARMOR": "88", + "CPU LOAD": "1 pFLOP", + "ROBOT RANKING": "0.00", + "MASS": "5 Kg" + }, + "description": "A visual display for the current speed of your robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Speedometer", + "nameStrKey": "strSpeedometerName", + "mirrorCubeId": "", + "hexId": "d27bbf3a" + }, + "UKHoloflag hexCode:f8ddf4cb intCode:4175295691": { + "id": 4175295691, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagUnitedKingdom", + "nameStrKey": "strUKHoloflagName", + "mirrorCubeId": "", + "hexId": "f8ddf4cb" + }, + "USAHoloflag hexCode:d42c5ba3 intCode:3559676835": { + "id": 3559676835, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagUSA", + "nameStrKey": "strUSAHoloflagName", + "mirrorCubeId": "", + "hexId": "d42c5ba3" + }, + "RussiaHoloflag hexCode:f2544196 intCode:4065608086": { + "id": 4065608086, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagRussia", + "nameStrKey": "strRussiaHoloflagName", + "mirrorCubeId": "", + "hexId": "f2544196" + }, + "JapanHoloflag hexCode:7867bbda intCode:2020064218": { + "id": 2020064218, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagJapan", + "nameStrKey": "strJapanHoloflagName", + "mirrorCubeId": "", + "hexId": "7867bbda" + }, + "PolandHoloflag hexCode:a2c30d84 intCode:2730691972": { + "id": 2730691972, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagPoland", + "nameStrKey": "strPolandHoloflagName", + "mirrorCubeId": "", + "hexId": "a2c30d84" + }, + "GermanyHoloflag hexCode:9ac323dd intCode:2596479965": { + "id": 2596479965, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagGermany", + "nameStrKey": "strGermanyHoloflagName", + "mirrorCubeId": "", + "hexId": "9ac323dd" + }, + "CanadaHoloflag hexCode:52928a7d intCode:1385335421": { + "id": 1385335421, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagCanada", + "nameStrKey": "strCanadaHoloflagName", + "mirrorCubeId": "", + "hexId": "52928a7d" + }, + "UkraineHoloflag hexCode:0411d3e0 intCode:68277216": { + "id": 68277216, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagUkraine", + "nameStrKey": "strUkraineHoloflagName", + "mirrorCubeId": "", + "hexId": "0411d3e0" + }, + "KazakhstanHoloflag hexCode:c685b6af intCode:3330651823": { + "id": 3330651823, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagKazakstan", + "nameStrKey": "strKazakhstanHoloflagName", + "mirrorCubeId": "", + "hexId": "c685b6af" + }, + "BelarusHoloflag hexCode:6963d92c intCode:1768151340": { + "id": 1768151340, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagBelarus", + "nameStrKey": "strBelarusHoloflagName", + "mirrorCubeId": "", + "hexId": "6963d92c" + }, + "ItalyHoloflag hexCode:f8533204 intCode:4166201860": { + "id": 4166201860, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagItaly", + "nameStrKey": "strItalyHoloflagName", + "mirrorCubeId": "", + "hexId": "f8533204" + }, + "IcelandHoloflag hexCode:6b0db21d intCode:1796059677": { + "id": 1796059677, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "IcelandHoloflag (1796059677_10|6b0db21d_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Cube_FlagIceland", + "nameStrKey": "strIcelandHoloflagName", + "mirrorCubeId": "", + "hexId": "6b0db21d" + }, + "IrelandHoloflag hexCode:cd7b3f1e intCode:3447406366": { + "id": 3447406366, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagIreland", + "nameStrKey": "strIrelandHoloflagName", + "mirrorCubeId": "", + "hexId": "cd7b3f1e" + }, + "AustraliaHoloflag hexCode:279b50e7 intCode:664490215": { + "id": 664490215, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagAustralian", + "nameStrKey": "strAustraliaHoloflagName", + "mirrorCubeId": "", + "hexId": "279b50e7" + }, + "SpainHoloflag hexCode:b9a98b87 intCode:3114896263": { + "id": 3114896263, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagSpanish", + "nameStrKey": "strSpainHoloflagName", + "mirrorCubeId": "", + "hexId": "b9a98b87" + }, + "BrazilHoloflag hexCode:85b2d324 intCode:2243089188": { + "id": 2243089188, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagBrazil", + "nameStrKey": "strBrazilHoloflagName", + "mirrorCubeId": "", + "hexId": "85b2d324" + }, + "NetherlandsHoloflag hexCode:053f8fce intCode:88051662": { + "id": 88051662, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagHolland", + "nameStrKey": "strNetherlandsHoloflagName", + "mirrorCubeId": "", + "hexId": "053f8fce" + }, + "BelgiumHoloFlag hexCode:6b355e34 intCode:1798659636": { + "id": 1798659636, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "BelgiumHoloFlag (1798659636_10|6b355e34_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Cube_FlagBelgium", + "nameStrKey": "strBelgiumHoloFlagName", + "mirrorCubeId": "", + "hexId": "6b355e34" + }, + "ArgentinaHoloflag hexCode:1524885d intCode:354715741": { + "id": 354715741, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagArgentina", + "nameStrKey": "strArgentinaHoloflagName", + "mirrorCubeId": "", + "hexId": "1524885d" + }, + "SwedenHoloflag hexCode:6a7f1cb8 intCode:1786715320": { + "id": 1786715320, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagSweden", + "nameStrKey": "strSwedenHoloflagName", + "mirrorCubeId": "", + "hexId": "6a7f1cb8" + }, + "ChinaHoloflag hexCode:e90fb796 intCode:3910121366": { + "id": 3910121366, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagChina", + "nameStrKey": "strChinaHoloflagName", + "mirrorCubeId": "", + "hexId": "e90fb796" + }, + "FranceHoloflag hexCode:8d7d82db intCode:2373812955": { + "id": 2373812955, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagFrance", + "nameStrKey": "strFranceHoloflagName", + "mirrorCubeId": "", + "hexId": "8d7d82db" + }, + "SouthKoreaHoloflag hexCode:1b763d83 intCode:460733827": { + "id": 460733827, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with a country flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagSouthKorea", + "nameStrKey": "strSouthKoreaHoloflagName", + "mirrorCubeId": "", + "hexId": "1b763d83" + }, + "NewZealandHoloFlag hexCode:aa35c95c intCode:2855651676": { + "id": 2855651676, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "NewZealandHoloFlag (2855651676_10|aa35c95c_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Cube_FlagNewZealand", + "nameStrKey": "strNewZealandHoloFlagName", + "mirrorCubeId": "", + "hexId": "aa35c95c" + }, + "DanishHoloFlag hexCode:3796666e intCode:932603502": { + "id": 932603502, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "DanishHoloFlag (932603502_10|3796666e_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Cube_FlagDanish", + "nameStrKey": "strDanishHoloFlagName", + "mirrorCubeId": "", + "hexId": "3796666e" + }, + "TurkishHoloFlag hexCode:f2a56e3a intCode:4070927930": { + "id": 4070927930, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "TurkishHoloFlag (4070927930_10|f2a56e3a_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Cube_FlagTurkish", + "nameStrKey": "strTurkishHoloFlagName", + "mirrorCubeId": "", + "hexId": "f2a56e3a" + }, + "OverwolfHoloflag hexCode:3cd351e1 intCode:1020482017": { + "id": 1020482017, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "OverwolfHoloflag (1020482017_10|3cd351e1_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Cube_FlagOverwolf", + "nameStrKey": "strOverwolfHoloflagName", + "mirrorCubeId": "", + "hexId": "3cd351e1" + }, + "RobocraftHoloflag hexCode:74b66a94 intCode:1958111892": { + "id": 1958111892, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "An awesome holographic flag with the Robocraft logo on it.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagRobocraft", + "nameStrKey": "strRobocraftHoloflagName", + "mirrorCubeId": "", + "hexId": "74b66a94" + }, + "CurseHoloFlag hexCode:3df48a21 intCode:1039436321": { + "id": 1039436321, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with the Curse flag on it for the side of your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagCurse", + "nameStrKey": "strCurseHoloFlagName", + "mirrorCubeId": "", + "hexId": "3df48a21" + }, + "HumbleBundleHoloFlag hexCode:b44a1aa1 intCode:3024755361": { + "id": 3024755361, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A cosmetic badge with the HumbleBundle flag on it for the side of\nyour Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagHumbleBundlet", + "nameStrKey": "strHumbleBundleHoloFlagName", + "mirrorCubeId": "", + "hexId": "b44a1aa1" + }, + "AbleGamersCharityHoloflag hexCode:5fd3ad15 intCode:1607707925": { + "id": 1607707925, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "AbleGamersCharityHoloflag (1607707925_10|5fd3ad15_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Cube_AbleGamers", + "nameStrKey": "strAbleGamersCharityHoloflagName", + "mirrorCubeId": "", + "hexId": "5fd3ad15" + }, + "YogscastHoloflag hexCode:f32d3040 intCode:4079824960": { + "id": 4079824960, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "YogscastHoloflag (4079824960_10|f32d3040_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Yogscast_Holoflag", + "nameStrKey": "strYogscastHoloflagName", + "mirrorCubeId": "", + "hexId": "f32d3040" + }, + "ChronoGGHoloflag hexCode:336619d4 intCode:862329300": { + "id": 862329300, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ChronoGGHoloflag (862329300_10|336619d4_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Cube_FlagChronogg", + "nameStrKey": "strChronoGGHoloflagName", + "mirrorCubeId": "", + "hexId": "336619d4" + }, + "PirateHoloflag hexCode:f5dbb50b intCode:4124816651": { + "id": 4124816651, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "PirateHoloflag (4124816651_10|f5dbb50b_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Pirate_Flag", + "nameStrKey": "strPirateHoloflagName", + "mirrorCubeId": "", + "hexId": "f5dbb50b" + }, + "IntelHoloflag hexCode:3e1c18a6 intCode:1042028710": { + "id": 1042028710, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "IntelHoloflag (1042028710_10|3e1c18a6_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Rainbow_Flag", + "nameStrKey": "strIntelHoloflagName", + "mirrorCubeId": "", + "hexId": "3e1c18a6" + }, + "AlienwareHoloflag hexCode:8bc75e03 intCode:2345098755": { + "id": 2345098755, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "AlienwareHoloflag (2345098755_10|8bc75e03_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Alienware_flag", + "nameStrKey": "strAlienwareHoloflagName", + "mirrorCubeId": "", + "hexId": "8bc75e03" + }, + "DevSupporterHoloflag hexCode:fa592224 intCode:4200145444": { + "id": 4200145444, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Show your support for Robocraft and the dev team with this Freejam\nbadge.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagDevSupporter", + "nameStrKey": "strDevSupporterHoloflagName", + "mirrorCubeId": "", + "hexId": "fa592224" + }, + "GoldDevSupporterHoloflag hexCode:c8e9ce5a intCode:3370765914": { + "id": 3370765914, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOP", + "ROBOT RATING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "A special show of support for Robocraft and the dev team with this\nGold Freejam badge.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_FlagGoldDevSupporter", + "nameStrKey": "strGoldDevSupporterHoloflagName", + "mirrorCubeId": "", + "hexId": "c8e9ce5a" + }, + "3YearsHoloflag hexCode:ee35a82a intCode:3996493866": { + "id": 3996493866, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "3YearsHoloflag (3996493866_10|ee35a82a_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "3_Years_Holoflag", + "nameStrKey": "str3YearsHoloflagName", + "mirrorCubeId": "", + "hexId": "ee35a82a" + }, + "4YearsHoloflag hexCode:1e40aef9 intCode:507555577": { + "id": 507555577, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "4YearsHoloflag (507555577_10|1e40aef9_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "4_Years_Holoflag", + "nameStrKey": "str4YearsHoloflagName", + "mirrorCubeId": "", + "hexId": "1e40aef9" + }, + "FootballGuardL hexCode:690d5e67 intCode:1762483815": { + "id": 1762483815, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic American Footbal mask for your\nRobot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Football_Guard_L", + "nameStrKey": "strFootballGuardLName", + "mirrorCubeId": "1376c117", + "hexId": "690d5e67" + }, + "FootballGuardR hexCode:1376c117 intCode:326549783": { + "id": 326549783, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic American Footbal mask for your\nRobot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Football_Guard_R", + "nameStrKey": "strFootballGuardRName", + "mirrorCubeId": "690d5e67", + "hexId": "1376c117" + }, + "FootballFaceL hexCode:27f91c6e intCode:670637166": { + "id": 670637166, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic American Footbal mask for your\nRobot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Football_Face_L", + "nameStrKey": "strFootballFaceLName", + "mirrorCubeId": "5d82831e", + "hexId": "27f91c6e" + }, + "FootballFaceR hexCode:5d82831e intCode:1568834334": { + "id": 1568834334, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic American Footbal mask for your\nRobot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Football_Face_R", + "nameStrKey": "strFootballFaceRName", + "mirrorCubeId": "27f91c6e", + "hexId": "5d82831e" + }, + "FootballHelmetL hexCode:1a2395e0 intCode:438539744": { + "id": 438539744, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic American Footbal mask for your\nRobot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Football_Helmet_L", + "nameStrKey": "strFootballHelmetLName", + "mirrorCubeId": "60580a90", + "hexId": "1a2395e0" + }, + "FootballHelmetR hexCode:60580a90 intCode:1616382608": { + "id": 1616382608, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic American Footbal mask for your\nRobot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Football_Helmet_R", + "nameStrKey": "strFootballHelmetRName", + "mirrorCubeId": "1a2395e0", + "hexId": "60580a90" + }, + "Mech7JawL hexCode:1ae28e24 intCode:451055140": { + "id": 451055140, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Mech mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Mech_7_Jaw_L", + "nameStrKey": "strMech7JawLName", + "mirrorCubeId": "60991154", + "hexId": "1ae28e24" + }, + "Mech7JawR hexCode:60991154 intCode:1620644180": { + "id": 1620644180, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Mech mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Mech_7_Jaw_R", + "nameStrKey": "strMech7JawRName", + "mirrorCubeId": "1ae28e24", + "hexId": "60991154" + }, + "Mech7NoseL hexCode:d444f288 intCode:3561288328": { + "id": 3561288328, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Mech mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Mech_7_Nose_L", + "nameStrKey": "strMech7NoseLName", + "mirrorCubeId": "ae3f6df8", + "hexId": "d444f288" + }, + "Mech7NoseR hexCode:ae3f6df8 intCode:2923392504": { + "id": 2923392504, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Mech mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Mech_7_Nose_R", + "nameStrKey": "strMech7NoseRName", + "mirrorCubeId": "d444f288", + "hexId": "ae3f6df8" + }, + "Mech7EarL hexCode:93d03e98 intCode:2479898264": { + "id": 2479898264, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Mech mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Mech_7_Side_L", + "nameStrKey": "strMech7EarLName", + "mirrorCubeId": "e9aba1e8", + "hexId": "93d03e98" + }, + "Mech7EarR hexCode:e9aba1e8 intCode:3920339432": { + "id": 3920339432, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Mech mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Mech_7_Side_R", + "nameStrKey": "strMech7EarRName", + "mirrorCubeId": "93d03e98", + "hexId": "e9aba1e8" + }, + "SabretoothJawL hexCode:ad3cd986 intCode:2906446214": { + "id": 2906446214, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Sabretooth mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Sabre_Jaw_L", + "nameStrKey": "strSabretoothJawLName", + "mirrorCubeId": "d74746f6", + "hexId": "ad3cd986" + }, + "SabretoothJawR hexCode:d74746f6 intCode:3611772662": { + "id": 3611772662, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Sabretooth mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Sabre_Jaw_R", + "nameStrKey": "strSabretoothJawRName", + "mirrorCubeId": "ad3cd986", + "hexId": "d74746f6" + }, + "SabretoothFaceL hexCode:4893d2fa intCode:1217647354": { + "id": 1217647354, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Sabretooth mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Sabre_Face_L", + "nameStrKey": "strSabretoothFaceLName", + "mirrorCubeId": "32e84d8a", + "hexId": "4893d2fa" + }, + "SabretoothFaceR hexCode:32e84d8a intCode:854085002": { + "id": 854085002, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Sabretooth mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Sabre_Face_R", + "nameStrKey": "strSabretoothFaceRName", + "mirrorCubeId": "4893d2fa", + "hexId": "32e84d8a" + }, + "SabretoothEarL hexCode:240e693a intCode:604924218": { + "id": 604924218, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Sabretooth mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Sabre_Ear_L", + "nameStrKey": "strSabretoothEarLName", + "mirrorCubeId": "5e75f64a", + "hexId": "240e693a" + }, + "SabretoothEarR hexCode:5e75f64a intCode:1584789066": { + "id": 1584789066, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Sabretooth mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Sabre_Ear_R", + "nameStrKey": "strSabretoothEarRName", + "mirrorCubeId": "240e693a", + "hexId": "5e75f64a" + }, + "Rhino8EarL hexCode:f7aa6443 intCode:4155139139": { + "id": 4155139139, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Rhino mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Rhino_8_Ear_L", + "nameStrKey": "strRhino8EarLName", + "mirrorCubeId": "8dd1fb33", + "hexId": "f7aa6443" + }, + "Rhino8EarR hexCode:8dd1fb33 intCode:2379348787": { + "id": 2379348787, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Rhino mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Rhino_8_Ear_R", + "nameStrKey": "strRhino8EarRName", + "mirrorCubeId": "f7aa6443", + "hexId": "8dd1fb33" + }, + "Rhino8JawL hexCode:7e98d4ff intCode:2123945215": { + "id": 2123945215, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Rhino mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Rhino_8_Jaw_L", + "nameStrKey": "strRhino8JawLName", + "mirrorCubeId": "04e34b8f", + "hexId": "7e98d4ff" + }, + "Rhino8JawR hexCode:04e34b8f intCode:82004879": { + "id": 82004879, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Rhino mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Rhino_8_Jaw_R", + "nameStrKey": "strRhino8JawRName", + "mirrorCubeId": "7e98d4ff", + "hexId": "04e34b8f" + }, + "Rhino8NoseL hexCode:5ca058e8 intCode:1554012392": { + "id": 1554012392, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Rhino mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Rhino_8_Face_L", + "nameStrKey": "strRhino8NoseLName", + "mirrorCubeId": "26dbc798", + "hexId": "5ca058e8" + }, + "Rhino8NoseR hexCode:26dbc798 intCode:651937688": { + "id": 651937688, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Rhino mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Rhino_8_Face_R", + "nameStrKey": "strRhino8NoseRName", + "mirrorCubeId": "5ca058e8", + "hexId": "26dbc798" + }, + "EagleNeckL hexCode:0247ed46 intCode:38268230": { + "id": 38268230, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "EagleNeckL (38268230_10|0247ed46_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Eagle_Neck_L", + "nameStrKey": "strEagleNeckLName", + "mirrorCubeId": "783c7236", + "hexId": "0247ed46" + }, + "EagleNeckR hexCode:783c7236 intCode:2017227318": { + "id": 2017227318, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "EagleNeckR (2017227318_10|783c7236_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Eagle_Neck_R", + "nameStrKey": "strEagleNeckRName", + "mirrorCubeId": "0247ed46", + "hexId": "783c7236" + }, + "EagleFeathersL hexCode:a8a9b323 intCode:2829693731": { + "id": 2829693731, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "EagleFeathersL (2829693731_10|a8a9b323_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Eagle_Feathers_L", + "nameStrKey": "strEagleFeathersLName", + "mirrorCubeId": "d2d22c53", + "hexId": "a8a9b323" + }, + "EagleFeathersR hexCode:d2d22c53 intCode:3536989267": { + "id": 3536989267, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "EagleFeathersR (3536989267_10|d2d22c53_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Eagle_Feathers_R", + "nameStrKey": "strEagleFeathersRName", + "mirrorCubeId": "a8a9b323", + "hexId": "d2d22c53" + }, + "EagleFaceL hexCode:6b204fb5 intCode:1797279669": { + "id": 1797279669, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "EagleFaceL (1797279669_10|6b204fb5_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Eagle_Face_L", + "nameStrKey": "strEagleFaceLName", + "mirrorCubeId": "115bd0c5", + "hexId": "6b204fb5" + }, + "EagleFaceR hexCode:115bd0c5 intCode:291229893": { + "id": 291229893, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "EagleFaceR (291229893_10|115bd0c5_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Eagle_Face_R", + "nameStrKey": "strEagleFaceRName", + "mirrorCubeId": "6b204fb5", + "hexId": "115bd0c5" + }, + "AlienwareMaskEarL hexCode:29b006b6 intCode:699401910": { + "id": 699401910, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "AlienwareMaskEarL (699401910_10|29b006b6_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Alienware_Mask_Ear_L", + "nameStrKey": "strAlienwareMaskEarLName", + "mirrorCubeId": "baf5d3c6", + "hexId": "29b006b6" + }, + "AlienwareMaskEarR hexCode:baf5d3c6 intCode:3136672710": { + "id": 3136672710, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "AlienwareMaskEarR (3136672710_10|baf5d3c6_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Alienware_Mask_Ear_R", + "nameStrKey": "strAlienwareMaskEarRName", + "mirrorCubeId": "29b006b6", + "hexId": "baf5d3c6" + }, + "AlienwareMaskHeadL hexCode:ec9b27e0 intCode:3969591264": { + "id": 3969591264, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "AlienwareMaskHeadL (3969591264_10|ec9b27e0_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Alienware_Mask_Head_L", + "nameStrKey": "strAlienwareMaskHeadLName", + "mirrorCubeId": "7fdef290", + "hexId": "ec9b27e0" + }, + "AlienwareMaskHeadR hexCode:7fdef290 intCode:2145317520": { + "id": 2145317520, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "AlienwareMaskHeadR (2145317520_10|7fdef290_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Alienware_Mask_Head_R", + "nameStrKey": "strAlienwareMaskHeadRName", + "mirrorCubeId": "ec9b27e0", + "hexId": "7fdef290" + }, + "AlienwareMaskJawL hexCode:4e5ea693 intCode:1314825875": { + "id": 1314825875, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "AlienwareMaskJawL (1314825875_10|4e5ea693_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Alienware_Mask_Jaw_L", + "nameStrKey": "strAlienwareMaskJawLName", + "mirrorCubeId": "dd1b73e3", + "hexId": "4e5ea693" + }, + "AlienwareMaskJawR hexCode:dd1b73e3 intCode:3709563875": { + "id": 3709563875, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "AlienwareMaskJawR (3709563875_10|dd1b73e3_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Alienware_Mask_Jaw_R", + "nameStrKey": "strAlienwareMaskJawRName", + "mirrorCubeId": "4e5ea693", + "hexId": "dd1b73e3" + }, + "NinjaMaskBandanaL hexCode:52e160ec intCode:1390502124": { + "id": 1390502124, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "NinjaMaskBandanaL (1390502124_10|52e160ec_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Ninja_Bandana_L", + "nameStrKey": "strNinjaMaskBandanaLName", + "mirrorCubeId": "c1a4b59c", + "hexId": "52e160ec" + }, + "NinjaMaskBandanaR hexCode:c1a4b59c intCode:3248797084": { + "id": 3248797084, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "NinjaMaskBandanaR (3248797084_10|c1a4b59c_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Ninja_Bandana_R", + "nameStrKey": "strNinjaMaskBandanaRName", + "mirrorCubeId": "52e160ec", + "hexId": "c1a4b59c" + }, + "NinjaMaskHeadL hexCode:3af9ad0d intCode:989441293": { + "id": 989441293, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "NinjaMaskHeadL (989441293_10|3af9ad0d_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Ninja_Head_L", + "nameStrKey": "strNinjaMaskHeadLName", + "mirrorCubeId": "a9bc787d", + "hexId": "3af9ad0d" + }, + "NinjaMaskHeadR hexCode:a9bc787d intCode:2847701117": { + "id": 2847701117, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "NinjaMaskHeadR (2847701117_10|a9bc787d_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Ninja_Head_R", + "nameStrKey": "strNinjaMaskHeadRName", + "mirrorCubeId": "3af9ad0d", + "hexId": "a9bc787d" + }, + "NinjaMaskL hexCode:95383d65 intCode:2503490917": { + "id": 2503490917, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "NinjaMaskL (2503490917_10|95383d65_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Ninja_Mask_L", + "nameStrKey": "strNinjaMaskLName", + "mirrorCubeId": "067de815", + "hexId": "95383d65" + }, + "NinjaMaskR hexCode:067de815 intCode:108914709": { + "id": 108914709, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "NinjaMaskR (108914709_10|067de815_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Ninja_Mask_R", + "nameStrKey": "strNinjaMaskRName", + "mirrorCubeId": "95383d65", + "hexId": "067de815" + }, + "ScaryMaskEyesL hexCode:7bb07a9b intCode:2075163291": { + "id": 2075163291, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that form a cosmetic Halloween mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Skull_Eye_L", + "nameStrKey": "strScaryMaskEyesLName", + "mirrorCubeId": "01cbe5eb", + "hexId": "7bb07a9b" + }, + "ScaryMaskEyesR hexCode:01cbe5eb intCode:30139883": { + "id": 30139883, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that form a cosmetic Halloween mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Skull_Eye_R", + "nameStrKey": "strScaryMaskEyesRName", + "mirrorCubeId": "7bb07a9b", + "hexId": "01cbe5eb" + }, + "ScaryMaskHornL hexCode:adc0edfa intCode:2915102202": { + "id": 2915102202, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that form a cosmetic Halloween mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Skull_Horn_L", + "nameStrKey": "strScaryMaskHornLName", + "mirrorCubeId": "d7bb728a", + "hexId": "adc0edfa" + }, + "ScaryMaskHornR hexCode:d7bb728a intCode:3619385994": { + "id": 3619385994, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that form a cosmetic Halloween mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Skull_Horn_R", + "nameStrKey": "strScaryMaskHornRName", + "mirrorCubeId": "adc0edfa", + "hexId": "d7bb728a" + }, + "ScaryMaskJawL hexCode:27a8ac8f intCode:665365647": { + "id": 665365647, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that form a cosmetic Halloween mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Skull_Jaw_L", + "nameStrKey": "strScaryMaskJawLName", + "mirrorCubeId": "5dd333ff", + "hexId": "27a8ac8f" + }, + "ScaryMaskJawR hexCode:5dd333ff intCode:1574122495": { + "id": 1574122495, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that form a cosmetic Halloween mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Skull_Jaw_R", + "nameStrKey": "strScaryMaskJawRName", + "mirrorCubeId": "27a8ac8f", + "hexId": "5dd333ff" + }, + "OverWolfEarL hexCode:fa5cc26f intCode:4200383087": { + "id": 4200383087, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that form a cosmetic Wolf mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Overwolf_Ear_L", + "nameStrKey": "strOverWolfEarLName", + "mirrorCubeId": "80275d1f", + "hexId": "fa5cc26f" + }, + "OverWolfEarR hexCode:80275d1f intCode:2150063391": { + "id": 2150063391, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that form a cosmetic Wolf mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Overwolf_Ear_R", + "nameStrKey": "strOverWolfEarRName", + "mirrorCubeId": "fa5cc26f", + "hexId": "80275d1f" + }, + "OverWolfEyeL hexCode:b666bd79 intCode:3060186489": { + "id": 3060186489, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that form a cosmetic Wolf mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Overwolf_Nose_L", + "nameStrKey": "strOverWolfEyeLName", + "mirrorCubeId": "cc1d2209", + "hexId": "b666bd79" + }, + "OverWolfEyeR hexCode:cc1d2209 intCode:3424461321": { + "id": 3424461321, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that form a cosmetic Wolf mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Overwolf_Nose_R", + "nameStrKey": "strOverWolfEyeRName", + "mirrorCubeId": "b666bd79", + "hexId": "cc1d2209" + }, + "OverWolfJawL hexCode:736e72d3 intCode:1936618195": { + "id": 1936618195, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that form a cosmetic Wolf mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Overwolf_Jaw_L", + "nameStrKey": "strOverWolfJawLName", + "mirrorCubeId": "0915eda3", + "hexId": "736e72d3" + }, + "OverWolfJawR hexCode:0915eda3 intCode:152432035": { + "id": 152432035, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that form a cosmetic Wolf mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Overwolf_Jaw_R", + "nameStrKey": "strOverWolfJawRName", + "mirrorCubeId": "736e72d3", + "hexId": "0915eda3" + }, + "HoneydewHornsL hexCode:4b9739e2 intCode:1268201954": { + "id": 1268201954, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Yogscast mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Honeydew_Horns_L", + "nameStrKey": "strHoneydewHornsLName", + "mirrorCubeId": "31eca692", + "hexId": "4b9739e2" + }, + "HoneydewHornsR hexCode:31eca692 intCode:837592722": { + "id": 837592722, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Yogscast mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Honeydew_Horns_R", + "nameStrKey": "strHoneydewHornsRName", + "mirrorCubeId": "4b9739e2", + "hexId": "31eca692" + }, + "HoneydewFaceL hexCode:421264a1 intCode:1108501665": { + "id": 1108501665, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Yogscast mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Honeydew_Face_L", + "nameStrKey": "strHoneydewFaceLName", + "mirrorCubeId": "3869fbd1", + "hexId": "421264a1" + }, + "HoneydewFaceR hexCode:3869fbd1 intCode:946469841": { + "id": 946469841, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Yogscast mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Honeydew_Face_R", + "nameStrKey": "strHoneydewFaceRName", + "mirrorCubeId": "421264a1", + "hexId": "3869fbd1" + }, + "HoneydewBeardL hexCode:6d9df1d2 intCode:1839067602": { + "id": 1839067602, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Yogscast mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Honeydew_Beard_L", + "nameStrKey": "strHoneydewBeardLName", + "mirrorCubeId": "17e66ea2", + "hexId": "6d9df1d2" + }, + "HoneydewBeardR hexCode:17e66ea2 intCode:400977570": { + "id": 400977570, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": { + "CPU LOAD": "1 pFLOPS", + "ROBOT RANKING": "0.00", + "ARMOR": "88", + "MASS": "5 Kg" + }, + "description": "Part of a set that forms a cosmetic Yogscast mask for your Robot.", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true, + "cpu": 1, + "health": 88 + }, + "spriteName": "Cube_Honeydew_Beard_R", + "nameStrKey": "strHoneydewBeardRName", + "mirrorCubeId": "6d9df1d2", + "hexId": "17e66ea2" + }, + "CockpitFrontL hexCode:50bf4335 intCode:1354711861": { + "id": 1354711861, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "CockpitFrontL (1354711861_10|50bf4335_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Cockpit_Front_L", + "nameStrKey": "strCockpitFrontLName", + "mirrorCubeId": "2ac4dc45", + "hexId": "50bf4335" + }, + "CockpitFrontR hexCode:2ac4dc45 intCode:717544517": { + "id": 717544517, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "CockpitFrontR (717544517_10|2ac4dc45_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Cockpit_Front_R", + "nameStrKey": "strCockpitFrontRName", + "mirrorCubeId": "50bf4335", + "hexId": "2ac4dc45" + }, + "CockpitMidL hexCode:a1a01caa intCode:2711624874": { + "id": 2711624874, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "CockpitMidL (2711624874_10|a1a01caa_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Cockpit_Mid_L", + "nameStrKey": "strCockpitMidLName", + "mirrorCubeId": "dbdb83da", + "hexId": "a1a01caa" + }, + "CockpitMidR hexCode:dbdb83da intCode:3688596442": { + "id": 3688596442, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "CockpitMidR (3688596442_10|dbdb83da_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Cockpit_Mid_R", + "nameStrKey": "strCockpitMidRName", + "mirrorCubeId": "a1a01caa", + "hexId": "dbdb83da" + }, + "CockpitTopL hexCode:96d02dfb intCode:2530225659": { + "id": 2530225659, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "CockpitTopL (2530225659_10|96d02dfb_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Cockpit_Top_L", + "nameStrKey": "strCockpitTopLName", + "mirrorCubeId": "ecabb28b", + "hexId": "96d02dfb" + }, + "CockpitTopR hexCode:ecabb28b intCode:3970675339": { + "id": 3970675339, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "CockpitTopR (3970675339_10|ecabb28b_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Cockpit_Top_R", + "nameStrKey": "strCockpitTopRName", + "mirrorCubeId": "96d02dfb", + "hexId": "ecabb28b" + }, + "ProtoniumCrystal hexCode:eb74b371 intCode:3950293873": { + "id": 3950293873, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "ProtoniumCrystal (3950293873_10|eb74b371_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "CubeThumb_LightChassis_Cube", + "nameStrKey": "strProtoniumCrystalName", + "mirrorCubeId": "", + "hexId": "eb74b371" + }, + "Equalizer hexCode:a531f437 intCode:2771514423": { + "id": 2771514423, + "info": { + "category": "NotAFunctionalItem", + "placements": 0, + "stats": {}, + "description": "Equalizer (2771514423_10|a531f437_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "CubeThumb_LightChassis_Cube", + "nameStrKey": "strEqualizerName", + "mirrorCubeId": "", + "hexId": "a531f437" + }, + "ProtoniumClasp hexCode:242c0ab6 intCode:606866102": { + "id": 606866102, + "info": { + "category": "NotAFunctionalItem", + "placements": 0, + "stats": {}, + "description": "ProtoniumClasp (606866102_10|242c0ab6_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "CubeThumb_LightChassis_Cube", + "nameStrKey": "strProtoniumClaspName", + "mirrorCubeId": "", + "hexId": "242c0ab6" + }, + "FusionTower hexCode:eb87104b intCode:3951497291": { + "id": 3951497291, + "info": { + "category": "Ion", + "placements": 0, + "stats": {}, + "description": "FusionTower (3951497291_10|eb87104b_16) without a description", + "size": "NoTier", + "type": "Weapon", + "active": true + }, + "spriteName": "CubeThumb_LightChassis_Cube", + "nameStrKey": "strFusionTowerName", + "mirrorCubeId": "", + "hexId": "eb87104b" + }, + "PilotSeatCray hexCode:a97d4c50 intCode:2843561040": { + "id": 2843561040, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "PilotSeatCray (2843561040_10|a97d4c50_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "RC_Cube_PilotSeat_Cray", + "nameStrKey": "strPilotSeatCrayName", + "mirrorCubeId": "", + "hexId": "a97d4c50" + }, + "PilotSeatGene hexCode:551507ef intCode:1427441647": { + "id": 1427441647, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "PilotSeatGene (1427441647_10|551507ef_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "RC_Cube_PilotSeat_Gene", + "nameStrKey": "strPilotSeatGeneName", + "mirrorCubeId": "", + "hexId": "551507ef" + }, + "PilotSeatMega hexCode:8aa319cf intCode:2325944783": { + "id": 2325944783, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "PilotSeatMega (2325944783_10|8aa319cf_16) without a description", + "size": "T5", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "RC_Cube_PilotSeat_Mega", + "nameStrKey": "strPilotSeatMegaName", + "mirrorCubeId": "", + "hexId": "8aa319cf" + }, + "PilotSeatRetro hexCode:a37fc35d intCode:2743059293": { + "id": 2743059293, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "PilotSeatRetro (2743059293_10|a37fc35d_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "RC_Cube_PilotSeat_Retro", + "nameStrKey": "strPilotSeatRetroName", + "mirrorCubeId": "", + "hexId": "a37fc35d" + }, + "BubbleBlower hexCode:94194e48 intCode:2484686408": { + "id": 2484686408, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "BubbleBlower (2484686408_10|94194e48_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Bubble_Machine", + "nameStrKey": "strBubbleBlowerName", + "mirrorCubeId": "", + "hexId": "94194e48" + }, + "Balloon hexCode:14a3b3de intCode:346272734": { + "id": 346272734, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "Balloon (346272734_10|14a3b3de_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Balloon", + "nameStrKey": "strBalloonName", + "mirrorCubeId": "", + "hexId": "14a3b3de" + }, + "5YearsHoloflag hexCode:bf5e9f79 intCode:3210649465": { + "id": 3210649465, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "5YearsHoloflag (3210649465_10|bf5e9f79_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "5_Years_Holoflag", + "nameStrKey": "str5YearsHoloflagName", + "mirrorCubeId": "", + "hexId": "bf5e9f79" + }, + "TrexHeadL hexCode:2fa4624a intCode:799302218": { + "id": 799302218, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "TrexHeadL (799302218_10|2fa4624a_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "TRex_Mask_Head_L", + "nameStrKey": "strTrexHeadLName", + "mirrorCubeId": "3a87afed", + "hexId": "2fa4624a" + }, + "TrexHeadR hexCode:3a87afed intCode:981970925": { + "id": 981970925, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "TrexHeadR (981970925_10|3a87afed_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "TRex_Mask_Head_R", + "nameStrKey": "strTrexHeadRName", + "mirrorCubeId": "2fa4624a", + "hexId": "3a87afed" + }, + "TrexNoseL hexCode:f28f0da6 intCode:4069461414": { + "id": 4069461414, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "TrexNoseL (4069461414_10|f28f0da6_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "TRex_Mask_Nose_L", + "nameStrKey": "strTrexNoseLName", + "mirrorCubeId": "27e72172", + "hexId": "f28f0da6" + }, + "TrexNoseR hexCode:27e72172 intCode:669458802": { + "id": 669458802, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "TrexNoseR (669458802_10|27e72172_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "TRex_Mask_Nose_R", + "nameStrKey": "strTrexNoseRName", + "mirrorCubeId": "f28f0da6", + "hexId": "27e72172" + }, + "TrexJawL hexCode:d7b3e66a intCode:3618891370": { + "id": 3618891370, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "TrexJawL (3618891370_10|d7b3e66a_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "TRex_Mask_Jaw_L", + "nameStrKey": "strTrexJawLName", + "mirrorCubeId": "dac99bf1", + "hexId": "d7b3e66a" + }, + "TrexJawR hexCode:dac99bf1 intCode:3670645745": { + "id": 3670645745, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "TrexJawR (3670645745_10|dac99bf1_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "TRex_Mask_Jaw_R", + "nameStrKey": "strTrexJawRName", + "mirrorCubeId": "d7b3e66a", + "hexId": "dac99bf1" + }, + "SilverLeagueBadgeArena hexCode:5c741227 intCode:1551110695": { + "id": 1551110695, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "SilverLeagueBadgeArena (1551110695_10|5c741227_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "LeagueBadge_Arena_Silver", + "nameStrKey": "strSilverLeagueBadgeArenaName", + "mirrorCubeId": "", + "hexId": "5c741227" + }, + "GoldLeagueBadgeArena hexCode:95e41e07 intCode:2514755079": { + "id": 2514755079, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "GoldLeagueBadgeArena (2514755079_10|95e41e07_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "LeagueBadge_Arena_Gold", + "nameStrKey": "strGoldLeagueBadgeArenaName", + "mirrorCubeId": "", + "hexId": "95e41e07" + }, + "BronzeLeagueBadgeArena hexCode:3ae998f0 intCode:988387568": { + "id": 988387568, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "BronzeLeagueBadgeArena (988387568_10|3ae998f0_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "LeagueBadge_Arena_Bronze", + "nameStrKey": "strBronzeLeagueBadgeArenaName", + "mirrorCubeId": "", + "hexId": "3ae998f0" + }, + "TopHundredHoloflag hexCode:2d2b3674 intCode:757806708": { + "id": 757806708, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "TopHundredHoloflag (757806708_10|2d2b3674_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Cube_FlagTopHundred", + "nameStrKey": "strTopHundredHoloflagName", + "mirrorCubeId": "", + "hexId": "2d2b3674" + }, + "T5SteeringWheelGolden hexCode:d3678750 intCode:3546777424": { + "id": 3546777424, + "info": { + "category": "Wheel", + "placements": 2, + "stats": {}, + "description": "T5SteeringWheelGolden (3546777424_10|d3678750_16) without a description", + "size": "T5", + "type": "Movement", + "active": true + }, + "spriteName": "T5_Wheel_Gold", + "nameStrKey": "strT5SteeringWheelGoldenName", + "mirrorCubeId": "", + "hexId": "d3678750" + }, + "T5WheelGolden hexCode:896e4bf0 intCode:2305706992": { + "id": 2305706992, + "info": { + "category": "Wheel", + "placements": 2, + "stats": {}, + "description": "T5WheelGolden (2305706992_10|896e4bf0_16) without a description", + "size": "T5", + "type": "Movement", + "active": true + }, + "spriteName": "T5_Wheel_Gold", + "nameStrKey": "strT5WheelGoldenName", + "mirrorCubeId": "", + "hexId": "896e4bf0" + }, + "T5MechLegGolden hexCode:da2d6fc5 intCode:3660410821": { + "id": 3660410821, + "info": { + "category": "MechLeg", + "placements": 2, + "stats": {}, + "description": "T5MechLegGolden (3660410821_10|da2d6fc5_16) without a description", + "size": "T5", + "type": "Movement", + "active": true + }, + "spriteName": "T5_Mech_Leg_Gold", + "nameStrKey": "strT5MechLegGoldenName", + "mirrorCubeId": "", + "hexId": "da2d6fc5" + }, + "T5HoverGolden hexCode:842bef5f intCode:2217471839": { + "id": 2217471839, + "info": { + "category": "Hover", + "placements": 2, + "stats": {}, + "description": "T5HoverGolden (2217471839_10|842bef5f_16) without a description", + "size": "T5", + "type": "Movement", + "active": true + }, + "spriteName": "T5_Hover_Gold", + "nameStrKey": "strT5HoverGoldenName", + "mirrorCubeId": "", + "hexId": "842bef5f" + }, + "T5PlasmaGolden hexCode:d6414849 intCode:3594602569": { + "id": 3594602569, + "info": { + "category": "Plasma", + "placements": 2, + "stats": {}, + "description": "T5PlasmaGolden (3594602569_10|d6414849_16) without a description", + "size": "T5", + "type": "Weapon", + "active": true + }, + "spriteName": "T5_Plasma_Gold", + "nameStrKey": "strT5PlasmaGoldenName", + "mirrorCubeId": "", + "hexId": "d6414849" + }, + "T5RailGolden hexCode:1aa4bbc9 intCode:447003593": { + "id": 447003593, + "info": { + "category": "Rail", + "placements": 2, + "stats": {}, + "description": "T5RailGolden (447003593_10|1aa4bbc9_16) without a description", + "size": "T5", + "type": "Weapon", + "active": true + }, + "spriteName": "T5_Rail_Gold", + "nameStrKey": "strT5RailGoldenName", + "mirrorCubeId": "", + "hexId": "1aa4bbc9" + }, + "T5IonGolden hexCode:064beff8 intCode:105639928": { + "id": 105639928, + "info": { + "category": "Ion", + "placements": 2, + "stats": {}, + "description": "T5IonGolden (105639928_10|064beff8_16) without a description", + "size": "T5", + "type": "Weapon", + "active": true + }, + "spriteName": "T5_Ion_Gold", + "nameStrKey": "strT5IonGoldenName", + "mirrorCubeId": "", + "hexId": "064beff8" + }, + "T5ChaingunGolden hexCode:0b9b436b intCode:194724715": { + "id": 194724715, + "info": { + "category": "Chaingun", + "placements": 2, + "stats": {}, + "description": "T5ChaingunGolden (194724715_10|0b9b436b_16) without a description", + "size": "T5", + "type": "Weapon", + "active": true + }, + "spriteName": "T5_Chaingun_Gold", + "nameStrKey": "strT5ChaingunGoldenName", + "mirrorCubeId": "", + "hexId": "0b9b436b" + }, + "T5SeekerGolden hexCode:e46fd273 intCode:3832533619": { + "id": 3832533619, + "info": { + "category": "Seeker", + "placements": 2, + "stats": {}, + "description": "T5SeekerGolden (3832533619_10|e46fd273_16) without a description", + "size": "T5", + "type": "Weapon", + "active": true + }, + "spriteName": "T5_Seeker_Gold", + "nameStrKey": "strT5SeekerGoldenName", + "mirrorCubeId": "", + "hexId": "e46fd273" + }, + "T5MortarGolden hexCode:8682358a intCode:2256680330": { + "id": 2256680330, + "info": { + "category": "Mortar", + "placements": 2, + "stats": {}, + "description": "T5MortarGolden (2256680330_10|8682358a_16) without a description", + "size": "T5", + "type": "Weapon", + "active": true + }, + "spriteName": "T5_Mortar_Gold", + "nameStrKey": "strT5MortarGoldenName", + "mirrorCubeId": "", + "hexId": "8682358a" + }, + "StrutArcShort hexCode:fab28b91 intCode:4206005137": { + "id": 4206005137, + "info": { + "category": "NotAFunctionalItem", + "placements": 0, + "stats": {}, + "description": "StrutArcShort (4206005137_10|fab28b91_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Strut_Arc_Short", + "nameStrKey": "strStrutArcShortName", + "mirrorCubeId": "", + "hexId": "fab28b91" + }, + "StrutRampShort hexCode:e8aee61c intCode:3903776284": { + "id": 3903776284, + "info": { + "category": "NotAFunctionalItem", + "placements": 0, + "stats": {}, + "description": "StrutRampShort (3903776284_10|e8aee61c_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Strut_Ramp_Short", + "nameStrKey": "strStrutRampShortName", + "mirrorCubeId": "", + "hexId": "e8aee61c" + }, + "ExhaustBlower hexCode:08ea6a95 intCode:149580437": { + "id": 149580437, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ExhaustBlower (149580437_10|08ea6a95_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Exhaust_Blower", + "nameStrKey": "strExhaustBlowerName", + "mirrorCubeId": "", + "hexId": "08ea6a95" + }, + "ExhaustStackL hexCode:d0040923 intCode:3489925411": { + "id": 3489925411, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ExhaustStackL (3489925411_10|d0040923_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Exhaust_Stack_L", + "nameStrKey": "strExhaustStackLName", + "mirrorCubeId": "641bf769", + "hexId": "d0040923" + }, + "ExhaustStackR hexCode:641bf769 intCode:1679554409": { + "id": 1679554409, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ExhaustStackR (1679554409_10|641bf769_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Exhaust_Stack_R", + "nameStrKey": "strExhaustStackRName", + "mirrorCubeId": "d0040923", + "hexId": "641bf769" + }, + "NeonCube hexCode:08f34670 intCode:150161008": { + "id": 150161008, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "NeonCube (150161008_10|08f34670_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Neon_Cube", + "nameStrKey": "strNeonCubeName", + "mirrorCubeId": "", + "hexId": "08f34670" + }, + "NeonEdge hexCode:4683ee73 intCode:1183051379": { + "id": 1183051379, + "info": { + "category": "NotAFunctionalItem", + "placements": 54, + "stats": {}, + "description": "NeonEdge (1183051379_10|4683ee73_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Neon_Edge", + "nameStrKey": "strNeonEdgeName", + "mirrorCubeId": "", + "hexId": "4683ee73" + }, + "NeonEdgeRound hexCode:9c5bd476 intCode:2623263862": { + "id": 2623263862, + "info": { + "category": "NotAFunctionalItem", + "placements": 54, + "stats": {}, + "description": "NeonEdgeRound (2623263862_10|9c5bd476_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Neon_Edge_Round", + "nameStrKey": "strNeonEdgeRoundName", + "mirrorCubeId": "", + "hexId": "9c5bd476" + }, + "NeonEdgeSlope hexCode:c6212f1f intCode:3324063519": { + "id": 3324063519, + "info": { + "category": "NotAFunctionalItem", + "placements": 54, + "stats": {}, + "description": "NeonEdgeSlope (3324063519_10|c6212f1f_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Neon_Edge_Slope", + "nameStrKey": "strNeonEdgeSlopeName", + "mirrorCubeId": "", + "hexId": "c6212f1f" + }, + "NeonCorner hexCode:8b1398a4 intCode:2333317284": { + "id": 2333317284, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "NeonCorner (2333317284_10|8b1398a4_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Neon_Corner", + "nameStrKey": "strNeonCornerName", + "mirrorCubeId": "", + "hexId": "8b1398a4" + }, + "NeonCornerRound hexCode:be78d926 intCode:3195590950": { + "id": 3195590950, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "NeonCornerRound (3195590950_10|be78d926_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Neon_Corner_Round", + "nameStrKey": "strNeonCornerRoundName", + "mirrorCubeId": "", + "hexId": "be78d926" + }, + "NeonCornerSlope hexCode:e402224f intCode:3825345103": { + "id": 3825345103, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "NeonCornerSlope (3825345103_10|e402224f_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Neon_Corner_Slope", + "nameStrKey": "strNeonCornerSlopeName", + "mirrorCubeId": "", + "hexId": "e402224f" + }, + "NeonInner hexCode:60558570 intCode:1616217456": { + "id": 1616217456, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "NeonInner (1616217456_10|60558570_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Neon_Inner", + "nameStrKey": "strNeonInnerName", + "mirrorCubeId": "", + "hexId": "60558570" + }, + "NeonInnerRound hexCode:69c7f549 intCode:1774712137": { + "id": 1774712137, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "NeonInnerRound (1774712137_10|69c7f549_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Neon_Inner_Round", + "nameStrKey": "strNeonInnerRoundName", + "mirrorCubeId": "", + "hexId": "69c7f549" + }, + "NeonInnerSlope hexCode:33bd0e20 intCode:868027936": { + "id": 868027936, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "NeonInnerSlope (868027936_10|33bd0e20_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Neon_Inner_Slope", + "nameStrKey": "strNeonInnerSlopeName", + "mirrorCubeId": "", + "hexId": "33bd0e20" + }, + "NeonPyramid hexCode:cd7baec2 intCode:3447434946": { + "id": 3447434946, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "NeonPyramid (3447434946_10|cd7baec2_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Neon_Pyramid", + "nameStrKey": "strNeonPyramidName", + "mirrorCubeId": "", + "hexId": "cd7baec2" + }, + "NeonCone hexCode:20f143ce intCode:552682446": { + "id": 552682446, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "NeonCone (552682446_10|20f143ce_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Neon_Cone", + "nameStrKey": "strNeonConeName", + "mirrorCubeId": "", + "hexId": "20f143ce" + }, + "VaporTrailSingleFirework hexCode:6be74731 intCode:1810319153": { + "id": 1810319153, + "info": { + "category": "Rail", + "placements": 2, + "stats": {}, + "description": "VaporTrailSingleFirework (1810319153_10|6be74731_16) without a description", + "size": "NoTier", + "type": "Weapon", + "active": true + }, + "spriteName": "Vapor_Trail_Single_Firework", + "nameStrKey": "strVaporTrailSingleFireworkName", + "mirrorCubeId": "", + "hexId": "6be74731" + }, + "VaporTrailSingleSnowflake hexCode:c4933c16 intCode:3297983510": { + "id": 3297983510, + "info": { + "category": "Rail", + "placements": 2, + "stats": {}, + "description": "VaporTrailSingleSnowflake (3297983510_10|c4933c16_16) without a description", + "size": "NoTier", + "type": "Weapon", + "active": true + }, + "spriteName": "Vapor_Trail_Single_Snowflake", + "nameStrKey": "strVaporTrailSingleSnowflakeName", + "mirrorCubeId": "", + "hexId": "c4933c16" + }, + "PresentSmall hexCode:0848dfdd intCode:138993629": { + "id": 138993629, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "PresentSmall (138993629_10|0848dfdd_16) without a description", + "size": "T1", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Present_Small", + "nameStrKey": "strPresentSmallName", + "mirrorCubeId": "", + "hexId": "0848dfdd" + }, + "PresentLarge hexCode:21dcc4e9 intCode:568116457": { + "id": 568116457, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "PresentLarge (568116457_10|21dcc4e9_16) without a description", + "size": "T3", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Present_Large", + "nameStrKey": "strPresentLargeName", + "mirrorCubeId": "", + "hexId": "21dcc4e9" + }, + "FairyLight hexCode:822cc743 intCode:2183972675": { + "id": 2183972675, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "FairyLight (2183972675_10|822cc743_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Fairy_Light", + "nameStrKey": "strFairyLightName", + "mirrorCubeId": "", + "hexId": "822cc743" + }, + "2019Holoflag hexCode:0ce47e7e intCode:216301182": { + "id": 216301182, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "2019Holoflag (216301182_10|0ce47e7e_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "2019_Holoflag", + "nameStrKey": "str2019HoloflagName", + "mirrorCubeId": "", + "hexId": "0ce47e7e" + }, + "CandyCaneHoloflag hexCode:8fcb1f2c intCode:2412453676": { + "id": 2412453676, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "CandyCaneHoloflag (2412453676_10|8fcb1f2c_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Candy_Cane_Holoflag", + "nameStrKey": "strCandyCaneHoloflagName", + "mirrorCubeId": "", + "hexId": "8fcb1f2c" + }, + "SantaCrayHoloflag hexCode:b2453590 intCode:2990880144": { + "id": 2990880144, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "SantaCrayHoloflag (2990880144_10|b2453590_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Santa_Cray_Holoflag", + "nameStrKey": "strSantaCrayHoloflagName", + "mirrorCubeId": "", + "hexId": "b2453590" + }, + "RoboPassSeason1Holoflag hexCode:b64e8e35 intCode:3058601525": { + "id": 3058601525, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "RoboPassSeason1Holoflag (3058601525_10|b64e8e35_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "RoboPass_Season_1_Holoflag", + "nameStrKey": "strRoboPassSeason1HoloflagName", + "mirrorCubeId": "", + "hexId": "b64e8e35" + }, + "SnowflakeHoloflag hexCode:1384a37d intCode:327459709": { + "id": 327459709, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "SnowflakeHoloflag (327459709_10|1384a37d_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Snowflake_Holoflag", + "nameStrKey": "strSnowflakeHoloflagName", + "mirrorCubeId": "", + "hexId": "1384a37d" + }, + "T5SeekerFirework hexCode:ccdf06f3 intCode:3437168371": { + "id": 3437168371, + "info": { + "category": "Seeker", + "placements": 2, + "stats": {}, + "description": "T5SeekerFirework (3437168371_10|ccdf06f3_16) without a description", + "size": "T5", + "type": "Weapon", + "active": true + }, + "spriteName": "T5_Seeker_Firework_Steam", + "nameStrKey": "strT5SeekerFireworkName", + "mirrorCubeId": "", + "hexId": "ccdf06f3" + }, + "6YearsHoloflag hexCode:9739f6fe intCode:2537158398": { + "id": 2537158398, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "6YearsHoloflag (2537158398_10|9739f6fe_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "6_Years_Holoflag", + "nameStrKey": "str6YearsHoloflagName", + "mirrorCubeId": "", + "hexId": "9739f6fe" + }, + "FlipperSmall hexCode:a16784be intCode:2707915966": { + "id": 2707915966, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "FlipperSmall (2707915966_10|a16784be_16) without a description", + "size": "T1", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Flipper_Small", + "nameStrKey": "strFlipperSmallName", + "mirrorCubeId": "", + "hexId": "a16784be" + }, + "FlipperMedium hexCode:b7ccb8d0 intCode:3083647184": { + "id": 3083647184, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "FlipperMedium (3083647184_10|b7ccb8d0_16) without a description", + "size": "T2", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Flipper_Medium", + "nameStrKey": "strFlipperMediumName", + "mirrorCubeId": "", + "hexId": "b7ccb8d0" + }, + "FlipperLarge hexCode:88f39f8a intCode:2297667466": { + "id": 2297667466, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "FlipperLarge (2297667466_10|88f39f8a_16) without a description", + "size": "T3", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Flipper_Large", + "nameStrKey": "strFlipperLargeName", + "mirrorCubeId": "", + "hexId": "88f39f8a" + }, + "JammerSmall hexCode:0bd33f1e intCode:198393630": { + "id": 198393630, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "JammerSmall (198393630_10|0bd33f1e_16) without a description", + "size": "T1", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Radar_Jammer_Small", + "nameStrKey": "strJammerSmallName", + "mirrorCubeId": "", + "hexId": "0bd33f1e" + }, + "JammerMedium hexCode:b930239a intCode:3106939802": { + "id": 3106939802, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "JammerMedium (3106939802_10|b930239a_16) without a description", + "size": "T2", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Radar_Jammer_Medium", + "nameStrKey": "strJammerMediumName", + "mirrorCubeId": "", + "hexId": "b930239a" + }, + "JammerLarge hexCode:2247242a intCode:575087658": { + "id": 575087658, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "JammerLarge (575087658_10|2247242a_16) without a description", + "size": "T3", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Radar_Jammer_Large", + "nameStrKey": "strJammerLargeName", + "mirrorCubeId": "", + "hexId": "2247242a" + }, + "RadarSmall hexCode:e172100f intCode:3782348815": { + "id": 3782348815, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "RadarSmall (3782348815_10|e172100f_16) without a description", + "size": "T1", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Radar_Small", + "nameStrKey": "strRadarSmallName", + "mirrorCubeId": "", + "hexId": "e172100f" + }, + "RadarMedium hexCode:7e1c52fd intCode:2115785469": { + "id": 2115785469, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "RadarMedium (2115785469_10|7e1c52fd_16) without a description", + "size": "T2", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Radar_Medium", + "nameStrKey": "strRadarMediumName", + "mirrorCubeId": "", + "hexId": "7e1c52fd" + }, + "RadarLarge hexCode:c8e60b3b intCode:3370519355": { + "id": 3370519355, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "RadarLarge (3370519355_10|c8e60b3b_16) without a description", + "size": "T3", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Radar_Large", + "nameStrKey": "strRadarLargeName", + "mirrorCubeId": "", + "hexId": "c8e60b3b" + }, + "ReceiverSmall hexCode:8ae80ecd intCode:2330463949": { + "id": 2330463949, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ReceiverSmall (2330463949_10|8ae80ecd_16) without a description", + "size": "T1", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Receiver_Small", + "nameStrKey": "strReceiverSmallName", + "mirrorCubeId": "", + "hexId": "8ae80ecd" + }, + "ReceiverMedium hexCode:89dcc0b7 intCode:2312945847": { + "id": 2312945847, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ReceiverMedium (2312945847_10|89dcc0b7_16) without a description", + "size": "T2", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Receiver_Medium", + "nameStrKey": "strReceiverMediumName", + "mirrorCubeId": "", + "hexId": "89dcc0b7" + }, + "ReceiverLarge hexCode:a37c15f9 intCode:2742818297": { + "id": 2742818297, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "ReceiverLarge (2742818297_10|a37c15f9_16) without a description", + "size": "T3", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Receiver_Large", + "nameStrKey": "strReceiverLargeName", + "mirrorCubeId": "", + "hexId": "a37c15f9" + }, + "VaporTrailSingleFlower hexCode:bafaf616 intCode:3137009174": { + "id": 3137009174, + "info": { + "category": "Rail", + "placements": 2, + "stats": {}, + "description": "VaporTrailSingleFlower (3137009174_10|bafaf616_16) without a description", + "size": "NoTier", + "type": "Weapon", + "active": true + }, + "spriteName": "Vapor_Trail_Single_Flower", + "nameStrKey": "strVaporTrailSingleFlowerName", + "mirrorCubeId": "", + "hexId": "bafaf616" + }, + "RodSpring hexCode:eb7e8b83 intCode:3950939011": { + "id": 3950939011, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "RodSpring (3950939011_10|eb7e8b83_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Rod_Spring", + "nameStrKey": "strRodSpringName", + "mirrorCubeId": "", + "hexId": "eb7e8b83" + }, + "RodShortSpring hexCode:a89904c6 intCode:2828600518": { + "id": 2828600518, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "RodShortSpring (2828600518_10|a89904c6_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Rod_Short_Spring", + "nameStrKey": "strRodShortSpringName", + "mirrorCubeId": "", + "hexId": "a89904c6" + }, + "RodLongSpring hexCode:3eb02849 intCode:1051732041": { + "id": 1051732041, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "RodLongSpring (1051732041_10|3eb02849_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Rod_Long_Spring", + "nameStrKey": "strRodLongSpringName", + "mirrorCubeId": "", + "hexId": "3eb02849" + }, + "PilotSeatBunny hexCode:3f4926d1 intCode:1061758673": { + "id": 1061758673, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "PilotSeatBunny (1061758673_10|3f4926d1_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "RC_Cube_PilotSeat_Bunny", + "nameStrKey": "strPilotSeatBunnyName", + "mirrorCubeId": "", + "hexId": "3f4926d1" + }, + "RetroCube hexCode:0ae961ac intCode:183067052": { + "id": 183067052, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "RetroCube (183067052_10|0ae961ac_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Retro_Cube", + "nameStrKey": "strRetroCubeName", + "mirrorCubeId": "", + "hexId": "0ae961ac" + }, + "RetroEdge hexCode:4499c9af intCode:1150929327": { + "id": 1150929327, + "info": { + "category": "NotAFunctionalItem", + "placements": 54, + "stats": {}, + "description": "RetroEdge (1150929327_10|4499c9af_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Retro_Edge", + "nameStrKey": "strRetroEdgeName", + "mirrorCubeId": "", + "hexId": "4499c9af" + }, + "RetroCorner hexCode:52b80924 intCode:1387792676": { + "id": 1387792676, + "info": { + "category": "NotAFunctionalItem", + "placements": 22, + "stats": {}, + "description": "RetroCorner (1387792676_10|52b80924_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Retro_Corner", + "nameStrKey": "strRetroCornerName", + "mirrorCubeId": "", + "hexId": "52b80924" + }, + "RetroInner hexCode:ed870873 intCode:3985049715": { + "id": 3985049715, + "info": { + "category": "NotAFunctionalItem", + "placements": 63, + "stats": {}, + "description": "RetroInner (3985049715_10|ed870873_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Retro_Inner", + "nameStrKey": "strRetroInnerName", + "mirrorCubeId": "", + "hexId": "ed870873" + }, + "MortarEggLauncher hexCode:b80d198e intCode:3087866254": { + "id": 3087866254, + "info": { + "category": "Mortar", + "placements": 2, + "stats": {}, + "description": "MortarEggLauncher (3087866254_10|b80d198e_16) without a description", + "size": "NoTier", + "type": "Weapon", + "active": true + }, + "spriteName": "T5_Mortar_Egg", + "nameStrKey": "strMortarEggLauncherName", + "mirrorCubeId": "", + "hexId": "b80d198e" + }, + "RoboPassSeason2Holoflag hexCode:cb5bae82 intCode:3411783298": { + "id": 3411783298, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "RoboPassSeason2Holoflag (3411783298_10|cb5bae82_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "RoboPass_Season_2_Holoflag", + "nameStrKey": "strRoboPassSeason2HoloflagName", + "mirrorCubeId": "", + "hexId": "cb5bae82" + }, + "BunnyHoloflag hexCode:9ebe2d8e intCode:2663263630": { + "id": 2663263630, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "BunnyHoloflag (2663263630_10|9ebe2d8e_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Bunny_Holoflag", + "nameStrKey": "strBunnyHoloflagName", + "mirrorCubeId": "", + "hexId": "9ebe2d8e" + }, + "EasterEggHoloflag hexCode:baa8aee4 intCode:3131616996": { + "id": 3131616996, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "EasterEggHoloflag (3131616996_10|baa8aee4_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "EasterEgg_Holoflag", + "nameStrKey": "strEasterEggHoloflagName", + "mirrorCubeId": "", + "hexId": "baa8aee4" + }, + "FlowersHoloflag hexCode:c2b1e7df intCode:3266439135": { + "id": 3266439135, + "info": { + "category": "NotAFunctionalItem", + "placements": 2, + "stats": {}, + "description": "FlowersHoloflag (3266439135_10|c2b1e7df_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Flower_Holoflag", + "nameStrKey": "strFlowersHoloflagName", + "mirrorCubeId": "", + "hexId": "c2b1e7df" + }, + "StrutDiagonal3DLShort hexCode:4ead69d1 intCode:1319987665": { + "id": 1319987665, + "info": { + "category": "NotAFunctionalItem", + "placements": 0, + "stats": {}, + "description": "StrutDiagonal3DLShort (1319987665_10|4ead69d1_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Strut_Diagonal_3D_Short_Left", + "nameStrKey": "strStrutDiagonal3DLShortName", + "mirrorCubeId": "e9d4cae7", + "hexId": "4ead69d1" + }, + "StrutDiagonal3DRShort hexCode:e9d4cae7 intCode:3923036903": { + "id": 3923036903, + "info": { + "category": "NotAFunctionalItem", + "placements": 0, + "stats": {}, + "description": "StrutDiagonal3DRShort (3923036903_10|e9d4cae7_16) without a description", + "size": "NoTier", + "type": "NotAFunctionalItem", + "active": true + }, + "spriteName": "Strut_Diagonal_3D_Short_Right", + "nameStrKey": "strStrutDiagonal3DRShortName", + "mirrorCubeId": "4ead69d1", + "hexId": "e9d4cae7" + } + }, + "movement": {}, + "lerp_value": 10.0 +} \ No newline at end of file diff --git a/rc_services_room/Cargo.toml b/rc_services_room/Cargo.toml index 635ae2d..f69cd40 100644 --- a/rc_services_room/Cargo.toml +++ b/rc_services_room/Cargo.toml @@ -13,3 +13,5 @@ polariton_auth = { version = "*", path = "../polariton_auth" } polariton_server.workspace = true base64 = "0.22" hex = "0.4" +serde.workspace = true +serde_json.workspace = true diff --git a/rc_services_room/src/cli.rs b/rc_services_room/src/cli.rs index 018412d..965bd3b 100644 --- a/rc_services_room/src/cli.rs +++ b/rc_services_room/src/cli.rs @@ -14,6 +14,10 @@ pub struct CliArgs { /// Socket read tries before giving up (0 to never give up) #[arg(long, default_value_t = 5)] pub retries: usize, + + /// Assets root + #[arg(long, default_value_t = {"../assets/robocraft".to_string()})] + pub assets: String, } impl CliArgs { diff --git a/rc_services_room/src/data/cube_list.rs b/rc_services_room/src/data/cube_list.rs index 203d69f..ebf16e8 100644 --- a/rc_services_room/src/data/cube_list.rs +++ b/rc_services_room/src/data/cube_list.rs @@ -2,7 +2,7 @@ use std::collections::HashMap; use polariton::operation::Typed; -pub struct CubeInfo { +pub struct CubeInfo { pub cpu: u32, pub health: u32, pub health_boost: f32, @@ -14,7 +14,7 @@ pub struct CubeInfo { pub protonium: bool, pub unlocked_by_league: bool, pub league_unlock_index: i32, - pub stats: HashMap, + pub stats: HashMap>, pub description: String, pub size: ItemTier, pub type_: ItemType, @@ -24,8 +24,8 @@ pub struct CubeInfo { pub ignore_in_weapon_list: bool, } -impl CubeInfo { - pub fn as_transmissible(&self) -> Typed { +impl CubeInfo { + pub fn as_transmissible(&self) -> Typed { Typed::HashMap(vec![ (Typed::Str("cpuRating".into()), Typed::Int(self.cpu as i32)), (Typed::Str("health".into()), Typed::Int(self.health as i32)), @@ -39,7 +39,7 @@ impl CubeInfo { (Typed::Str("UnlockedByLeague".into()), Typed::Bool(self.unlocked_by_league.into())), (Typed::Str("LeagueUnlockIndex".into()), Typed::Int(self.league_unlock_index)), (Typed::Str("DisplayStats".into()), { - let items: Vec<(Typed, Typed)> = self.stats.iter().map(|(key, val)| (Typed::Str(key.into()), val.to_owned())).collect(); + let items: Vec<(Typed, Typed)> = self.stats.iter().map(|(key, val)| (Typed::::Str(key.into()), val.to_owned())).collect(); Typed::HashMap(items.into()) }), (Typed::Str("Description".into()), Typed::Str(self.description.clone().into())), @@ -52,7 +52,7 @@ impl CubeInfo { ].into()) } - pub fn as_transmissible_key_val(&self, cube_id: u32) -> (Typed, Typed) { + pub fn as_transmissible_key_val(&self, cube_id: u32) -> (Typed, Typed) { (Typed::Str(hex::encode(cube_id.to_be_bytes()).into()), self.as_transmissible()) } } diff --git a/rc_services_room/src/data/movement_list.rs b/rc_services_room/src/data/movement_list.rs index dae6ef3..233bbc3 100644 --- a/rc_services_room/src/data/movement_list.rs +++ b/rc_services_room/src/data/movement_list.rs @@ -19,7 +19,7 @@ pub struct MovementCategoryData { } impl MovementCategoryData { - pub fn as_transmissible(&self) -> Typed { + pub fn as_transmissible(&self) -> Typed { let mut out = Vec::new(); self.horizontal_top_speed.map(|x| out.push((Typed::Str("horizontalTopSpeed".into()), Typed::Float(x)))); self.vertical_top_speed.map(|x| out.push((Typed::Str("verticalTopSpeed".into()), Typed::Float(x)))); @@ -57,7 +57,7 @@ pub enum MovementCategorySpecificData { } impl MovementCategorySpecificData { - pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { + pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { match self { Self::Wheel => Vec::default(), Self::Hover(x) => x.as_transmissible(), @@ -86,7 +86,7 @@ pub struct HoverCategoryData { } impl HoverCategoryData { - pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { + pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { vec![ (Typed::Str("heightTolerance".into()), Typed::Float(self.height_tolerance)), (Typed::Str("forceYOffset".into()), Typed::Float(self.force_y_offset)), @@ -105,7 +105,7 @@ pub struct MechLegCategoryData { } impl MechLegCategoryData { - pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { + pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { vec![ (Typed::Str("decelerationMultiplier".into()), Typed::Float(self.deceleration_multiplier)), ] @@ -118,7 +118,7 @@ pub struct RotorCategoryData { impl RotorCategoryData { - pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { + pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { vec![ (Typed::Str("maxTurnRate".into()), Typed::Float(self.max_turn_rate)), ] @@ -134,7 +134,7 @@ pub struct MovementData { } impl MovementData { - pub fn as_transmissible(&self) -> Typed { + pub fn as_transmissible(&self) -> Typed { let mut out = Vec::new(); self.speed_boost.map(|x| out.push((Typed::Str("speedBoost".into()), Typed::Float(x)))); self.max_carry_mass.map(|x| out.push((Typed::Str("maxCarryMass".into()), Typed::Float(x)))); @@ -164,7 +164,7 @@ pub enum MovementSpecificData { } impl MovementSpecificData { - pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { + pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { match self { Self::Wheel(x) => x.as_transmissible(), Self::Hover(x) => x.as_transmissible(), @@ -195,7 +195,7 @@ pub struct WheelData { } impl WheelData { - pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { + pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { vec![ (Typed::Str("steeringSpeedLight".into()), Typed::Float(self.steering_speed_light)), (Typed::Str("steeringSpeedHeavy".into()), Typed::Float(self.steering_speed_heavy)), @@ -227,7 +227,7 @@ pub struct HoverData { } impl HoverData { - pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { + pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { vec![ (Typed::Str("maxHoverHeightLight".into()), Typed::Float(self.max_hover_height_light)), (Typed::Str("maxHoverHeightHeavy".into()), Typed::Float(self.max_hover_height_heaver)), @@ -261,7 +261,7 @@ pub struct AerofoilData { } impl AerofoilData { - pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { + pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { vec![ (Typed::Str("barrelSpeedLight".into()), Typed::Float(self.barrel_speed_light)), (Typed::Str("barrelSpeedHeavy".into()), Typed::Float(self.barrel_speed_heavy)), @@ -285,7 +285,7 @@ pub struct ThrusterData { } impl ThrusterData { - pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { + pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { vec![ (Typed::Str("accelerationDelayLight".into()), Typed::Float(self.acceleration_delay_light)), (Typed::Str("accelerationDelayHeavy".into()), Typed::Float(self.acceleration_delay_heavy)), @@ -323,7 +323,7 @@ pub struct InsectLegData { } impl InsectLegData { - pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { + pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { vec![ (Typed::Str("idealHeightLight".into()), Typed::Float(self.ideal_height_light)), (Typed::Str("idealHeightHeavy".into()), Typed::Float(self.ideal_height_heavy)), @@ -373,7 +373,7 @@ pub struct MechLegData { } impl MechLegData { - pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { + pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { vec![ (Typed::Str("timeGroundedAfterJumpLight".into()), Typed::Float(self.time_grounded_after_jump_light)), (Typed::Str("timeGroundedAfterJumpHeavy".into()), Typed::Float(self.time_grounded_after_jump_heavy)), @@ -405,7 +405,7 @@ pub struct TankTrackData { } impl TankTrackData { - pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { + pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { vec![ (Typed::Str("maxTurnRateMovingLight".into()), Typed::Float(self.max_turn_rate_moving_light)), (Typed::Str("maxTurnRateMovingHeavy".into()), Typed::Float(self.max_turn_rate_moving_heavy)), @@ -434,7 +434,7 @@ pub struct RotorData { impl RotorData { - pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { + pub fn as_transmissible(&self) -> Vec<(Typed, Typed)> { vec![ (Typed::Str("heightAccelerationLight".into()), Typed::Float(self.height_acceleration_light)), (Typed::Str("heightAccelerationHeavy".into()), Typed::Float(self.height_acceleration_heavy)), diff --git a/rc_services_room/src/data/weapon_list.rs b/rc_services_room/src/data/weapon_list.rs index b2d31c2..e4d28aa 100644 --- a/rc_services_room/src/data/weapon_list.rs +++ b/rc_services_room/src/data/weapon_list.rs @@ -68,7 +68,7 @@ pub struct WeaponData { } impl WeaponData { - pub fn as_transmissible(&self) -> Typed { + pub fn as_transmissible(&self) -> Typed { let mut out = Vec::new(); self.damage_inflicted.map(|x| out.push((Typed::Str("damageInflicted".into()), Typed::Int(x)))); @@ -114,7 +114,7 @@ impl WeaponData { self.spin_initial_cooldown.map(|x| out.push((Typed::Str("spinInitialCooldown".into()), Typed::Float(x)))); if !self.group_fire_scales.is_empty() { - let typed_arr: Vec = self.group_fire_scales.iter().map(|x| Typed::Float(*x)).collect(); + let typed_arr: Vec> = self.group_fire_scales.iter().map(|x| Typed::Float(*x)).collect(); out.push((Typed::Str("groupFireScales".into()), Typed::ObjArr(typed_arr.into()))); } @@ -156,7 +156,7 @@ pub enum ItemCategory { Ski = 8, TankTrack = 9, Rotor = 10, - SrpinterLeg = 11, + SprinterLeg = 11, Propeller = 12, Laser = 100, Plasma = 200, @@ -190,7 +190,7 @@ impl ItemCategory { ItemCategory::Ski => "Ski", ItemCategory::TankTrack => "TankTrack", ItemCategory::Rotor => "Rotor", - ItemCategory::SrpinterLeg => "SrpinterLeg", + ItemCategory::SprinterLeg => "SprinterLeg", ItemCategory::Propeller => "Propeller", ItemCategory::Laser => "Laser", ItemCategory::Plasma => "Plasma", diff --git a/rc_services_room/src/main.rs b/rc_services_room/src/main.rs index c294464..e918477 100644 --- a/rc_services_room/src/main.rs +++ b/rc_services_room/src/main.rs @@ -4,6 +4,7 @@ mod state; mod data; mod events; mod operations; +mod persist; use polariton_auth::Handshake; use tokio::net; @@ -13,13 +14,21 @@ use polariton::operation::{OperationResponse, Typed}; pub type UserTy = std::sync::RwLock; +pub struct InitConfig { + pub cubes: persist::config::CubeConfig, +} + #[tokio::main] async fn main() -> std::io::Result<()> { env_logger::init(); let args = cli::CliArgs::get(); log::debug!("Got cli args {:?}", args); - let server = polariton_server::Server::new(operations::handler()); + let init_ctx = InitConfig { + cubes: persist::config::CubeConfig::load(&args.assets).expect("Bad cube config data"), + }; + + let server = polariton_server::Server::new(operations::handler(&init_ctx)); let ip_addr: std::net::IpAddr = args.ip.parse().expect("Invalid IP address"); diff --git a/rc_services_room/src/operations/cube_list.rs b/rc_services_room/src/operations/cube_list.rs index 19cfd96..42f0415 100644 --- a/rc_services_room/src/operations/cube_list.rs +++ b/rc_services_room/src/operations/cube_list.rs @@ -1,17 +1,18 @@ -use std::collections::HashMap; +//use std::collections::HashMap; -use polariton_server::operations::SimpleFunc; -use polariton::{operation::{Dict, ParameterTable, Typed}, serdes::TypePrefix}; +use polariton_server::operations::Immediate; +//use polariton::{operation::{Dict, ParameterTable, Typed}, serdes::TypePrefix}; -use crate::data::cube_list::*; +//use crate::data::cube_list::*; const PARAM_KEY: u8 = 1; -const DEFAULT_CUBE_ID: u32 = 227205318; +//const DEFAULT_CUBE_ID: u32 = 227205318; -pub(super) fn cube_list_provider() -> SimpleFunc<2, crate::UserTy, impl (Fn(ParameterTable, &crate::UserTy) -> Result) + Sync + Sync> { - SimpleFunc::new(|params, _| { - let mut params = params.to_dict(); - params.insert(PARAM_KEY, Typed::Dict(Dict { +pub(super) fn cube_list_provider(cubes: &crate::persist::config::CubeConfig) -> Immediate<2, crate::UserTy> { + Immediate::new(|| { + let mut params = std::collections::HashMap::with_capacity(2); + params.insert(PARAM_KEY, cubes.cube_list()); + /*params.insert(PARAM_KEY, Typed::Dict(Dict { key_ty: TypePrefix::Str, // str val_ty: TypePrefix::HashMap, // hashtable items: vec![ @@ -164,7 +165,7 @@ pub(super) fn cube_list_provider() -> SimpleFunc<2, crate::UserTy, impl (Fn(Para ignore_in_weapon_list: true, }.as_transmissible_key_val(3209000021), ].into(), - })); - Ok(params.into()) + }));*/ + params.into() }) } diff --git a/rc_services_room/src/operations/mod.rs b/rc_services_room/src/operations/mod.rs index 2f4de58..2e6feea 100644 --- a/rc_services_room/src/operations/mod.rs +++ b/rc_services_room/src/operations/mod.rs @@ -75,7 +75,7 @@ mod reconnect_game; use polariton_server::operations::OperationsHandler; -pub fn handler() -> OperationsHandler { +pub fn handler(init_ctx: &crate::InitConfig) -> OperationsHandler { OperationsHandler::new() .without_state(eac::EacChallengeIgnorer) .without_state(more_auth::MoreLobbyAuth) @@ -88,14 +88,14 @@ pub fn handler() -> OperationsHandler { .without_state(polariton_server::operations::Ack::<131, _>::default()) // analytics updated notification .without_state(platform_config::platform_config_provider()) .without_state(tier_banding::tiers_banding_provider()) - .without_state(cube_list::cube_list_provider()) + .without_state(cube_list::cube_list_provider(&init_ctx.cubes)) .without_state(special_items::special_item_list_provider()) .without_state(premium_config::premium_config_provider()) .without_state(palette_town::kanto()) .without_state(client_config::client_config_provider()) .without_state(crf_config::crf_config_provider()) - .without_state(weapon_stats::weapon_config_provider()) - .without_state(movement_stats::movement_config_provider()) + .without_state(weapon_stats::weapon_config_provider(&init_ctx.cubes)) + .without_state(movement_stats::movement_config_provider(&init_ctx.cubes)) .without_state(power_bar_stats::power_bar_provider()) .without_state(damage_boost_stats::damage_boost_provider()) .without_state(battle_arena_config::battle_arena_config_provider()) diff --git a/rc_services_room/src/operations/movement_stats.rs b/rc_services_room/src/operations/movement_stats.rs index 3e69095..ae4ca7b 100644 --- a/rc_services_room/src/operations/movement_stats.rs +++ b/rc_services_room/src/operations/movement_stats.rs @@ -1,17 +1,18 @@ -use polariton::serdes::TypePrefix; -use polariton_server::operations::SimpleFunc; -use polariton::operation::{ParameterTable, Typed, Dict}; +//use polariton::serdes::TypePrefix; +use polariton_server::operations::Immediate; +//use polariton::operation::{ParameterTable, Typed, Dict}; -use crate::data::movement_list::*; -use crate::data::cube_list::ItemTier; -use crate::data::weapon_list::ItemCategory; +//use crate::data::movement_list::*; +//use crate::data::cube_list::ItemTier; +//use crate::data::weapon_list::ItemCategory; const PARAM_KEY: u8 = 1; -pub(super) fn movement_config_provider() -> SimpleFunc<62, crate::UserTy, impl (Fn(ParameterTable, &crate::UserTy) -> Result) + Sync + Sync> { - SimpleFunc::new(|params, _| { - let mut params = params.to_dict(); - params.insert(PARAM_KEY, Typed::Dict(Dict { +pub(super) fn movement_config_provider(cubes: &crate::persist::config::CubeConfig) -> Immediate<62, crate::UserTy> { + Immediate::new(|| { + let mut params = std::collections::HashMap::with_capacity(2); + params.insert(PARAM_KEY, cubes.movement_list()); + /*params.insert(PARAM_KEY, Typed::Dict(Dict { key_ty: TypePrefix::Str, // str val_ty: TypePrefix::HashMap, // hashtable items: vec![ @@ -137,7 +138,7 @@ pub(super) fn movement_config_provider() -> SimpleFunc<62, crate::UserTy, impl ( }.as_transmissible()), ].into())), ].into(), - })); - Ok(params.into()) + }));*/ + params.into() }) } diff --git a/rc_services_room/src/operations/weapon_stats.rs b/rc_services_room/src/operations/weapon_stats.rs index a159adf..87a3543 100644 --- a/rc_services_room/src/operations/weapon_stats.rs +++ b/rc_services_room/src/operations/weapon_stats.rs @@ -1,16 +1,17 @@ -use polariton::serdes::TypePrefix; -use polariton_server::operations::SimpleFunc; -use polariton::operation::{ParameterTable, Typed, Dict}; +//use polariton::serdes::TypePrefix; +use polariton_server::operations::Immediate; +//use polariton::operation::{Typed, Dict}; -use crate::data::weapon_list::*; -use crate::data::cube_list::ItemTier; +//use crate::data::weapon_list::*; +//use crate::data::cube_list::ItemTier; const PARAM_KEY: u8 = 57; -pub(super) fn weapon_config_provider() -> SimpleFunc<47, crate::UserTy, impl (Fn(ParameterTable, &crate::UserTy) -> Result) + Sync + Sync> { - SimpleFunc::new(|params, _| { - let mut params = params.to_dict(); - params.insert(PARAM_KEY, Typed::Dict(Dict { +pub(super) fn weapon_config_provider(cubes: &crate::persist::config::CubeConfig) -> Immediate<47, crate::UserTy> { + Immediate::new(|| { + let mut params = std::collections::HashMap::with_capacity(2); + params.insert(PARAM_KEY, cubes.weapon_list()); + /*params.insert(PARAM_KEY, Typed::Dict(Dict { key_ty: TypePrefix::Str, // str val_ty: TypePrefix::HashMap, // hashtable items: vec![ @@ -42,7 +43,7 @@ pub(super) fn weapon_config_provider() -> SimpleFunc<47, crate::UserTy, impl (Fn }.as_transmissible()), ].into())) ].into(), - })); - Ok(params.into()) + }));*/ + params.into() }) } diff --git a/rc_services_room/src/persist/config/cubes.rs b/rc_services_room/src/persist/config/cubes.rs new file mode 100644 index 0000000..470458f --- /dev/null +++ b/rc_services_room/src/persist/config/cubes.rs @@ -0,0 +1,347 @@ +use std::collections::HashMap; + +use serde::{Serialize, Deserialize}; + +use polariton::operation::{Typed, Dict}; +use polariton::serdes::TypePrefix; + +use super::{MovementCategoryData, MovementData, WeaponData}; + +const CUBE_CONFIG_FILENAME: &str = "cubes.json"; + +#[derive(Serialize, Deserialize, Debug)] +pub struct CubeConfig { + cubes: HashMap, + movement: HashMap, + lerp_value: f32, +} + +impl CubeConfig { + pub fn load(root: impl AsRef) -> std::io::Result { + let file = std::fs::File::open(root.as_ref().join(CUBE_CONFIG_FILENAME))?; + let buffered = std::io::BufReader::new(file); + let result = serde_json::from_reader(buffered)?; + Ok(result) + } + + pub fn cube_list(&self) -> Typed { + Typed::Dict(Dict { + key_ty: TypePrefix::Str, + val_ty: TypePrefix::HashMap, + items: self.cubes.values().map(|cube| { + let cube_d: crate::data::cube_list::CubeInfo = cube.info.clone().into(); + cube_d.as_transmissible_key_val(cube.id) + }).collect(), + }) + } + + pub fn movement_list(&self) -> Typed { + let mut movements_stats = HashMap::>::new(); + for cube in self.cubes.values() { + if let Some(movement_data) = &cube.movement { + let category_map = if let Some(x) = movements_stats.get_mut(&cube.info.category) { + x + } else { + movements_stats.insert(cube.info.category, HashMap::new()); + movements_stats.get_mut(&cube.info.category).unwrap() + }; + category_map.insert(cube.info.size, movement_data.to_owned()); + } + } + let mut movement_cat_stats = Vec::with_capacity(self.movement.len()); + for (k, v) in self.movement.iter() { + let stats: Vec<_> = if let Some(stats) = movements_stats.get(&k) { + stats.iter().map(|(k, v)| (k.to_owned(), v.to_owned())).collect() + } else { + Vec::default() + }; + let key: crate::data::weapon_list::ItemCategory = k.to_owned().into(); + let key_typed = Typed::::Str(key.as_str().into()); + + let value_data = v.to_owned().into_data(stats); + movement_cat_stats.push((key_typed, value_data.as_transmissible())); + } + Typed::Dict(Dict { + key_ty: TypePrefix::Str, + val_ty: TypePrefix::HashMap, + items: vec![ + (Typed::Str("Global".into()), Typed::HashMap(vec![ + (Typed::Str("lerpValue".into()), Typed::Float(self.lerp_value)), + ].into())), + (Typed::Str("Movements".into()), Typed::HashMap(movement_cat_stats.into())), + ], + }) + } + + pub fn weapon_list(&self) -> Typed { + let mut weapon_stats = HashMap::new(); + for cube in self.cubes.values() { + if let Some(weapon_data) = &cube.weapon { + let category_map = if let Some(x) = weapon_stats.get_mut(&cube.info.category) { + x + } else { + weapon_stats.insert(cube.info.category, HashMap::new()); + weapon_stats.get_mut(&cube.info.category).unwrap() + }; + category_map.insert(cube.info.size, weapon_data.to_owned()); + } + } + let mut weapons_vec: Vec<(Typed, Typed)> = Vec::with_capacity(weapon_stats.len()); + for (k, v) in weapon_stats { + let cat_data: crate::data::weapon_list::ItemCategory = k.into(); + let mut tiers_vec = Vec::with_capacity(v.len()); + for (k, v) in v { + let tier_data: crate::data::cube_list::ItemTier = k.into(); + let val_data: crate::data::weapon_list::WeaponData = v.into(); + tiers_vec.push((Typed::Str(tier_data.as_str().into()), val_data.as_transmissible())); + } + weapons_vec.push((Typed::Str(cat_data.as_str().into()), Typed::HashMap(tiers_vec.into()))); + } + Typed::Dict(Dict { + key_ty: TypePrefix::Str, + val_ty: TypePrefix::HashMap, + items: weapons_vec, + }) + } +} + +#[derive(Serialize, Deserialize, Clone, Debug)] +pub struct Cube { + pub id: u32, + pub info: CubeInfo, + pub weapon: Option, + pub movement: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug)] +pub struct CubeInfo { + #[serde(default = "default_1")] + pub cpu: u32, + #[serde(default = "default_1")] + pub health: u32, + #[serde(default = "default_1_0")] + pub health_boost: f32, + #[serde(default)] + pub grey_out_in_tutorial: bool, + #[serde(default)] + pub visibility: VisibilityMode, + #[serde(default)] + pub indestructible: bool, + #[serde(default)] + pub category: ItemCategory, + #[serde(default = "default_63")] + pub placements: u32, + #[serde(default)] + pub protonium: bool, + #[serde(default)] + pub unlocked_by_league: bool, + #[serde(default)] + pub league_unlock_index: i32, + pub stats: HashMap, + pub description: String, + pub size: ItemTier, + #[serde(rename = "type", alias = "type_")] + pub type_: ItemType, + #[serde(default)] + pub ranking: i32, + #[serde(default)] + pub cosmetic: bool, + #[serde(default)] + pub variant_of: u32, // cube id (in hex) + #[serde(default = "default_true")] + pub ignore_in_weapon_list: bool, +} + +fn default_1() -> u32 { + 1 +} + +fn default_1_0() -> f32 { + 1.0 +} + +fn default_63() -> u32 { + 63 +} + +fn default_true() -> bool { + true +} + +impl std::convert::Into> for CubeInfo { + fn into(self) -> crate::data::cube_list::CubeInfo { + crate::data::cube_list::CubeInfo { + cpu: self.cpu, + health: self.health, + health_boost: self.health_boost, + grey_out_in_tutorial: self.grey_out_in_tutorial, + visibility: self.visibility.into(), + indestructible: self.indestructible, + category: self.category.into(), + placements: self.placements, // default 63 + protonium: self.protonium, + unlocked_by_league: self.unlocked_by_league, + league_unlock_index: self.league_unlock_index, + stats: self.stats.into_iter().map(|(k, v)| { + let new_v = match v { + serde_json::Value::Bool(b) => Typed::Bool(b), + serde_json::Value::Number(n) => if let Some(n_i64) = n.as_i64() { + Typed::Long(n_i64) + } else if let Some(n_f64) = n.as_f64() { + Typed::Double(n_f64) + } else { + panic!("Invalid json number") + }, + serde_json::Value::String(s) => Typed::Str(s.into()), + _ => Typed::Null, // TODO is support for Object/Array/Null necessary? + }; + (k, new_v) + }).collect(), + description: self.description, + size: self.size.into(), + type_: self.type_.into(), + ranking: self.ranking, + cosmetic: self.cosmetic, + variant_of: hex::encode(self.variant_of.to_be_bytes()).into(), + ignore_in_weapon_list: self.ignore_in_weapon_list, + } + } +} + +#[derive(Serialize, Deserialize, Clone, Copy, Debug, Default)] +pub enum VisibilityMode { + Mothership, + #[default] + All, + Tutorial, + None, +} + +impl std::convert::Into for VisibilityMode { + fn into(self) -> crate::data::cube_list::VisibilityMode { + match self { + Self::Mothership => crate::data::cube_list::VisibilityMode::Mothership, + Self::All => crate::data::cube_list::VisibilityMode::All, + Self::Tutorial => crate::data::cube_list::VisibilityMode::Tutorial, + Self::None => crate::data::cube_list::VisibilityMode::None, + } + } +} + +#[derive(Serialize, Deserialize, Clone, Copy, Debug, Default, Hash, PartialEq, Eq)] +pub enum ItemTier { + #[default] + NoTier = 0, + T0 = 100, + T1 = 200, + T2 = 300, + T3 = 400, + T4 = 500, + T5 = 600, +} + +impl std::convert::Into for ItemTier { + fn into(self) -> crate::data::cube_list::ItemTier { + match self { + Self::NoTier => crate::data::cube_list::ItemTier::NoTier, + Self::T0 => crate::data::cube_list::ItemTier::T0, + Self::T1 => crate::data::cube_list::ItemTier::T1, + Self::T2 => crate::data::cube_list::ItemTier::T2, + Self::T3 => crate::data::cube_list::ItemTier::T3, + Self::T4 => crate::data::cube_list::ItemTier::T4, + Self::T5 => crate::data::cube_list::ItemTier::T5, + } + } +} + +#[derive(Serialize, Deserialize, Clone, Copy, Debug, Default)] +pub enum ItemType { + #[default] + NotAFunctionalItem, + Weapon, + Module, + Movement, + Cosmetic, +} + +impl std::convert::Into for ItemType { + fn into(self) -> crate::data::cube_list::ItemType { + match self { + Self::NotAFunctionalItem => crate::data::cube_list::ItemType::NoFunction, + Self::Weapon => crate::data::cube_list::ItemType::Weapon, + Self::Module => crate::data::cube_list::ItemType::Module, + Self::Movement => crate::data::cube_list::ItemType::Movement, + Self::Cosmetic => crate::data::cube_list::ItemType::Cosmetic, + } + } +} + +#[derive(Serialize, Deserialize, Clone, Copy, Debug, Default, Hash, PartialEq, Eq)] +pub enum ItemCategory { + #[default] + NotAFunctionalItem = 0, + Wheel = 1, + Hover = 2, + Wing = 3, + Rudder = 4, + Thruster = 5, + InsectLeg = 6, + MechLeg = 7, + Ski = 8, + TankTrack = 9, + Rotor = 10, + SprinterLeg = 11, + Propeller = 12, + Laser = 100, + Plasma = 200, + Mortar = 250, + Rail = 300, + Nano = 400, + Tesla = 500, + Aeroflak = 600, + Ion = 650, + Seeker = 701, + Chaingun = 750, + ShieldModule = 800, + GhostModule = 801, + BlinkModule = 802, + EmpModule = 803, + WindowmakerModule = 804, + EnergyModule = 900, +} + +impl std::convert::Into for ItemCategory { + fn into(self) -> crate::data::weapon_list::ItemCategory { + match self { + Self::NotAFunctionalItem => crate::data::weapon_list::ItemCategory::NoFunction, + Self::Wheel => crate::data::weapon_list::ItemCategory::Wheel, + Self::Hover => crate::data::weapon_list::ItemCategory::Hover, + Self::Wing => crate::data::weapon_list::ItemCategory::Wing, + Self::Rudder => crate::data::weapon_list::ItemCategory::Rudder, + Self::Thruster => crate::data::weapon_list::ItemCategory::Thruster, + Self::InsectLeg => crate::data::weapon_list::ItemCategory::InsectLeg, + Self::MechLeg => crate::data::weapon_list::ItemCategory::MechLeg, + Self::Ski => crate::data::weapon_list::ItemCategory::Ski, + Self::TankTrack => crate::data::weapon_list::ItemCategory::TankTrack, + Self::Rotor => crate::data::weapon_list::ItemCategory::Rotor, + Self::SprinterLeg => crate::data::weapon_list::ItemCategory::SprinterLeg, + Self::Propeller => crate::data::weapon_list::ItemCategory::Propeller, + Self::Laser => crate::data::weapon_list::ItemCategory::Laser, + Self::Plasma => crate::data::weapon_list::ItemCategory::Plasma, + Self::Mortar => crate::data::weapon_list::ItemCategory::Mortar, + Self::Rail => crate::data::weapon_list::ItemCategory::Rail, + Self::Nano => crate::data::weapon_list::ItemCategory::Nano, + Self::Tesla => crate::data::weapon_list::ItemCategory::Tesla, + Self::Aeroflak => crate::data::weapon_list::ItemCategory::Aeroflak, + Self::Ion => crate::data::weapon_list::ItemCategory::Ion, + Self::Seeker => crate::data::weapon_list::ItemCategory::Seeker, + Self::Chaingun => crate::data::weapon_list::ItemCategory::Chaingun, + Self::ShieldModule => crate::data::weapon_list::ItemCategory::ShieldModule, + Self::GhostModule => crate::data::weapon_list::ItemCategory::GhostModule, + Self::BlinkModule => crate::data::weapon_list::ItemCategory::BlinkModule, + Self::EmpModule => crate::data::weapon_list::ItemCategory::EmpModule, + Self::WindowmakerModule => crate::data::weapon_list::ItemCategory::WindowmakerModule, + Self::EnergyModule => crate::data::weapon_list::ItemCategory::EnergyModule, + } + } +} diff --git a/rc_services_room/src/persist/config/mod.rs b/rc_services_room/src/persist/config/mod.rs new file mode 100644 index 0000000..0d6d630 --- /dev/null +++ b/rc_services_room/src/persist/config/mod.rs @@ -0,0 +1,9 @@ +mod cubes; +pub use cubes::{CubeConfig, ItemTier}; +//pub use cubes::{Cube, ItemCategory, VisibilityMode, ItemType}; + +mod movement; +pub use movement::{MovementCategoryData, MovementData}; + +mod weapon; +pub use weapon::WeaponData; diff --git a/rc_services_room/src/persist/config/movement.rs b/rc_services_room/src/persist/config/movement.rs new file mode 100644 index 0000000..fec1e28 --- /dev/null +++ b/rc_services_room/src/persist/config/movement.rs @@ -0,0 +1,448 @@ +use serde::{Serialize, Deserialize}; + +use super::ItemTier; + +#[derive(Serialize, Deserialize, Clone, Debug, Default)] +pub struct MovementCategoryData { + pub horizontal_top_speed: Option, + pub vertical_top_speed: Option, + pub min_required_items: Option, + pub min_item_modifier: Option, + pub max_hover_height: Option, + pub light_machine_mass: Option, + pub heavy_machine_mass: Option, + pub specifics: MovementCategorySpecificData, +} + +impl MovementCategoryData { + pub fn into_data(self, stats: Vec<(ItemTier, MovementData)>) -> crate::data::movement_list::MovementCategoryData { + crate::data::movement_list::MovementCategoryData { + horizontal_top_speed: self.horizontal_top_speed, + vertical_top_speed: self.vertical_top_speed, + min_required_items: self.min_required_items, + min_item_modifier: self.min_item_modifier, + max_hover_height: self.max_hover_height, + light_machine_mass: self.light_machine_mass, + heavy_machine_mass: self.heavy_machine_mass, + specifics: self.specifics.into(), + stats: stats.into_iter().map(|(t, m)| (t.into(), m.into())).collect(), + } + } +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default)] +pub enum MovementCategorySpecificData { + #[default] + Wheel, + Hover(HoverCategoryData), + Wing, + Rudder, // same as wing + Thruster, + Propeller, // same as thruster + InsectLeg, + MechLeg(MechLegCategoryData), + SprinterLeg(MechLegCategoryData), // same as mech leg + TankTrack, + Rotor(RotorCategoryData), +} + +impl std::convert::Into for MovementCategorySpecificData { + fn into(self) -> crate::data::movement_list::MovementCategorySpecificData { + match self { + Self::Wheel => crate::data::movement_list::MovementCategorySpecificData::Wheel, + Self::Hover(x) => crate::data::movement_list::MovementCategorySpecificData::Hover(x.into()), + Self::Wing => crate::data::movement_list::MovementCategorySpecificData::Wing, + Self::Rudder => crate::data::movement_list::MovementCategorySpecificData::Rudder, + Self::Thruster => crate::data::movement_list::MovementCategorySpecificData::Thruster, + Self::Propeller => crate::data::movement_list::MovementCategorySpecificData::Propeller, + Self::InsectLeg => crate::data::movement_list::MovementCategorySpecificData::InsectLeg, + Self::MechLeg(x) => crate::data::movement_list::MovementCategorySpecificData::MechLeg(x.into()), + Self::SprinterLeg(x) => crate::data::movement_list::MovementCategorySpecificData::SprinterLeg(x.into()), + Self::TankTrack => crate::data::movement_list::MovementCategorySpecificData::TankTrack, + Self::Rotor(x) => crate::data::movement_list::MovementCategorySpecificData::Rotor(x.into()), + } + } +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default)] +pub struct HoverCategoryData { + pub height_tolerance: f32, + pub force_y_offset: f32, + pub turning_scale: f32, + pub small_angle_turning_scale: f32, + pub max_vertical_velocity: f32, + pub hover_damping: f32, + pub angular_damping: f32, + pub deceleration_multiplier: f32, +} + +impl std::convert::Into for HoverCategoryData { + fn into(self) -> crate::data::movement_list::HoverCategoryData { + crate::data::movement_list::HoverCategoryData { + height_tolerance: self.height_tolerance, + force_y_offset: self.force_y_offset, + turning_scale: self.turning_scale, + small_angle_turning_scale: self.small_angle_turning_scale, + max_vertical_velocity: self.max_vertical_velocity, + hover_damping: self.hover_damping, + angular_damping: self.angular_damping, + deceleration_multiplier: self.deceleration_multiplier, + } + } +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default)] +pub struct MechLegCategoryData { + pub deceleration_multiplier: f32, +} + +impl std::convert::Into for MechLegCategoryData { + fn into(self) -> crate::data::movement_list::MechLegCategoryData { + crate::data::movement_list::MechLegCategoryData { + deceleration_multiplier: self.deceleration_multiplier, + } + } +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default)] +pub struct RotorCategoryData { + pub max_turn_rate: f32, +} + +impl std::convert::Into for RotorCategoryData { + fn into(self) -> crate::data::movement_list::RotorCategoryData { + crate::data::movement_list::RotorCategoryData { + max_turn_rate: self.max_turn_rate, + } + } +} + +#[derive(Serialize, Deserialize, Clone, Debug)] +pub struct MovementData { + pub speed_boost: Option, + pub max_carry_mass: Option, + pub horizontal_top_speed: Option, + pub vertical_top_speed: Option, + pub specifics: MovementSpecificData, +} + +impl std::convert::Into for MovementData { + fn into(self) -> crate::data::movement_list::MovementData { + crate::data::movement_list::MovementData { + speed_boost: self.speed_boost, + max_carry_mass: self.max_carry_mass, + horizontal_top_speed: self.horizontal_top_speed, + vertical_top_speed: self.vertical_top_speed, + specifics: self.specifics.into(), + } + } +} + +#[derive(Serialize, Deserialize, Clone, Debug)] +pub enum MovementSpecificData { + Wheel(WheelData), + Hover(HoverData), + Wing(AerofoilData), + Rudder(AerofoilData), // same as wing + Thruster(ThrusterData), + Propeller(ThrusterData), // same as thruster + InsectLeg(InsectLegData), + MechLeg(MechLegData), + SprinterLeg(MechLegData), // same as mech leg + TankTrack(TankTrackData), + Rotor(RotorData), +} + +impl std::convert::Into for MovementSpecificData { + fn into(self) -> crate::data::movement_list::MovementSpecificData { + match self { + Self::Wheel(x) => crate::data::movement_list::MovementSpecificData::Wheel(x.into()), + Self::Hover(x) => crate::data::movement_list::MovementSpecificData::Hover(x.into()), + Self::Wing(x) => crate::data::movement_list::MovementSpecificData::Wing(x.into()), + Self::Rudder(x) => crate::data::movement_list::MovementSpecificData::Rudder(x.into()), + Self::Thruster(x) => crate::data::movement_list::MovementSpecificData::Thruster(x.into()), + Self::Propeller(x) => crate::data::movement_list::MovementSpecificData::Propeller(x.into()), + Self::InsectLeg(x) => crate::data::movement_list::MovementSpecificData::InsectLeg(x.into()), + Self::MechLeg(x) => crate::data::movement_list::MovementSpecificData::MechLeg(x.into()), + Self::SprinterLeg(x) => crate::data::movement_list::MovementSpecificData::SprinterLeg(x.into()), + Self::TankTrack(x) => crate::data::movement_list::MovementSpecificData::TankTrack(x.into()), + Self::Rotor(x) => crate::data::movement_list::MovementSpecificData::Rotor(x.into()), + } + } +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default)] +pub struct WheelData { + pub steering_speed_light: f32, + pub steering_speed_heavy: f32, + pub steering_force_multiplier_light: f32, + pub steering_force_multiplier_heavy: f32, + pub lateral_acceleration_light: f32, + pub lateral_acceleration_heavy: f32, + pub time_to_max_acceleration_light: f32, + pub time_to_max_acceleration_heavy: f32, + pub brake_force_light: f32, + pub brake_force_heavy: f32, +} + +impl std::convert::Into for WheelData { + fn into(self) -> crate::data::movement_list::WheelData { + crate::data::movement_list::WheelData { + steering_speed_light: self.steering_speed_light, + steering_speed_heavy: self.steering_speed_heavy, + steering_force_multiplier_light: self.steering_force_multiplier_light, + steering_force_multiplier_heavy: self.steering_force_multiplier_heavy, + lateral_acceleration_light: self.lateral_acceleration_light, + lateral_acceleration_heavy: self.lateral_acceleration_heavy, + time_to_max_acceleration_light: self.time_to_max_acceleration_light, + time_to_max_acceleration_heavy: self.time_to_max_acceleration_heavy, + brake_force_light: self.brake_force_light, + brake_force_heavy: self.brake_force_heavy, + } + } +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default)] +pub struct HoverData { + pub max_hover_height_light: f32, + pub max_hover_height_heaver: f32, + pub height_change_speed_light: f32, + pub height_change_speed_heavy: f32, + pub turn_torque_light: f32, + pub turn_torque_heavy: f32, + pub acceleration_light: f32, + pub acceleration_heavy: f32, + pub max_angular_velocity_light: f32, + pub max_angular_velocity_heavy: f32, + pub lateral_damping_light: f32, + pub lateral_damping_heavy: f32, +} + +impl std::convert::Into for HoverData { + fn into(self) -> crate::data::movement_list::HoverData { + crate::data::movement_list::HoverData { + max_hover_height_light: self.max_hover_height_light, + max_hover_height_heaver: self.max_hover_height_heaver, + height_change_speed_light: self.height_change_speed_light, + height_change_speed_heavy: self.height_change_speed_heavy, + turn_torque_light: self.turn_torque_light, + turn_torque_heavy: self.turn_torque_heavy, + acceleration_light: self.acceleration_light, + acceleration_heavy: self.acceleration_heavy, + max_angular_velocity_light: self.max_angular_velocity_light, + max_angular_velocity_heavy: self.max_angular_velocity_heavy, + lateral_damping_light: self.lateral_damping_light, + lateral_damping_heavy: self.lateral_damping_heavy, + } + } +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default)] +pub struct AerofoilData { + pub barrel_speed_light: f32, + pub barrel_speed_heavy: f32, + pub bank_speed_light: f32, + pub bank_speed_heavy: f32, + pub elevation_speed_light: f32, + pub elevation_speed_heavy: f32, + pub rudder_speed_light: f32, + pub rudder_speed_heavy: f32, + pub thrust_light: f32, + pub thrust_heavy: f32, + pub vtol_velocity_light: f32, + pub vtol_velocity_heavy: f32, +} + +impl std::convert::Into for AerofoilData { + fn into(self) -> crate::data::movement_list::AerofoilData { + crate::data::movement_list::AerofoilData { + barrel_speed_light: self.barrel_speed_light, + barrel_speed_heavy: self.barrel_speed_heavy, + bank_speed_light: self.bank_speed_light, + bank_speed_heavy: self.bank_speed_heavy, + elevation_speed_light: self.elevation_speed_light, + elevation_speed_heavy: self.elevation_speed_heavy, + rudder_speed_light: self.rudder_speed_light, + rudder_speed_heavy: self.rudder_speed_heavy, + thrust_light: self.thrust_light, + thrust_heavy: self.thrust_heavy, + vtol_velocity_light: self.vtol_velocity_light, + vtol_velocity_heavy: self.vtol_velocity_heavy, + } + } +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default)] +pub struct ThrusterData { + pub acceleration_delay_light: f32, + pub acceleration_delay_heavy: f32, +} + +impl std::convert::Into for ThrusterData { + fn into(self) -> crate::data::movement_list::ThrusterData { + crate::data::movement_list::ThrusterData { + acceleration_delay_light: self.acceleration_delay_light, + acceleration_delay_heavy: self.acceleration_delay_heavy, + } + } +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default)] +pub struct InsectLegData { + pub ideal_height_light: f32, + pub ideal_height_heavy: f32, + pub ideal_crouching_height_light: f32, + pub ideal_crouching_height_heavy: f32, + pub ideal_height_range_light: f32, + pub ideal_height_range_heavy: f32, + pub jump_height_light: f32, + pub jump_height_heavy: f32, + pub max_upwards_force_light: f32, + pub max_upwards_force_heavy: f32, + pub max_lateral_force_light: f32, + pub max_lateral_force_heavy: f32, + pub max_turning_force_light: f32, + pub max_turning_force_heavy: f32, + pub max_damping_force_light: f32, + pub max_damping_force_heavy: f32, + pub max_stopped_force_light: f32, + pub max_stopped_force_heavy: f32, + pub max_new_stopped_force_light: f32, + pub max_new_stopped_force_heavy: f32, + pub upwards_damping_force_light: f32, + pub upwards_damping_force_heavy: f32, + pub lateral_damp_force_light: f32, + pub lateral_damp_force_heavy: f32, + pub swagger_force_light: f32, + pub swagger_force_heavy: f32, +} + +impl std::convert::Into for InsectLegData { + fn into(self) -> crate::data::movement_list::InsectLegData { + crate::data::movement_list::InsectLegData { + ideal_height_light: self.ideal_height_light, + ideal_height_heavy: self.ideal_height_heavy, + ideal_crouching_height_light: self.ideal_crouching_height_light, + ideal_crouching_height_heavy: self.ideal_crouching_height_heavy, + ideal_height_range_light: self.ideal_height_range_light, + ideal_height_range_heavy: self.ideal_height_range_heavy, + jump_height_light: self.jump_height_light, + jump_height_heavy: self.jump_height_heavy, + max_upwards_force_light: self.max_upwards_force_light, + max_upwards_force_heavy: self.max_upwards_force_heavy, + max_lateral_force_light: self.max_lateral_force_light, + max_lateral_force_heavy: self.max_lateral_force_heavy, + max_turning_force_light: self.max_turning_force_light, + max_turning_force_heavy: self.max_turning_force_heavy, + max_damping_force_light: self.max_damping_force_light, + max_damping_force_heavy: self.max_damping_force_heavy, + max_stopped_force_light: self.max_stopped_force_light, + max_stopped_force_heavy: self.max_stopped_force_heavy, + max_new_stopped_force_light: self.max_new_stopped_force_light, + max_new_stopped_force_heavy: self.max_new_stopped_force_heavy, + upwards_damping_force_light: self.upwards_damping_force_light, + upwards_damping_force_heavy: self.upwards_damping_force_heavy, + lateral_damp_force_light: self.lateral_damp_force_light, + lateral_damp_force_heavy: self.lateral_damp_force_heavy, + swagger_force_light: self.swagger_force_light, + swagger_force_heavy: self.swagger_force_heavy, + } + } +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default)] +pub struct MechLegData { + pub time_grounded_after_jump_light: f32, + pub time_grounded_after_jump_heavy: f32, + pub jump_height_light: f32, + pub jump_height_heavy: f32, + pub turn_acceleration_light: f32, + pub turn_acceleration_heavy: f32, + pub legacy_turn_acceleration_light: f32, + pub legacy_turn_acceleration_heavy: f32, + pub long_jump_speec_scale_light: f32, + pub long_jump_speec_scale_heavy: f32, + pub max_lateral_force_light: f32, + pub max_lateral_force_heavy: f32, + pub max_damping_force_light: f32, + pub max_damping_force_heavy: f32, +} + +impl std::convert::Into for MechLegData { + fn into(self) -> crate::data::movement_list::MechLegData { + crate::data::movement_list::MechLegData { + time_grounded_after_jump_light: self.time_grounded_after_jump_light, + time_grounded_after_jump_heavy: self.time_grounded_after_jump_heavy, + jump_height_light: self.jump_height_light, + jump_height_heavy: self.jump_height_heavy, + turn_acceleration_light: self.turn_acceleration_light, + turn_acceleration_heavy: self.turn_acceleration_heavy, + legacy_turn_acceleration_light: self.legacy_turn_acceleration_light, + legacy_turn_acceleration_heavy: self.legacy_turn_acceleration_heavy, + long_jump_speec_scale_light: self.long_jump_speec_scale_light, + long_jump_speec_scale_heavy: self.long_jump_speec_scale_heavy, + max_lateral_force_light: self.max_lateral_force_light, + max_lateral_force_heavy: self.max_lateral_force_heavy, + max_damping_force_light: self.max_damping_force_light, + max_damping_force_heavy: self.max_damping_force_heavy, + } + } +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default)] +pub struct TankTrackData { + pub max_turn_rate_moving_light: f32, + pub max_turn_rate_moving_heavy: f32, + pub max_turn_rate_stopped_light: f32, + pub max_turn_rate_stopped_heavy: f32, + pub turn_acceleration_light: f32, + pub turn_acceleration_heavy: f32, + pub lateral_acceleration_light: f32, + pub lateral_acceleration_heavy: f32, +} + +impl std::convert::Into for TankTrackData { + fn into(self) -> crate::data::movement_list::TankTrackData { + crate::data::movement_list::TankTrackData { + max_turn_rate_moving_light: self.max_turn_rate_moving_light, + max_turn_rate_moving_heavy: self.max_turn_rate_moving_heavy, + max_turn_rate_stopped_light: self.max_turn_rate_stopped_light, + max_turn_rate_stopped_heavy: self.max_turn_rate_stopped_heavy, + turn_acceleration_light: self.turn_acceleration_light, + turn_acceleration_heavy: self.turn_acceleration_heavy, + lateral_acceleration_light: self.lateral_acceleration_light, + lateral_acceleration_heavy: self.lateral_acceleration_heavy, + } + } +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default)] +pub struct RotorData { + pub height_acceleration_light: f32, + pub height_acceleration_heavy: f32, + pub strafe_acceleration_light: f32, + pub strafe_acceleration_heavy: f32, + pub turn_acceleration_light: f32, + pub turn_acceleration_heavy: f32, + pub height_max_change_speed_light: f32, + pub height_max_change_speed_heavy: f32, + pub level_acceleration_light: f32, + pub level_acceleration_heavy: f32, +} + +impl std::convert::Into for RotorData { + fn into(self) -> crate::data::movement_list::RotorData { + crate::data::movement_list::RotorData { + height_acceleration_light: self.height_acceleration_light, + height_acceleration_heavy: self.height_acceleration_heavy, + strafe_acceleration_light: self.strafe_acceleration_light, + strafe_acceleration_heavy: self.strafe_acceleration_heavy, + turn_acceleration_light: self.turn_acceleration_light, + turn_acceleration_heavy: self.turn_acceleration_heavy, + height_max_change_speed_light: self.height_max_change_speed_light, + height_max_change_speed_heavy: self.height_max_change_speed_heavy, + level_acceleration_light: self.level_acceleration_light, + level_acceleration_heavy: self.level_acceleration_heavy, + } + } +} diff --git a/rc_services_room/src/persist/config/weapon.rs b/rc_services_room/src/persist/config/weapon.rs new file mode 100644 index 0000000..95a7b75 --- /dev/null +++ b/rc_services_room/src/persist/config/weapon.rs @@ -0,0 +1,137 @@ +use serde::{Serialize, Deserialize}; + +#[derive(Serialize, Deserialize, Clone, Debug, Default)] +#[serde(default)] +pub struct WeaponData { + pub damage_inflicted: Option, + pub protonium_damage_scale: Option, + pub projectile_speed: Option, + pub projectile_range: Option, + pub base_inaccuracy: Option, + pub base_air_inaccuracy: Option, + pub movement_inaccuracy: Option, + pub movement_max_speed: Option, + pub movement_min_speed: Option, + pub gun_rotation_slow: Option, + pub movement_inaccuracy_decay: Option, + pub slow_rotation_decay: Option, + pub quick_rotation_decay: Option, + pub movement_inaccuracy_recovery: Option, + pub repeat_fire_inaccuracy_total_degrees: Option, + pub repeat_fire_inaccuracy_decay: Option, + pub repeat_fire_innaccuracy_recovery: Option, + pub fire_instant_accuracy_decay: Option, // degrees + pub accuracy_non_recover_time: Option, + pub accuracy_decay: Option, + pub damage_radius: Option, + pub plasma_time_to_full_damage: Option, + pub plasma_starting_radius_scale: Option, + pub nano_dps: Option, + pub nano_hps: Option, + pub tesla_damage: Option, + pub tesla_charges: Option, + pub aeroflak_proximity_damage: Option, + pub aeroflak_damage_radius: Option, + pub aeroflak_explosion_radius: Option, + pub aeroflak_ground_clearance: Option, + pub aeroflak_max_stacks: Option, + pub aeroflak_damage_per_stack: Option, + pub aeroflak_stack_expire: Option, + pub shot_cooldown: Option, + pub smart_rotation_cooldown: Option, + pub smart_rotation_cooldown_extra: Option, + pub smart_rotation_max_stacks: Option, + pub spin_up_time: Option, + pub spin_down_time: Option, + pub spin_initial_cooldown: Option, + pub group_fire_scales: Vec, + pub mana_cost: Option, + pub lock_time: Option, + pub full_lock_release: Option, + pub change_lock_time: Option, + pub max_rotation_speed: Option, + pub initial_rotation_speed: Option, + pub rotation_acceleration: Option, + pub nano_healing_priority_time: Option, + pub module_range: Option, + pub shield_lifetime: Option, + pub teleport_time: Option, + pub camera_time: Option, + pub camera_delay: Option, + pub to_invisible_speed: Option, + pub to_invisible_duration: Option, + pub to_visible_duration: Option, + pub countdown_time: Option, + pub stun_time: Option, + pub stun_radius: Option, + pub effect_duration: Option, +} + +impl std::convert::Into for WeaponData { + fn into(self) -> crate::data::weapon_list::WeaponData { + crate::data::weapon_list::WeaponData { + damage_inflicted: self.damage_inflicted, + protonium_damage_scale: self.protonium_damage_scale, + projectile_speed: self.projectile_speed, + projectile_range: self.projectile_range, + base_inaccuracy: self.base_inaccuracy, + base_air_inaccuracy: self.base_air_inaccuracy, + movement_inaccuracy: self.movement_inaccuracy, + movement_max_speed: self.movement_max_speed, + movement_min_speed: self.movement_min_speed, + gun_rotation_slow: self.gun_rotation_slow, + movement_inaccuracy_decay: self.movement_inaccuracy_decay, + slow_rotation_decay: self.slow_rotation_decay, + quick_rotation_decay: self.quick_rotation_decay, + movement_inaccuracy_recovery: self.movement_inaccuracy_recovery, + repeat_fire_inaccuracy_total_degrees: self.repeat_fire_inaccuracy_total_degrees, + repeat_fire_inaccuracy_decay: self.repeat_fire_inaccuracy_decay, + repeat_fire_innaccuracy_recovery: self.repeat_fire_innaccuracy_recovery, + fire_instant_accuracy_decay: self.fire_instant_accuracy_decay, // degrees + accuracy_non_recover_time: self.accuracy_non_recover_time, + accuracy_decay: self.accuracy_decay, + damage_radius: self.damage_radius, + plasma_time_to_full_damage: self.plasma_time_to_full_damage, + plasma_starting_radius_scale: self.plasma_starting_radius_scale, + nano_dps: self.nano_dps, + nano_hps: self.nano_hps, + tesla_damage: self.tesla_damage, + tesla_charges: self.tesla_charges, + aeroflak_proximity_damage: self.aeroflak_proximity_damage, + aeroflak_damage_radius: self.aeroflak_damage_radius, + aeroflak_explosion_radius: self.aeroflak_explosion_radius, + aeroflak_ground_clearance: self.aeroflak_ground_clearance, + aeroflak_max_stacks: self.aeroflak_max_stacks, + aeroflak_damage_per_stack: self.aeroflak_damage_per_stack, + aeroflak_stack_expire: self.aeroflak_stack_expire, + shot_cooldown: self.shot_cooldown, + smart_rotation_cooldown: self.smart_rotation_cooldown, + smart_rotation_cooldown_extra: self.smart_rotation_cooldown_extra, + smart_rotation_max_stacks: self.smart_rotation_max_stacks, + spin_up_time: self.spin_up_time, + spin_down_time: self.spin_down_time, + spin_initial_cooldown: self.spin_initial_cooldown, + group_fire_scales: self.group_fire_scales, + mana_cost: self.mana_cost, + lock_time: self.lock_time, + full_lock_release: self.full_lock_release, + change_lock_time: self.change_lock_time, + max_rotation_speed: self.max_rotation_speed, + initial_rotation_speed: self.initial_rotation_speed, + rotation_acceleration: self.rotation_acceleration, + nano_healing_priority_time: self.nano_healing_priority_time, + module_range: self.module_range, + shield_lifetime: self.shield_lifetime, + teleport_time: self.teleport_time, + camera_time: self.camera_time, + camera_delay: self.camera_delay, + to_invisible_speed: self.to_invisible_speed, + to_invisible_duration: self.to_invisible_duration, + to_visible_duration: self.to_visible_duration, + countdown_time: self.countdown_time, + stun_time: self.stun_time, + stun_radius: self.stun_radius, + effect_duration: self.effect_duration, + } + } +} diff --git a/rc_services_room/src/persist/mod.rs b/rc_services_room/src/persist/mod.rs new file mode 100644 index 0000000..ef68c36 --- /dev/null +++ b/rc_services_room/src/persist/mod.rs @@ -0,0 +1 @@ +pub mod config; diff --git a/utils/cube_gen.py b/utils/cube_gen.py new file mode 100644 index 0000000..499c611 --- /dev/null +++ b/utils/cube_gen.py @@ -0,0 +1,233 @@ +#!/bin/env python3 + +import sys +import json + +# weapon required data +WEAPONS = { + "Laser" : { + "T0": { + "damage_inflicted": 42, + }, + "T1": { + "damage_inflicted": 420, + }, + "T2": { + "damage_inflicted": 4200, + }, + "T3": { + "damage_inflicted": 42000, + }, + "T4": { + "damage_inflicted": 420000, + }, + "T5": { + "damage_inflicted": 4200000, + }, + }, +} + +# different from the enum +'''CATEGORIES = { + 0: "NotAFunctionalItem", + 1: "Wheel", + 2: "Hover", + 3: "Wing", + 4: "Rudder", + 5: "Thruster", + 6: "InsectLeg", + 7: "MechLeg", + 8: "Ski", + 9: "TankTrack", + 10: "Rotor", + 11: "SprinterLeg", + 12: "Propeller", + 100: "Laser", + 200: "Plasma", + 250: "Mortar", + 300: "Rail", + 400: "Nano", + 500: "Tesla", + 600: "Aeroflak", + 650: "Ion", + 701: "Seeker", + 750: "Chaingun", + 800: "ShieldModule", + 801: "GhostModule", + 802: "BlinkModule", + 803: "EmpModule", + 804: "WindowmakerModule", + 900: "EnergyModule", +}''' +CATEGORIES = [ + "NotAFunctionalItem", + "Wheel", + "Hover", + "Wing", + "Rudder", + "Thruster", + "InsectLeg", + "MechLeg", + "Ski", + "TankTrack", + "Rotor", + "SprinterLeg", + "Propeller", + "Laser", #13 + "Plasma", + "Mortar", + "Rail", + "Nano", + "Tesla", + "Aeroflak", + "Ion", + "Seeker", + "Chaingun", + "ShieldModule", #23 + "GhostModule", + "BlinkModule", + "EmpModule", + "WindowmakerModule", + "EnergyModule", +] + +def guess_category(name: str, sprite: str, cat: int) -> str: + name = name.lower() + sprite = sprite.lower() + for variant in CATEGORIES: + variant_sanitized = variant.lower() + if variant_sanitized in name or variant_sanitized in sprite: + return variant + return CATEGORIES[0] + +def guess_type(name: str, sprite: str, cat: int) -> str: + category = guess_category(name, sprite, cat) + cat_i = CATEGORIES.index(category) + if cat_i == 0: + return "NotAFunctionalItem" + elif cat_i >= 23: + return "Module" + elif cat_i >= 13: + return "Weapon" + elif cat_i >= 1: + return "Movement" + else: + return "NotAFunctionalItem" + +def guess_tier(name: str, sprite: str) -> str: + return guess_tier_by_name_str_key(name) or guess_tier_by_size(sprite) or "NoTier" + +def guess_tier_by_size(sprite: str) -> str: + sprite = sprite.lower() + if "tiny" in sprite: + return "T0" + elif "small" in sprite: + return "T1" + elif "medium" in sprite: + return "T2" + elif "large" in sprite: + return "T3" + elif "huge" in sprite: + return "T4" + elif "mega" in sprite: + return "T5" + else: + return None + +def guess_tier_by_name_str_key(name: str) -> str: + name = name.upper() + if "T0" in name: + return "T0" + elif "T1" in name: + return "T1" + elif "T2" in name: + return "T2" + elif "T3" in name: + return "T3" + elif "T4" in name: + return "T4" + elif "T5" in name: + return "T5" + else: + return None + +def placements_to_int(placements: dict) -> int: + return int(placements["1 UInt8 up"]) | \ + int(placements["1 UInt8 down"]) << 1 | \ + int(placements["1 UInt8 left"]) << 2 | \ + int(placements["1 UInt8 right"]) << 3 | \ + int(placements["1 UInt8 back"]) << 4 | \ + int(placements["1 UInt8 front"]) << 5 + +def main(): + print(sys.argv) + filename_in = sys.argv[1] + with open(filename_in) as f: + cubes_asset = json.load(f) + name = cubes_asset["0 MonoBehaviour Base"]["1 string m_Name"] + print(f"found name (expected to be empty): `{name}`") + cubes = cubes_asset["0 MonoBehaviour Base"]["0 CubeTypeData cubeTypes"]["0 Array Array"] + print(f"found {len(cubes)} cubes to process") + cubes_out = { + "cubes": dict(), + "movement": dict(), + "lerp_value": 10.0, + } + for i in range(len(cubes)): + #print(f"processing cube {i}") + cube = cubes[i]["0 CubeTypeData data"] + name = str(cube["1 string nameStrKey"]) + if name.startswith("str"): + name = name[3:] + if name.endswith("Name"): + name = name[:-4] + new_key = name + " hexCode:" + str(cube["1 string itemCode"]) + " intCode:" + str(cube["0 unsigned int itemCodeValue"]) + stats = dict() + for stat_i in range(1, 7): # 1 to 6 (inclusive) + stat_key = "1 string stat" + str(stat_i) + if stat_key in cube: + stat_val = cube[stat_key] + #print(f"stat {stat_key} -> {stat_val}") + if len(stat_val) == 0: + continue + if " = " in stat_val: + new_stat_key = str(cube[stat_key]).split(" = ")[0] + new_stat_val = str(cube[stat_key]).split(" = ")[1] + else: + new_stat_key = str(cube[stat_key]).split(": ")[0] + new_stat_val = str(cube[stat_key]).split(": ")[1] + stats[new_stat_key] = new_stat_val + new_entry = { + "id": int(cube["0 unsigned int itemCodeValue"]), + "info": { + "category": guess_category(cube["1 string nameStrKey"], cube["1 string spriteName"], int(cube["0 PersistentCubeData cubeData"]["0 int category"])), + "placements": placements_to_int(cube["0 PersistentCubeData cubeData"]["0 CubeFaces selectableFaces"]), + "stats": stats, # required + "description": str(cube["1 string description"]), # required + "size": guess_tier(cube["1 string nameStrKey"], cube["1 string spriteName"]), # required + "type": guess_type(cube["1 string nameStrKey"], cube["1 string spriteName"], int(cube["0 PersistentCubeData cubeData"]["0 int category"])), + "active": int(cube["1 UInt8 active"]) != 0, # ignored + }, + # ignored + "spriteName": cube["1 string spriteName"], + "nameStrKey": cube["1 string nameStrKey"], + "mirrorCubeId": cube["0 PersistentCubeData cubeData"]["1 string mirrorCubeId"], + "hexId": str(cube["1 string itemCode"]), + } + if "CPU LOAD" in stats: + new_entry["info"]["cpu"] = int(stats["CPU LOAD"].strip().split(" ")[0].strip()) + if "ARMOR" in stats: + new_entry["info"]["health"] = int(stats["ARMOR"].replace(",", "").strip()) + if len(new_entry["info"]["description"].strip()) == 0: + new_entry["info"]["description"] = name + " (" + str(cube["0 unsigned int itemCodeValue"]) + "_10|" + str(cube["1 string itemCode"]) + "_16) without a description" + if new_entry["info"]["category"] in WEAPONS and new_entry["info"]["type"] == "Weapon": + if new_entry["info"]["size"] in WEAPONS[new_entry["info"]["category"]]: + new_entry["weapon"] = WEAPONS[new_entry["info"]["category"]][new_entry["info"]["size"]] + print(f"processed cube {i} into {new_entry}") + cubes_out["cubes"][new_key] = new_entry + with open("../assets/robocraft/cubes.json", "w") as f: + json.dump(cubes_out, f, indent=4) + print(f"processed {len(cubes)} cubes") + +if __name__ == "__main__": + main()