 5f73c245fc
			
		
	
	5f73c245fc
	
	
	
		
			
			* Init * remove submodule * Init * Update docs * Fix tests * Update to use apcivvi * Update Readme and codeowners * Minor changes * Remove .value from options (except starting hint) * Minor updates * remove unnecessary property * Cleanup Rules and Region * Fix output file generation * Implement feedback * Remove 'AP' tag and fix issue with format strings and using same quotes * Update worlds/civ_6/__init__.py Co-authored-by: Scipio Wright <scipiowright@gmail.com> * Minor docs changes * minor updates * Small rework of create items * Minor updates * Remove unused variable * Move client to Launcher Components with rest of similar clients * Revert "Move client to Launcher Components with rest of similar clients" This reverts commit f9fd5df9fdf19eaf4f1de54e21e3c33a74f02364. * modify component * Fix generation issues * Fix tests * Minor change * Add improvement and test case * Minor options changes * . * Preliminary Review * Fix failing test due to slot data serialization * Format json * Remove exclude missable boosts * Update options (update goody hut text, make research multiplier a range) * Update docs punctuation and slot data init * Move priority/excluded locations into options * Implement docs PR feedback * PR Feedback for options * PR feedback misc * Update location classification and fix client type * Fix typings * Update research cost multiplier * Remove unnecessary location priority code * Remove extrenous use of items() * WIP PR Feedback * WIP PR Feedback * Add victory event * Add option set for death link effect * PR improvements * Update post fill hint to support items with multiple classifications * remove unnecessary len * Move location exclusion logic * Update test to use set instead of accidental dict * Update docs around progressive eras and boost locations * Update docs for options to be more readable * Fix issue with filler items and prehints * Update filler_data to be static * Update links in docs * Minor updates and PR feedback * Update boosts data * Update era required items * Update existing techs * Update existing techs * move boost data class * Update reward data * Update prereq data * Update new items and progressive districts * Remove unused code * Make filler item name func more efficient * Update death link text * Move Civ6 to the end of readme * Fix bug with hidden locations and location.name * Partial PR Feedback Implementation * Format changes * Minor review feedback * Modify access rules to use list created in generate_early * Modify boost rules to precalculate requirements * Remove option checks from access rules * Fix issue with pre initialized dicts * Add inno setup for civ6 client * Update inno_setup.iss --------- Co-authored-by: Scipio Wright <scipiowright@gmail.com> Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Co-authored-by: Exempt-Medic <ExemptMedic@Gmail.com> Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
		
			
				
	
	
		
			547 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			547 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from typing import List
 | |
| 
 | |
| from ..ItemData import ExistingItemData
 | |
| 
 | |
| 
 | |
| existing_tech: List[ExistingItemData] = [
 | |
|     {
 | |
|         "Type": "TECH_POTTERY",
 | |
|         "Cost": 25,
 | |
|         "UITreeRow": 0,
 | |
|         "EraType": "ERA_ANCIENT",
 | |
|         "Name": "Pottery",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_ANIMAL_HUSBANDRY",
 | |
|         "Cost": 25,
 | |
|         "UITreeRow": 1,
 | |
|         "EraType": "ERA_ANCIENT",
 | |
|         "Name": "Animal Husbandry",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_MINING",
 | |
|         "Cost": 25,
 | |
|         "UITreeRow": 3,
 | |
|         "EraType": "ERA_ANCIENT",
 | |
|         "Name": "Mining",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_SAILING",
 | |
|         "Cost": 50,
 | |
|         "UITreeRow": -3,
 | |
|         "EraType": "ERA_ANCIENT",
 | |
|         "Name": "Sailing",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_ASTROLOGY",
 | |
|         "Cost": 50,
 | |
|         "UITreeRow": -2,
 | |
|         "EraType": "ERA_ANCIENT",
 | |
|         "Name": "Astrology",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_IRRIGATION",
 | |
|         "Cost": 50,
 | |
|         "UITreeRow": -1,
 | |
|         "EraType": "ERA_ANCIENT",
 | |
|         "Name": "Irrigation",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_ARCHERY",
 | |
|         "Cost": 50,
 | |
|         "UITreeRow": 1,
 | |
|         "EraType": "ERA_ANCIENT",
 | |
|         "Name": "Archery",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_WRITING",
 | |
|         "Cost": 50,
 | |
|         "UITreeRow": 0,
 | |
|         "EraType": "ERA_ANCIENT",
 | |
|         "Name": "Writing",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_MASONRY",
 | |
|         "Cost": 80,
 | |
|         "UITreeRow": 2,
 | |
|         "EraType": "ERA_ANCIENT",
 | |
|         "Name": "Masonry",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_BRONZE_WORKING",
 | |
|         "Cost": 80,
 | |
|         "UITreeRow": 3,
 | |
|         "EraType": "ERA_ANCIENT",
 | |
|         "Name": "Bronze Working",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_THE_WHEEL",
 | |
|         "Cost": 80,
 | |
|         "UITreeRow": 4,
 | |
|         "EraType": "ERA_ANCIENT",
 | |
|         "Name": "The Wheel",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_CELESTIAL_NAVIGATION",
 | |
|         "Cost": 120,
 | |
|         "UITreeRow": -2,
 | |
|         "EraType": "ERA_CLASSICAL",
 | |
|         "Name": "Celestial Navigation",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_CURRENCY",
 | |
|         "Cost": 120,
 | |
|         "UITreeRow": 0,
 | |
|         "EraType": "ERA_CLASSICAL",
 | |
|         "Name": "Currency",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_HORSEBACK_RIDING",
 | |
|         "Cost": 120,
 | |
|         "UITreeRow": 1,
 | |
|         "EraType": "ERA_CLASSICAL",
 | |
|         "Name": "Horseback Riding",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_IRON_WORKING",
 | |
|         "Cost": 120,
 | |
|         "UITreeRow": 3,
 | |
|         "EraType": "ERA_CLASSICAL",
 | |
|         "Name": "Iron Working",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_SHIPBUILDING",
 | |
|         "Cost": 200,
 | |
|         "UITreeRow": -3,
 | |
|         "EraType": "ERA_CLASSICAL",
 | |
|         "Name": "Shipbuilding",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_MATHEMATICS",
 | |
|         "Cost": 200,
 | |
|         "UITreeRow": -1,
 | |
|         "EraType": "ERA_CLASSICAL",
 | |
|         "Name": "Mathematics",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_CONSTRUCTION",
 | |
|         "Cost": 200,
 | |
|         "UITreeRow": 2,
 | |
|         "EraType": "ERA_CLASSICAL",
 | |
|         "Name": "Construction",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_ENGINEERING",
 | |
|         "Cost": 200,
 | |
|         "UITreeRow": 4,
 | |
|         "EraType": "ERA_CLASSICAL",
 | |
|         "Name": "Engineering",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_MILITARY_TACTICS",
 | |
|         "Cost": 300,
 | |
|         "UITreeRow": -2,
 | |
|         "EraType": "ERA_MEDIEVAL",
 | |
|         "Name": "Military Tactics",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_APPRENTICESHIP",
 | |
|         "Cost": 300,
 | |
|         "UITreeRow": 0,
 | |
|         "EraType": "ERA_MEDIEVAL",
 | |
|         "Name": "Apprenticeship",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_MACHINERY",
 | |
|         "Cost": 300,
 | |
|         "UITreeRow": 4,
 | |
|         "EraType": "ERA_MEDIEVAL",
 | |
|         "Name": "Machinery",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_EDUCATION",
 | |
|         "Cost": 390,
 | |
|         "UITreeRow": -1,
 | |
|         "EraType": "ERA_MEDIEVAL",
 | |
|         "Name": "Education",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_STIRRUPS",
 | |
|         "Cost": 390,
 | |
|         "UITreeRow": 1,
 | |
|         "EraType": "ERA_MEDIEVAL",
 | |
|         "Name": "Stirrups",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_MILITARY_ENGINEERING",
 | |
|         "Cost": 390,
 | |
|         "UITreeRow": 2,
 | |
|         "EraType": "ERA_MEDIEVAL",
 | |
|         "Name": "Military Engineering",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_CASTLES",
 | |
|         "Cost": 390,
 | |
|         "UITreeRow": 3,
 | |
|         "EraType": "ERA_MEDIEVAL",
 | |
|         "Name": "Castles",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_CARTOGRAPHY",
 | |
|         "Cost": 600,
 | |
|         "UITreeRow": -3,
 | |
|         "EraType": "ERA_RENAISSANCE",
 | |
|         "Name": "Cartography",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_MASS_PRODUCTION",
 | |
|         "Cost": 600,
 | |
|         "UITreeRow": -2,
 | |
|         "EraType": "ERA_RENAISSANCE",
 | |
|         "Name": "Mass Production",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_BANKING",
 | |
|         "Cost": 600,
 | |
|         "UITreeRow": 0,
 | |
|         "EraType": "ERA_RENAISSANCE",
 | |
|         "Name": "Banking",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_GUNPOWDER",
 | |
|         "Cost": 600,
 | |
|         "UITreeRow": 1,
 | |
|         "EraType": "ERA_RENAISSANCE",
 | |
|         "Name": "Gunpowder",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_PRINTING",
 | |
|         "Cost": 600,
 | |
|         "UITreeRow": 4,
 | |
|         "EraType": "ERA_RENAISSANCE",
 | |
|         "Name": "Printing",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_SQUARE_RIGGING",
 | |
|         "Cost": 730,
 | |
|         "UITreeRow": -3,
 | |
|         "EraType": "ERA_RENAISSANCE",
 | |
|         "Name": "Square Rigging",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_ASTRONOMY",
 | |
|         "Cost": 730,
 | |
|         "UITreeRow": -1,
 | |
|         "EraType": "ERA_RENAISSANCE",
 | |
|         "Name": "Astronomy",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_METAL_CASTING",
 | |
|         "Cost": 730,
 | |
|         "UITreeRow": 1,
 | |
|         "EraType": "ERA_RENAISSANCE",
 | |
|         "Name": "Metal Casting",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_SIEGE_TACTICS",
 | |
|         "Cost": 730,
 | |
|         "UITreeRow": 3,
 | |
|         "EraType": "ERA_RENAISSANCE",
 | |
|         "Name": "Siege Tactics",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_INDUSTRIALIZATION",
 | |
|         "Cost": 930,
 | |
|         "UITreeRow": -2,
 | |
|         "EraType": "ERA_INDUSTRIAL",
 | |
|         "Name": "Industrialization",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_SCIENTIFIC_THEORY",
 | |
|         "Cost": 930,
 | |
|         "UITreeRow": -1,
 | |
|         "EraType": "ERA_INDUSTRIAL",
 | |
|         "Name": "Scientific Theory",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_BALLISTICS",
 | |
|         "Cost": 930,
 | |
|         "UITreeRow": 1,
 | |
|         "EraType": "ERA_INDUSTRIAL",
 | |
|         "Name": "Ballistics",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_MILITARY_SCIENCE",
 | |
|         "Cost": 930,
 | |
|         "UITreeRow": 3,
 | |
|         "EraType": "ERA_INDUSTRIAL",
 | |
|         "Name": "Military Science",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_STEAM_POWER",
 | |
|         "Cost": 1070,
 | |
|         "UITreeRow": -3,
 | |
|         "EraType": "ERA_INDUSTRIAL",
 | |
|         "Name": "Steam Power",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_SANITATION",
 | |
|         "Cost": 1070,
 | |
|         "UITreeRow": -1,
 | |
|         "EraType": "ERA_INDUSTRIAL",
 | |
|         "Name": "Sanitation",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_ECONOMICS",
 | |
|         "Cost": 1070,
 | |
|         "UITreeRow": 0,
 | |
|         "EraType": "ERA_INDUSTRIAL",
 | |
|         "Name": "Economics",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_RIFLING",
 | |
|         "Cost": 1070,
 | |
|         "UITreeRow": 2,
 | |
|         "EraType": "ERA_INDUSTRIAL",
 | |
|         "Name": "Rifling",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_FLIGHT",
 | |
|         "Cost": 1250,
 | |
|         "UITreeRow": -2,
 | |
|         "EraType": "ERA_MODERN",
 | |
|         "Name": "Flight",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_REPLACEABLE_PARTS",
 | |
|         "Cost": 1250,
 | |
|         "UITreeRow": 0,
 | |
|         "EraType": "ERA_MODERN",
 | |
|         "Name": "Replaceable Parts",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_STEEL",
 | |
|         "Cost": 1250,
 | |
|         "UITreeRow": 1,
 | |
|         "EraType": "ERA_MODERN",
 | |
|         "Name": "Steel",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_ELECTRICITY",
 | |
|         "Cost": 1370,
 | |
|         "UITreeRow": -3,
 | |
|         "EraType": "ERA_MODERN",
 | |
|         "Name": "Electricity",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_RADIO",
 | |
|         "Cost": 1370,
 | |
|         "UITreeRow": -2,
 | |
|         "EraType": "ERA_MODERN",
 | |
|         "Name": "Radio",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_CHEMISTRY",
 | |
|         "Cost": 1370,
 | |
|         "UITreeRow": -1,
 | |
|         "EraType": "ERA_MODERN",
 | |
|         "Name": "Chemistry",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_COMBUSTION",
 | |
|         "Cost": 1370,
 | |
|         "UITreeRow": 2,
 | |
|         "EraType": "ERA_MODERN",
 | |
|         "Name": "Combustion",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_ADVANCED_FLIGHT",
 | |
|         "Cost": 1480,
 | |
|         "UITreeRow": -2,
 | |
|         "EraType": "ERA_ATOMIC",
 | |
|         "Name": "Advanced Flight",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_ROCKETRY",
 | |
|         "Cost": 1480,
 | |
|         "UITreeRow": -1,
 | |
|         "EraType": "ERA_ATOMIC",
 | |
|         "Name": "Rocketry",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_ADVANCED_BALLISTICS",
 | |
|         "Cost": 1480,
 | |
|         "UITreeRow": 0,
 | |
|         "EraType": "ERA_ATOMIC",
 | |
|         "Name": "Advanced Ballistics",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_COMBINED_ARMS",
 | |
|         "Cost": 1480,
 | |
|         "UITreeRow": 1,
 | |
|         "EraType": "ERA_ATOMIC",
 | |
|         "Name": "Combined Arms",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_PLASTICS",
 | |
|         "Cost": 1480,
 | |
|         "UITreeRow": 2,
 | |
|         "EraType": "ERA_ATOMIC",
 | |
|         "Name": "Plastics",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_COMPUTERS",
 | |
|         "Cost": 1660,
 | |
|         "UITreeRow": -3,
 | |
|         "EraType": "ERA_ATOMIC",
 | |
|         "Name": "Computers",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_NUCLEAR_FISSION",
 | |
|         "Cost": 1660,
 | |
|         "UITreeRow": 1,
 | |
|         "EraType": "ERA_ATOMIC",
 | |
|         "Name": "Nuclear Fission",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_SYNTHETIC_MATERIALS",
 | |
|         "Cost": 1660,
 | |
|         "UITreeRow": 2,
 | |
|         "EraType": "ERA_ATOMIC",
 | |
|         "Name": "Synthetic Materials",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_TELECOMMUNICATIONS",
 | |
|         "Cost": 1850,
 | |
|         "UITreeRow": -3,
 | |
|         "EraType": "ERA_INFORMATION",
 | |
|         "Name": "Telecommunications",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_SATELLITES",
 | |
|         "Cost": 1850,
 | |
|         "UITreeRow": -1,
 | |
|         "EraType": "ERA_INFORMATION",
 | |
|         "Name": "Satellites",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_GUIDANCE_SYSTEMS",
 | |
|         "Cost": 1850,
 | |
|         "UITreeRow": 0,
 | |
|         "EraType": "ERA_INFORMATION",
 | |
|         "Name": "Guidance Systems",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_LASERS",
 | |
|         "Cost": 1850,
 | |
|         "UITreeRow": 1,
 | |
|         "EraType": "ERA_INFORMATION",
 | |
|         "Name": "Lasers",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_COMPOSITES",
 | |
|         "Cost": 1850,
 | |
|         "UITreeRow": 2,
 | |
|         "EraType": "ERA_INFORMATION",
 | |
|         "Name": "Composites",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_STEALTH_TECHNOLOGY",
 | |
|         "Cost": 1850,
 | |
|         "UITreeRow": 3,
 | |
|         "EraType": "ERA_INFORMATION",
 | |
|         "Name": "Stealth Technology",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_ROBOTICS",
 | |
|         "Cost": 2155,
 | |
|         "UITreeRow": -2,
 | |
|         "EraType": "ERA_INFORMATION",
 | |
|         "Name": "Robotics",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_NANOTECHNOLOGY",
 | |
|         "Cost": 2155,
 | |
|         "UITreeRow": 2,
 | |
|         "EraType": "ERA_INFORMATION",
 | |
|         "Name": "Nanotechnology",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_NUCLEAR_FUSION",
 | |
|         "Cost": 2155,
 | |
|         "UITreeRow": 1,
 | |
|         "EraType": "ERA_INFORMATION",
 | |
|         "Name": "Nuclear Fusion",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_BUTTRESS",
 | |
|         "Cost": 300,
 | |
|         "UITreeRow": -3,
 | |
|         "EraType": "ERA_MEDIEVAL",
 | |
|         "Name": "Buttress",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_REFINING",
 | |
|         "Cost": 1250,
 | |
|         "UITreeRow": 3,
 | |
|         "EraType": "ERA_MODERN",
 | |
|         "Name": "Refining",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_SEASTEADS",
 | |
|         "Cost": 2200,
 | |
|         "UITreeRow": -3,
 | |
|         "EraType": "ERA_FUTURE",
 | |
|         "Name": "Seasteads",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_ADVANCED_AI",
 | |
|         "Cost": 2200,
 | |
|         "UITreeRow": -2,
 | |
|         "EraType": "ERA_FUTURE",
 | |
|         "Name": "Advanced AI",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_ADVANCED_POWER_CELLS",
 | |
|         "Cost": 2200,
 | |
|         "UITreeRow": -1,
 | |
|         "EraType": "ERA_FUTURE",
 | |
|         "Name": "Advanced Power Cells",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_CYBERNETICS",
 | |
|         "Cost": 2200,
 | |
|         "UITreeRow": 0,
 | |
|         "EraType": "ERA_FUTURE",
 | |
|         "Name": "Cybernetics",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_SMART_MATERIALS",
 | |
|         "Cost": 2200,
 | |
|         "UITreeRow": 1,
 | |
|         "EraType": "ERA_FUTURE",
 | |
|         "Name": "Smart Materials",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_PREDICTIVE_SYSTEMS",
 | |
|         "Cost": 2200,
 | |
|         "UITreeRow": 2,
 | |
|         "EraType": "ERA_FUTURE",
 | |
|         "Name": "Predictive Systems",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_OFFWORLD_MISSION",
 | |
|         "Cost": 2500,
 | |
|         "UITreeRow": 0,
 | |
|         "EraType": "ERA_FUTURE",
 | |
|         "Name": "Offworld Mission",
 | |
|     },
 | |
|     {
 | |
|         "Type": "TECH_FUTURE_TECH",
 | |
|         "Cost": 2600,
 | |
|         "UITreeRow": 0,
 | |
|         "EraType": "ERA_FUTURE",
 | |
|         "Name": "Future Tech",
 | |
|     },
 | |
| ]
 |