klngarthur
Chieftain
- Joined
- Sep 27, 2010
- Messages
- 13
Thanks for the input - I'll look into it.
It appears that the game is now either caching the playable/aiplayable values, or is ignoring them. I fixed the issue locally by modifying SlotData:SetPreGameValues() in GTAS_SlotManager.lua so that it randomly picks Civs itself before the game starts:
Code:
function SlotData:SetPreGameValues()
PreGame.ResetSlots();
local activeCivs = {}
for civType,isActive in pairs(MapData.activeCivs) do
if isActive and civType ~= SlotData:GetSlot(0).civType then
table.insert(activeCivs,GameInfo.Civilizations[civType])
end
end
math.randomseed(os.time())
for i = #activeCivs, 2, -1 do
local j = math.random(i)
activeCivs[i], activeCivs[j] = activeCivs[j], activeCivs[i]
end
local randomCivIndex = 1
for i = 0, GameDefines.MAX_MAJOR_CIVS - 1, 1 do
slot = SlotData:GetSlot(i);
if slot == nil then
PreGame.SetSlotStatus(i, SlotStatus.SS_OPEN);
PreGame.SetCivilization(i, -1);
PreGame.SetTeam(i, i)
else
if i > 0 then
PreGame.SetSlotStatus(i, SlotStatus.SS_COMPUTER);
end
local civID = -1;
local civ = GameInfo.Civilizations[slot.civType]
if civ ~= nil then
civID = civ.ID;
else
civ = activeCivs[((randomCivIndex-1) % #activeCivs) + 1];
if civ ~= nil then
randomCivIndex = randomCivIndex + 1
civID = civ.ID
local civ_leader = GameInfo.Civilization_Leaders("CivilizationType = '" .. civ.Type .. "'")();
if civ_leader ~= nil then
local leader = GameInfo.Leaders[civ_leader.LeaderheadType];
slot.leaderName = Locale.ConvertTextKey(leader.Description)
end
slot.civDescription = Locale.ConvertTextKey(civ.Description)
slot.civShortDescription = Locale.ConvertTextKey(civ.ShortDescription)
slot.civAdjective = Locale.ConvertTextKey(civ.Description)
end
end
PreGame.SetCivilization(i, civID);
PreGame.SetTeam(i, slot.team);
PreGame.SetLeaderName(i, slot.leaderName);
PreGame.SetCivilizationDescription(i, slot.civDescription);
PreGame.SetCivilizationShortDescription(i, slot.civShortDescription);
PreGame.SetCivilizationAdjective(i, slot.civAdjective);
end
end
end