diff --git a/mods/ra/maps/monster-tank-madness/map.yaml b/mods/ra/maps/monster-tank-madness/map.yaml index 3595c9c1c5..e94969accc 100644 --- a/mods/ra/maps/monster-tank-madness/map.yaml +++ b/mods/ra/maps/monster-tank-madness/map.yaml @@ -2115,6 +2115,9 @@ Rules: GenericVisibility: Enemy ShowOwnerRow: false AnnounceOnSeen: + ^TechBuilding: + Tooltip: + ShowOwnerRow: false ^Infantry: Tooltip: GenericVisibility: Enemy @@ -2160,6 +2163,8 @@ Rules: CargoType: Demitri RenderSprites: Image: DELPHI + Voiced: + VoiceSet: DemitriVoice TRAN: RevealsShroud: Range: 0c0 @@ -2406,6 +2411,22 @@ Weapons: ValidImpactTypes: Water Voices: + DemitriVoice: + Variants: + allies: .r01,.r03 + england: .r01,.r03 + france: .r01,.r03 + germany: .r01,.r03 + soviet: .r01,.r03 + russia: .r01,.r03 + ukraine: .r01,.r03 + Voices: + Select: await1,ready,report1,yessir1 + Action: ackno,affirm1,noprob,overout,ritaway,roger,ugotit + Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8 + Burned: dedman10 + Zapped: dedman6 + DisableVariants: Die, Burned, Zapped Music: diff --git a/mods/ra/maps/monster-tank-madness/monster-tank-madness.lua b/mods/ra/maps/monster-tank-madness/monster-tank-madness.lua index 525c6f076c..2249f7cf28 100644 --- a/mods/ra/maps/monster-tank-madness/monster-tank-madness.lua +++ b/mods/ra/maps/monster-tank-madness/monster-tank-madness.lua @@ -103,13 +103,26 @@ SendAlliedUnits = function() Media.PlaySpeechNotification(player, "ReinforcementsArrived") Utils.Do(AlliedUnits, function(table) Trigger.AfterDelay(table.delay, function() - Reinforcements.Reinforce(player, table.types, { StartEntryPoint.Location, StartMovePoint.Location }, 18) + local units = Reinforcements.Reinforce(player, table.types, { StartEntryPoint.Location, StartMovePoint.Location }, 18) + + Utils.Do(units, function(unit) + if unit.Type == "e6" then + Engineer = unit + Trigger.OnKilled(unit, LandingPossible) + end + end) end) end) Trigger.AfterDelay(DateTime.Seconds(1), function() InitialUnitsArrived = true end) end +LandingPossible = function() + if not beachReached and (USSRSpen.IsDead or Engineer.IsDead) and LstProduced < 1 then + player.MarkFailedObjective(CrossRiver) + end +end + SuperTankDomeInfiltrated = function() turkey.SetStance(player, "Ally") turkey.SetStance(neutral, "Ally") @@ -278,7 +291,7 @@ InitObjectives = function() end) EliminateSuperTanks = player.AddPrimaryObjective("Eliminate these super tanks.") - CrossRiver = player.AddPrimaryObjective("Find a way to transport your forces to the mainland.") + CrossRiver = player.AddPrimaryObjective("Secure transport to the mainland.") FindOutpost = player.AddPrimaryObjective("Find our outpost and start repairs on it.") RescueCivilians = player.AddSecondaryObjective("Evacuate all civilians from the hospital.") BadGuyObj = badguy.AddPrimaryObjective("Deny the destruction of the super tanks.") @@ -400,6 +413,18 @@ InitTriggers = function() end end end) + + LstProduced = 0 + Trigger.OnKilled(USSRSpen, LandingPossible) + Trigger.OnProduction(USSRSpen, function(self, produced) + if produced.Type == "lst" then + LstProduced = LstProduced + 1 + Trigger.OnKilled(produced, function() + LstProduced = LstProduced - 1 + LandingPossible() + end) + end + end) end WorldLoaded = function()