Extract translation strings.

This commit is contained in:
Matthias Mailänder
2022-07-03 18:54:50 +02:00
committed by abcdefg30
parent 867efcc6e8
commit 9b2e291a46
110 changed files with 899 additions and 331 deletions

View File

@@ -0,0 +1,391 @@
## campaign.lua
objective-failed = Objective failed
objective-completed = Objective completed
primary = Primary
secondary = Secondary
new-primary-objective = New primary objective
new-secondary-objective = New secondary objective
## allies01, allies-03, allies-05abc, evacuation, personal-war
tanya = Tanya
## allies-01
extract-einstein-helicopter = Wait for the helicopter and extract Einstein.
find-einstein = Find Einstein.
einstein-survive = Einstein must survive.
protect-civilians = Protect all civilians.
## allies-01, allies-03, allies-05abc, evacuation
tanya-rules-of-engagement = According to the rules of engagement I need your explicit orders to fire, Commander!
# allies-01, allies-05abc, evacuation
tanya-survive = Tanya must survive.
## allies-02, soviet-06
escort-convoy = Escort the convoy.
## allies-02
convoy-arrived = The convoy arrived!
secure-convoy = Secure the convoy's path.
eliminate-soviets = Eliminate the entire Soviet presence in this area.
## allies-03a
destroy-oilpumps = Destroy all Soviet oil pumps.
## allies-03b
find-lost-tanks = Find our lost tanks.
## allies-03ab
destroy-bridges = Destroy all bridges.
free-prisoners = Free all Allied soldiers and keep them alive.
## allies-04
destroy-soviet-units-buildings = Destroy all Soviet units and buildings in this region.
destroy-convoys = Eliminate all passing Soviet convoys.
## allies-05a
extract-transport = Get all your forces into the transport.
# allies-05abc
spy = Spy
disguise-spy = Commander! You have to disguise me in order to get through the enemy patrols.
battlefield-control = Battlefield Control
skip-heroics = Good work! But next time skip the heroics!
rescue-tanya = Rescue Tanya.
elminate-soviet-units = Eliminate all Soviet units in this area.
infiltrate-warfactory = Infiltrate the Soviet warfactory.
destroy-sam-sites-blocker = Destroy all four SAM Sites that block
our reinforcements' helicopter.
# allies-06ab
soviet-tech-centers-discovered = Coordinates of the Soviet tech centers discovered.
destroy-soviet-buildings-units = Destroy all Soviet buildings and units in the area.
dont-capture-tech-centers = Do not capture the tech centers! Infiltrate one with a spy.
infiltrate-tech-center-spy = Infiltrate one of the Soviet tech centers with a spy.
capture-radar-shore = Capture the Radar Dome at the shore.
# allies-07
enemy-approaching = Enemy approaching.
soviet-armored-battalion-arrives-in = Soviet armored battalion arrives in { $time }
destroy-all-soviet-sub-pens = Destroy all Soviet Sub Pens.
clear-area-all-subs = Clear the area of all sub activity.
## allies-07, soviet-05
capture-radar-dome = Capture the Radar Dome.
## soviet-04ab, soviet-05
defeat-allied-forces = Defeat the Allied forces.
## allies-08ab
experiment-successful = The experiment is a success!
chronosphere-experiments-completes-in = Chronosphere experiment completes in { $time }
defend-chronosphere-tech-center = Defend the Chronosphere and the Tech Center
at all costs.
chronosphere-needs-power = The Chronosphere must have power when the
timer runs out.
evacuate-scientists-from-island = Evacuate all scientists from the island to
the west.
## allies09a
extract-kosygin = Extract Kosygin and
get him back to your base.
infiltrate-soviet-command-center-contact-kosygin = Infiltrate the Soviet command center and
contact Kosygin.
kosygin-must-survive = Kosygin must survive.
## allies-10a
we-are-too-late = We're too late!
incoming-transmission-capitalized = INCOMING TRANSMISSION
deactivate-four-missiles = Commander, we're tracking four missiles. They must be deactivated! We are scrambling a team to assault the missile control bunker. Clear the way and capture the enemy command center. Hurry!
capture-enemy-command-center = Capture the enemy Command Center. Hurry!
disable-atomic-weapons = Find a way to take the atomic weapons off-line.
## ant-01
allied-forces-have-arrived = Allied forces have arrived!
defend-outpost-until-reinforcements-arrive = Defend outpost until reinforcements arrive.
reinforcements-arrive-in = Reinforcements arrive in { $time }
find-outpost = Find the outpost.
## ants-03
gas-every-ant-nest = Gas every ant nest.
kill-every-ant-above-ground = Kill every ant lurking above ground.
## evacuation
allied-reinforcements-arrive-in = Allied reinforcements arrive in { $time }
wait-for-helicopter-extract-einstein = Wait for a helicopter at the LZ and extract Einstein.
keep-einstein-alive-at-all-costs = Keep Einstein alive at all costs.
find-einstein-crashed-helicopter = Find Einstein's crashed helicopter.
destroy-sam-sites = Destroy the SAM sites.
hold-position-protect-base = Hold your position and protect the base.
keep-civilians-alive = Do not lose more than { $units } units.
take-out-the-soviet-power-grid = Take out the Soviet power grid.
## exodus
units-evacuated = { $evacuated } / { $threshold } units evacuated.
evacuate-units = Evacuate { $threshold } units.
destroy-nearby-soviet-airbases = Destroy the nearby Soviet airbases.
evacuate-at-least-one-gap-generator = Evacuate at least one mobile gap generator.
transferring-funds = Transferring funds.
co-commander-missing = Co-Commander is missing
## fall-of-greece-1-personal-war
civilians-manual-targetting = Commander, there are several civilians in the area.
We'll need you to call out targets.
soviet-aircraft-armor-moving-in = Alfa Niner this is Lima One Six. Be advised, Soviet aircraft and armor moving into your AO.
headquarters = Headquarters
extraction-point-compromised-evacuate-base = Extraction point is compromised. Evacuate the base!
new-extraction-point-northwest = We've set up a new extraction point to the Northwest.
stalin-will-pay = Stalin will pay for what he has done today!
I will bury him with my own hands!
stavros = Stavros
keep-stavros-tanya-alive = Keep Stavros and Tanya alive.
get-tanya-stavros-helicopter = Get Stavros and Tanya to the extraction helicopter.
## fall-of-greece-2-evacuation
civilians-evacuated = { $evacuated } / { $threshold } civilians evacuated.
chinook-assist-evacuation = Alfa Niner this is Pegasus. We are on site and ready to assist with the evacuation.
chinook-pilot = Chinook pilot
rescue-civlians-island-shelter-easy = Evacuate at least half of the civilians to the island
shelter.
rescue-civlians-island-shelter-normal = Evacuate at least three quarters of the civilians to
the island shelter.
rescue-civlians-island-shelter-hard = Evacuate all civilians to the island shelter.
clear-enemy-submarines = Clear the area of enemy submarine activity.
## fort-lonestar
no-more-waves = You almost survived the onslaught! No more waves incoming.
defend-fort-lonestar = Defend Fort Lonestar at all costs!
## in-the-nick-of-time
friendlies-coming-out = Friendlies coming out!
medic = Medic
get-scientists-evacuation-point = Commander, we're detecting Soviet transports headed your way. Get those scientists back to the extraction point in the southeast!
landcom-16-capitalized = LANDCOM 16
scientists-killed-in-command-center = The scientists were in the Command Center!
too-late = We're too late!
chronosphere-explodes-in = Chronosphere explodes in { $time }
rescue-scientists-extraction-point = Rescue the scientists and escort them back to the
extraction point.
## infiltration
secure-laboratory-guards = Secure the laboratory by eliminating its guards.
destroy-remaining-soviet-presence = Destroy the remaining Soviet presence.
infiltrate-laboratory = Get our spy into the laboratory undetected.
secure-lab-in = Secure lab in: { $time }
soviet-research-lab-not-secured-in-time = The Soviet research laboratory was not secured in time.
## intervention
percentage-village-destroyed = { $percentage }% of the village destroyed.
save-village = Save the village.
mcv-main-island = Get your MCV to the main island.
capture-air-force-hq = Locate and capture the enemy's Air Force HQ.
## monster-tank-madness
find-demitri = Find Dr. Demitri. He is likely hiding in the village
to the far south.
reprogram-super-tanks = Reprogram the super tanks by sending a spy into
the Soviet radar dome.
defend-outpost = Defend and repair our outpost.
super-tank-self-destruct-t-minus-3 = In 3 minutes the super tanks will self-destruct.
evacuate-demitri = Evacuate Dr. Demitri with the helicopter waiting
at our outpost.
super-tank-self-destruct-in = The super tanks self-destruct in { $time }
super-tanks-destroyed = The super tanks are destroyed!
eliminate-super-tanks = Eliminate these super tanks.
steal-money-outpost = Steal money from the nearby outpost with the Thief.
cross-river = Secure transport to the mainland.
find-outpost = Find our outpost and start repairs on it.
evacuate-civilian-hospital = Evacuate all civilians from the hospital.
demitri-extracted-super-tanks-destroyed = Dr. Demitri has been extracted and the super tanks have been dealt with.
## production-disruption, shock-therapy
capture-enemy-radar-dome = Capture the enemy radar dome.
## production-disruption
destroy-escaping-submarine = Destroy the submarine before it escapes!
submarine-escapes = The sub is heading for open sea!
submarine-completes-in = Submarine completes in { $time }
destroy-soviet-sub-pen = Destroy the Soviet sub pen.
power-down-tesla-coils = Take down power to the tesla coils.
## sarin-gas-1-crackdown, soviet09
convoy-truck-escaping = Convoy truck attempting to escape!
## sarin-gas-1-crackdown
prevent-soviet-trucks-escaping = Prevent Soviet convoy trucks from escaping.
clear-sector-soviet-presence = Clear the sector of all Soviet presence.
infiltrate-radar-reveal-escape-routes = Infiltrate the Soviet Radar Dome to reveal truck
ecape routes.
## sarin-gas-2-down-under, situation-critical
scientist = Scientist
## sarin-gas-2-down-under
flame-turret-deactivated = Flame Turret deactivated.
console = Console
sarin-dispenser-activated = Sarin Nerve Gas dispensers activated.
tesla-coil-deactivated = Tesla Coil deactivated.
tesla-coil-activated = Initialising Tesla Coil defence.
prisoners-escaping = Warning, prisoners are attempting to escape!
intercom = Intercom
hurry-base-compromised = The base is compromised. We have to hurry the execution!
soviet-officer = Soviet Officer
prepare-to-fire = Prepare to Fire!
fire = Fire!
thanks-for-rescue = Thanks for the rescue!
move-nuclear-outside = The Soviets have an unstable nuclear device stored here.
I need to move it out of the facility!
exit-clear-hopefully = I hope the exit is clear!
reach-eastern-exit = Reach the eastern exit of the facility.
free-tanya-keep-alive = Free Tanya and keep her alive.
kill-soviet-officers-scientists = Kill all Soviet officers and scientists.
steal-soviet-mammoth-tank = Steal a Soviet mammoth tank.
no-casualties = Do not lose a single soldier or civilian
under your command.
## sarin-gas-3-controlled-burn
capture-sarin-plants-intact = Capture all Sarin processing plants intact.
destroy-enemy-compound = Destroy the enemy compound.
cut-power-east = Bring down the power of the base to the east.
## shock-therapy
destroy-opposition = Destroy all that oppose us.
## siberian-conflict-1-fresh-tracks
first-trucks-entering = The first trucks are entering your AO.
first-trucks-arrive-in = First trucks arrive in { $time }
destroy-soviet-convoy = Destroy all Soviet convoy trucks.
destroy-bridges-slow-convoy = Destroy the nearby bridges to slow the
convoys down.
## siberian-conflict-3-wasteland
destroy-soviet-units-infrastructure = Destroy all Soviet units and structures.
## situation-critical
plans-stolen-erase-data = Plans stolen; erasing all data.
software-update-failed-manual-targets = IFF software update failed. Require manual target input.
volkov = Volkov
missiles-launch-in = Missiles launch in { $time }
too-late = We're too late!
kill-power = Bring the base to low power. Volkov will arrive
once the defenses are down.
infiltrate-bio-weapons-lab-scientist = Infiltrate the bio-weapons lab with the scientist.
destroy-bio-weapons-lab-missile-silos = Destroy the bio-weapons lab and missile silos.
destroy-all-sam-sites-strategic-bombers = Destroy all sam sites on the island.
Our strategic bombers will finish the rest.
## situation-critical, soviet-soldier-volkov-n-chitzkoi
volkov-survive = Volkov must survive.
## soviet-01
raze-village = Raze the village.
## soviet-02ab, soviet-08a, soviet-11
protect-command-center = Protect the Command Center.
destroy-allied-units-structures = Destroy all Allied units and structures.
## soviet-03
kill-enemy-spy = Kill the enemy spy.
clear-farm-reinforcements = Clear the nearby farm for reinforcements.
scavenge-civilian-buildings = Scavenge the civilian buildings for supplies.
time-remaining = Time Remaining: { $time }
## soviet-04ab, soviet-08ab, soviet-10
destroy-radar-dome-reinforcements = Destroy Allied Radar Dome to stop enemy
reinforcements.
## soviet05
allied-mcv-island = Allied MCV detected moving to the island.
defend-radar-dome = Defend the Radar Dome.
allied-expansion-movement-detected = Movement of an Allied expansion base discovered.
coordinates-allied-expansion-discovered = Coordinates of an Allied expansion base discovered.
## soviet06ab
destroy-capture-radar-dome-reinforcements = Destroy or capture the Allied radar dome to stop
enemy reinforcements.
keep-trucks-alive = Keep all trucks alive.
## soviet07
deactivate-security-system = Deactivate the security system.
rescue-engineers = Rescue the engineers.
engineers-coolant-station = Get the engineers to the coolant stations.
engineer-reprogram-security = Use an Engineer to reprogram the security system.
engineer-reactor-core = Get an Engineer to the reactor core.
free-dogs = Free the dogs.
time-until-meltdown = Time until Meltdown: { $time }
## soviet-08ab
destroy-allied-sympathizers-village = Destroy the village of Allied sympathizers.
## soviet-09
trucks-stopped-near-allied-base = Commander, the truck has stopped at a nearby allied base.
Allied radio intercepts say the truck has orders to flee the battlefield
if any Soviet units approach the base.
destroy-stolen-convoy-truck = Destroy the stolen convoy truck.
Do not let it escape.
defend-forward-command-center = Defend our forward command center.
## soviet-10
run-for-it = RUN FOR IT!
convoy-commander = Convoy commander
we-are-surrounded = We're surrounded!
corridor-closes-in = Corridor closes in { $time }
escort-convoy-mountain-pass = Escort the convoy through the mountain pass.
protect-every-truck = Do not lose a single truck.
save-migs = Do not squander any of our new MiG aircraft.
## soviet-11b
destroy-allied-naval-base = Destroy Allied naval base.
## soviet-soldier-volkov-n-chitzkoi
destroy-control-center = Destroy the Control Center.
tank-division-must-not-be-destroyed = Your tank division must not be destroyed before
the alloy facility is dealt with.
keep-chitzkoi-alive = Keep Chitzkoi Alive.
destroy-alloy-facility = Destroy the alloy facility.
heavy-turret-control-destroyed = Excellent! The heavy turret control center is destroyed
and now we can deal with the alloy facility.
rebuild-chitzkoy = We can rebuild Chitzkoi. We have the technology.
## survival01
french-reinforcements-arrive-in = French reinforcements arrive in { $time }
french-allies-arrived = Our french allies have arrived!
takeover-reinforcements-kill-remaining-soviet-forces = Take control of French reinforcements and
kill all remaining Soviet forces.
takeover-reinforcements-dismantle-soviet-base = Take control of French reinforcements and
dismantle the nearby Soviet base.
enforce-position-hold-until-reinforcements = Enforce your position and hold-out the onslaught
until reinforcements arrive.
destroy-two-sames-before-reinforcements = Destroy the two SAM sites before reinforcements
arrive.
soviets-blocking-gps = The Soviets are blocking our GPS. We need to investigate their new technology.
capture-hold-soviet-airbase-northeast = Capture and hold the Soviet airbase
in the northeast.
french-survived-dismantled-soviet-presence = The French forces have survived and dismantled the Soviet presence in the area!
kill-remaining-soviet-forces = Kill all remaining Soviet forces.
dismantle-nearby-soviet-base = Dismantle the nearby Soviet base.
## survival02
destroy-all-soviet-forces = Destroy all Soviet forces in the area.
soviet-reinforcements-arrive-in = Soviet reinforcements arrive in { $time }
reinforced-position-initiate-counter-attack = Excellent work Commander! We have reinforced our position enough to initiate a counter-attack.
incoming-report = Incoming Report
destroy-remaining-soviet-forces-area = Destroy the remaining Soviet forces in the area.
soviet-reinforcements-arrived = Soviet reinforcements have arrived!
repair-bridges-for-reinforcement = Commander! The Soviets destroyed the bridges to disable our reinforcements. Repair them for additional reinforcements.
repair-two-southern-bridges = Repair the two southern bridges.
enforce-position-hold-out-onslaught = Enforce your position and hold-out the onslaught.
remaining-soviet-presence-destroyed = We have destroyed the remaining Soviet presence!
soviet-reinforcements-approaching = The Soviet reinforcements are approaching!
## top-o-the-world
supply-truck-waystation = Bring the supply truck to the waystation.
waystation-must-not-be-destroyed = The waystation must not be destroyed.
destory-aa-guns-enable-air-support = Destroy all the AA Guns to enable air support.
find-destroy-bridge-stop-allied-reinforcements = Find and destroy the bridge the allies are using
to bring their reinforcements in the area.
air-support-t-minus-3 = Very good comrade general! Our air units just took off
and should be in your area in approximately three minutes.
allied-ground-reinforcements-stopped = This should stop the allied forces from getting their ground based reinforcements.

View File

@@ -25,7 +25,7 @@ SendInsertionHelicopter = function()
local tanya = passengers[1] local tanya = passengers[1]
Trigger.OnKilled(tanya, TanyaKilledInAction) Trigger.OnKilled(tanya, TanyaKilledInAction)
Trigger.AfterDelay(DateTime.Seconds(4), function() Trigger.AfterDelay(DateTime.Seconds(4), function()
Media.DisplayMessage("According to the rules of engagement I need your explicit orders to fire, Commander!", "Tanya") Media.DisplayMessage(UserInterface.Translate("tanya-rules-of-engagement"), UserInterface.Translate("tanya"))
end) end)
end end
@@ -151,7 +151,7 @@ CreateEinstein = function()
einstein = Actor.Create(EinsteinType, true, { Location = EinsteinSpawnPoint.Location, Owner = Greece }) einstein = Actor.Create(EinsteinType, true, { Location = EinsteinSpawnPoint.Location, Owner = Greece })
einstein.Scatter() einstein.Scatter()
Trigger.OnKilled(einstein, RescueFailed) Trigger.OnKilled(einstein, RescueFailed)
ExtractObjective = Greece.AddObjective("Wait for the helicopter and extract Einstein.") ExtractObjective = AddPrimaryObjective(Greece, "extract-einstein-helicopter")
Trigger.AfterDelay(DateTime.Seconds(1), function() Media.PlaySpeechNotification(Greece, "TargetFreed") end) Trigger.AfterDelay(DateTime.Seconds(1), function() Media.PlaySpeechNotification(Greece, "TargetFreed") end)
end end
@@ -190,10 +190,10 @@ WorldLoaded = function()
InitObjectives(Greece) InitObjectives(Greece)
FindEinsteinObjective = Greece.AddObjective("Find Einstein.") FindEinsteinObjective = AddPrimaryObjective(Greece, "find-einstein")
TanyaSurviveObjective = Greece.AddObjective("Tanya must survive.") TanyaSurviveObjective = AddPrimaryObjective(Greece, "tanya-survive")
EinsteinSurviveObjective = Greece.AddObjective("Einstein must survive.") EinsteinSurviveObjective = AddPrimaryObjective(Greece, "einstein-survive")
CivilProtectionObjective = Greece.AddObjective("Protect all civilians.", "Secondary", false) CivilProtectionObjective = AddSecondaryObjective(Greece, "protect-civilians")
RunInitialActivities() RunInitialActivities()

View File

@@ -448,3 +448,5 @@ Actors:
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Weapons: weapons.yaml Weapons: weapons.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -168,7 +168,9 @@ FinishTimer = function()
c = HSLColor.White c = HSLColor.White
end end
Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText("The convoy arrived!", c) end) Trigger.AfterDelay(DateTime.Seconds(i), function()
UserInterface.SetMissionText(UserInterface.Translate("convoy-arrived"), c)
end)
end end
Trigger.AfterDelay(DateTime.Seconds(6), function() UserInterface.SetMissionText("") end) Trigger.AfterDelay(DateTime.Seconds(6), function() UserInterface.SetMissionText("") end)
end end
@@ -180,7 +182,7 @@ SendTrucks = function()
DateTime.TimeLimit = 0 DateTime.TimeLimit = 0
UserInterface.SetMissionText("") UserInterface.SetMissionText("")
ConvoyObjective = player.AddObjective("Escort the convoy.") ConvoyObjective = AddPrimaryObjective(player, "escort-convoy")
Media.PlaySpeechNotification(player, "ConvoyApproaching") Media.PlaySpeechNotification(player, "ConvoyApproaching")
Trigger.AfterDelay(DateTime.Seconds(3), function() Trigger.AfterDelay(DateTime.Seconds(3), function()
@@ -220,10 +222,10 @@ WorldLoaded = function()
InitObjectives(player) InitObjectives(player)
ussrObj = ussr.AddObjective("Deny the allies!") ussrObj = AddPrimaryObjective(ussr, "")
SecureObjective = player.AddObjective("Secure the convoy's path.") SecureObjective = AddPrimaryObjective(player, "secure-convoy")
ConquestObjective = player.AddObjective("Eliminate the entire soviet presence in this area.") ConquestObjective = AddPrimaryObjective(player, "eliminate-soviets")
Trigger.AfterDelay(DateTime.Seconds(1), function() Media.PlaySpeechNotification(allies, "MissionTimerInitialised") end) Trigger.AfterDelay(DateTime.Seconds(1), function() Media.PlaySpeechNotification(allies, "MissionTimerInitialised") end)

View File

@@ -657,3 +657,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -51,7 +51,7 @@ SendAlliedUnits = function()
if TanyaType == "e7.noautotarget" then if TanyaType == "e7.noautotarget" then
Trigger.AfterDelay(DateTime.Seconds(2), function() Trigger.AfterDelay(DateTime.Seconds(2), function()
Media.DisplayMessage("According to the rules of engagement I need your explicit orders to fire, Commander!", "Tanya") Media.DisplayMessage(UserInterface.Translate("tanya-rules-of-engagement"), UserInterface.Translate("tanya"))
end) end)
end end
Artillery.Stance = "HoldFire" Artillery.Stance = "HoldFire"
@@ -107,11 +107,10 @@ InitPlayers = function()
end end
AddObjectives = function() AddObjectives = function()
KillBridges = player.AddObjective("Destroy all bridges.") KillBridges = AddPrimaryObjective(player, "destroy-bridges")
TanyaSurvive = player.AddObjective("Tanya must survive.") TanyaSurvive = AddPrimaryObjective(player, "tanya-survive")
KillUSSR = player.AddObjective("Destroy all Soviet oil pumps.", "Secondary", false) KillUSSR = AddSecondaryObjective(player, "destroy-oilpumps")
FreePrisoners = player.AddObjective("Free all Allied soldiers and keep them alive.", "Secondary", false) FreePrisoners = AddSecondaryObjective(player, "free-prisoners")
ussr.AddObjective("Bridges must not be destroyed.")
end end
InitTriggers = function() InitTriggers = function()

View File

@@ -1311,3 +1311,5 @@ Actors:
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Weapons: weapons.yaml Weapons: weapons.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -64,7 +64,7 @@ SetupAlliedUnits = function()
if TanyaType == "e7.noautotarget" then if TanyaType == "e7.noautotarget" then
Trigger.AfterDelay(DateTime.Seconds(2), function() Trigger.AfterDelay(DateTime.Seconds(2), function()
Media.DisplayMessage("According to the rules of engagement I need your explicit orders to fire, Commander!", "Tanya") Media.DisplayMessage(UserInterface.Translate("tanya-rules-of-engagement"), UserInterface.Translate("tanya"))
end) end)
end end
@@ -173,11 +173,10 @@ end
AddObjectives = function() AddObjectives = function()
InitObjectives(player) InitObjectives(player)
KillBridges = player.AddObjective("Destroy all bridges.") KillBridges = AddPrimaryObjective(player, "destroy-bridges")
TanyaSurvive = player.AddObjective("Tanya must survive.") TanyaSurvive = AddPrimaryObjective(player, "tanya-survive")
FindAllies = player.AddObjective("Find our lost tanks.", "Secondary", false) FindAllies = AddSecondaryObjective(player, "find-lost-tanks")
FreePrisoners = player.AddObjective("Free all Allied soldiers and keep them alive.", "Secondary", false) FreePrisoners = AddSecondaryObjective(player, "free-prisoners")
ussr.AddObjective("Bridges must not be destroyed.")
end end
InitTriggers = function() InitTriggers = function()

View File

@@ -1211,3 +1211,5 @@ Actors:
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Weapons: weapons.yaml Weapons: weapons.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -139,8 +139,8 @@ Tick = function()
end end
AddObjectives = function() AddObjectives = function()
KillUSSR = player.AddObjective("Destroy all Soviet units and buildings in this region.") KillUSSR = AddPrimaryObjective(player, "destroy-soviet-units-buildings")
DestroyConvoys = player.AddObjective("Eliminate all passing Soviet convoys.", "Secondary", false) DestroyConvoys = AddSecondaryObjective(player, "destroy-convoys")
end end
WorldLoaded = function() WorldLoaded = function()

View File

@@ -534,3 +534,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -137,7 +137,7 @@ SendWaterExtraction = function()
Camera.Position = flare.CenterPosition Camera.Position = flare.CenterPosition
WaterExtractionTran = Reinforcements.ReinforceWithTransport(greece, ExtractionTransport, nil, SpyEntryPath)[1] WaterExtractionTran = Reinforcements.ReinforceWithTransport(greece, ExtractionTransport, nil, SpyEntryPath)[1]
ExtractObj = greece.AddObjective("Get all your forces into the transport.") ExtractObj = AddPrimaryObjective(greece, "extract-transport")
Trigger.OnKilled(WaterExtractionTran, function() ussr.MarkCompletedObjective(ussrObj) end) Trigger.OnKilled(WaterExtractionTran, function() ussr.MarkCompletedObjective(ussrObj) end)
Trigger.OnAllRemovedFromWorld(greece.GetGroundAttackers(), function() Trigger.OnAllRemovedFromWorld(greece.GetGroundAttackers(), function()
@@ -185,20 +185,20 @@ FreeTanya = function()
if TanyaType == "e7.noautotarget" then if TanyaType == "e7.noautotarget" then
Trigger.AfterDelay(DateTime.Seconds(1), function() Trigger.AfterDelay(DateTime.Seconds(1), function()
Media.DisplayMessage("According to the rules of engagement I need your explicit orders to fire, Commander!", "Tanya") Media.DisplayMessage(UserInterface.Translate("tanya-rules-of-engagement"), UserInterface.Translate("tanya"))
end) end)
end end
Trigger.OnKilled(Tanya, function() ussr.MarkCompletedObjective(ussrObj) end) Trigger.OnKilled(Tanya, function() ussr.MarkCompletedObjective(ussrObj) end)
if Difficulty == "tough" then if Difficulty == "tough" then
KillSams = greece.AddObjective("Destroy all four SAM Sites that block\nour reinforcements' helicopter.") KillSams = AddPrimaryObjective(greece, "destroy-sam-sites-blocker")
greece.MarkCompletedObjective(mainObj) greece.MarkCompletedObjective(mainObj)
surviveObj = greece.AddObjective("Tanya must not die!") surviveObj = AddPrimaryObjective(greece, "tanya-survive")
Media.PlaySpeechNotification(greece, "TanyaRescued") Media.PlaySpeechNotification(greece, "TanyaRescued")
else else
KillSams = greece.AddObjective("Destroy all four SAM sites that block\nthe extraction helicopter.") KillSams = AddPrimaryObjective(greece, "destroy-sam-sites-blocker")
Media.PlaySpeechNotification(greece, "TargetFreed") Media.PlaySpeechNotification(greece, "TargetFreed")
end end
@@ -220,7 +220,7 @@ SendSpy = function()
end end
Trigger.AfterDelay(DateTime.Seconds(3), function() Trigger.AfterDelay(DateTime.Seconds(3), function()
Media.DisplayMessage("Commander! You have to disguise me in order to get through the enemy patrols.", "Spy") Media.DisplayMessage(UserInterface.Translate("disguise-spy"), "Spy")
end) end)
end end
@@ -264,7 +264,7 @@ InitTriggers = function()
end end
if not greece.IsObjectiveCompleted(infWarfactory) then if not greece.IsObjectiveCompleted(infWarfactory) then
Media.DisplayMessage("Good work! But next time skip the heroics!", "Battlefield Control") Media.DisplayMessage(UserInterface.Translate("skip-heroics"), UserInterface.Translate("battlefield-control"))
greece.MarkCompletedObjective(infWarfactory) greece.MarkCompletedObjective(infWarfactory)
end end
@@ -372,10 +372,10 @@ InitTriggers = function()
end end
AddObjectives = function() AddObjectives = function()
ussrObj = ussr.AddObjective("Deny the Allies.") ussrObj = AddPrimaryObjective(ussr, "")
mainObj = greece.AddObjective("Rescue Tanya.") mainObj = AddPrimaryObjective(greece, "rescue-tanya")
KillAll = greece.AddObjective("Eliminate all Soviet units in this area.") KillAll = AddPrimaryObjective(greece, "elminate-soviet-units")
infWarfactory = greece.AddObjective("Infiltrate the Soviet warfactory.", "Secondary", false) infWarfactory = AddSecondaryObjective(greece, "infiltrate-warfactory")
end end
WorldLoaded = function() WorldLoaded = function()

View File

@@ -1564,3 +1564,5 @@ Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/c
Weapons: weapons.yaml Weapons: weapons.yaml
Notifications: notifications.yaml Notifications: notifications.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -50,7 +50,7 @@ SendSpy = function()
Trigger.OnKilled(Spy, function() USSR.MarkCompletedObjective(USSRObj) end) Trigger.OnKilled(Spy, function() USSR.MarkCompletedObjective(USSRObj) end)
Trigger.AfterDelay(DateTime.Seconds(3), function() Trigger.AfterDelay(DateTime.Seconds(3), function()
Media.DisplayMessage("Commander! You have to disguise me in order to get through the enemy patrols.", "Spy") Media.DisplayMessage(UserInterface.Translate("disguise-spy"), "Spy")
if SpecialCameras then if SpecialCameras then
SpyCameraA = Actor.Create("camera", true, { Owner = Greece, Location = SpyCamera1.Location }) SpyCameraA = Actor.Create("camera", true, { Owner = Greece, Location = SpyCamera1.Location })
SpyCameraB = Actor.Create("camera", true, { Owner = Greece, Location = SpyCamera2.Location }) SpyCameraB = Actor.Create("camera", true, { Owner = Greece, Location = SpyCamera2.Location })
@@ -239,7 +239,7 @@ FreeTanya = function()
if TanyaType == "e7.noautotarget" then if TanyaType == "e7.noautotarget" then
Trigger.AfterDelay(DateTime.Seconds(1), function() Trigger.AfterDelay(DateTime.Seconds(1), function()
Media.DisplayMessage("According to the rules of engagement I need your explicit orders to fire, Commander!", "Tanya") Media.DisplayMessage(UserInterface.Translate("tanya-rules-of-engagement"), UserInterface.Translate("tanya"))
end) end)
end end
@@ -254,7 +254,7 @@ FreeTanya = function()
end) end)
end) end)
KillSams = Greece.AddObjective("Destroy all four SAM sites that block\nthe extraction helicopter.") KillSams = AddPrimaryObjective(Greece, "destroy-sam-sites-blocker")
Trigger.OnKilled(Tanya, function() USSR.MarkCompletedObjective(USSRObj) end) Trigger.OnKilled(Tanya, function() USSR.MarkCompletedObjective(USSRObj) end)
if not SpecialCameras and PrisonCamera and PrisonCamera.IsInWorld then if not SpecialCameras and PrisonCamera and PrisonCamera.IsInWorld then
@@ -318,7 +318,7 @@ InitTriggers = function()
end end
if not Greece.IsObjectiveCompleted(InfWarfactory) then if not Greece.IsObjectiveCompleted(InfWarfactory) then
Media.DisplayMessage("Good work! But next time skip the heroics!", "Battlefield Control") Media.DisplayMessage(UserInterface.Translate("skip-heroics"), UserInterface.Translate("battlefield-control"))
Greece.MarkCompletedObjective(InfWarfactory) Greece.MarkCompletedObjective(InfWarfactory)
end end
@@ -388,10 +388,10 @@ WorldLoaded = function()
InitObjectives(Greece) InitObjectives(Greece)
USSRObj = USSR.AddObjective("Deny the Allies.") USSRObj = AddPrimaryObjective(USSR, "")
MainObj = Greece.AddObjective("Rescue Tanya.") MainObj = AddPrimaryObjective(Greece, "rescue-tanya")
KillAll = Greece.AddObjective("Eliminate all Soviet units in this area.") KillAll = AddPrimaryObjective(Greece, "elminate-soviet-units")
InfWarfactory = Greece.AddObjective("Infiltrate the Soviet warfactory.", "Secondary", false) InfWarfactory = AddSecondaryObjective(Greece, "infiltrate-warfactory")
InitTriggers() InitTriggers()
SendSpy() SendSpy()

View File

@@ -1194,3 +1194,5 @@ Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/c
Weapons: weapons.yaml Weapons: weapons.yaml
Notifications: notifications.yaml Notifications: notifications.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -72,7 +72,7 @@ SendSpy = function()
end end
Trigger.AfterDelay(DateTime.Seconds(3), function() Trigger.AfterDelay(DateTime.Seconds(3), function()
Media.DisplayMessage("Commander! You have to disguise me in order to get through the enemy patrols.", "Spy") Media.DisplayMessage(UserInterface.Translate("disguise-spy"), UserInterface.Translate("spy"))
end) end)
end end
@@ -184,20 +184,20 @@ FreeTanya = function()
if TanyaType == "e7.noautotarget" then if TanyaType == "e7.noautotarget" then
Trigger.AfterDelay(DateTime.Seconds(1), function() Trigger.AfterDelay(DateTime.Seconds(1), function()
Media.DisplayMessage("According to the rules of engagement I need your explicit orders to fire, Commander!", "Tanya") Media.DisplayMessage(UserInterface.Translate("tanya-rules-of-engagement"), "Tanya")
end) end)
end end
Trigger.OnKilled(Tanya, function() USSR.MarkCompletedObjective(USSRObj) end) Trigger.OnKilled(Tanya, function() USSR.MarkCompletedObjective(USSRObj) end)
if Difficulty == "tough" then if Difficulty == "tough" then
KillSams = Greece.AddObjective("Destroy all six SAM Sites that block\nour reinforcements' helicopter.") KillSams = AddPrimaryObjective(Greece, "destroy-sam-sites-blocker")
Greece.MarkCompletedObjective(MainObj) Greece.MarkCompletedObjective(MainObj)
SurviveObj = Greece.AddObjective("Tanya must not die!") SurviveObj = AddPrimaryObjective(Greece, "tanya-survive")
Media.PlaySpeechNotification(Greece, "TanyaRescued") Media.PlaySpeechNotification(Greece, "TanyaRescued")
else else
KillSams = Greece.AddObjective("Destroy all six SAM sites that block\nthe extraction helicopter.") KillSams = AddPrimaryObjective(Greece, "destroy-sam-sites-blocker")
Media.PlaySpeechNotification(Greece, "TargetFreed") Media.PlaySpeechNotification(Greece, "TargetFreed")
end end
@@ -238,7 +238,7 @@ InitTriggers = function()
end end
if not Greece.IsObjectiveCompleted(InfWarfactory) then if not Greece.IsObjectiveCompleted(InfWarfactory) then
Media.DisplayMessage("Good work! But next time skip the heroics!", "Battlefield Control") Media.DisplayMessage(UserInterface.Translate("skip-heroics"), UserInterface.Translate("battlefield-control"))
Greece.MarkCompletedObjective(InfWarfactory) Greece.MarkCompletedObjective(InfWarfactory)
end end
@@ -346,10 +346,10 @@ WorldLoaded = function()
InitObjectives(Greece) InitObjectives(Greece)
USSRObj = USSR.AddObjective("Deny the Allies.") USSRObj = AddPrimaryObjective(USSR, "")
MainObj = Greece.AddObjective("Rescue Tanya.") MainObj = AddPrimaryObjective(Greece, "rescue-tanya")
KillAll = Greece.AddObjective("Eliminate all Soviet units in this area.") KillAll = AddPrimaryObjective(Greece, "elminate-soviet-units")
InfWarfactory = Greece.AddObjective("Infiltrate the Soviet warfactory.", "Secondary", false) InfWarfactory = AddSecondaryObjective(Greece, "infiltrate-warfactory")
InitTriggers() InitTriggers()
SendSpy() SendSpy()

View File

@@ -1065,3 +1065,5 @@ Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/c
Weapons: weapons.yaml Weapons: weapons.yaml
Notifications: notifications.yaml Notifications: notifications.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -126,7 +126,7 @@ CaptureRadarDome = function()
end end
end) end)
Media.DisplayMessage("Coordinates of the Soviet tech centers discovered.") Media.DisplayMessage(UserInterface.Translate("soviet-tech-centers-discovered"))
if Difficulty == "easy" then if Difficulty == "easy" then
Actor.Create("Camera", true, { Owner = player, Location = Weapcam.Location }) Actor.Create("Camera", true, { Owner = player, Location = Weapcam.Location })
@@ -141,7 +141,7 @@ InfiltrateTechCenter = function()
return return
end end
infiltrated = true infiltrated = true
DestroySovietsObj = player.AddObjective("Destroy all Soviet buildings and units in the area.") DestroySovietsObj = AddPrimaryObjective(player, "destroy-soviet-buildings-units")
player.MarkCompletedObjective(InfiltrateTechCenterObj) player.MarkCompletedObjective(InfiltrateTechCenterObj)
local Proxy = Actor.Create("powerproxy.paratroopers", false, { Owner = ussr }) local Proxy = Actor.Create("powerproxy.paratroopers", false, { Owner = ussr })
@@ -153,7 +153,7 @@ InfiltrateTechCenter = function()
Trigger.OnCapture(a, function() Trigger.OnCapture(a, function()
if not infiltrated then if not infiltrated then
Media.DisplayMessage("Do not capture the tech centers! Infiltrate one with a spy.") Media.DisplayMessage(UserInterface.Translate("dont-capture-tech-centers"))
end end
end) end)
end) end)
@@ -181,8 +181,8 @@ WorldLoaded = function()
InitObjectives(player) InitObjectives(player)
InfiltrateTechCenterObj = player.AddObjective("Infiltrate one of the Soviet tech centers with a spy.") InfiltrateTechCenterObj = AddPrimaryObjective(player, "infiltrate-tech-center-spy")
CaptureRadarDomeObj = player.AddObjective("Capture the Radar Dome at the shore.", "Secondary", false) CaptureRadarDomeObj = AddSecondaryObjective(player, "capture-radar-shore")
Camera.Position = DefaultCameraPosition.CenterPosition Camera.Position = DefaultCameraPosition.CenterPosition

View File

@@ -630,3 +630,5 @@ Actors:
Location: 73,90 Location: 73,90
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -136,7 +136,7 @@ CaptureRadarDome = function()
end end
end) end)
Media.DisplayMessage("Coordinates of the Soviet tech centers discovered.") Media.DisplayMessage(UserInterface.Translate("soviet-tech-centers-discovered"))
if Difficulty == "easy" then if Difficulty == "easy" then
Actor.Create("Camera", true, { Owner = player, Location = Weapcam.Location }) Actor.Create("Camera", true, { Owner = player, Location = Weapcam.Location })
@@ -151,13 +151,13 @@ InfiltrateTechCenter = function()
return return
end end
infiltrated = true infiltrated = true
DestroySovietsObj = player.AddObjective("Destroy all Soviet buildings and units in the area.") DestroySovietsObj = AddPrimaryObjective(player, "destroy-soviet-buildings-units")
player.MarkCompletedObjective(InfiltrateTechCenterObj) player.MarkCompletedObjective(InfiltrateTechCenterObj)
end) end)
Trigger.OnCapture(a, function() Trigger.OnCapture(a, function()
if not infiltrated then if not infiltrated then
Media.DisplayMessage("Do not capture the tech centers! Infiltrate one with a spy.") Media.DisplayMessage(UserInterface.Translate("dont-capture-tech-centers"))
end end
end) end)
end) end)
@@ -185,8 +185,8 @@ WorldLoaded = function()
InitObjectives(player) InitObjectives(player)
InfiltrateTechCenterObj = player.AddObjective("Infiltrate one of the Soviet tech centers with a spy.") InfiltrateTechCenterObj = AddPrimaryObjective(player, "infiltrate-tech-center-spy")
CaptureRadarDomeObj = player.AddObjective("Capture the Radar Dome at the shore.", "Secondary", false) CaptureRadarDomeObj = AddSecondaryObjective(player, "capture-radar-shore")
Camera.Position = DefaultCameraPosition.CenterPosition Camera.Position = DefaultCameraPosition.CenterPosition

View File

@@ -844,3 +844,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -114,6 +114,7 @@ StartTimerFunction = function()
end end
end end
EnemyApproaching = UserInterface.Translate("enemy-approaching")
FinishTimer = function() FinishTimer = function()
for i = 0, 5, 1 do for i = 0, 5, 1 do
local c = TimerColor local c = TimerColor
@@ -121,7 +122,7 @@ FinishTimer = function()
c = HSLColor.White c = HSLColor.White
end end
Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText("Enemy approaching", c) end) Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText(EnemyApproaching, c) end)
end end
Trigger.AfterDelay(DateTime.Seconds(6), function() UserInterface.SetMissionText("") end) Trigger.AfterDelay(DateTime.Seconds(6), function() UserInterface.SetMissionText("") end)
end end
@@ -164,7 +165,10 @@ Tick = function()
if StartTimer then if StartTimer then
if ticked > 0 then if ticked > 0 then
UserInterface.SetMissionText("Soviet armored battalion arrives in " .. Utils.FormatTime(ticked), TimerColor) if (ticked % DateTime.Seconds(1)) == 0 then
Timer = UserInterface.Translate("soviet-armored-battalion-arrives-in", { ["time"] = Utils.FormatTime(ticked) })
UserInterface.SetMissionText(Timer, TimerColor)
end
ticked = ticked - 1 ticked = ticked - 1
elseif ticked == 0 then elseif ticked == 0 then
FinishTimer() FinishTimer()
@@ -186,10 +190,10 @@ WorldLoaded = function()
Camera.Position = DefaultCameraPosition.CenterPosition Camera.Position = DefaultCameraPosition.CenterPosition
InitObjectives(greece) InitObjectives(greece)
CaptureRadarDomeObj = greece.AddObjective("Capture the Radar Dome.") CaptureRadarDomeObj = AddPrimaryObjective(greece, "capture-radar-dome")
DestroySubPens = greece.AddObjective("Destroy all Soviet Sub Pens") DestroySubPens = AddPrimaryObjective(greece, "destroy-all-soviet-sub-pens")
ClearSubActivity = greece.AddObjective("Clear the area of all sub activity", "Secondary", false) ClearSubActivity = AddSecondaryObjective(greece, "clear-area-all-subs")
BeatAllies = ussr.AddObjective("Defeat the Allied forces.") BeatAllies = AddPrimaryObjective(ussr, "")
PowerProxy = Actor.Create("powerproxy.paratroopers", false, { Owner = ussr }) PowerProxy = Actor.Create("powerproxy.paratroopers", false, { Owner = ussr })

View File

@@ -877,3 +877,5 @@ Actors:
Location: 33,62 Location: 33,62
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -82,7 +82,7 @@ DefendChronosphereCompleted = function()
units[unit] = cells[i] units[unit] = cells[i]
end end
Chronosphere.Chronoshift(units) Chronosphere.Chronoshift(units)
UserInterface.SetMissionText("The experiment is a success!", greece.Color) UserInterface.SetMissionText(UserInterface.Translate("experiment-successful"), greece.Color)
Trigger.AfterDelay(DateTime.Seconds(3), function() Trigger.AfterDelay(DateTime.Seconds(3), function()
greece.MarkCompletedObjective(DefendChronosphere) greece.MarkCompletedObjective(DefendChronosphere)
@@ -104,7 +104,10 @@ Tick = function()
end end
if ticked > 0 then if ticked > 0 then
UserInterface.SetMissionText("Chronosphere experiment completes in " .. Utils.FormatTime(ticked), TimerColor) if (ticked % DateTime.Seconds(1)) == 0 then
Timer = UserInterface.Translate("chronosphere-experiments-completes-in", { ["time"] = Utils.FormatTime(ticked) })
UserInterface.SetMissionText(Timer, TimerColor)
end
ticked = ticked - 1 ticked = ticked - 1
elseif ticked == 0 and (greece.PowerState ~= "Normal") then elseif ticked == 0 and (greece.PowerState ~= "Normal") then
greece.MarkFailedObjective(KeepBasePowered) greece.MarkFailedObjective(KeepBasePowered)
@@ -120,10 +123,10 @@ WorldLoaded = function()
germany = Player.GetPlayer("Germany") germany = Player.GetPlayer("Germany")
InitObjectives(greece) InitObjectives(greece)
DefendChronosphere = greece.AddObjective("Defend the Chronosphere and the Tech Center\nat all costs.") DefendChronosphere = AddPrimaryObjective(greece, "defend-chronosphere-tech-center")
KeepBasePowered = greece.AddObjective("The Chronosphere must have power when the\ntimer runs out.") KeepBasePowered = AddPrimaryObjective(greece, "chronosphere-needs-power")
EvacuateScientists = greece.AddObjective("Evacuate all scientists from the island to\nthe west.", "Secondary", false) EvacuateScientists = AddSecondaryObjective(greece, "evacuate-scientists-from-island")
BeatAllies = ussr.AddObjective("Defeat the Allied forces.") BeatAllies = AddPrimaryObjective(ussr, "")
Trigger.AfterDelay(DateTime.Minutes(1), function() Trigger.AfterDelay(DateTime.Minutes(1), function()
Media.PlaySpeechNotification(greece, "TwentyMinutesRemaining") Media.PlaySpeechNotification(greece, "TwentyMinutesRemaining")

View File

@@ -988,3 +988,5 @@ Actors:
Location: 58,86 Location: 58,86
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -82,7 +82,7 @@ DefendChronosphereCompleted = function()
units[unit] = cells[i] units[unit] = cells[i]
end end
Chronosphere.Chronoshift(units) Chronosphere.Chronoshift(units)
UserInterface.SetMissionText("The experiment is a success!", greece.Color) UserInterface.SetMissionText(UserInterface.Translate("experiment-successful"), greece.Color)
Trigger.AfterDelay(DateTime.Seconds(3), function() Trigger.AfterDelay(DateTime.Seconds(3), function()
greece.MarkCompletedObjective(DefendChronosphere) greece.MarkCompletedObjective(DefendChronosphere)
@@ -104,7 +104,10 @@ Tick = function()
end end
if ticked > 0 then if ticked > 0 then
UserInterface.SetMissionText("Chronosphere experiment completes in " .. Utils.FormatTime(ticked), TimerColor) if (ticked % DateTime.Seconds(1)) == 0 then
Timer = UserInterface.Translate("chronosphere-experiments-completes-in", { ["time"] = Utils.FormatTime(ticked) })
UserInterface.SetMissionText(Timer, TimerColor)
end
ticked = ticked - 1 ticked = ticked - 1
elseif ticked == 0 and (greece.PowerState ~= "Normal") then elseif ticked == 0 and (greece.PowerState ~= "Normal") then
greece.MarkFailedObjective(KeepBasePowered) greece.MarkFailedObjective(KeepBasePowered)
@@ -120,10 +123,10 @@ WorldLoaded = function()
england = Player.GetPlayer("England") england = Player.GetPlayer("England")
InitObjectives(greece) InitObjectives(greece)
DefendChronosphere = greece.AddObjective("Defend the Chronosphere and the Tech Center\nat all costs.") DefendChronosphere = AddPrimaryObjective(greece, "defend-chronosphere-tech-center")
KeepBasePowered = greece.AddObjective("The Chronosphere must have power when the\ntimer runs out.") KeepBasePowered = AddPrimaryObjective(greece, "chronosphere-needs-power")
EvacuateScientists = greece.AddObjective("Evacuate all scientists from the island to\nthe east.", "Secondary", false) EvacuateScientists = AddSecondaryObjective(greece, "evacuate-scientists-from-island")
BeatAllies = ussr.AddObjective("Defeat the Allied forces.") BeatAllies = AddPrimaryObjective(ussr, "")
Trigger.AfterDelay(DateTime.Minutes(1), function() Trigger.AfterDelay(DateTime.Minutes(1), function()
Media.PlaySpeechNotification(greece, "TwentyMinutesRemaining") Media.PlaySpeechNotification(greece, "TwentyMinutesRemaining")

View File

@@ -827,3 +827,5 @@ Actors:
Location: 72,60 Location: 72,60
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -50,7 +50,7 @@ CreateKosygin = function()
Media.PlaySpeechNotification(Greece, "ObjectiveMet") Media.PlaySpeechNotification(Greece, "ObjectiveMet")
local kosygin = Actor.Create(KosyginType, true, { Location = KosyginSpawnPoint.Location, Owner = Greece }) local kosygin = Actor.Create(KosyginType, true, { Location = KosyginSpawnPoint.Location, Owner = Greece })
Trigger.OnKilled(kosygin, RescueFailed) Trigger.OnKilled(kosygin, RescueFailed)
ExtractObjective = Greece.AddObjective("Extract Kosygin and\nget him back to your base.") ExtractObjective = AddPrimaryObjective(Greece, "extract-kosygin")
Trigger.AfterDelay(DateTime.Seconds(1), function() Media.PlaySpeechNotification(Greece, "TargetFreed") end) Trigger.AfterDelay(DateTime.Seconds(1), function() Media.PlaySpeechNotification(Greece, "TargetFreed") end)
end end
@@ -161,9 +161,9 @@ WorldLoaded = function()
USSR = Player.GetPlayer("USSR") USSR = Player.GetPlayer("USSR")
Camera.Position = DefaultCameraPosition.CenterPosition Camera.Position = DefaultCameraPosition.CenterPosition
InitObjectives(Greece) InitObjectives(Greece)
UseSpyObjective = Greece.AddObjective("Infiltrate the Soviet command center and\ncontact Kosygin.") UseSpyObjective = AddPrimaryObjective(Greece, "infiltrate-soviet-command-center-contact-kosygin")
KosyginSurviveObjective = Greece.AddObjective("Kosygin must survive.") KosyginSurviveObjective = AddPrimaryObjective(Greece, "kosygin-must-survive")
USSRObj = USSR.AddObjective("Eliminate all Allied forces.") USSRObj = AddPrimaryObjective(USSR, "")
InitialAlliedReinforcements() InitialAlliedReinforcements()
InfiltrateForwardCenter() InfiltrateForwardCenter()
InitialSovietPatrols() InitialSovietPatrols()

View File

@@ -973,3 +973,5 @@ Actors:
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Weapons: weapons.yaml Weapons: weapons.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -60,7 +60,7 @@ MissionTriggers = function()
Trigger.OnTimerExpired(function() Trigger.OnTimerExpired(function()
DateTime.TimeLimit = 0 DateTime.TimeLimit = 0
Trigger.AfterDelay(1, function() UserInterface.SetMissionText("We're too late!", USSR.Color) end) Trigger.AfterDelay(1, function() UserInterface.SetMissionText(UserInterface.Translate("we-are-too-late"), USSR.Color) end)
USSR.MarkCompletedObjective(HoldOut) USSR.MarkCompletedObjective(HoldOut)
end) end)
@@ -99,7 +99,7 @@ LaunchMissiles = function()
MissileSilo1.ActivateNukePower(CPos.New(127, 127)) MissileSilo1.ActivateNukePower(CPos.New(127, 127))
Trigger.AfterDelay(DateTime.Seconds(3), function() Trigger.AfterDelay(DateTime.Seconds(3), function()
Media.DisplayMessage("INCOMING TRANSMISSION", "LANDCOM 16") Media.DisplayMessage(UserInterface.Translate("incoming-transmission-capitalized"), UserInterface.Translate("landcom-16-capitalized"))
Media.PlaySpeechNotification(Greece, "AbombLaunchDetected") Media.PlaySpeechNotification(Greece, "AbombLaunchDetected")
MissileSilo2.ActivateNukePower(CPos.New(127, 127)) MissileSilo2.ActivateNukePower(CPos.New(127, 127))
end) end)
@@ -120,13 +120,13 @@ LaunchMissiles = function()
-- Completing immediately indicates that the FMV is not available -- Completing immediately indicates that the FMV is not available
-- Fall back to a text message -- Fall back to a text message
if fmvStart == DateTime.GameTime then if fmvStart == DateTime.GameTime then
Media.DisplayMessage("Commander, we're tracking four missiles. They must be deactivated! We are scrambling a team to assult the missile control bunker. Clear the way and capture the enemy command center. Hurry!", "LANDCOM 16") Media.DisplayMessage(UserInterface.Translate("deactivate-four-missiles"), UserInterface.Translate("landcom-16-capitalized"))
end end
end) end)
end) end)
Trigger.AfterDelay(DateTime.Seconds(9), function() Trigger.AfterDelay(DateTime.Seconds(9), function()
CaptureFCom = Greece.AddObjective("Capture the enemy Command Center. Hurry!") CaptureFCom = AddPrimaryObjective(Greece, "capture-enemy-command-center")
DateTime.TimeLimit = TimerTicks DateTime.TimeLimit = TimerTicks
Media.PlaySpeechNotification(Greece, "TimerStarted") Media.PlaySpeechNotification(Greece, "TimerStarted")
Greece.MarkCompletedObjective(ApproachBase) Greece.MarkCompletedObjective(ApproachBase)
@@ -162,8 +162,8 @@ WorldLoaded = function()
InitObjectives(Greece) InitObjectives(Greece)
HoldOut = USSR.AddObjective("Hold out until missiles reach their destination") HoldOut = AddPrimaryObjective(USSR, "")
ApproachBase = Greece.AddObjective("Find a way to take the atomic weapons off-line.") ApproachBase = AddPrimaryObjective(Greece, "disable-atomic-weapons")
Camera.Position = DefaultCameraPosition.CenterPosition Camera.Position = DefaultCameraPosition.CenterPosition
StandardDrop = Actor.Create("paradrop", false, { Owner = USSR }) StandardDrop = Actor.Create("paradrop", false, { Owner = USSR })

View File

@@ -1616,3 +1616,5 @@ Actors:
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Weapons: weapons.yaml Weapons: weapons.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -34,13 +34,14 @@ SendInsertionHelicopter = function()
Reinforcements.ReinforceWithTransport(Allies, InsertionHelicopterType, ChopperTeam, InsertionPath, { waypoint4.Location }) Reinforcements.ReinforceWithTransport(Allies, InsertionHelicopterType, ChopperTeam, InsertionPath, { waypoint4.Location })
end end
AlliedForcesHaveArrived = UserInterface.Translate("allied-forces-have-arrived")
FinishTimer = function() FinishTimer = function()
for i = 0, 9, 1 do for i = 0, 9, 1 do
local c = TimerColor local c = TimerColor
if i % 2 == 0 then if i % 2 == 0 then
c = HSLColor.White c = HSLColor.White
end end
Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText("Allied forces have arrived!", c) end) Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText(AlliedForcesHaveArrived, c) end)
end end
Trigger.AfterDelay(DateTime.Seconds(10), function() UserInterface.SetMissionText("") end) Trigger.AfterDelay(DateTime.Seconds(10), function() UserInterface.SetMissionText("") end)
end end
@@ -59,7 +60,7 @@ DiscoveredAlliedBase = function(actor, discoverer)
--Need to delay this so we don't fail mission before obj added --Need to delay this so we don't fail mission before obj added
Trigger.AfterDelay(DateTime.Seconds(1), function() Trigger.AfterDelay(DateTime.Seconds(1), function()
SurviveObjective = Allies.AddObjective("Defend outpost until reinforcements arrive.") SurviveObjective = AddPrimaryObjective(Allies, "defend-outpost-until-reinforcements-arrive")
SetupTimeNotifications() SetupTimeNotifications()
Trigger.OnAllRemovedFromWorld(AlliedBase, function() Trigger.OnAllRemovedFromWorld(AlliedBase, function()
Allies.MarkFailedObjective(SurviveObjective) Allies.MarkFailedObjective(SurviveObjective)
@@ -122,7 +123,10 @@ Tick = function()
end end
ticks = ticks - 1; ticks = ticks - 1;
UserInterface.SetMissionText("Reinforcements arrive in " .. Utils.FormatTime(ticks), TimerColor) if (ticks % DateTime.Seconds(1)) == 0 then
Timer = UserInterface.Translate("reinforcements-arrive-in", { ["time"] = Utils.FormatTime(ticks) })
UserInterface.SetMissionText(Timer, TimerColor)
end
else else
if not AtEndGame then if not AtEndGame then
Media.PlaySpeechNotification(Allies, "SecondObjectiveMet") Media.PlaySpeechNotification(Allies, "SecondObjectiveMet")
@@ -140,7 +144,7 @@ end
AddObjectives = function() AddObjectives = function()
InitObjectives(Allies) InitObjectives(Allies)
DiscoverObjective = Allies.AddObjective("Find the outpost.") DiscoverObjective = AddPrimaryObjective(Allies, "find-outpost")
Utils.Do(AlliedBase, function(actor) Utils.Do(AlliedBase, function(actor)
Trigger.OnEnteredProximityTrigger(actor.CenterPosition, WDist.FromCells(8), function(discoverer, id) Trigger.OnEnteredProximityTrigger(actor.CenterPosition, WDist.FromCells(8), function(discoverer, id)

View File

@@ -596,3 +596,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, rules.yaml, ra|rules/campaign-palettes.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, rules.yaml, ra|rules/campaign-palettes.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -94,9 +94,9 @@ WorldLoaded = function()
InitObjectives(Spain) InitObjectives(Spain)
EatSpain = BadGuy.AddObjective("For the Swarm!") EatSpain = AddPrimaryObjective(BadGuy, "")
GasNests = Spain.AddObjective("Gas every ant nest.") GasNests = AddPrimaryObjective(Spain, "gas-every-ant-nest")
KillAll = Spain.AddObjective("Kill every ant lurking above ground.") KillAll = AddPrimaryObjective(Spain, "kill-every-ant-above-ground")
Camera.Position = DefaultCameraPosition.CenterPosition Camera.Position = DefaultCameraPosition.CenterPosition
Start() Start()

View File

@@ -669,3 +669,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -188,7 +188,11 @@ Tick = function()
end end
if allies2.IsLocalPlayer and DateTime.GameTime <= ReinforcementsDelay then if allies2.IsLocalPlayer and DateTime.GameTime <= ReinforcementsDelay then
UserInterface.SetMissionText("Allied reinforcements arrive in " .. Utils.FormatTime(ReinforcementsDelay - DateTime.GameTime)) if DateTime.GameTime % DateTime.Seconds(1) == 0 then
local time = Utils.FormatTime(ReinforcementsDelay - DateTime.GameTime)
local timer = UserInterface.Translate("allied-reinforcements-arrive-in", { ["time"] = time })
UserInterface.SetMissionText(timer)
end
else else
UserInterface.SetMissionText("") UserInterface.SetMissionText("")
end end
@@ -234,7 +238,7 @@ SetupTriggers = function()
Trigger.OnAllKilledOrCaptured(Sams, function() Trigger.OnAllKilledOrCaptured(Sams, function()
allies1.MarkCompletedObjective(objDestroySamSites) allies1.MarkCompletedObjective(objDestroySamSites)
objExtractEinstein = allies1.AddObjective("Wait for a helicopter at the LZ and extract Einstein.") objExtractEinstein = AddPrimaryObjective(allies1, "wait-for-helicopter-extract-einstein")
Actor.Create("flare", true, { Owner = allies1, Location = ExtractionLZ.Location + CVec.New(1, -1) }) Actor.Create("flare", true, { Owner = allies1, Location = ExtractionLZ.Location + CVec.New(1, -1) })
Beacon.New(allies1, ExtractionLZ.CenterPosition) Beacon.New(allies1, ExtractionLZ.CenterPosition)
Media.PlaySpeechNotification(allies1, "SignalFlareNorth") Media.PlaySpeechNotification(allies1, "SignalFlareNorth")
@@ -263,7 +267,7 @@ SetupTriggers = function()
ReassignActors(TownUnits, neutral, allies1) ReassignActors(TownUnits, neutral, allies1)
Utils.Do(TownUnits, function(a) a.Stance = "Defend" end) Utils.Do(TownUnits, function(a) a.Stance = "Defend" end)
allies1.MarkCompletedObjective(objFindEinstein) allies1.MarkCompletedObjective(objFindEinstein)
objEinsteinSurvival = allies1.AddObjective("Keep Einstein alive at all costs.") objEinsteinSurvival = AddPrimaryObjective(allies1, "keep-einstein-alive-at-all-costs")
Trigger.OnKilled(Einstein, function() Trigger.OnKilled(Einstein, function()
allies1.MarkFailedObjective(objEinsteinSurvival) allies1.MarkFailedObjective(objEinsteinSurvival)
end) end)
@@ -292,7 +296,7 @@ SpawnTanya = function()
if Difficulty ~= "easy" and allies1.IsLocalPlayer then if Difficulty ~= "easy" and allies1.IsLocalPlayer then
Trigger.AfterDelay(DateTime.Seconds(2), function() Trigger.AfterDelay(DateTime.Seconds(2), function()
Media.DisplayMessage("According to the rules of engagement I need your explicit orders to fire, Commander!", "Tanya") Media.DisplayMessage(UserInterface.Translate("tanya-rules-of-engagement"), UserInterface.Translate("tanya"))
end) end)
end end
end end
@@ -339,13 +343,14 @@ WorldLoaded = function()
ReassignActors(Map.ActorsInWorld, allies, allies2) ReassignActors(Map.ActorsInWorld, allies, allies2)
SpawnTanya() SpawnTanya()
objTanyaMustSurvive = allies1.AddObjective("Tanya must survive.") objTanyaMustSurvive = AddPrimaryObjective(allies1, "tanya-survive")
objFindEinstein = allies1.AddObjective("Find Einstein's crashed helicopter.") objFindEinstein = AddPrimaryObjective(allies1, "find-einstein-crashed-helicopter")
objDestroySamSites = allies1.AddObjective("Destroy the SAM sites.") objDestroySamSites = AddPrimaryObjective(allies1, "destroy-sam-sites")
objHoldPosition = allies2.AddObjective("Hold your position and protect the base.") objHoldPosition = AddPrimaryObjective(allies2, "hold-position-protect-base")
objLimitLosses = allies2.AddObjective("Do not lose more than " .. DeathThreshold[Difficulty] .. " units.", "Secondary", false) local dontLoseMoreThan = UserInterface.Translate("keep-civilians-alive", { ["units"] = DeathThreshold[Difficulty] })
objCutSovietPower = allies2.AddObjective("Take out the Soviet power grid.", "Secondary", false) objLimitLosses = AddSecondaryObjective(allies2, dontLoseMoreThan)
objCutSovietPower = AddSecondaryObjective(allies2, "take-out-the-soviet-power-grid")
SetupTriggers() SetupTriggers()
SetupSoviets() SetupSoviets()

View File

@@ -1756,3 +1756,5 @@ Actors:
ScriptTags: TownAttacker ScriptTags: TownAttacker
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, ra|rules/coop-missions-rules.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, ra|rules/coop-missions-rules.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -229,6 +229,12 @@ ManageSovietAircraft = function()
end end
end end
SetEvacuateMissionText = function()
local attributes = { ["evacuated"] = UnitsEvacuated, ["threshold"] = unitsEvacuatedThreshold }
local unitsEvacuated = UserInterface.Translate("units-evacuated", attributes)
UserInterface.SetMissionText(unitsEvacuated, TextColor)
end
UnitsEvacuated = 0 UnitsEvacuated = 0
EvacuateAlliedUnit = function(unit) EvacuateAlliedUnit = function(unit)
if (unit.Owner == allies1 or unit.Owner == allies2) and unit.HasProperty("Move") then if (unit.Owner == allies1 or unit.Owner == allies2) and unit.HasProperty("Move") then
@@ -258,7 +264,7 @@ EvacuateAlliedUnit = function(unit)
a.Destroy() a.Destroy()
end) end)
UserInterface.SetMissionText(UnitsEvacuated .. "/" .. unitsEvacuatedThreshold .. " units evacuated.", TextColor) SetEvacuateMissionText()
if UnitsEvacuated >= unitsEvacuatedThreshold then if UnitsEvacuated >= unitsEvacuatedThreshold then
Utils.Do(humans, function(player) Utils.Do(humans, function(player)
@@ -301,12 +307,12 @@ WorldLoaded = function()
end) end)
unitsEvacuatedThreshold = UnitsEvacuatedThreshold[Difficulty] unitsEvacuatedThreshold = UnitsEvacuatedThreshold[Difficulty]
UserInterface.SetMissionText(UnitsEvacuated .. "/" .. unitsEvacuatedThreshold .. " units evacuated.", TextColor) SetEvacuateMissionText()
Utils.Do(humans, function(player) Utils.Do(humans, function(player)
if player then if player then
evacuateUnits = player.AddObjective("Evacuate " .. unitsEvacuatedThreshold .. " units.") evacuateUnits = AddPrimaryObjective(player, UserInterface.Translate("evacuate-units", { ["threshold"] = unitsEvacuatedThreshold }))
destroyAirbases = player.AddObjective("Destroy the nearby Soviet airbases.", "Secondary", false) destroyAirbases = AddSecondaryObjective(player, "destroy-nearby-soviet-airbases")
evacuateMgg = player.AddObjective("Evacuate at least one mobile gap generator.", "Secondary", false) evacuateMgg = AddSecondaryObjective(player, "evacuate-at-least-one-gap-generator")
end end
end) end)
@@ -318,7 +324,7 @@ WorldLoaded = function()
end) end)
end) end)
sovietObjective = soviets.AddObjective("Eradicate all allied troops.") sovietObjective = AddPrimaryObjective(soviets, "")
if not allies2 or allies1.IsLocalPlayer then if not allies2 or allies1.IsLocalPlayer then
Camera.Position = Allies1EntryPoint.CenterPosition Camera.Position = Allies1EntryPoint.CenterPosition
@@ -328,7 +334,7 @@ WorldLoaded = function()
if not allies2 then if not allies2 then
allies1.Cash = 10000 allies1.Cash = 10000
Media.DisplayMessage("Transferring funds.", "Co-Commander is missing") Media.DisplayMessage(UserInterface.Translate("transferring-funds"), UserInterface.Translate("co-commander-missing"))
end end
SpawnAlliedUnit(MobileConstructionVehicle) SpawnAlliedUnit(MobileConstructionVehicle)

View File

@@ -1383,3 +1383,5 @@ Actors:
Location: 130,45 Location: 130,45
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, ra|rules/coop-missions-rules.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, ra|rules/coop-missions-rules.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -1308,3 +1308,5 @@ Actors:
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Weapons: weapons.yaml Weapons: weapons.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -79,7 +79,7 @@ MissionStart = function()
end) end)
end) end)
Trigger.AfterDelay(DateTime.Seconds(6), function() Trigger.AfterDelay(DateTime.Seconds(6), function()
Media.DisplayMessage("Commander, there are several civilians in the area.\nWe'll need you to call out targets.", "Tanya") Media.DisplayMessage(UserInterface.Translate("civilians-manual-targetting"), UserInterface.Translate("tanya"))
end) end)
end end
end) end)
@@ -184,7 +184,7 @@ FootprintTriggers = function()
foot5Triggered = true foot5Triggered = true
Media.PlaySoundNotification(Allies, "AlertBleep") Media.PlaySoundNotification(Allies, "AlertBleep")
Media.DisplayMessage("Alfa Niner this is Lima One Six. Be advised, Soviet aircraft and armor moving into your AO.", "Headquarters") Media.DisplayMessage(UserInterface.Translate("soviet-aircraft-armor-moving-in"), UserInterface.Translate("headquarters"))
Utils.Do(Trigger5Team, function(actor) Utils.Do(Trigger5Team, function(actor)
if not actor.IsDead then if not actor.IsDead then
actor.AttackMove(TacticalNuke1.Location) actor.AttackMove(TacticalNuke1.Location)
@@ -205,7 +205,7 @@ FootprintTriggers = function()
Trigger.AfterDelay(DateTime.Seconds(20), function() Trigger.AfterDelay(DateTime.Seconds(20), function()
Media.PlaySoundNotification(Allies, "AlertBuzzer") Media.PlaySoundNotification(Allies, "AlertBuzzer")
Media.DisplayMessage("Extraction point is compromised. Evacuate the base!", "Headquarters") Media.DisplayMessage(UserInterface.Translate("extraction-point-compromised-evacuate-base"), UserInterface.Translate("headquarters"))
local defenders = Reinforcements.Reinforce(England, TentTeam, { Tent.Location, TentMove.Location }, 0) local defenders = Reinforcements.Reinforce(England, TentTeam, { Tent.Location, TentMove.Location }, 0)
Utils.Do(defenders, IdleHunt) Utils.Do(defenders, IdleHunt)
if Difficulty == "hard" then if Difficulty == "hard" then
@@ -230,7 +230,7 @@ FootprintTriggers = function()
end) end)
Trigger.AfterDelay(DateTime.Seconds(50), function() Trigger.AfterDelay(DateTime.Seconds(50), function()
Media.DisplayMessage("We've set up a new extraction point to the Northwest.", "Headquarters") Media.DisplayMessage(UserInterface.Translate("new-extraction-point-northwest"), UserInterface.Translate("headquarters"))
end) end)
end end
end) end)
@@ -362,7 +362,7 @@ FootprintTriggers = function()
foot12Triggered = true foot12Triggered = true
Media.PlaySoundNotification(Allies, "AlertBleep") Media.PlaySoundNotification(Allies, "AlertBleep")
Media.DisplayMessage("Stalin will pay for what he has done today!\nI will bury him with my own hands!", "Stavros") Media.DisplayMessage(UserInterface.Translate("stalin-will-pay"), UserInterface.Translate("stavros"))
end end
end) end)
end end
@@ -492,9 +492,9 @@ WorldLoaded = function()
InitObjectives(Allies) InitObjectives(Allies)
SovietObj = USSR.AddObjective("Kill Stavros.") SovietObj = AddPrimaryObjective(USSR, "")
ProtectVIPs = Allies.AddObjective("Keep Stavros and Tanya alive.") ProtectVIPs = AddPrimaryObjective(Allies, "keep-stavros-tanya-alive")
ExtractStavros = Allies.AddObjective("Get Stavros and Tanya to the extraction helicopter.") ExtractStavros = AddPrimaryObjective(Allies, "get-tanya-stavros-helicopter")
InsertionDrop = Actor.Create("insertiondrop", false, { Owner = Allies }) InsertionDrop = Actor.Create("insertiondrop", false, { Owner = Allies })
InsertionDropHard = Actor.Create("insertiondrophard", false, { Owner = Allies }) InsertionDropHard = Actor.Create("insertiondrophard", false, { Owner = Allies })

View File

@@ -177,6 +177,12 @@ VillageSetup = function()
end) end)
end end
SetCivilianEvacuatedText = function()
local attributes = { ["evacuated"] = CiviliansEvacuated, ["threshold"] = CiviliansEvacuatedThreshold }
local civiliansEvacuated = UserInterface.Translate("civilians-evacuated", attributes)
UserInterface.SetMissionText(civiliansEvacuated, TextColor)
end
CiviliansEvacuatedThreshold = CiviliansEvacuatedThreshold =
{ {
hard = 20, hard = 20,
@@ -194,7 +200,7 @@ CiviliansKilled = 0
EvacuateCivilians = function() EvacuateCivilians = function()
Trigger.OnInfiltrated(SafeHouse, function() Trigger.OnInfiltrated(SafeHouse, function()
CiviliansEvacuated = CiviliansEvacuated + 1 CiviliansEvacuated = CiviliansEvacuated + 1
UserInterface.SetMissionText(CiviliansEvacuated .. "/" .. CiviliansEvacuatedThreshold .. " civilians evacuated.", TextColor) SetCivilianEvacuatedText()
end) end)
Trigger.OnKilled(SafeHouse, function() Trigger.OnKilled(SafeHouse, function()
@@ -209,7 +215,7 @@ EvacuateCivilians = function()
Trigger.OnAllKilled(enemyBase, function() Trigger.OnAllKilled(enemyBase, function()
Media.PlaySoundNotification(Allies, "AlertBleep") Media.PlaySoundNotification(Allies, "AlertBleep")
Media.DisplayMessage("Alfa Niner this is Pegasus. We are on site and ready to assist with the evacuation.", "Chinook pilot") Media.DisplayMessage(UserInterface.Translate("chinook-assist-evacuation"), UserInterface.Translate("chinook-pilot"))
Reinforcements.Reinforce(Allies, { "tran" }, { ChinookEntry.Location, ChinookLZ.Location }) Reinforcements.Reinforce(Allies, { "tran" }, { ChinookEntry.Location, ChinookLZ.Location })
end) end)
end end
@@ -236,20 +242,20 @@ WorldLoaded = function()
InitObjectives(Allies) InitObjectives(Allies)
if Difficulty == "easy" then if Difficulty == "easy" then
RescueCivilians = Allies.AddObjective("Evacuate at least half of the civilians to the island\nshelter.") RescueCivilians = AddPrimaryObjective(Allies, "rescue-civlians-island-shelter-easy")
elseif Difficulty == "normal" then elseif Difficulty == "normal" then
RescueCivilians = Allies.AddObjective("Evacuate at least three quarters of the civilians to\nthe island shelter.") RescueCivilians = AddPrimaryObjective(Allies, "rescue-civlians-island-shelter-normal")
else else
RescueCivilians = Allies.AddObjective("Evacuate all civilians to the island shelter.") RescueCivilians = AddPrimaryObjective(Allies, "rescue-civlians-island-shelter-hard")
end end
ClearWaterway = Allies.AddObjective("Clear the area of enemy submarine activity.", "Secondary", false) ClearWaterway = AddSecondaryObjective(Allies, "clear-enemy-submarines")
SovietObj = USSR.AddObjective("Defeat Allies.") SovietObj = AddPrimaryObjective(USSR, "")
CiviliansEvacuatedThreshold = CiviliansEvacuatedThreshold[Difficulty] CiviliansEvacuatedThreshold = CiviliansEvacuatedThreshold[Difficulty]
CiviliansKilledThreshold = CiviliansKilledThreshold[Difficulty] CiviliansKilledThreshold = CiviliansKilledThreshold[Difficulty]
TextColor = Allies.Color TextColor = Allies.Color
UserInterface.SetMissionText(CiviliansEvacuated .. "/" .. CiviliansEvacuatedThreshold .. " civilians evacuated.", TextColor) SetCivilianEvacuatedText()
StandardDrop = Actor.Create("paradrop", false, { Owner = USSR }) StandardDrop = Actor.Create("paradrop", false, { Owner = USSR })
FlamerDrop = Actor.Create("flamerdrop", false, { Owner = USSR }) FlamerDrop = Actor.Create("flamerdrop", false, { Owner = USSR })
Camera.Position = DefaultCameraPosition.CenterPosition Camera.Position = DefaultCameraPosition.CenterPosition

View File

@@ -1044,3 +1044,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -167,7 +167,7 @@ SendWave = function()
end end
Trigger.AfterDelay(DateTime.Minutes(1), SovietsRetreating) Trigger.AfterDelay(DateTime.Minutes(1), SovietsRetreating)
Media.DisplayMessage("You almost survived the onslaught! No more waves incoming.") Media.DisplayMessage(UserInterface.Translate("no-more-waves"))
end end
end) end)
end end
@@ -220,7 +220,7 @@ WorldLoaded = function()
end end
end end
Media.DisplayMessage("Defend Fort Lonestar at all costs!") Media.DisplayMessage(UserInterface.Translate("defend-fort-lonestar"))
SetupWallOwners() SetupWallOwners()

View File

@@ -468,3 +468,5 @@ Weapons: weapons.yaml
Sequences: sequences.yaml Sequences: sequences.yaml
Music: music.yaml Music: music.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -88,7 +88,7 @@ AlliedReinforcements = function()
Trigger.OnAllKilled(houseSquad, function() Trigger.OnAllKilled(houseSquad, function()
if not AlliesHouse.IsDead then if not AlliesHouse.IsDead then
Media.PlaySoundNotification(Greece, "AlertBleep") Media.PlaySoundNotification(Greece, "AlertBleep")
Media.DisplayMessage("Friendlies coming out!", "Medic") Media.DisplayMessage(UserInterface.Translate("friendlies-coming-out"), UserInterface.Translate("medic"))
Reinforcements.Reinforce(Greece, AlliedHouseSquad, { VillageSpawnAllies.Location, VillageRally.Location }, 0) Reinforcements.Reinforce(Greece, AlliedHouseSquad, { VillageSpawnAllies.Location, VillageRally.Location }, 0)
end end
end) end)
@@ -183,7 +183,7 @@ AlliedReinforcements = function()
Trigger.AfterDelay(DateTime.Seconds(5), function() Trigger.AfterDelay(DateTime.Seconds(5), function()
Media.PlaySpeechNotification(Greece, "ReinforcementsArrived") Media.PlaySpeechNotification(Greece, "ReinforcementsArrived")
Media.DisplayMessage("Commander, we're detecting Soviet transports headed your way. Get those scientists back to the extraction point in the southeast!", "LANDCOM 16") Media.DisplayMessage(UserInterface.Translate("get-scientists-evacuation-point"), UserInterface.Translate("landcom-16-capitalized"))
local northTeam = Reinforcements.ReinforceWithTransport(Greece, "lst.reinforcement", NorthWaterTeam, NorthWaterPath1, { NorthWaterPath1[1] }) local northTeam = Reinforcements.ReinforceWithTransport(Greece, "lst.reinforcement", NorthWaterTeam, NorthWaterPath1, { NorthWaterPath1[1] })
end) end)
@@ -323,7 +323,7 @@ LoseTriggers = function()
Trigger.OnKilled(ForwardCommand, function() Trigger.OnKilled(ForwardCommand, function()
if not ScientistsFreed then if not ScientistsFreed then
Greece.MarkFailedObjective(RescueScientists) Greece.MarkFailedObjective(RescueScientists)
Media.DisplayMessage("The scientists were in the Command Center!", "LANDCOM 16") Media.DisplayMessage(UserInterface.Translate("scientists-killed-in-command-center"), UserInterface.Translate("landcom-16-capitalized"))
end end
end) end)
@@ -343,10 +343,13 @@ Tick = function()
end end
if ticked > 0 then if ticked > 0 then
UserInterface.SetMissionText("Chronosphere explodes in " .. Utils.FormatTime(ticked), TimerColor) if (ticked % DateTime.Seconds(1)) == 0 then
Timer = UserInterface.Translate("chronosphere-explodes-in", { ["time"] = Utils.FormatTime(ticked) })
UserInterface.SetMissionText(Timer, TimerColor)
end
ticked = ticked - 1 ticked = ticked - 1
elseif ticked == 0 then elseif ticked == 0 then
UserInterface.SetMissionText("We're too late!", USSR.Color) UserInterface.SetMissionText(UserInterface.Translate("too-late"), USSR.Color)
USSR.MarkCompletedObjective(SovietObj) USSR.MarkCompletedObjective(SovietObj)
end end
end end
@@ -358,8 +361,8 @@ WorldLoaded = function()
InitObjectives(Greece) InitObjectives(Greece)
SovietObj = USSR.AddObjective("Defeat Allies.") SovietObj = AddPrimaryObjective(USSR, "")
RescueScientists = Greece.AddObjective("Rescue the scientists and escort them back to the\nextraction point.") RescueScientists = AddPrimaryObjective(Greece, "rescue-scientists-extraction-point")
Camera.Position = DefaultCameraPosition.CenterPosition Camera.Position = DefaultCameraPosition.CenterPosition
Paradrop1 = Actor.Create("paradrop1", false, { Owner = USSR }) Paradrop1 = Actor.Create("paradrop1", false, { Owner = USSR })

View File

@@ -955,3 +955,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -81,8 +81,8 @@ reinforcementsHaveArrived = false
LabInfiltrated = function() LabInfiltrated = function()
Utils.Do(humans, function(player) Utils.Do(humans, function(player)
if player then if player then
secureLab = player.AddObjective("Secure the laboratory by eliminating its guards.") secureLab = AddPrimaryObjective(player, "secure-laboratory-guards")
destroyBase = player.AddObjective("Destroy the remaining Soviet presence.") destroyBase = AddPrimaryObjective(player, "destroy-remaining-soviet-presence")
player.MarkCompletedObjective(infiltrateLab) player.MarkCompletedObjective(infiltrateLab)
Trigger.ClearAll(Lab) Trigger.ClearAll(Lab)
Trigger.AfterDelay(0, function() Trigger.AfterDelay(0, function()
@@ -172,7 +172,7 @@ end
InsertSpies = function() InsertSpies = function()
Utils.Do(humans, function(player) Utils.Do(humans, function(player)
if player then if player then
infiltrateLab = player.AddObjective("Get our spy into the laboratory undetected.") infiltrateLab = AddPrimaryObjective(player, "infiltrate-laboratory")
end end
end) end)
@@ -267,11 +267,14 @@ SecureLabTimer = function()
end end
if ticked > 0 then if ticked > 0 then
UserInterface.SetMissionText("Secure lab in: " .. Utils.FormatTime(ticked), TimerColor) if (ticked % DateTime.Seconds(1)) == 0 then
Timer = UserInterface.Translate("secure-lab-in", { ["time"] = Utils.FormatTime(ticked) })
UserInterface.SetMissionText(Timer, TimerColor)
end
ticked = ticked - 1 ticked = ticked - 1
elseif ticked <= 0 then elseif ticked <= 0 then
TimerColor = soviets.Color TimerColor = soviets.Color
UserInterface.SetMissionText("The Soviet research laboratory was not secured in time.", TimerColor) UserInterface.SetMissionText(UserInterface.Translate("soviet-research-lab-not-secured-in-time"), TimerColor)
SecureLabFailed() SecureLabFailed()
end end
end end

View File

@@ -1790,3 +1790,5 @@ Actors:
Location: 43,50 Location: 43,50
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, ra|rules/coop-missions-rules.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, ra|rules/coop-missions-rules.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -235,7 +235,11 @@ Tick = function()
player.MarkFailedObjective(villageObjective) player.MarkFailedObjective(villageObjective)
end end
UserInterface.SetMissionText(VillagePercentage .. "% of the village destroyed.", CurrentColor) if CachedVillagePercentage ~= VillagePercentage then
VillageDestroyed = UserInterface.Translate("percentage-village-destroyed", { ["percentage"] = VillagePercentage })
UserInterface.SetMissionText(VillageDestroyed, CurrentColor)
CachedVillagePercentage = VillagePercentage
end
end end
end end
@@ -245,9 +249,9 @@ WorldLoaded = function()
InitObjectives(player) InitObjectives(player)
sovietObjective = soviets.AddObjective("Destroy the village.") sovietObjective = AddPrimaryObjective(soviets, "")
villageObjective = player.AddObjective("Save the village.") villageObjective = AddPrimaryObjective(player, "save-village")
beachheadObjective = player.AddObjective("Get your MCV to the main island.") beachheadObjective = AddPrimaryObjective(player, "mcv-main-island")
beachheadTrigger = false beachheadTrigger = false
Trigger.OnExitedFootprint(BeachheadTrigger, function(a, id) Trigger.OnExitedFootprint(BeachheadTrigger, function(a, id)
@@ -256,7 +260,7 @@ WorldLoaded = function()
Trigger.RemoveFootprintTrigger(id) Trigger.RemoveFootprintTrigger(id)
player.MarkCompletedObjective(beachheadObjective) player.MarkCompletedObjective(beachheadObjective)
captureObjective = player.AddObjective("Locate and capture the enemy's Air Force HQ.") captureObjective = AddPrimaryObjective(player, "capture-air-force-hq")
if AirForceHQ.IsDead then if AirForceHQ.IsDead then
player.MarkFailedObjective(captureObjective) player.MarkFailedObjective(captureObjective)

View File

@@ -2203,3 +2203,5 @@ Actors:
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Weapons: weapons.yaml Weapons: weapons.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -2098,3 +2098,5 @@ Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/c
Weapons: weapons.yaml Weapons: weapons.yaml
Voices: voices.yaml Voices: voices.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -67,9 +67,9 @@ SetupAlliedBase = function()
AlliedBaseHarv.Owner = player AlliedBaseHarv.Owner = player
AlliedBaseHarv.FindResources() AlliedBaseHarv.FindResources()
FindDemitri = player.AddObjective("Find Dr. Demitri. He is likely hiding in the village\n to the far south.") FindDemitri = AddPrimaryObjective(player, "find-demitri")
InfiltrateRadarDome = player.AddObjective("Reprogram the super tanks by sending a spy into\n the Soviet radar dome.") InfiltrateRadarDome = AddPrimaryObjective(player, "reprogram-super-tanks")
DefendOutpost = player.AddObjective("Defend and repair our outpost.", "Secondary", false) DefendOutpost = AddSecondaryObjective(player, "defend-outpost")
player.MarkCompletedObjective(FindOutpost) player.MarkCompletedObjective(FindOutpost)
-- Don't fail the Objective instantly -- Don't fail the Objective instantly
@@ -177,7 +177,7 @@ SuperTankDomeInfiltrated = function()
Media.PlaySpeechNotification(player, "ControlCenterDeactivated") Media.PlaySpeechNotification(player, "ControlCenterDeactivated")
Trigger.AfterDelay(DateTime.Seconds(4), function() Trigger.AfterDelay(DateTime.Seconds(4), function()
Media.DisplayMessage("In 3 minutes the super tanks will self-destruct.") Media.DisplayMessage(UserInterface.Translate("super-tank-self-destruct-t-minus-3"))
Media.PlaySpeechNotification(player, "WarningThreeMinutesRemaining") Media.PlaySpeechNotification(player, "WarningThreeMinutesRemaining")
end) end)
end) end)
@@ -207,7 +207,7 @@ CreateDemitri = function()
demitri.Move(DemitriTriggerAreaCenter.Location) demitri.Move(DemitriTriggerAreaCenter.Location)
Media.PlaySpeechNotification(player, "TargetFreed") Media.PlaySpeechNotification(player, "TargetFreed")
EvacuateDemitri = player.AddObjective("Evacuate Dr. Demitri with the helicopter waiting\n at our outpost.") EvacuateDemitri = AddPrimaryObjective(player, "evacuate-demitri")
player.MarkCompletedObjective(FindDemitri) player.MarkCompletedObjective(FindDemitri)
local flarepos = CPos.New(DemitriLZ.Location.X, DemitriLZ.Location.Y - 1) local flarepos = CPos.New(DemitriLZ.Location.X, DemitriLZ.Location.Y - 1)
@@ -249,7 +249,10 @@ Tick = function()
end end
if ticked > 0 then if ticked > 0 then
UserInterface.SetMissionText("The super tanks self-destruct in " .. Utils.FormatTime(ticked), TimerColor) if (ticked % DateTime.Seconds(1)) == 0 then
Timer = UserInterface.Translate("super-tank-self-destruct-in", { ["time"] = Utils.FormatTime(ticked) })
UserInterface.SetMissionText(Timer, TimerColor)
end
ticked = ticked - 1 ticked = ticked - 1
elseif ticked == 0 then elseif ticked == 0 then
FinishTimer() FinishTimer()
@@ -264,7 +267,7 @@ FinishTimer = function()
c = HSLColor.White c = HSLColor.White
end end
Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText("The super tanks are destroyed!", c) end) Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText(UserInterface.Translate("super-tanks-destroyed"), c) end)
end end
Trigger.AfterDelay(DateTime.Seconds(10), function() UserInterface.SetMissionText("") end) Trigger.AfterDelay(DateTime.Seconds(10), function() UserInterface.SetMissionText("") end)
end end
@@ -297,15 +300,15 @@ end
AddObjectives = function() AddObjectives = function()
InitObjectives(player) InitObjectives(player)
EliminateSuperTanks = player.AddObjective("Eliminate these super tanks.") EliminateSuperTanks = AddPrimaryObjective(player, "eliminate-super-tanks")
StealMoney = player.AddObjective("Steal money from the nearby outpost with the Thief.") StealMoney = AddPrimaryObjective(player, "steal-money-outpost")
CrossRiver = player.AddObjective("Secure transport to the mainland.") CrossRiver = AddPrimaryObjective(player, "cross-river")
FindOutpost = player.AddObjective("Find our outpost and start repairs on it.") FindOutpost = AddPrimaryObjective(player, "find-outpost")
RescueCivilians = player.AddObjective("Evacuate all civilians from the hospital.", "Secondary", false) RescueCivilians = AddSecondaryObjective(player, "evacuate-civilian-hospital")
BadGuyObj = badguy.AddObjective("Deny the destruction of the super tanks.") BadGuyObj = AddPrimaryObjective(badguy, "")
USSRObj = ussr.AddObjective("Deny the destruction of the super tanks.") USSRObj = AddPrimaryObjective(ussr, "")
UkraineObj = ukraine.AddObjective("Survive.") UkraineObj = AddPrimaryObjective(ukraine, "")
TurkeyObj = turkey.AddObjective("Destroy.") TurkeyObj = AddPrimaryObjective(turkey, "")
Trigger.OnPlayerLost(player, function() Trigger.OnPlayerLost(player, function()
ussr.MarkCompletedObjective(USSRObj) ussr.MarkCompletedObjective(USSRObj)
@@ -315,7 +318,7 @@ AddObjectives = function()
end) end)
Trigger.OnPlayerWon(player, function() Trigger.OnPlayerWon(player, function()
Media.DisplayMessage("Dr. Demitri has been extracted and the super tanks have been dealt with.") Media.DisplayMessage(UserInterface.Translate("demitri-extracted-super-tanks-destroyed"))
ussr.MarkFailedObjective(USSRObj) ussr.MarkFailedObjective(USSRObj)
badguy.MarkFailedObjective(BadGuyObj) badguy.MarkFailedObjective(BadGuyObj)
ukraine.MarkFailedObjective(UkraineObj) ukraine.MarkFailedObjective(UkraineObj)

View File

@@ -648,3 +648,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -94,7 +94,7 @@ end
PowerDown = false PowerDown = false
PowerDownTeslas = function() PowerDownTeslas = function()
if not PowerDown then if not PowerDown then
CaptureDome = Greece.AddObjective("Capture the enemy radar dome.", "Secondary", false) CaptureDome = AddSecondaryObjective(Greece, "capture-enemy-radar-dome")
Greece.MarkCompletedObjective(PowerDownTeslaCoils) Greece.MarkCompletedObjective(PowerDownTeslaCoils)
Media.PlaySpeechNotification(Greece, "ReinforcementsArrived") Media.PlaySpeechNotification(Greece, "ReinforcementsArrived")
PowerDown = true PowerDown = true
@@ -167,7 +167,7 @@ end
MissileSubEscape = function() MissileSubEscape = function()
local missileSub = Actor.Create("msub", true, { Owner = USSR, Location = MissileSubSpawn.Location }) local missileSub = Actor.Create("msub", true, { Owner = USSR, Location = MissileSubSpawn.Location })
Actor.Create("camera", true, { Owner = Greece, Location = SubPath2.Location }) Actor.Create("camera", true, { Owner = Greece, Location = SubPath2.Location })
DestroySub = Greece.AddPrimaryObjective("Destroy the submarine before it escapes!.") DestroySub = AddPrimaryObjective(Greece, "destroy-escaping-submarine")
Utils.Do(SubEscapePath, function(waypoint) Utils.Do(SubEscapePath, function(waypoint)
missileSub.Move(waypoint.Location) missileSub.Move(waypoint.Location)
@@ -185,6 +185,7 @@ MissileSubEscape = function()
end) end)
end end
SubmarineEscapes = UserInterface.Translate("submarine-escapes")
FinishTimer = function() FinishTimer = function()
for i = 0, 5 do for i = 0, 5 do
local c = TimerColor local c = TimerColor
@@ -192,7 +193,7 @@ FinishTimer = function()
c = HSLColor.White c = HSLColor.White
end end
Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText("The sub is heading for open sea!", c) end) Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText(SubmarineEscapes, c) end)
end end
Trigger.AfterDelay(DateTime.Seconds(6), function() UserInterface.SetMissionText("") end) Trigger.AfterDelay(DateTime.Seconds(6), function() UserInterface.SetMissionText("") end)
end end
@@ -210,7 +211,10 @@ Tick = function()
end end
if ticked > 0 then if ticked > 0 then
UserInterface.SetMissionText("Submarine completes in " .. Utils.FormatTime(ticked), TimerColor) if (ticked % DateTime.Seconds(1)) == 0 then
Timer = UserInterface.Translate("submarine-completes-in", { ["time"] = Utils.FormatTime(ticked) })
UserInterface.SetMissionText(Timer, TimerColor)
end
ticked = ticked - 1 ticked = ticked - 1
elseif ticked == 0 and not TimerFinished then elseif ticked == 0 and not TimerFinished then
MissileSubEscape() MissileSubEscape()
@@ -223,9 +227,9 @@ WorldLoaded = function()
USSR = Player.GetPlayer("USSR") USSR = Player.GetPlayer("USSR")
BadGuy = Player.GetPlayer("BadGuy") BadGuy = Player.GetPlayer("BadGuy")
EscapeWithSub = USSR.AddObjective("Get a missile sub to open waters.") EscapeWithSub = AddPrimaryObjective(USSR, "")
StopProduction = Greece.AddObjective("Destroy the Soviet sub pen.") StopProduction = AddPrimaryObjective(Greece, "destroy-soviet-sub-pen")
PowerDownTeslaCoils = Greece.AddObjective("Take down power to the tesla coils.") PowerDownTeslaCoils = AddPrimaryObjective(Greece, "power-down-tesla-coils")
InitObjectives(Greece) InitObjectives(Greece)

View File

@@ -102,7 +102,7 @@ MoveTruckEscapeRoute = function(truck, route)
if truck.IsDead then if truck.IsDead then
return return
else else
Media.DisplayMessage("Convoy truck attempting to escape!") Media.DisplayMessage(UserInterface.Translate("convoy-truck-escaping"))
Media.PlaySoundNotification(greece, "AlertBleep") Media.PlaySoundNotification(greece, "AlertBleep")
Utils.Do(route, function(waypoint) Utils.Do(route, function(waypoint)
truck.Move(waypoint.Location) truck.Move(waypoint.Location)
@@ -139,10 +139,10 @@ WorldLoaded = function()
InitObjectives(greece) InitObjectives(greece)
objDestroyAllTrucks = greece.AddObjective("Prevent Soviet convoy trucks from escaping.") objDestroyAllTrucks = AddPrimaryObjective(greece, "prevent-soviet-trucks-escaping")
objKillAll = greece.AddObjective("Clear the sector of all Soviet presence.") objKillAll = AddPrimaryObjective(greece, "clear-sector-soviet-presence")
objRadarSpy = greece.AddObjective("Infiltrate the Soviet Radar Dome to reveal truck \necape routes.", "Secondary", false) objRadarSpy = AddSecondaryObjective(greece, "infiltrate-radar-reveal-escape-routes")
ussrObj = ussr.AddObjective("Deny the Allies.") ussrObj = ussr.AddObjective("")
ActivateAI() ActivateAI()
SetupTriggers() SetupTriggers()

View File

@@ -1010,3 +1010,5 @@ Actors:
Location: 24,58 Location: 24,58
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -73,7 +73,7 @@ ConsoleTriggers = function()
if actor.Owner == greece then if actor.Owner == greece then
Trigger.RemoveProximityTrigger(id) Trigger.RemoveProximityTrigger(id)
if not FlameTower1.IsDead then if not FlameTower1.IsDead then
Media.DisplayMessage("Flame Turret deactivated", "Console") Media.DisplayMessage(UserInterface.Translate("flame-turret-deactivated"), UserInterface.Translate("console"))
FlameTower1.Kill() FlameTower1.Kill()
end end
end end
@@ -83,7 +83,7 @@ ConsoleTriggers = function()
if actor.Owner == greece then if actor.Owner == greece then
Trigger.RemoveProximityTrigger(id) Trigger.RemoveProximityTrigger(id)
if not FlameTower2.IsDead then if not FlameTower2.IsDead then
Media.DisplayMessage("Flame Turret deactivated", "Console") Media.DisplayMessage(UserInterface.Translate("flame-turret-deactivated"), UserInterface.Translate("console"))
FlameTower2.Kill() FlameTower2.Kill()
end end
end end
@@ -93,7 +93,7 @@ ConsoleTriggers = function()
if actor.Owner == greece then if actor.Owner == greece then
Trigger.RemoveProximityTrigger(id) Trigger.RemoveProximityTrigger(id)
if not FlameTower3.IsDead then if not FlameTower3.IsDead then
Media.DisplayMessage("Flame Turret deactivated", "Console") Media.DisplayMessage(UserInterface.Translate("flame-turret-deactivated"), UserInterface.Translate("console"))
FlameTower3.Kill() FlameTower3.Kill()
end end
end end
@@ -105,7 +105,7 @@ ConsoleTriggers = function()
Trigger.RemoveProximityTrigger(id) Trigger.RemoveProximityTrigger(id)
gasActive = true gasActive = true
Media.DisplayMessage("Sarin Nerve Gas dispensers activated", "Console") Media.DisplayMessage(UserInterface.Translate("sarin-dispenser-activated"), UserInterface.Translate("console"))
local KillCamera = Actor.Create("camera", true, { Owner = greece, Location = Sarin2.Location }) local KillCamera = Actor.Create("camera", true, { Owner = greece, Location = Sarin2.Location })
local flare1 = Actor.Create("flare", true, { Owner = england, Location = Sarin1.Location }) local flare1 = Actor.Create("flare", true, { Owner = england, Location = Sarin1.Location })
local flare2 = Actor.Create("flare", true, { Owner = england, Location = Sarin2.Location }) local flare2 = Actor.Create("flare", true, { Owner = england, Location = Sarin2.Location })
@@ -133,7 +133,7 @@ ConsoleTriggers = function()
if actor.Owner == greece then if actor.Owner == greece then
Trigger.RemoveProximityTrigger(id) Trigger.RemoveProximityTrigger(id)
if not BadCoil.IsDead then if not BadCoil.IsDead then
Media.DisplayMessage("Tesla Coil deactivated", "Console") Media.DisplayMessage(UserInterface.Translate("tesla-coil-deactivated"), UserInterface.Translate("console"))
BadCoil.Kill() BadCoil.Kill()
end end
end end
@@ -145,7 +145,7 @@ ConsoleTriggers = function()
Trigger.RemoveProximityTrigger(id) Trigger.RemoveProximityTrigger(id)
teslaActive = true teslaActive = true
Media.DisplayMessage("Initialising Tesla Coil defence", "Console") Media.DisplayMessage(UserInterface.Translate("tesla-coil-activated"), UserInterface.Translate("console"))
local tesla1 = Actor.Create("tsla", true, { Owner = turkey, Location = TurkeyCoil1.Location }) local tesla1 = Actor.Create("tsla", true, { Owner = turkey, Location = TurkeyCoil1.Location })
local tesla2 = Actor.Create("tsla", true, { Owner = turkey, Location = TurkeyCoil2.Location }) local tesla2 = Actor.Create("tsla", true, { Owner = turkey, Location = TurkeyCoil2.Location })
Trigger.AfterDelay(DateTime.Seconds(10), function() Trigger.AfterDelay(DateTime.Seconds(10), function()
@@ -163,11 +163,11 @@ ConsoleTriggers = function()
if actor.Owner == greece then if actor.Owner == greece then
Trigger.RemoveProximityTrigger(id) Trigger.RemoveProximityTrigger(id)
if not FlameTowerTanya1.IsDead then if not FlameTowerTanya1.IsDead then
Media.DisplayMessage("Flame Turret deactivated", "Console") Media.DisplayMessage(UserInterface.Translate("flame-turret-deactivated"), UserInterface.Translate("console"))
FlameTowerTanya1.Kill() FlameTowerTanya1.Kill()
end end
if not FlameTowerTanya2.IsDead then if not FlameTowerTanya2.IsDead then
Media.DisplayMessage("Flame Turret deactivated", "Console") Media.DisplayMessage(UserInterface.Translate("flame-turret-deactivated"), UserInterface.Translate("console"))
FlameTowerTanya2.Kill() FlameTowerTanya2.Kill()
end end
end end
@@ -177,11 +177,11 @@ ConsoleTriggers = function()
if actor.Owner == greece then if actor.Owner == greece then
Trigger.RemoveProximityTrigger(id) Trigger.RemoveProximityTrigger(id)
if not FlameTowerExit1.IsDead then if not FlameTowerExit1.IsDead then
Media.DisplayMessage("Flame Turret deactivated", "Console") Media.DisplayMessage(UserInterface.Translate("flame-turret-deactivated"), UserInterface.Translate("console"))
FlameTowerExit1.Kill() FlameTowerExit1.Kill()
end end
if not FlameTowerExit3.IsDead then if not FlameTowerExit3.IsDead then
Media.DisplayMessage("Flame Turret deactivated", "Console") Media.DisplayMessage(UserInterface.Translate("flame-turret-deactivated"), UserInterface.Translate("console"))
FlameTowerExit3.Kill() FlameTowerExit3.Kill()
end end
end end
@@ -366,7 +366,7 @@ PrisonEscape = function()
alarmed = true alarmed = true
Trigger.RemoveFootprintTrigger(id) Trigger.RemoveFootprintTrigger(id)
Media.DisplayMessage("Warning, prisoners are attempting to escape!", "Intercom") Media.DisplayMessage(UserInterface.Translate("prisoners-escaping"), UserInterface.Translate("intercom"))
Media.PlaySoundNotification(greece, "AlertBuzzer") Media.PlaySoundNotification(greece, "AlertBuzzer")
Utils.Do(GuardDogs, IdleHunt) Utils.Do(GuardDogs, IdleHunt)
end) end)
@@ -374,7 +374,7 @@ end
ScientistExecution = function() ScientistExecution = function()
Media.PlaySoundNotification(greece, "AlertBleep") Media.PlaySoundNotification(greece, "AlertBleep")
Media.DisplayMessage("The base is compromised. We have to hurry the execution!", "Soviet Officer") Media.DisplayMessage(UserInterface.Translate("hurry-base-compromised"), UserInterface.Translate("soviet-officer"))
Utils.Do(DemoTeam, function(actor) Utils.Do(DemoTeam, function(actor)
actor.AttackMove(DemoDrive2.Location) actor.AttackMove(DemoDrive2.Location)
end) end)
@@ -387,13 +387,13 @@ ScientistExecution = function()
Trigger.AfterDelay(DateTime.Seconds(7), function() Trigger.AfterDelay(DateTime.Seconds(7), function()
if not Officer2.IsDead then if not Officer2.IsDead then
Media.DisplayMessage("Prepare to Fire!", "Soviet Officer") Media.DisplayMessage(UserInterface.Translate("prepare-to-fire"), UserInterface.Translate("soviet-officer"))
end end
end) end)
Trigger.AfterDelay(DateTime.Seconds(15), function() Trigger.AfterDelay(DateTime.Seconds(15), function()
if not Officer2.IsDead then if not Officer2.IsDead then
Media.DisplayMessage("Fire!", "Soviet Officer") Media.DisplayMessage(UserInterface.Translate("fire"), UserInterface.Translate("soviet-officer"))
end end
Utils.Do(FiringSquad, function(actor) Utils.Do(FiringSquad, function(actor)
@@ -405,11 +405,11 @@ ScientistExecution = function()
end end
ScientistRescued = function() ScientistRescued = function()
Media.DisplayMessage("Thanks for the rescue!", "Scientist") Media.DisplayMessage(UserInterface.Translate("thanks-for-rescue"), UserInterface.Translate("scientist"))
Trigger.AfterDelay(DateTime.Seconds(5), function() Trigger.AfterDelay(DateTime.Seconds(5), function()
if not ScientistMan.IsDead and not DemoTruck.IsDead then if not ScientistMan.IsDead and not DemoTruck.IsDead then
Media.DisplayMessage("The Soviets have an unstable nuclear device stored here. \n I need to move it out of the facility!", "Scientist") Media.DisplayMessage(UserInterface.Translate("move-nuclear-outside"), UserInterface.Translate("scientist"))
DemoTruck.GrantCondition("mission") DemoTruck.GrantCondition("mission")
ScientistMan.EnterTransport(DemoTruck) ScientistMan.EnterTransport(DemoTruck)
end end
@@ -423,7 +423,7 @@ DemoTruckExit = function()
return return
end end
Media.DisplayMessage("I hope the exit is clear!", "Scientist") Media.DisplayMessage(UserInterface.Translate("exit-clear-hopefully"), UserInterface.Translate("scientist"))
Utils.Do(DemoTruckPath, function(waypoint) Utils.Do(DemoTruckPath, function(waypoint)
DemoTruck.Move(waypoint.Location) DemoTruck.Move(waypoint.Location)
end) end)
@@ -459,13 +459,13 @@ WorldLoaded = function()
InitObjectives(greece) InitObjectives(greece)
ussrObj = ussr.AddObjective("Defeat the Allies.") ussrObj = ussr.AddObjective("")
ExitBase = greece.AddObjective("Reach the eastern exit of the facility.") ExitBase = AddPrimaryObjective(greece, "reach-eastern-exit")
FreeTanya = greece.AddObjective("Free Tanya and keep her alive.") FreeTanya = AddPrimaryObjective(greece, "free-tanya-keep-alive")
KillVIPs = greece.AddObjective("Kill all Soviet officers and scientists.", "Secondary", false) KillVIPs = AddSecondaryObjective(greece, "kill-soviet-officers-scientists")
StealTank = greece.AddObjective("Steal a Soviet mammoth tank.", "Secondary", false) StealTank = AddSecondaryObjective(greece, "steal-soviet-mammoth-tank")
if Difficulty == "hard" then if Difficulty == "hard" then
NoCasualties = greece.AddPrimaryObjective("Do not lose a single soldier or civilian\nunder your command.") NoCasualties = AddPrimaryObjective(greece, "no-casualties")
end end
StartSpy.DisguiseAsType("e1", ussr) StartSpy.DisguiseAsType("e1", ussr)

View File

@@ -1366,3 +1366,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -72,8 +72,8 @@ MCVArrived = false
MCVArrivedTick = false MCVArrivedTick = false
PowerDownTeslas = function() PowerDownTeslas = function()
if not MCVArrived then if not MCVArrived then
CaptureSarin = Greece.AddObjective("Capture all Sarin processing plants intact.") CaptureSarin = Greece.AddObjective("capture-sarin-plants-intact")
KillBase = Greece.AddObjective("Destroy the enemy compound.") KillBase = Greece.AddObjective("destroy-enemy-compound")
Greece.MarkCompletedObjective(TakeOutPower) Greece.MarkCompletedObjective(TakeOutPower)
Media.PlaySpeechNotification(Greece, "ReinforcementsArrived") Media.PlaySpeechNotification(Greece, "ReinforcementsArrived")
Reinforcements.Reinforce(Greece, MCVReinforcements[Difficulty], { AlliesSpawn.Location, AlliesMove.Location }) Reinforcements.Reinforce(Greece, MCVReinforcements[Difficulty], { AlliesSpawn.Location, AlliesMove.Location })
@@ -121,8 +121,8 @@ WorldLoaded = function()
USSR = Player.GetPlayer("USSR") USSR = Player.GetPlayer("USSR")
BadGuy = Player.GetPlayer("BadGuy") BadGuy = Player.GetPlayer("BadGuy")
SovietObj = USSR.AddObjective("Defeat the Allies.") SovietObj = AddPrimaryObjective(USSR, "")
TakeOutPower = Greece.AddObjective("Bring down the power of the base to the east.") TakeOutPower = AddPrimaryObjective(Greece, "cut-power-east")
InitObjectives(Greece) InitObjectives(Greece)

View File

@@ -1242,3 +1242,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -996,3 +996,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -309,9 +309,9 @@ WorldLoaded = function()
InitObjectives(USSR) InitObjectives(USSR)
BeatRussia = Greece.AddObjective("Stop Ivan.") BeatRussia = AddPrimaryObjective(Greece, "")
KillAll = USSR.AddObjective("Destroy all that oppose us.") KillAll = AddPrimaryObjective(USSR, "destroy-opposition")
CaptureDome = USSR.AddObjective("Capture the enemy radar dome.", "Secondary", false) CaptureDome = AddSecondaryObjective(USSR, "capture-enemy-radar-dome")
Camera.Position = LZ.CenterPosition Camera.Position = LZ.CenterPosition
ShockDrop = Actor.Create("shockdrop", false, { Owner = USSR }) ShockDrop = Actor.Create("shockdrop", false, { Owner = USSR })

View File

@@ -204,6 +204,7 @@ BridgeTriggers = function()
end) end)
end end
FirstTrucksEntering = UserInterface.Translate("first-trucks-entering")
FinishTimer = function() FinishTimer = function()
for i = 0, 5 do for i = 0, 5 do
local c = TimerColor local c = TimerColor
@@ -211,7 +212,7 @@ FinishTimer = function()
c = HSLColor.White c = HSLColor.White
end end
Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText("The first trucks are entering your AO.", c) end) Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText(FirstTrucksEntering, c) end)
end end
Trigger.AfterDelay(DateTime.Seconds(6), function() UserInterface.SetMissionText("") end) Trigger.AfterDelay(DateTime.Seconds(6), function() UserInterface.SetMissionText("") end)
end end
@@ -220,7 +221,10 @@ ticked = TimerTicks
ConvoysSent = false ConvoysSent = false
Tick = function() Tick = function()
if ticked > 0 then if ticked > 0 then
UserInterface.SetMissionText("First trucks arrive in " .. Utils.FormatTime(ticked), TimerColor) if (ticked % DateTime.Seconds(1)) == 0 then
Timer = UserInterface.Translate("first-trucks-arrive-in", { ["time"] = Utils.FormatTime(ticked) })
UserInterface.SetMissionText(Timer, TimerColor)
end
ticked = ticked - 1 ticked = ticked - 1
elseif ticked == 0 and not ConvoysSent then elseif ticked == 0 and not ConvoysSent then
SendConvoys() SendConvoys()
@@ -236,9 +240,9 @@ WorldLoaded = function()
Allies = Player.GetPlayer("Allies") Allies = Player.GetPlayer("Allies")
USSR = Player.GetPlayer("USSR") USSR = Player.GetPlayer("USSR")
SovietObj = USSR.AddObjective("Defeat the Allies.") SovietObj = AddPrimaryObjective(USSR, "")
StopTrucks = Allies.AddObjective("Destroy all Soviet convoy trucks.") StopTrucks = AddPrimaryObjective(Allies, "destroy-soviet-convoy")
DestroyBridges = Allies.AddObjective("Destroy the nearby bridges to slow the\nconvoys down.", "Secondary", false) DestroyBridges = AddSecondaryObjective(Allies, "destroy-bridges-slow-convoy")
InitObjectives(Allies) InitObjectives(Allies)

View File

@@ -670,3 +670,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -1016,3 +1016,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -56,8 +56,8 @@ WorldLoaded = function()
InitObjectives(Allies) InitObjectives(Allies)
SovietObj = USSR.AddObjective("Stop the Allies") SovietObj = AddPrimaryObjective(USSR, "")
DestroyAll = Allies.AddObjective("Destroy all Soviet units and structures.") DestroyAll = AddPrimaryObjective(Allies, "destroy-soviet-units-infrastructure")
Camera.Position = DefaultCameraPosition.CenterPosition Camera.Position = DefaultCameraPosition.CenterPosition
PowerProxy = Actor.Create("paratroopers", false, { Owner = BadGuy }) PowerProxy = Actor.Create("paratroopers", false, { Owner = BadGuy })

View File

@@ -565,3 +565,5 @@ Actors:
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Weapons: weapons.yaml Weapons: weapons.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -90,7 +90,7 @@ SetupTriggers = function()
end) end)
Trigger.OnInfiltrated(BioLab, function() Trigger.OnInfiltrated(BioLab, function()
Media.DisplayMessage("Plans stolen; erasing all data.", "Scientist") Media.DisplayMessage("plans-stolen-erase-data", "scientist")
Trigger.AfterDelay(DateTime.Seconds(5), function() Trigger.AfterDelay(DateTime.Seconds(5), function()
USSR.MarkCompletedObjective(InfiltrateLab) USSR.MarkCompletedObjective(InfiltrateLab)
LabInfiltrated = true LabInfiltrated = true
@@ -137,7 +137,7 @@ SendInVolkov = function()
USSR.MarkFailedObjective(VolkovSurvive) USSR.MarkFailedObjective(VolkovSurvive)
end) end)
Trigger.OnAddedToWorld(teamVolkov[1], function(a) Trigger.OnAddedToWorld(teamVolkov[1], function(a)
Media.DisplayMessage("IFF software update failed. Require manual target input.", "Volkov") Media.DisplayMessage(UserInterface.Translate("software-update-failed-manual-targets"), UserInterface.Translate("volkov"))
end) end)
Trigger.OnAddedToWorld(teamVolkov[2], function(b) Trigger.OnAddedToWorld(teamVolkov[2], function(b)
@@ -157,10 +157,13 @@ Tick = function()
end end
if ticked > 0 then if ticked > 0 then
UserInterface.SetMissionText("Missiles launch in " .. Utils.FormatTime(ticked), TimerColor) if (ticked % DateTime.Seconds(1)) == 0 then
Timer = UserInterface.Translate("missiles-launch-in", { ["time"] = Utils.FormatTime(ticked) })
UserInterface.SetMissionText(Timer, TimerColor)
end
ticked = ticked - 1 ticked = ticked - 1
elseif ticked == 0 then elseif ticked == 0 then
UserInterface.SetMissionText("We're too late!", USSR.Color) UserInterface.SetMissionText(UserInterface.Translate("too-late"), USSR.Color)
Turkey.MarkCompletedObjective(LaunchMissles) Turkey.MarkCompletedObjective(LaunchMissles)
end end
end end
@@ -171,12 +174,12 @@ WorldLoaded = function()
InitObjectives(USSR) InitObjectives(USSR)
LaunchMissles = Turkey.AddObjective("Survive until time expires.") LaunchMissles = AddPrimaryObjective(Turkey, "")
KillPower = USSR.AddObjective("Bring the base to low power. Volkov will arrive\nonce the defenses are down.") KillPower = AddPrimaryObjective(USSR, "kill-power")
InfiltrateLab = USSR.AddObjective("Infiltrate the bio-weapons lab with the scientist.") InfiltrateLab = AddPrimaryObjective(USSR, "infiltrate-bio-weapons-lab-scientist")
DestroyFacility = USSR.AddObjective("Destroy the bio-weapons lab and missile silos.") DestroyFacility = AddPrimaryObjective(USSR, "destroy-bio-weapons-lab-missile-silos")
KillSams = USSR.AddObjective("Destroy all sam sites on the island.\nOur strategic bombers will finish the rest.", "Secondary", false) KillSams = AddSecondaryObjective(USSR, "destroy-all-sam-sites-strategic-bombers")
VolkovSurvive = USSR.AddObjective("Volkov must survive.") VolkovSurvive = AddPrimaryObjective(USSR, "volkov-survive")
Trigger.AfterDelay(DateTime.Minutes(3), function() Trigger.AfterDelay(DateTime.Minutes(3), function()
Media.PlaySpeechNotification(USSR, "WarningFiveMinutesRemaining") Media.PlaySpeechNotification(USSR, "WarningFiveMinutesRemaining")

View File

@@ -588,3 +588,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -74,7 +74,7 @@ WorldLoaded = function()
InitObjectives(player) InitObjectives(player)
VillageRaidObjective = player.AddObjective("Raze the village.") VillageRaidObjective = AddPrimaryObjective(player, "raze-village")
Trigger.OnAllRemovedFromWorld(Airfields, function() Trigger.OnAllRemovedFromWorld(Airfields, function()
player.MarkFailedObjective(VillageRaidObjective) player.MarkFailedObjective(VillageRaidObjective)

View File

@@ -512,3 +512,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -52,8 +52,8 @@ WorldLoaded = function()
InitObjectives(player) InitObjectives(player)
CommandCenterIntact = player.AddObjective("Protect the Command Center.") CommandCenterIntact = AddPrimaryObjective(player, "protect-command-center")
DestroyAllAllied = player.AddObjective("Destroy all Allied units and structures.") DestroyAllAllied = AddPrimaryObjective(player, "destroy-allied-units-structures")
Camera.Position = CameraWaypoint.CenterPosition Camera.Position = CameraWaypoint.CenterPosition

View File

@@ -491,3 +491,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -180,9 +180,9 @@ WorldLoaded = function()
end) end)
InitObjectives(player) InitObjectives(player)
alliedObjective = enemy.AddObjective("Destroy all Soviet troops.") alliedObjective = AddPrimaryObjective(enemy, "")
sovietObjective1 = player.AddObjective("Protect the Command Center.") sovietObjective1 = AddPrimaryObjective(player, "protect-command-center")
sovietObjective2 = player.AddObjective("Destroy all Allied units and structures.") sovietObjective2 = AddPrimaryObjective(player, "destroy-allied-units-structures")
enemy.Resources = 2000 enemy.Resources = 2000
Trigger.AfterDelay(DateTime.Seconds(30), ProduceInfantry) Trigger.AfterDelay(DateTime.Seconds(30), ProduceInfantry)

View File

@@ -1053,3 +1053,5 @@ Actors:
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Notifications: notifications.yaml Notifications: notifications.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -340,10 +340,10 @@ WorldLoaded = function()
IntroSequence() IntroSequence()
InitObjectives(player) InitObjectives(player)
alliedObjective = enemy.AddObjective("Destroy all Soviet troops.") alliedObjective = AddPrimaryObjective(enemy, "")
sovietObjective1 = player.AddObjective("Kill the enemy spy.") sovietObjective1 = AddPrimaryObjective(player, "kill-enemy-spy")
sovietObjective2 = player.AddObjective("Clear the nearby farm for reinforcements.", "Secondary", false) sovietObjective2 = AddSecondaryObjective(player, "clear-farm-reinforcements")
sovietObjective3 = player.AddObjective("Scavenge the civilian buildings for supplies.", "Secondary", false) sovietObjective3 = AddSecondaryObjective(player, "scavenge-civilian-buildings")
end end
Trigger.OnKilled(TheSpy, function() Trigger.OnKilled(TheSpy, function()
@@ -371,7 +371,10 @@ Tick = function()
Media.PlaySpeechNotification(player, "WarningOneMinuteRemaining") Media.PlaySpeechNotification(player, "WarningOneMinuteRemaining")
end end
if remainingTime > 0 and timerstarted then if remainingTime > 0 and timerstarted then
UserInterface.SetMissionText("Time Remaining: " .. Utils.FormatTime(remainingTime), player.Color) if (remainingTime % DateTime.Seconds(1)) == 0 then
Timer = UserInterface.Translate("time-remaining", { ["time"] = Utils.FormatTime(remainingTime) })
UserInterface.SetMissionText(Timer, player.Color)
end
remainingTime = remainingTime - 1 remainingTime = remainingTime - 1
elseif remainingTime == 0 and not spyReachedHideout4 then elseif remainingTime == 0 and not spyReachedHideout4 then
UserInterface.SetMissionText("") UserInterface.SetMissionText("")

View File

@@ -599,3 +599,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -134,9 +134,9 @@ WorldLoaded = function()
InitObjectives(player) InitObjectives(player)
KillAll = player.AddObjective("Defeat the Allied forces.") KillAll = AddPrimaryObjective(player, "defeat-allied-forces")
BeatUSSR = Greece.AddObjective("Defeat the Soviet forces.") BeatUSSR = AddPrimaryObjective(Greece, "")
KillRadar = player.AddObjective("Destroy Allied Radar Dome to stop enemy\nreinforcements.", "Secondary", false) KillRadar = AddSecondaryObjective(player, "destroy-radar-dome-reinforcements")
Trigger.OnKilled(RadarDome, function() Trigger.OnKilled(RadarDome, function()
player.MarkCompletedObjective(KillRadar) player.MarkCompletedObjective(KillRadar)

View File

@@ -648,3 +648,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -119,9 +119,9 @@ WorldLoaded = function()
InitObjectives(player) InitObjectives(player)
KillAll = player.AddObjective("Defeat the Allied forces.") KillAll = AddPrimaryObjective(player, "defeat-allied-forces")
BeatUSSR = Greece.AddObjective("Defeat the Soviet forces.") BeatUSSR = AddPrimaryObjective(Greece, "")
KillRadar = player.AddObjective("Destroy Allied Radar Dome to stop enemy\nreinforcements.", "Secondary", false) KillRadar = AddSecondaryObjective(player, "destroy-radar-dome-reinforcements")
Trigger.OnKilled(RadarDome, function() Trigger.OnKilled(RadarDome, function()
player.MarkCompletedObjective(KillRadar) player.MarkCompletedObjective(KillRadar)

View File

@@ -587,3 +587,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -82,7 +82,7 @@ Expand = function()
ExpansionCheck = true ExpansionCheck = true
Trigger.ClearAll(mcvGG) Trigger.ClearAll(mcvGG)
Trigger.ClearAll(mcvtransport) Trigger.ClearAll(mcvtransport)
Media.DisplayMessage("Allied MCV detected moving to the island.") Media.DisplayMessage(UserInterface.Translate("allied-mcv-island"))
Reinforcements.Reinforce(GoodGuy, { "dd", "dd" }, ShipArrivePath, 0, function(ddsquad) Reinforcements.Reinforce(GoodGuy, { "dd", "dd" }, ShipArrivePath, 0, function(ddsquad)
ddsquad.AttackMove(NearExpPoint.Location) end) ddsquad.AttackMove(NearExpPoint.Location) end)
@@ -188,9 +188,9 @@ WorldLoaded = function()
InitObjectives(player) InitObjectives(player)
CaptureObjective = player.AddObjective("Capture the Radar Dome.") CaptureObjective = AddPrimaryObjective(player, "capture-radar-dome")
KillAll = player.AddObjective("Defeat the Allied forces.") KillAll = AddPrimaryObjective(player, "defeat-allied-forces")
BeatUSSR = GoodGuy.AddObjective("Defeat the Soviet forces.") BeatUSSR = AddPrimaryObjective(Greece, "")
RunInitialActivities() RunInitialActivities()
@@ -214,15 +214,15 @@ WorldLoaded = function()
return return
end end
HoldObjective = player.AddObjective("Defend the Radar Dome.") HoldObjective = AddPrimaryObjective(player, "defend-radar-dome")
player.MarkCompletedObjective(CaptureObjective) player.MarkCompletedObjective(CaptureObjective)
Beacon.New(player, MCVDeploy.CenterPosition) Beacon.New(player, MCVDeploy.CenterPosition)
if Difficulty == "easy" then if Difficulty == "easy" then
Actor.Create("camera", true, { Owner = player, Location = MCVDeploy.Location }) Actor.Create("camera", true, { Owner = player, Location = MCVDeploy.Location })
Media.DisplayMessage("Movement of an Allied expansion base discovered.") Media.DisplayMessage(UserInterface.Translate("allied-expansion-movement-detected"))
else else
Actor.Create("MCV.CAM", true, { Owner = player, Location = MCVDeploy.Location }) Actor.Create("MCV.CAM", true, { Owner = player, Location = MCVDeploy.Location })
Media.DisplayMessage("Coordinates of an Allied expansion base discovered.") Media.DisplayMessage(UserInterface.Translate("coordinates-allied-expansion-discovered"))
end end
if not ExpansionCheck then if not ExpansionCheck then

View File

@@ -827,3 +827,5 @@ Actors:
Owner: Greece Owner: Greece
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -137,10 +137,10 @@ WorldLoaded = function()
InitObjectives(player) InitObjectives(player)
alliedObjective = enemy.AddObjective("Destroy all Soviet troops.") alliedObjective = AddPrimaryObjective(enemy, "")
sovietObjective = player.AddObjective("Escort the Convoy.") sovietObjective = AddPrimaryObjective(player, "escort-convoy")
sovietObjective2 = player.AddObjective("Destroy or capture the Allied radar dome to stop\nenemy reinforcements.", "Secondary", false) sovietObjective2 = AddSecondaryObjective(player, "destroy-capture-radar-dome-reinforcements")
SaveAllTrucks = player.AddObjective("Keep all trucks alive.", "Secondary", false) SaveAllTrucks = AddSecondaryObjective(player, "Keep all trucks alive.")
end end
Tick = function() Tick = function()

View File

@@ -504,3 +504,5 @@ Actors:
Owner: Greece Owner: Greece
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -101,10 +101,10 @@ WorldLoaded = function()
end) end)
InitObjectives(player) InitObjectives(player)
alliedObjective = enemy.AddObjective("Destroy all Soviet troops.") alliedObjective = AddPrimaryObjective(enemy, "")
sovietObjective = player.AddObjective("Escort the Convoy.") sovietObjective = AddPrimaryObjective(player, "escort-convoy")
sovietObjective2 = player.AddObjective("Destroy or capture the Allied radar dome to stop\nenemy reinforcements.", "Secondary", false) sovietObjective2 = AddSecondaryObjective(player, "destroy-capture-radar-dome-reinforcements")
SaveAllTrucks = player.AddObjective("Keep all trucks alive.", "Secondary", false) SaveAllTrucks = AddSecondaryObjective(player, "Keep all trucks alive.")
end end
Tick = function() Tick = function()

View File

@@ -794,3 +794,5 @@ Actors:
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Weapons: weapons.yaml Weapons: weapons.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -278,13 +278,13 @@ WorldLoaded = function()
IntroSequence() IntroSequence()
InitObjectives(player) InitObjectives(player)
alliedObjective = enemy.AddObjective("Destroy all Soviet troops.") alliedObjective = AddPrimaryObjective(enemy, "")
sovietObjective1 = player.AddObjective("Deactivate the security system.") sovietObjective1 = AddPrimaryObjective(player, "deactivate-security-system")
sovietObjective2 = player.AddObjective("Rescue the engineers.") sovietObjective2 = AddPrimaryObjective(player, "rescue-engineers")
sovietObjective3 = player.AddObjective("Get the engineers to the coolant stations.") sovietObjective3 = AddPrimaryObjective(player, "engineers-coolant-station")
sovietObjective4 = player.AddObjective("Use an Engineer to reprogram the security system.") sovietObjective4 = AddPrimaryObjective(player, "engineer-reprogram-security")
sovietObjective5 = player.AddObjective("Get an Engineer to the reactor core.") sovietObjective5 = AddPrimaryObjective(player, "engineer-reactor-core")
sovietObjective6 = player.AddObjective("Free the dogs.", "Secondary", false) sovietObjective6 = AddSecondaryObjective(player, "free-dogs")
end end
Tick = function() Tick = function()
@@ -309,7 +309,10 @@ Tick = function()
end end
if remainingTime > 0 and timerStarted then if remainingTime > 0 and timerStarted then
UserInterface.SetMissionText("Time until Meltdown: " .. Utils.FormatTime(remainingTime), player.Color) if (remainingTime % DateTime.Seconds(1)) == 0 then
Timer = UserInterface.Translate("time-until-meltdown", { ["time"] = Utils.FormatTime(remainingTime) })
UserInterface.SetMissionText(Timer, player.Color)
end
remainingTime = remainingTime - 1 remainingTime = remainingTime - 1
elseif remainingTime == 0 then elseif remainingTime == 0 then
UserInterface.SetMissionText("") UserInterface.SetMissionText("")

View File

@@ -1068,3 +1068,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -121,9 +121,9 @@ WorldLoaded = function()
InitObjectives(USSR) InitObjectives(USSR)
KillAll = USSR.AddObjective("Destroy all Allied units and structures.") KillAll = AddPrimaryObjective(USSR, "destroy-allied-units-structures")
DestroyVillageObjective = USSR.AddObjective("Destroy the village of Allied sympathizers.", "Secondary", false) DestroyVillageObjective = AddSecondaryObjective(USSR, "destroy-allied-sympathizers-village")
BeatUSSR = Greece.AddObjective("Defeat the Soviet forces.") BeatUSSR = AddPrimaryObjective(Greece, "")
AddEastReinforcementTrigger() AddEastReinforcementTrigger()
AddSouthReinforcementTrigger() AddSouthReinforcementTrigger()

View File

@@ -890,3 +890,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -121,9 +121,9 @@ WorldLoaded = function()
InitObjectives(USSR) InitObjectives(USSR)
KillAll = USSR.AddObjective("Destroy all Allied units and structures.") KillAll = AddPrimaryObjective(USSR, "destroy-allied-units-structures")
DestroyVillageObjective = USSR.AddObjective("Destroy the village of Allied sympathizers.", "Secondary", false) DestroyVillageObjective = AddSecondaryObjective(USSR, "destroy-allied-sympathizers-village")
BeatUSSR = Greece.AddObjective("Defeat the Soviet forces.") BeatUSSR = AddPrimaryObjective(Greece, "")
FirstReinforcementTrigger() FirstReinforcementTrigger()
SecondReinforcementTrigger() SecondReinforcementTrigger()

View File

@@ -1496,3 +1496,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -24,7 +24,7 @@ MissionStart = function()
end) end)
Trigger.AfterDelay(DateTime.Seconds(45), function() Trigger.AfterDelay(DateTime.Seconds(45), function()
Media.DisplayMessage("Commander, the truck has stopped at a nearby allied base.\nAllied radio intercepts say the truck has orders to flee the battlefield\nif any Soviet units approach the base.") Media.DisplayMessage(UserInterface.Translate("trucks-stopped-near-allied-base"))
end) end)
Trigger.OnKilled(StolenTruck, function() Trigger.OnKilled(StolenTruck, function()
@@ -40,7 +40,7 @@ end
Trigger.OnEnteredProximityTrigger(TruckAlarm.CenterPosition, WDist.FromCells(11), function(actor, triggerflee) Trigger.OnEnteredProximityTrigger(TruckAlarm.CenterPosition, WDist.FromCells(11), function(actor, triggerflee)
if actor.Owner == USSR and actor.Type ~= "badr" and actor.Type ~= "u2" and actor.Type ~= "camera.spyplane" then if actor.Owner == USSR and actor.Type ~= "badr" and actor.Type ~= "u2" and actor.Type ~= "camera.spyplane" then
Trigger.RemoveProximityTrigger(triggerflee) Trigger.RemoveProximityTrigger(triggerflee)
Media.DisplayMessage("The convoy truck is attempting to escape!") Media.DisplayMessage(UserInterface.Translate("convoy-truck-escaping"))
EscapeCamera = Actor.Create("camera", true, { Owner = USSR, Location = TruckAlarm.Location }) EscapeCamera = Actor.Create("camera", true, { Owner = USSR, Location = TruckAlarm.Location })
Media.PlaySoundNotification(USSR, "AlertBleep") Media.PlaySoundNotification(USSR, "AlertBleep")
Utils.Do(TruckEscape, function(waypoint) Utils.Do(TruckEscape, function(waypoint)
@@ -79,8 +79,8 @@ WorldLoaded = function()
InitObjectives(USSR) InitObjectives(USSR)
DestroyTruck = USSR.AddObjective("Destroy the stolen convoy truck.\nDo not let it escape.") DestroyTruck = AddPrimaryObjective(USSR, "destroy-stolen-convoy-truck")
DefendCommand = USSR.AddObjective("Defend our forward command center.") DefendCommand = AddPrimaryObjective(USSR, "defend-forward-command-center")
Camera.Position = DefaultCameraPosition.CenterPosition Camera.Position = DefaultCameraPosition.CenterPosition

View File

@@ -1132,3 +1132,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -237,7 +237,7 @@ end
RunForIt = function() RunForIt = function()
Running = true Running = true
Media.PlaySoundNotification(USSR, "AlertBleep") Media.PlaySoundNotification(USSR, "AlertBleep")
Media.DisplayMessage("RUN FOR IT!", "Convoy commander") Media.DisplayMessage(UserInterface.Translate("run-for-it"), UserInterface.Translate("convoy-commander"))
Utils.Do(Trucks, function(truck) Utils.Do(Trucks, function(truck)
if not truck.IsDead then if not truck.IsDead then
truck.Stop() truck.Stop()
@@ -274,6 +274,7 @@ StartTimerFunction = function()
end) end)
end end
WeAreSurrounded = UserInterface.Translate("we-are-surrounded")
FinishTimer = function() FinishTimer = function()
for i = 0, 5, 1 do for i = 0, 5, 1 do
local c = TimerColor local c = TimerColor
@@ -281,7 +282,7 @@ FinishTimer = function()
c = HSLColor.White c = HSLColor.White
end end
Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText("We're surrounded!", c) end) Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText(WeAreSurrounded, c) end)
end end
Trigger.AfterDelay(DateTime.Seconds(6), function() UserInterface.SetMissionText("") end) Trigger.AfterDelay(DateTime.Seconds(6), function() UserInterface.SetMissionText("") end)
end end
@@ -289,7 +290,10 @@ end
Tick = function() Tick = function()
if StartTimer then if StartTimer then
if ticked > 0 then if ticked > 0 then
UserInterface.SetMissionText("Corridor closes in " .. Utils.FormatTime(ticked), TimerColor) if (ticked % DateTime.Seconds(1)) == 0 then
Timer = UserInterface.Translate("corridor-closes-in", { ["time"] = Utils.FormatTime(ticked) })
UserInterface.SetMissionText(Timer, TimerColor)
end
ticked = ticked - 1 ticked = ticked - 1
elseif ticked == 0 then elseif ticked == 0 then
FinishTimer() FinishTimer()
@@ -310,10 +314,10 @@ WorldLoaded = function()
InitObjectives(USSR) InitObjectives(USSR)
EscortTrucks = USSR.AddObjective("Escort the convoy through the mountain pass.") EscortTrucks = AddPrimaryObjective(USSR, "escort-convoy-mountain-pass")
ProtectEveryTruck = USSR.AddObjective("Do not lose a single truck.", "Secondary", false) ProtectEveryTruck = AddSecondaryObjective(USSR, "protect-every-truck")
SaveMigs = USSR.AddObjective("Do not squander any of our new MiG aircraft.", "Secondary", false) SaveMigs = AddSecondaryObjective(USSR, "save-migs")
BeatUSSR = Greece.AddObjective("Defeat the Soviet forces.") BeatUSSR = AddPrimaryObjective(Greece, "")
ConvoyEscort = ConvoyEscort[Difficulty] ConvoyEscort = ConvoyEscort[Difficulty]
StartTimerDelay = StartTimerDelay[Difficulty] StartTimerDelay = StartTimerDelay[Difficulty]

View File

@@ -910,3 +910,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

View File

@@ -34,8 +34,8 @@ WorldLoaded = function()
InitObjectives(USSR) InitObjectives(USSR)
DestroyNavalBase = USSR.AddPrimaryObjective("Destroy all Allied units and structures.") DestroyNavalBase = AddPrimaryObjective(USSR, "destroy-allied-units-structures")
BeatSoviets = Greece.AddPrimaryObjective("Destroy all Soviet troops.") BeatSoviets = AddPrimaryObjective(Greece, "")
Camera.Position = DefaultCameraPosition.CenterPosition Camera.Position = DefaultCameraPosition.CenterPosition
InitialSovietReinforcements() InitialSovietReinforcements()

View File

@@ -838,3 +838,5 @@ Actors:
Owner: Neutral Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
Translations: ra|languages/lua/en.ftl

Some files were not shown because too many files have changed in this diff Show More