from aoe.types import * class BuildingDependencies(): def __init__(self): self.dependencies = { Buildings.HOUSE: [Ages.DARK], Buildings.LUMBERCAMP: [Ages.DARK], #Buildings.MULECART: [Ages.DARK], #Buildings.SETTLEMENT: [Ages.DARK], Buildings.MILL: [Ages.DARK], Buildings.FARM: [Ages.DARK, Buildings.MILL], #Buildings.PASTURE: [Ages.DARK], Buildings.MININGCAMP: [Ages.DARK], Buildings.DOCK: [Ages.DARK], Buildings.BARRACKS: [Ages.DARK], Buildings.ARCHERYRANGE: [Ages.FEUDAL, Buildings.BARRACKS], Buildings.STABLE: [Ages.FEUDAL, Buildings.BARRACKS], Buildings.PALISADEWALL: [Ages.DARK], Buildings.PALISADEGATE: [Ages.DARK], Buildings.OUTPOST: [Ages.DARK], Buildings.TOWNCENTER: [Ages.DARK], Buildings.BLACKSMITH: [Ages.FEUDAL], Buildings.WATCHTOWER: [Ages.FEUDAL], Buildings.STONEWALL: [Ages.FEUDAL], Buildings.GATE: [Ages.FEUDAL], Buildings.FISHTRAP: [Ages.FEUDAL], Buildings.MARKET: [Ages.FEUDAL, Buildings.MILL], Buildings.UNIVERSITY: [Ages.CASTLE], #Buildings.CARAVANSERAI: [Ages.IMPERIAL], Buildings.SIEGEWORKSHOP: [Ages.CASTLE, Buildings.BLACKSMITH], Buildings.MONASTERY: [Ages.CASTLE], #Buildings.FORTIFIEDCHURCH: [Ages.CASTLE], Buildings.CASTLE: [Ages.CASTLE], #Buildings.KREPOST: [Ages.CASTLE], #Buildings.DONJON: [Ages.DARK], #Buildings.HARBOR: [Ages.CASTLE, Research.THALASSOCRACY], #Buildings.FEITORIA: [Ages.IMPERIAL], Buildings.BOMBARDTOWER: [Ages.IMPERIAL, Research.BOMBARDTOWER], Buildings.WONDER: [Ages.IMPERIAL], } class AgeDependencies(): def __init__(self): self.dependencies = { Ages.FEUDAL: { Buildings.BARRACKS: 1, Buildings.MILL: 1, Buildings.LUMBERCAMP: 1, Buildings.MININGCAMP: 1, Buildings.DOCK: 1, #Buildings.MULECART: 1, #Buildings.FOLWARK: 1, #Buildings.SETTLEMENT: 2, }, Ages.CASTLE: { Buildings.ARCHERYRANGE: 1, Buildings.STABLE: 1, Buildings.MARKET: 1, Buildings.BLACKSMITH: 1, #Buildings.SIEGEWORKSHOP: 1, }, Ages.IMPERIAL: { #Buildings.MONASTERY: 1, #Buildings.FORTIFIEDCHURCH: 1, #Buildings.UNIVERSITY: 1, #Buildings.SIEGEWORKSHOP: 1, #Buildings.CASTLE: 2, #Buildings.KREPOST: 2, }, } self.dependencies_counts = { Ages.FEUDAL: 2, Ages.CASTLE: 2, Ages.IMPERIAL: 2, } class ResearchDependencies(): def __init__(self): self.dependencies = { Research.TOWNWATCH: [Ages.FEUDAL, Buildings.TOWNCENTER], Research.TOWNPATROL: [Ages.CASTLE, Buildings.TOWNCENTER], Research.TREADMILLCRANE: [Ages.CASTLE, Buildings.UNIVERSITY], Research.MASONRY: [Ages.CASTLE, Buildings.UNIVERSITY], Research.ARCHITECTURE: [Ages.IMPERIAL, Buildings.UNIVERSITY], Research.HOARDINGS: [Ages.IMPERIAL, Buildings.CASTLE], Research.CONSCRIPTION: [Ages.IMPERIAL, Buildings.CASTLE], Research.WHEELBARROW: [Ages.FEUDAL, Buildings.TOWNCENTER], Research.HANDCART: [Ages.CASTLE, Buildings.TOWNCENTER], Research.DOUBLEBITAXE: [Ages.FEUDAL, Buildings.LUMBERCAMP], Research.BOWSAW: [Ages.CASTLE, Buildings.LUMBERCAMP], Research.TWOMANSAW: [Ages.IMPERIAL, Buildings.LUMBERCAMP], Research.HORSECOLLAR: [Ages.FEUDAL, Buildings.MILL], Research.HEAVYPLOW: [Ages.CASTLE, Buildings.MILL], Research.CROPROTATION: [Ages.IMPERIAL, Buildings.MILL], Research.GOLDMINING: [Ages.FEUDAL, Buildings.MININGCAMP], Research.GOLDSHAFTMINING: [Ages.CASTLE, Buildings.MININGCAMP], Research.STONEMINING: [Ages.FEUDAL, Buildings.MININGCAMP], Research.STONESHAFTMINING: [Ages.CASTLE, Buildings.MININGCAMP], Research.CARAVAN: [Ages.CASTLE, Buildings.MARKET], Research.COINAGE: [Ages.CASTLE, Buildings.MARKET], Research.BANKING: [Ages.IMPERIAL, Buildings.MARKET], Research.GUILDS: [Ages.IMPERIAL, Buildings.MARKET], Research.FISHINGLINES: [Ages.FEUDAL, Buildings.DOCK], Research.GILLNETS: [Ages.CASTLE, Buildings.DOCK], Research.DOMESTICATION: [Ages.FEUDAL, Buildings.MILL], Research.PASTORALISM: [Ages.CASTLE, Buildings.MILL], Research.TRANSHUMANCE: [Ages.IMPERIAL, Buildings.MILL], Research.REDEMPTION: [Ages.CASTLE, Buildings.MONASTERY], Research.ATONEMENT: [Ages.CASTLE, Buildings.MONASTERY], Research.HERBALMEDICINE: [Ages.CASTLE, Buildings.MONASTERY], Research.HERESY: [Ages.CASTLE, Buildings.MONASTERY], Research.SANCTITY: [Ages.CASTLE, Buildings.MONASTERY], Research.FERVOR: [Ages.CASTLE, Buildings.MONASTERY], Research.DEVOTION: [Ages.CASTLE, Buildings.MONASTERY], Research.FAITH: [Ages.IMPERIAL, Buildings.MONASTERY], Research.ILLUMINATION: [Ages.IMPERIAL, Buildings.MONASTERY], Research.BLOCKPRINTING: [Ages.IMPERIAL, Buildings.MONASTERY], Research.THEOCRACY: [Ages.IMPERIAL, Buildings.MONASTERY], Research.ARSON: [Ages.FEUDAL, Buildings.BARRACKS], Research.GAMBESONS: [Ages.CASTLE, Buildings.BARRACKS], Research.SQUIRES: [Ages.CASTLE, Buildings.BARRACKS], Research.FORGING: [Ages.FEUDAL, Buildings.BLACKSMITH], Research.IRONCASTING: [Ages.CASTLE, Buildings.BLACKSMITH], Research.BLASTFURNACE: [Ages.IMPERIAL, Buildings.BLACKSMITH], Research.SCALEMAILARMOR: [Ages.FEUDAL, Buildings.BLACKSMITH], Research.CHAINMAILARMOR: [Ages.CASTLE, Buildings.BLACKSMITH], Research.PLATEMAILARMOR: [Ages.IMPERIAL, Buildings.BLACKSMITH], Research.THUMBRING: [Ages.CASTLE, Buildings.ARCHERYRANGE], Research.PARTHIANTACTICS: [Ages.IMPERIAL, Buildings.ARCHERYRANGE], Research.FLETCHING: [Ages.FEUDAL, Buildings.BLACKSMITH], Research.BODKINARROW: [Ages.CASTLE, Buildings.BLACKSMITH], Research.BRACER: [Ages.IMPERIAL, Buildings.BLACKSMITH], Research.PADDEDARCHERARMOR: [Ages.FEUDAL, Buildings.BLACKSMITH], Research.LEATHERARCHERARMOR: [Ages.CASTLE, Buildings.BLACKSMITH], Research.RINGARCHERARMOR: [Ages.IMPERIAL, Buildings.BLACKSMITH], Research.BALLISTICS: [Ages.CASTLE, Buildings.UNIVERSITY], Research.HEATEDSHOT: [Ages.CASTLE, Buildings.UNIVERSITY], Research.MURDERHOLES: [Ages.CASTLE, Buildings.UNIVERSITY], Research.ARROWSLITS: [Ages.IMPERIAL, Buildings.UNIVERSITY], Research.CHEMISTRY: [Ages.IMPERIAL, Buildings.UNIVERSITY], Research.SIEGEENGINEERS: [Ages.IMPERIAL, Buildings.UNIVERSITY], Research.BLOODLINES: [Ages.FEUDAL, Buildings.STABLE], Research.HUSBANDRY: [Ages.CASTLE, Buildings.STABLE], Research.SCALEBARDINGARMOR: [Ages.FEUDAL, Buildings.BLACKSMITH], Research.CHAINBARDINGARMOR: [Ages.CASTLE, Buildings.BLACKSMITH], Research.PLATEBARDINGARMOR: [Ages.IMPERIAL, Buildings.BLACKSMITH], Research.CAREENING: [Ages.CASTLE, Buildings.UNIVERSITY], Research.DRYDOCK: [Ages.IMPERIAL, Buildings.UNIVERSITY], Research.SHIPWRIGHT: [Ages.IMPERIAL, Buildings.UNIVERSITY], Research.CLINKERCONSTRUCTION: [Ages.CASTLE, Buildings.UNIVERSITY], Research.CARVELHULL: [Ages.IMPERIAL, Buildings.UNIVERSITY], Research.SIPHONS: [Ages.CASTLE, Buildings.UNIVERSITY], Research.INCENDIARIES: [Ages.IMPERIAL, Buildings.UNIVERSITY], Research.LOOM: [Buildings.TOWNCENTER], Research.SAPPERS: [Ages.IMPERIAL, Buildings.CASTLE], Research.BOMBARDTOWER: [Ages.IMPERIAL, Buildings.UNIVERSITY, Research.CHEMISTRY], } class UnitDependencies(): def __init__(self): self.dependencies = { Units.VILLAGER: [Buildings.TOWNCENTER], Units.TRADECART: [Buildings.MARKET], Units.SPEARMAN: [Ages.FEUDAL, Buildings.BARRACKS], Units.MILITIA: [Buildings.BARRACKS], Units.SCOUT: [Ages.FEUDAL, Buildings.STABLE], Units.KNIGHT: [Ages.CASTLE, Buildings.STABLE], Units.SKIRMISHER: [Ages.FEUDAL, Buildings.ARCHERYRANGE], Units.ARCHER: [Ages.FEUDAL, Buildings.ARCHERYRANGE], }