256 lines
16 KiB
Python
256 lines
16 KiB
Python
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],
|
|
}
|