Lenin1870
Chieftain
- Joined
- Mar 16, 2013
- Messages
- 50
Code:
local numMilitarization = 0;
local ProjectEncampmentTrainingID = GameInfo.Projects["PROJECT_ENHANCE_DISTRICT_ENCAMPMENT"].Index;
function GetPrussiaPlayer()
if gPrussiaPlayer == nil then
for playerNum = 0, GameDefines.MAX_CIV_PLAYERS - 1 do
local player = Players[playerNum];
if player ~= nil and PlayerConfigurations:GetCivilizationTypeName() == "CIVILIZATION_YUKINO_PRUSSIA" then
gPrussiaPlayer = player;
break;
end
end
end
return gPrussiaPlayer;
end
function PrussianUnitsLoseMilitarizationYield(iPlayer)
local pPlayer = Players[iPlayer];
local gPrussiaPlayer = GetPrussiaPlayer();
local pPlayerUnits = pPlayer:GetUnits();
local gPrussiaPlayerUnits = gPrussiaPlayer:GetUnits();
if gPrussiaPlayer:IsAlive and pPlayerUnits == gPrussiaPlayerUnits then
numMilitarization = numMilitarization - 1
end
end
Events.UnitKilledInCombat.Add(PrussianUnitsLoseMilitarizationYield);
function PrussianUnitsGetMilitarizationYield(iPlayer)
local pPlayer = Players[iPlayer];
local gPrussiaPlayer = GetPrussiaPlayer();
local pPlayerUnits = pPlayer:GetUnits();
local gPrussiaPlayerUnits = gPrussiaPlayer:GetUnits();
if gPrussiaPlayer:IsAlive and pPlayerUnits != gPrussiaPlayerUnits then
numMilitarization = numMilitarization + 1
end
end
Events.UnitKilledInCombat.Add(PrussianUnitsGetMilitarizationYield);
function PrussianLoyaltyLoseMilitarizationYield()
local gPrussiaPlayer = GetPrussiaPlayer();
local gPrussiaPlayerCitiesLoyalty = gPrussiaPlayer:GetCities():ChangeLoyalty();
if gPrussiaPlayer:IsAlive and gPrussiaPlayerCitiesLoyalty < 0 then
numMilitarization = numMilitarization - 1
end
end
Events.CityLoyaltyChanged.Add(PrussianLoyaltyLoseMilitarizationYield);
function PrussianEncampmentTrainingCompleteGetMilitarizationYield()
local gPrussiaPlayer = GetPrussiaPlayer();
local gPrussiaPlayerCitiesProduction = gPrussiaPlayer:GetCities():GetBuildQueue();
if gPrussiaPlayer:IsAlive and gPrussiaPlayerCitiesProduction == ProjectEncampmentTrainingID then
numMilitarization = numMilitarization + 5
end
end
Events.CityProductionCompleted.Add(PrussianEncampmentTrainingCompleteGetMilitarizationYield);
function PrussianDeficitLoseMilitarizationYield()
local gPrussiaPlayer = GetPrussiaPlayer();
local gPrussiaPlayerGoldYield = gPrussiaPlayer:GetTreasury():GetGoldYield();
if gPrussiaPlayer:IsAlive and gPrussiaPlayerGoldYield < 0 then
numMilitarization = numMilitarization - 1
end
end
Events.TurnEnd.Add(PrussianDeficitLoseMilitarizationYield);
function PrussianMilitarizationBonus(iPlayer)
local gPrussiaPlayer = GetPrussiaPlayer();
local gPrussiaPlayerUnits = gPrussiaPlayer:GetUnits();
local gPrussiaPlayerUnitsCombat = gPrussiaPlayerUnits:GetDamage();
local gPrussiaPlayerUnitsExperience = gPrussiaPlayerUnits:GetExperience();
local PrussianUnitsCombat = 0;
local PrussianUnitsExperience = 0;
if gPrussiaPlayer:IsAlive and gPrussiaPlayerUnits:IsCombatUnit() then
for numMilitarization, Units in gPrussiaPlayerUnits:Members() do
PrussianUnitsCombat = gPrussiaPlayerUnitsCombat * 0.01
PrussianUnitsExperience = gPrussiaPlayerExperience * 0.005
Units:ChangeDamage(PrussianUnitsCombat)
Units:ChangeExperience(PrussianUnitsExperience)
end
end
end
Events.TurnEnd.Add(PrussianMilitarizationBonus);
function PrussiaOnCombat(combatResult)
local attacker = combatResult[CombatResultParameters.ATTACKER]
local defender = combatResult[CombatResultParameters.DEFENDER]
PrussianKillBonus(attacker, defender)
end
Events.Combat.Add(PrussiaOnCombat)
function PrussianKillBonus(attacker, defender)
local gPrussiaPlayer = GetPrussiaPlayer();
local gPrussiaPlayerUnits = gPrussiaPlayer:GetUnits();
local pPlayerAttacker = Players[attacker.ID.player];
local pPlayerDefender = Players[defender.ID.player];
local pPlayerAttackerUnit = pPlayerAttacker:GetUnits();
local pPlayerDefenderUnit = pPlayerDefender:GetUnits();
local PrussianEnemyUnitsKillRate = 0;
if pPlayer.GetCivilizationTypeName() ~= "CIVILIZATION_YUKINO_PRUSSIA" then
for i = 0, numMilitarization do
PrussianEnemyUnitsKillRate = PrussianEnemyUnitsKillRate + 0.1
end
if Math.random() * 100 <= PrussianEnemyUnitsKillRate and gPrussiaPlayerUnits == pPlayerAttackerUnit then
UnitManager.Kill(pPlayerDefenderUnit)
elseif Math.random() * 100 <= PrussianEnemyUnitsKillRate and gPrussiaPlayerUnits == pPlayerDefenderUnit then
UnitManager.Kill(pPlayerAttackerUnit)
end
end
end