SQL:
INSERT INTO UnitPromotions
(Type, Description, Help, PortraitIndex, IconAtlas, Sound, CannotBeChosen, LostWithUpgrade, HasPostCombatPromotions, MovesChange, PediaType, PediaEntry, PromotionDuration)
VALUES ('PROMOTION_FLANK_SPEED', 'TXT_KEY_PROMOTION_FLANK_SPEED', 'TXT_KEY_PROMOTION_FLANK_SPEED_HELP', 14, 'PROMOTION_ATLAS', 'AS2D_IF_LEVELUP', 1, 0, 1, 0, 'PEDIA_NAVAL', 'TXT_KEY_PEDIA_PROMOTION_FLANK_SPEED', 0),
('PROMOTION_DAMAGED_PROP', 'TXT_KEY_PROMOTION_DAMAGED_PROP', 'TXT_KEY_PROMOTION_DAMAGED_PROP_HELP', 4, 'KRIS_SWORDSMAN_PROMOTION_ATLAS', 'AS2D_IF_LEVELUP', 1, 0, 0, -1, 'PEDIA_NAVAL', 'TXT_KEY_PEDIA_PROMOTION_DAMAGED_PROP', 0),
('PROMOTION_BATTLE_STATIONS', 'TXT_KEY_PROMOTION_BATTLE_STATIONS', 'TXT_KEY_PROMOTION_BATTLE_STATIONS_HELP', 2, 'KRIS_SWORDSMAN_PROMOTION_ATLAS', 'AS2D_IF_LEVELUP', 1, 0, 0, -1, 'PEDIA_NAVAL', 'TXT_KEY_PEDIA_PROMOTION_BATTLE_STATIONS', 0);
INSERT INTO UnitPromotions_PostCombatRandomPromotion
(PromotionType, NewPromotion)
VALUES ('PROMOTION_FLANK_SPEED', 'PROMOTION_BATTLE_STATIONS');
INSERT INTO Unit_FreePromotions
(UnitType, PromotionType)
VALUES ('UNIT_KOLONNA', 'PROMOTION_FLANK_SPEED'),
('UNIT_BYZANTINE_DROMON', 'PROMOTION_FLANK_SPEED'),
('UNIT_GALLEASS', 'PROMOTION_FLANK_SPEED'),
('UNIT_VENETIAN_GALLEASS', 'PROMOTION_FLANK_SPEED'),
('UNIT_FRIGATE', 'PROMOTION_FLANK_SPEED'),
('UNIT_ENGLISH_SHIPOFTHELINE', 'PROMOTION_FLANK_SPEED'),
('UNIT_CRUISER', 'PROMOTION_FLANK_SPEED'),
('UNIT_BATTLESHIP', 'PROMOTION_FLANK_SPEED');
INSERT INTO Language_en_US
(Tag, Text)
VALUES ('TXT_KEY_PROMOTION_FLANK_SPEED', 'Flank Speed'),
('TXT_KEY_PROMOTION_FLANK_SPEED_HELP', 'Normal [ICON_MOVES] movement when crew is not at [COLOR_NEGATIVE_TEXT]Battle Stations[ENDCOLOR].'),
('TXT_KEY_PEDIA_PROMOTION_FLANK_SPEED', 'Flank Speed'),
('TXT_KEY_PROMOTION_DAMAGED_PROP', '[COLOR_NEGATIVE_TEXT]Damaged Propulsion[ENDCOLOR]'),
('TXT_KEY_PROMOTION_DAMAGED_PROP_HELP', 'Unit''s propulsion systems are damaged. -1 [ICON_MOVES] [COLOR_NEGATIVE_TEXT]movement[ENDCOLOR] until health is [COLOR_POSITIVE_TEXT]above[ENDCOLOR] 50'),
('TXT_KEY_PEDIA_PROMOTION_DAMAGED_PROP', 'Damaged Propulsion'),
('TXT_KEY_PROMOTION_BATTLE_STATIONS', '[COLOR_NEGATIVE_TEXT]Battle Stations[ENDCOLOR]'),
('TXT_KEY_PROMOTION_BATTLE_STATIONS_HELP', 'Crew is engaged in combat operations. -1 [ICON_MOVES] [COLOR_NEGATIVE_TEXT]movement[ENDCOLOR] until [COLOR_POSITIVE_TEXT]combat-free[ENDCOLOR] for a turn.'),
('TXT_KEY_PEDIA_PROMOTION_BATTLE_STATIONS', 'Battle Stations');
LUA:
function FlankSpeedAdder(iPlayer)
local pPlayer = Players[iPlayer]
for pUnit in pPlayer:Units() do
if pUnit:IsHasPromotion(GameInfoTypes.PROMOTION_BATTLE_STATIONS) then
if pUnit:IsHasPromotion(GameInfoTypes.PROMOTION_FLANK_SPEED) then
pUnit:SetHasPromotion(GameInfoTypes.PROMOTION_BATTLE_STATIONS, false)
pUnit:ChangeMoves(60)
print ("Removed Battle Stations x1")
end
end
if (pUnit:GetUnitCombatType() == GameInfoTypes.UNITCOMBAT_NAVALRANGED) and not pUnit:IsHasPromotion(GameInfoTypes.PROMOTION_FLANK_SPEED) then
pUnit:SetHasPromotion(GameInfoTypes.PROMOTION_FLANK_SPEED, true)
print ("Added Flank Speed x1")
end
end
end
function DmgPropAdder(iPlayer)
local pPlayer = Players[iPlayer]
for pUnit in pPlayer:Units() do
if (pUnit:GetDomainType() == DomainTypes.DOMAIN_SEA) and ((pUnit:GetCurrHitPoints() / pUnit:GetMaxHitPoints()) <= 0.35) and not pUnit:IsHasPromotion(GameInfoTypes.PROMOTION_DAMAGED_PROP) then
pUnit:SetHasPromotion(GameInfoTypes.PROMOTION_DAMAGED_PROP, true)
pUnit:ChangeMoves(-60)
print ("Added DmgProp promo x1")
elseif (pUnit:GetDomainType() == DomainTypes.DOMAIN_SEA) and ((pUnit:GetCurrHitPoints() / pUnit:GetMaxHitPoints()) >= 0.50) and pUnit:IsHasPromotion(GameInfoTypes.PROMOTION_DAMAGED_PROP) then
pUnit:SetHasPromotion(GameInfoTypes.PROMOTION_DAMAGED_PROP, false)
pUnit:ChangeMoves(60)
print ("Removed DmgProp promo x1")
end
end
end
GameEvents.PlayerDoTurn.Add(DmgPropAdder)
GameEvents.PlayerDoTurn.Add(FlankSpeedAdder)