Code:
function NEP_KnightTitles()
KnightTitles = {}
KnightTitles.Knight = 0
KnightTitles.Mayor = 1
KnightTitles.Baron = 2
KnightTitles.Earl = 3
KnightTitles.Marquees = 4
KnightTitles.Duke = 5
KnightTitles.Archduke = 6
NeedsAndRightsByKnightTitleTest = {}
NeedsAndRightsByKnightTitleTest[KnightTitles.Knight] = {
ActivateNeedForPlayer, {Needs.Nutrition,Needs.Medicine},
ActivateRightForPlayer, {
Technologies.R_Gathering,
Technologies.R_Woodcutter,
Technologies.R_StoneQuarry,
Technologies.R_HuntersHut,
Technologies.R_FishingHut,
Technologies.R_CattleFarm,
Technologies.R_GrainFarm,
Technologies.R_SheepFarm,
Technologies.R_IronMine,
Technologies.R_Beekeeper,
Technologies.R_HerbGatherer,
Technologies.R_Nutrition,
Technologies.R_Bakery,
Technologies.R_Dairy,
Technologies.R_Butcher,
Technologies.R_SmokeHouse,
Technologies.R_Clothes,
Technologies.R_Weaver,
Technologies.R_Tanner,
Technologies.R_Construction,
Technologies.R_Wall,
Technologies.R_Pallisade,
Technologies.R_Trail,
Technologies.R_KnockDown,
Technologies.R_Sermon,
Technologies.R_SpecialEdition,
Technologies.R_SpecialEdition_Pavilion
}
}
NeedsAndRightsByKnightTitleTest[KnightTitles.Mayor] = {
ActivateNeedForPlayer, {Needs.Clothes},
ActivateRightForPlayer, {
Technologies.R_Hygiene,
Technologies.R_Soapmaker,
Technologies.R_BroomMaker,
Technologies.R_Military,
Technologies.R_SwordSmith,
Technologies.R_Barracks,
Technologies.R_Thieves,
Technologies.R_SpecialEdition_StatueFamily
},
StartKnightsPromotionCelebration
}
NeedsAndRightsByKnightTitleTest[KnightTitles.Baron] = {
ActivateNeedForPlayer, {Needs.Hygiene},
ActivateRightForPlayer, {
Technologies.R_Medicine,
Technologies.R_BowMaker,
Technologies.R_BarracksArchers,
Technologies.R_Entertainment,
Technologies.R_Tavern,
Technologies.R_Festival,
Technologies.R_Street,
Technologies.R_SpecialEdition_Column
},
StartKnightsPromotionCelebration
}
NeedsAndRightsByKnightTitleTest[KnightTitles.Earl] = {
ActivateNeedForPlayer, {Needs.Entertainment,Needs.Prosperity},
ActivateRightForPlayer, {
Technologies.R_Baths,
Technologies.R_SiegeEngineWorkshop,
Technologies.R_BatteringRam,
Technologies.R_Ballista,
Technologies.R_AmmunitionCart,
Technologies.R_Prosperity,
Technologies.R_Taxes,
Technologies.R_SpecialEdition_StatueSettler
},
StartKnightsPromotionCelebration
}
NeedsAndRightsByKnightTitleTest[KnightTitles.Marquees] = {
ActivateNeedForPlayer, {Needs.Wealth},
ActivateRightForPlayer, {
Technologies.R_Theater,
Technologies.R_Wealth,
Technologies.R_BannerMaker,
Technologies.R_SiegeTower,
Technologies.R_SpecialEdition_StatueProduction,
},
StartKnightsPromotionCelebration
}
NeedsAndRightsByKnightTitleTest[KnightTitles.Duke] = {
ActivateNeedForPlayer, nil,
ActivateRightForPlayer, {
Technologies.R_Catapult,
Technologies.R_Carpenter,
Technologies.R_CandleMaker,
Technologies.R_Blacksmith,
Technologies.R_SpecialEdition_StatueDario
},
StartKnightsPromotionCelebration
}
NeedsAndRightsByKnightTitleTest[KnightTitles.Archduke] = {
ActivateNeedForPlayer, nil,
ActivateRightForPlayer, {
Technologies.R_Victory
},
VictroryBecauseOfTitle,
StartKnightsPromotionCelebration
}
if g_PatchIdentifierExtra1 then
local TechnologiesTableIndex = 4
table.insert(NeedsAndRightsByKnightTitleTest[KnightTitles.Mayor][TechnologiesTableIndex],Technologies.R_Cistern)
table.insert(NeedsAndRightsByKnightTitleTest[KnightTitles.Marquees][TechnologiesTableIndex],Technologies.R_Beautification_Brazier)
table.insert(NeedsAndRightsByKnightTitleTest[KnightTitles.Marquees][TechnologiesTableIndex],Technologies.R_Beautification_Pillar)
table.insert(NeedsAndRightsByKnightTitleTest[KnightTitles.Marquees][TechnologiesTableIndex],Technologies.R_Beautification_Shrine)
table.insert(NeedsAndRightsByKnightTitleTest[KnightTitles.Duke][TechnologiesTableIndex],Technologies.R_Beautification_StoneBench)
table.insert(NeedsAndRightsByKnightTitleTest[KnightTitles.Duke][TechnologiesTableIndex],Technologies.R_Beautification_Sundial)
table.insert(NeedsAndRightsByKnightTitleTest[KnightTitles.Duke][TechnologiesTableIndex],Technologies.R_Beautification_Vase)
table.insert(NeedsAndRightsByKnightTitleTest[KnightTitles.Archduke][TechnologiesTableIndex],Technologies.R_Beautification_TriumphalArch)
table.insert(NeedsAndRightsByKnightTitleTest[KnightTitles.Archduke][TechnologiesTableIndex],Technologies.R_Beautification_VictoryColumn)
end
KnightTitleRequirements = {}
KnightTitleRequirements[KnightTitles.Mayor] = {}
KnightTitleRequirements[KnightTitles.Mayor].Settlers = 10
KnightTitleRequirements[KnightTitles.Mayor].Headquarters = 1
KnightTitleRequirements[KnightTitles.Mayor].Goods = {{"AmountOfProductsOfEntitiesInCategory", EntityCategories.GC_Clothes_Supplier, 6}}
KnightTitleRequirements[KnightTitles.Baron] = {}
KnightTitleRequirements[KnightTitles.Baron].Settlers = 30
KnightTitleRequirements[KnightTitles.Baron].Storehouse = 1
KnightTitleRequirements[KnightTitles.Baron].Headquarters = 1
KnightTitleRequirements[KnightTitles.Baron].Cathedrals = 1
KnightTitleRequirements[KnightTitles.Baron].Goods = {{"AmountOfProductsOfEntitiesInCategory", EntityCategories.GC_Hygiene_Supplier, 12}}
KnightTitleRequirements[KnightTitles.Earl] = {}
KnightTitleRequirements[KnightTitles.Earl].Settlers = 50
KnightTitleRequirements[KnightTitles.Earl].Headquarters = 2
KnightTitleRequirements[KnightTitles.Earl].Goods = {{"AmountOfProductsOfEntitiesInCategory", EntityCategories.GC_Entertainment_Supplier, 12}}
KnightTitleRequirements[KnightTitles.Marquees] = {}
KnightTitleRequirements[KnightTitles.Marquees].Settlers = 70
KnightTitleRequirements[KnightTitles.Marquees].Storehouse = 2
KnightTitleRequirements[KnightTitles.Marquees].Cathedrals = 2
KnightTitleRequirements[KnightTitles.Marquees].Headquarters = 2
KnightTitleRequirements[KnightTitles.Marquees].RichBuildings = 20
KnightTitleRequirements[KnightTitles.Duke] = {}
KnightTitleRequirements[KnightTitles.Duke].Settlers = 90
KnightTitleRequirements[KnightTitles.Duke].Storehouse = 2
KnightTitleRequirements[KnightTitles.Duke].Cathedrals = 2
KnightTitleRequirements[KnightTitles.Duke].Headquarters = 3
KnightTitleRequirements[KnightTitles.Duke].DecoratedBuildings = {Goods.G_Banner, 9}
KnightTitleRequirements[KnightTitles.Archduke] = {}
KnightTitleRequirements[KnightTitles.Archduke].Settlers = 150
KnightTitleRequirements[KnightTitles.Archduke].Storehouse = 3
KnightTitleRequirements[KnightTitles.Archduke].Cathedrals = 3
KnightTitleRequirements[KnightTitles.Archduke].Headquarters = 3
KnightTitleRequirements[KnightTitles.Archduke].RichBuildings = 30
KnightTitleRequirements[KnightTitles.Archduke].DecoratedBuildings = {-1, 30}
if not GUI then
TechnologiesToProhibit = {}
for i = 1, #TechnologiesToProhibit do
Logic.TechnologySetState(1, TechnologiesToProhibit[i], TechnologyStates.Prohibited)
end
end
function KnightTitleRequirementsKopie(...)
if #arg == 0 then
for index in pairs(KnightTitleRequirements) do
Framework.WriteToLog(index)
if type(KnightTitleRequirements[index]) == "table" then
Framework.WriteToLog('KnightTitleRequirements['..index..'] = {}')
Logic.ExecuteInLuaLocalState('KnightTitleRequirements['..index..'] = {}')
KnightTitleRequirementsKopie(index)
else
if type(KnightTitleRequirements[index]) == "string" then
Framework.WriteToLog('KnightTitleRequirements['..index..'] = "'..KnightTitleRequirements[index]..'"')
Logic.ExecuteInLuaLocalState('KnightTitleRequirements['..index..'] = "'..KnightTitleRequirements[index]..'"')
else
Framework.WriteToLog('KnightTitleRequirements['..index..'] = '..KnightTitleRequirements[index])
Logic.ExecuteInLuaLocalState('KnightTitleRequirements['..index..'] = '..KnightTitleRequirements[index])
end
end
end
elseif #arg == 1 then
for index in pairs(KnightTitleRequirements[arg[1]]) do
Framework.WriteToLog(arg[1].." - "..index)
if type(KnightTitleRequirements[arg[1]][index]) == "table" then
Framework.WriteToLog('KnightTitleRequirements['..arg[1]..']['..index..'] = {}')
Logic.ExecuteInLuaLocalState('KnightTitleRequirements['..arg[1]..']['..index..'] = {}')
KnightTitleRequirementsKopie(arg[1], index)
else
if type(KnightTitleRequirements[arg[1]][index]) == "string" then
Framework.WriteToLog('KnightTitleRequirements['..arg[1]..']['..index..'] = "'..KnightTitleRequirements[arg[1]][index]..'"')
Logic.ExecuteInLuaLocalState('KnightTitleRequirements['..arg[1]..']['..index..'] = "'..KnightTitleRequirements[arg[1]][index]..'"')
else
Framework.WriteToLog('KnightTitleRequirements['..arg[1]..']['..index..'] = '..KnightTitleRequirements[arg[1]][index])
Logic.ExecuteInLuaLocalState('KnightTitleRequirements['..arg[1]..']['..index..'] = '..KnightTitleRequirements[arg[1]][index])
end
end
end
elseif #arg == 2 then
for index in pairs(KnightTitleRequirements[arg[1]][arg[2]]) do
Framework.WriteToLog(arg[1].." - "..arg[2].." - "..index)
if type(KnightTitleRequirements[arg[1]][arg[2]][index]) == "table" then
Framework.WriteToLog('KnightTitleRequirements['..arg[1]..']['..arg[2]..']['..index..'] = {}')
Logic.ExecuteInLuaLocalState('KnightTitleRequirements['..arg[1]..']['..arg[2]..']['..index..'] = {}')
KnightTitleRequirementsKopie(arg[1], arg[2], index)
else
if type(KnightTitleRequirements[arg[1]][arg[2]][index]) == "string" then
Framework.WriteToLog('KnightTitleRequirements['..arg[1]..']['..arg[2]..']['..index..'] = "'..KnightTitleRequirements[arg[1]][arg[2]][index]..'"')
Logic.ExecuteInLuaLocalState('KnightTitleRequirements['..arg[1]..']['..arg[2]..']['..index..'] = "'..KnightTitleRequirements[arg[1]][arg[2]][index]..'"')
else
Framework.WriteToLog('KnightTitleRequirements['..arg[1]..']['..arg[2]..']['..index..'] = '..KnightTitleRequirements[arg[1]][arg[2]][index])
Logic.ExecuteInLuaLocalState('KnightTitleRequirements['..arg[1]..']['..arg[2]..']['..index..'] = '..KnightTitleRequirements[arg[1]][arg[2]][index])
end
end
end
elseif #arg == 3 then
for index in pairs(KnightTitleRequirements[arg[1]][arg[2]][arg[3]]) do
Framework.WriteToLog(arg[1].." - "..arg[2].." - "..arg[3].." - "..index)
if type(KnightTitleRequirements[arg[1]][arg[2]][arg[3]][index]) == "string" then
Framework.WriteToLog('KnightTitleRequirements['..arg[1]..']['..arg[2]..']['..arg[3]..']['..index..'] = "'..KnightTitleRequirements[arg[1]][arg[2]][arg[3]][index]..'"')
Logic.ExecuteInLuaLocalState('KnightTitleRequirements['..arg[1]..']['..arg[2]..']['..arg[3]..']['..index..'] = "'..KnightTitleRequirements[arg[1]][arg[2]][arg[3]][index]..'"')
else
Framework.WriteToLog('KnightTitleRequirements['..arg[1]..']['..arg[2]..']['..arg[3]..']['..index..'] = '..KnightTitleRequirements[arg[1]][arg[2]][arg[3]][index])
Logic.ExecuteInLuaLocalState('KnightTitleRequirements['..arg[1]..']['..arg[2]..']['..arg[3]..']['..index..'] = '..KnightTitleRequirements[arg[1]][arg[2]][arg[3]][index])
end
end
end
end
Logic.ExecuteInLuaLocalState('KnightTitleRequirements = {}')
KnightTitleRequirementsKopie()
Das führt zu folgender Ausgabe:
Lesezeichen