DoktorApplejuce
Champion of Kirkwall
I'm trying to modify Lua from Leugi's Cuba mod, which increases the combat capability of his Great General replacement. His code is:
I've replicated what he has, however, the unit I'd like to use it for is a ranged unit. I'd like to know what needs to be modified so as to change the ranged combat as well as the base combat. I already have the following:
Thanks in advance to anyone who can offer help on this.
Spoiler :
Code:
local WGeneralPromotion = GameInfo.UnitPromotions["PROMOTION_WAR_GENERAL"].ID
local WGLevel0 = GameInfo.UnitPromotions["PROMOTION_WAR_GENERAL_0"].ID
local WGLevel1 = GameInfo.UnitPromotions["PROMOTION_WAR_GENERAL_1"].ID
local WGLevel2 = GameInfo.UnitPromotions["PROMOTION_WAR_GENERAL_2"].ID
local WGLevel3 = GameInfo.UnitPromotions["PROMOTION_WAR_GENERAL_3"].ID
local WGLevel4 = GameInfo.UnitPromotions["PROMOTION_WAR_GENERAL_4"].ID
local WGLevel5 = GameInfo.UnitPromotions["PROMOTION_WAR_GENERAL_5"].ID
local WGLevel6 = GameInfo.UnitPromotions["PROMOTION_WAR_GENERAL_6"].ID
local WGLevel7 = GameInfo.UnitPromotions["PROMOTION_WAR_GENERAL_7"].ID
local WGLevel8 = GameInfo.UnitPromotions["PROMOTION_WAR_GENERAL_8"].ID
local WGLevel9 = GameInfo.UnitPromotions["PROMOTION_WAR_GENERAL_9"].ID
local WGLevel1Prereq = GameInfo.Technologies["TECH_BRONZE_WORKING"].ID
local WGLevel2Prereq = GameInfo.Technologies["TECH_IRON_WORKING"].ID
local WGLevel3Prereq = GameInfo.Technologies["TECH_STEEL"].ID
local WGLevel4Prereq = GameInfo.Technologies["TECH_GUNPOWDER"].ID
local WGLevel5Prereq = GameInfo.Technologies["TECH_RIFLING"].ID
local WGLevel6Prereq = GameInfo.Technologies["TECH_REPLACEABLE_PARTS"].ID
local WGLevel7Prereq = GameInfo.Technologies["TECH_PLASTIC"].ID
local WGLevel8Prereq = GameInfo.Technologies["TECH_MOBILE_TACTICS"].ID
local WGLevel9Prereq = GameInfo.Technologies["TECH_NANOTECHNOLOGY"].ID
local WGLevel0Combat = 8
local WGLevel1Combat = 11
local WGLevel2Combat = 14
local WGLevel3Combat = 21
local WGLevel4Combat = 24
local WGLevel5Combat = 34
local WGLevel6Combat = 50
local WGLevel7Combat = 70
local WGLevel8Combat = 90
local WGLevel9Combat = 100
function WarGeneral(iPlayer)
for _, pPlayer in pairs(Players) do
local teamID = pPlayer:GetTeam();
local pTeam = Teams[teamID];
if (pPlayer:IsAlive()) then
for bgunit in pPlayer:Units() do
if (bgunit:IsHasPromotion(WGeneralPromotion)) then
bgunit:SetHasPromotion(WGLevel0, true);
bgunit:SetBaseCombatStrength(WGLevel0Combat)
if (pTeam:IsHasTech(WGLevel1Prereq)) then
bgunit:SetHasPromotion(WGLevel0, false);
bgunit:SetHasPromotion(WGLevel1, true);
bgunit:SetBaseCombatStrength(WGLevel1Combat)
--print ("A War General Level 1 is here!");
end
if (pTeam:IsHasTech(WGLevel2Prereq)) then
bgunit:SetHasPromotion(WGLevel1, false);
bgunit:SetHasPromotion(WGLevel2, true);
bgunit:SetBaseCombatStrength(WGLevel2Combat)
--print ("A War General Level 2 is here!");
end
if (pTeam:IsHasTech(WGLevel3Prereq)) then
bgunit:SetHasPromotion(WGLevel2, false);
bgunit:SetHasPromotion(WGLevel3, true);
bgunit:SetBaseCombatStrength(WGLevel3Combat)
--print ("A War General Level 3 is here!");
end
if (pTeam:IsHasTech(WGLevel4Prereq)) then
bgunit:SetHasPromotion(WGLevel3, false);
bgunit:SetHasPromotion(WGLevel4, true);
bgunit:SetBaseCombatStrength(WGLevel4Combat)
--print ("A War General Level 4 is here!");
end
if (pTeam:IsHasTech(WGLevel5Prereq)) then
bgunit:SetHasPromotion(WGLevel4, false);
bgunit:SetHasPromotion(WGLevel5, true);
bgunit:SetBaseCombatStrength(WGLevel5Combat)
--print ("A War General Level 5 is here!");
end
if (pTeam:IsHasTech(WGLevel6Prereq)) then
bgunit:SetHasPromotion(WGLevel5, false);
bgunit:SetHasPromotion(WGLevel6, true);
bgunit:SetBaseCombatStrength(WGLevel6Combat)
--print ("A War General Level 6 is here!");
end
if (pTeam:IsHasTech(WGLevel7Prereq)) then
bgunit:SetHasPromotion(WGLevel6, false);
bgunit:SetHasPromotion(WGLevel7, true);
bgunit:SetBaseCombatStrength(WGLevel7Combat)
--print ("A War General Level 7 is here!");
end
if (pTeam:IsHasTech(WGLevel8Prereq)) then
bgunit:SetHasPromotion(WGLevel7, false);
bgunit:SetHasPromotion(WGLevel8, true);
bgunit:SetBaseCombatStrength(WGLevel8Combat)
--print ("A War General Level 8 is here!");
end
if (pTeam:IsHasTech(WGLevel9Prereq)) then
bgunit:SetHasPromotion(WGLevel8, false);
bgunit:SetHasPromotion(WGLevel9, true);
bgunit:SetBaseCombatStrength(WGLevel9Combat)
--print ("A War General Level 9 is here!");
end
end
end
end
end
end
Events.SerialEventUnitCreated.Add(WarGeneral);
GameEvents.PlayerAdoptPolicy.Add(WarGeneral);
GameEvents.PlayerDoTurn.Add(WarGeneral);
I've replicated what he has, however, the unit I'd like to use it for is a ranged unit. I'd like to know what needs to be modified so as to change the ranged combat as well as the base combat. I already have the following:
Spoiler :
Code:
local SSenshiPromotion = GameInfo.UnitPromotions["PROMOTION_SAILOR_SENSHI_COMBAT"].ID
local SSCombatLevel0 = GameInfo.UnitPromotions["PROMOTION_SAILOR_SENSHI_COMBAT_0"].ID
local SSCombatLevel1 = GameInfo.UnitPromotions["PROMOTION_SAILOR_SENSHI_COMBAT_1"].ID
local SSCombatLevel2 = GameInfo.UnitPromotions["PROMOTION_SAILOR_SENSHI_COMBAT_2"].ID
local SSCombatLevel3 = GameInfo.UnitPromotions["PROMOTION_SAILOR_SENSHI_COMBAT_3"].ID
local SSCombatLevel4 = GameInfo.UnitPromotions["PROMOTION_SAILOR_SENSHI_COMBAT_4"].ID
local SSCombatLevel5 = GameInfo.UnitPromotions["PROMOTION_SAILOR_SENSHI_COMBAT_5"].ID
local SSCombatLevel1Prereq = GameInfo.Technologies["TECH_CONSTRUCTION"].ID
local SSCombatLevel2Prereq = GameInfo.Technologies["TECH_MACHINERY"].ID
local SSCombatLevel3Prereq = GameInfo.Technologies["TECH_CHEMISTRY"].ID
local SSCombatLevel4Prereq = GameInfo.Technologies["TECH_DYNAMITE"].ID
local SSCombatLevel5Prereq = GameInfo.Technologies["TECH_ROCKETRY"].ID
local SSCombatLevel0Combat = 6
local SSCombatLevel1Combat = 8
local SSCombatLevel2Combat = 14
local SSCombatLevel3Combat = 15
local SSCombatLevel4Combat = 22
local SSCombatLevel5Combat = 48
local SSRangedCombatLevel0Combat = 8
local SSRangedCombatLevel1Combat = 12
local SSRangedCombatLevel2Combat = 19
local SSRangedCombatLevel3Combat = 22
local SSRangedCombatLevel4Combat = 35
local SSRangedCombatLevel5Combat = 70
function SailorSenshiCombat(iPlayer)
for _, pPlayer in pairs(Players) do
local teamID = pPlayer:GetTeam();
local pTeam = Teams[teamID];
if (pPlayer:IsAlive()) then
for bgunit in pPlayer:Units() do
if (bgunit:IsHasPromotion(SSenshiPromotion)) then
bgunit:SetHasPromotion(SSCombatLevel0, true);
bgunit:SetBaseCombatStrength(SSCombatLevel0Combat)
if (pTeam:IsHasTech(SSCombatLevel1Prereq)) then
bgunit:SetHasPromotion(SSCombatLevel0, false);
bgunit:SetHasPromotion(SSCombatLevel1, true);
bgunit:SetBaseCombatStrength(SSCombatLevel1Combat)
--print ("SailorSenshi Level 1 is here!");
end
if (pTeam:IsHasTech(SSCombatLevel2Prereq)) then
bgunit:SetHasPromotion(SSCombatLevel1, false);
bgunit:SetHasPromotion(SSCombatLevel2, true);
bgunit:SetBaseCombatStrength(SSCombatLevel2Combat)
--print ("Sailor Senshi Level 2 is here!");
end
if (pTeam:IsHasTech(SSCombatLevel3Prereq)) then
bgunit:SetHasPromotion(SSCombatLevel2, false);
bgunit:SetHasPromotion(SSCombatLevel3, true);
bgunit:SetBaseCombatStrength(SSCombatLevel3Combat)
--print ("Sailor Senshi Level 3 is here!");
end
if (pTeam:IsHasTech(SSCombatLevel4Prereq)) then
bgunit:SetHasPromotion(SSCombatLevel3, false);
bgunit:SetHasPromotion(SSCombatLevel4, true);
bgunit:SetBaseCombatStrength(SSCombatLevel4Combat)
--print ("Sailor Senshi Level 4 is here!");
end
if (pTeam:IsHasTech(SSCombatLevel5Prereq)) then
bgunit:SetHasPromotion(SSCombatLevel4, false);
bgunit:SetHasPromotion(SSCombatLevel5, true);
bgunit:SetBaseCombatStrength(SSCombatLevel5Combat)
--print ("Sailor Senshi Level 5 is here!");
end
if (pTeam:IsHasTech(SSCombatLevel6Prereq)) then
bgunit:SetHasPromotion(SSCombatLevel5, false);
bgunit:SetHasPromotion(SSCombatLevel6, true);
bgunit:SetBaseCombatStrength(SSCombatLevel6Combat)
--print ("Sailor Senshi Level 6 is here!");
end
if (pTeam:IsHasTech(SSCombatLevel7Prereq)) then
bgunit:SetHasPromotion(SSCombatLevel6, false);
bgunit:SetHasPromotion(SSCombatLevel7, true);
bgunit:SetBaseCombatStrength(SSCombatLevel7Combat)
--print ("Sailor Senshi Level 7 is here!");
end
if (pTeam:IsHasTech(SSCombatLevel8Prereq)) then
bgunit:SetHasPromotion(SSCombatLevel7, false);
bgunit:SetHasPromotion(SSCombatLevel8, true);
bgunit:SetBaseCombatStrength(SSCombatLevel8Combat)
--print ("Sailor Senshi Level 8 is here!");
end
if (pTeam:IsHasTech(SSCombatLevel9Prereq)) then
bgunit:SetHasPromotion(SSCombatLevel8, false);
bgunit:SetHasPromotion(SSCombatLevel9, true);
bgunit:SetBaseCombatStrength(SSCombatLevel9Combat)
--print ("Sailor Senshi Level 9 is here!");
end
end
end
end
end
end
Events.SerialEventUnitCreated.Add(SailorSenshi);
GameEvents.PlayerAdoptPolicy.Add(SailorSenshi);
GameEvents.PlayerDoTurn.Add(SailorSenshi);
Thanks in advance to anyone who can offer help on this.