From 7812087209dbb32e671f0893c014d00db4fe9b68 Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Sat, 12 Dec 2015 16:40:49 +0100 Subject: [PATCH 01/16] Clean the yaml up and fix wrong inheritance on Fort Lonestar Fort Lonestar became unplayable when someone changed the weapon default definitions As most of its weapons try to override the defaults this resulted in two SpreadDamageWarheads (Warhead: and Warhead@1Dam:) for each weapon --- mods/ra/maps/fort-lonestar/fort-lonestar.lua | 6 - mods/ra/maps/fort-lonestar/map.yaml | 141 +++++-------------- 2 files changed, 35 insertions(+), 112 deletions(-) diff --git a/mods/ra/maps/fort-lonestar/fort-lonestar.lua b/mods/ra/maps/fort-lonestar/fort-lonestar.lua index f2df0c8962..f5fae2c9fa 100644 --- a/mods/ra/maps/fort-lonestar/fort-lonestar.lua +++ b/mods/ra/maps/fort-lonestar/fort-lonestar.lua @@ -166,12 +166,6 @@ WorldLoaded = function() players[i] = player end - Utils.Do(Snipers, function(a) - if a.Owner == soviets then - a.GrantUpgrade("unkillable") - end - end) - Media.DisplayMessage("Defend Fort Lonestar at all costs!") SendWave() diff --git a/mods/ra/maps/fort-lonestar/map.yaml b/mods/ra/maps/fort-lonestar/map.yaml index d5a03e5708..95def2ba51 100644 --- a/mods/ra/maps/fort-lonestar/map.yaml +++ b/mods/ra/maps/fort-lonestar/map.yaml @@ -502,11 +502,7 @@ Rules: -SpawnMPUnits: -MPStartLocations: WeatherOverlay: - ParticleDensityFactor: 0.0007625 - ChangingWindLevel: true - WindLevels: -5, -3, -2, 0, 2, 3, 5 WindTick: 150, 550 - InstantWindChanges: false UseSquares: false ScatterDirection: 0, 0 Gravity: 8.00, 12.00 @@ -527,8 +523,6 @@ Rules: Type: LightningStrike LuaScript: Scripts: fort-lonestar.lua - ScriptUpgradesCache: - Upgrades: unkillable FORTCRATE: Inherits: ^Crate SupportPowerCrateAction@parabombs: @@ -547,8 +541,6 @@ Rules: Units: e7 SelectionShares: 10 Player: - PlayerResources: - InitialCash: 50 ClassicProductionQueue@Infantry: BuildSpeed: 1 -EnemyWatcher: @@ -607,7 +599,6 @@ Rules: Valued: Cost: 40 Explodes: - Weapon: UnitExplodeSmall Chance: 20 E3: Buildable: @@ -635,7 +626,6 @@ Rules: Weapon: TankNapalm Recoil: 200 RecoilRecovery: 38 - LocalOffset: 0,85,0, 0,-85,0 MEDI: Buildable: Prerequisites: barracks @@ -653,25 +643,24 @@ Rules: Prerequisites: barracks Health: HP: 200 - AutoTarget: - InitialStanceAI: Defend SNIPER.soviets: Inherits: SNIPER Buildable: Prerequisites: ~disabled MustBeDestroyed: - DamageMultiplier@UNKILLABLE: - UpgradeTypes: unkillable - Modifier: 0, 0 + Targetable: + TargetTypes: Disguise + AutoTarget: + InitialStanceAI: AttackAnything RenderSprites: Image: SNIPER SPY: Buildable: - Queue: Infantry BuildPaletteOrder: 60 Prerequisites: barracks Valued: Cost: 300 + -MustBeDestroyed: FTRK: -Armament@AA: -Armament@AG: @@ -694,22 +683,17 @@ Rules: 4TNK: Health: HP: 2500 - Armor: - Type: Heavy Mobile: Speed: 56 RevealsShroud: Range: 14c0 Turreted: ROT: 1 - AttackTurreted: - PrimaryWeapon: 120mm - SecondaryWeapon: MammothTusk - PrimaryLocalOffset: -4,-5,0,0,0, 4,-5,0,0,0 - SecondaryLocalOffset: -7,2,0,0,25, 7,2,0,0,-25 - PrimaryRecoil: 8 - PrimaryRecoilRecovery: 0.7 - SecondaryRecoil: 2 + Armament@PRIMARY: + Recoil: 8 + RecoilRecovery: 0c7 + Armament@SECONDARY: + Recoil: 2 Explodes: Weapon: napalm EmptyWeapon: napalm @@ -717,29 +701,17 @@ Rules: Step: 2 Ticks: 1 HealIfBelow: 40% - DamageCooldown: 150 BADR.Bomber: - Inherits: ^Plane - AttackBomber: - Armament: - Weapon: ParaBomb Health: HP: 60 - Armor: - Type: Light Aircraft: - ROT: 5 Speed: 280 AmmoPool: Ammo: 30 - WithFacingSpriteBody: - WithShadow: - -Selectable: - -GainsExperience: Tooltip: Name: Mig Bomber - -EjectOnDeath: - AutoSelectionSize: + SpawnActorOnDeath: + Actor: MIG.Husk RenderSprites: Image: mig SILO: @@ -796,46 +768,34 @@ Weapons: 120mm: ReloadDelay: 150 Range: 10c0 - Report: cannon1.aud Burst: 6 Projectile: Bullet Speed: 204 - High: true + Blockable: false Inaccuracy: 1c682 Image: 120MM ContrailLength: 50 - Warhead: SpreadDamage + Warhead@1Dam: SpreadDamage Spread: 256 Versus: None: 75 - Wood: 75 - Light: 75 Concrete: 100 Damage: 150 - DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath - Warhead@2Smu: LeaveSmudge - SmudgeType: Crater Warhead@3Eff: CreateEffect Explosions: self_destruct MammothTusk: ReloadDelay: 300 Range: 10c0 - Report: missile6.aud - Burst: 2 ValidTargets: Ground, Air Projectile: Missile MaximumLaunchSpeed: 128 - Arm: 2 - High: true - Shadow: false - Proximity: true + Blockable: false TrailImage: smokey ContrailLength: 150 - Inaccuracy: 853 - Image: DRAGON + Inaccuracy: 0c853 ROT: 10 RangeLimit: 80 - Warhead: SpreadDamage + Warhead@1Dam: SpreadDamage Spread: 640 ValidTargets: Ground, Air Versus: @@ -845,9 +805,6 @@ Weapons: Heavy: 100 Concrete: 200 Damage: 250 - DamageTypes: Prone50Percent, TriggerProne, SmallExplosionDeath - Warhead@2Smu: LeaveSmudge - SmudgeType: Crater Warhead@3Eff: CreateEffect Explosions: nuke TankNapalm: @@ -861,8 +818,9 @@ Weapons: Speed: 426 Image: 120MM Inaccuracy: 2c512 - Trail: smokey + TrailImage: smokey ContrailLength: 2 + Blockable: false Warhead: SpreadDamage Spread: 341 ValidTargets: Ground @@ -882,11 +840,10 @@ Weapons: ParaBomb: ReloadDelay: 5 Range: 5c0 - Report: chute1.aud Projectile: GravityBomb Image: BOMBLET -OpenSequence: - Warhead: SpreadDamage + Warhead@1Dam: SpreadDamage Spread: 426 Versus: None: 125 @@ -895,8 +852,6 @@ Weapons: Concrete: 25 Damage: 200 DamageTypes: Prone50Percent, TriggerProne, FireDeath - Warhead@2Smu: LeaveSmudge - SmudgeType: Crater Warhead@3Eff: CreateEffect Explosions: napalm ImpactSounds: firebl3.aud @@ -904,28 +859,23 @@ Weapons: ReloadDelay: 10 Range: 7c5 Burst: 20 - MinRange: 3c0 -Report: Projectile: Bullet Speed: 170 - Trail: fb4 + TrailImage: fb4 Image: fb3 - High: true + Blockable: false Angle: 30 Inaccuracy: 1c682 ContrailLength: 2 - Warhead: SpreadDamage - Spread: 426 + Warhead@1Dam: SpreadDamage Versus: None: 80 Wood: 100 - Light: 60 Heavy: 75 Concrete: 35 - Damage: 10 + Damage: 20 DamageTypes: Prone50Percent, TriggerProne, FireDeath - Warhead@2Smu: LeaveSmudge - SmudgeType: Scorch Warhead@3Eff: CreateEffect Explosions: small_napalm ImpactSounds: firebl3.aud @@ -936,7 +886,7 @@ Weapons: ValidTargets: Air, Ground Projectile: Bullet Speed: 1c682 - High: true + Blockable: false Warhead: SpreadDamage Spread: 213 ValidTargets: Air, Ground @@ -955,54 +905,33 @@ Weapons: SCUD: ReloadDelay: 280 Range: 7c0 - MinRange: 3c0 - Report: missile1.aud Projectile: Bullet - Speed: 170 Arm: 10 - High: true - Shadow: false - Proximity: true - Trail: smokey - Inaccuracy: 426 - Image: V2 + TrailImage: smokey + Blockable: false + Inaccuracy: 0c426 Angle: 216 - Warhead: SpreadDamage + Warhead@1Dam: SpreadDamage Spread: 853 + Falloff: 100, 37, 14, 5, 0 Versus: None: 100 Wood: 90 Light: 80 Heavy: 70 Damage: 500 - DamageTypes: Prone50Percent, TriggerProne, SmallExplosionDeath - Warhead@2Smu: LeaveSmudge - SmudgeType: Crater + AffectsParent: true Warhead@3Eff: CreateEffect Explosions: nuke ImpactSounds: kaboom1.aud - ValidImpactTypes: Ground - Warhead@4Eff: CreateEffect - Explosions: large_splash - ImpactSounds: kaboom1.aud - ValidImpactTypes: Water SilencedPPK: - ReloadDelay: 80 Range: 25c0 - Report: silppk.aud - Projectile: Bullet - Speed: 1c682 - Warhead: SpreadDamage - Spread: 128 + ValidTargets: Infantry, Tank, Vehicle, Husk + InvalidTargets: Water, Structure, Wall + Warhead@1Dam: SpreadDamage + ValidTargets: Infantry, Tank, Vehicle, Husk Versus: - Wood: 0 - Light: 0 Heavy: 50 - Concrete: 0 - Damage: 150 - DamageTypes: Prone50Percent, TriggerProne, BulletDeath - Warhead@2Eff: CreateEffect - Explosions: piffs Voices: From 1818c362da80cbc3191c553af2d80504a71ba7ef Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Mon, 7 Dec 2015 17:00:43 +0100 Subject: [PATCH 02/16] Clean fort-lonestar.lua up --- mods/ra/maps/fort-lonestar/fort-lonestar.lua | 129 ++++--------------- 1 file changed, 28 insertions(+), 101 deletions(-) diff --git a/mods/ra/maps/fort-lonestar/fort-lonestar.lua b/mods/ra/maps/fort-lonestar/fort-lonestar.lua index f5fae2c9fa..aebf81631f 100644 --- a/mods/ra/maps/fort-lonestar/fort-lonestar.lua +++ b/mods/ra/maps/fort-lonestar/fort-lonestar.lua @@ -8,98 +8,27 @@ Boss = { "4tnk" } SovietEntryPoints = { Entry1, Entry2, Entry3, Entry4, Entry5, Entry6, Entry7, Entry8 } PatrolWaypoints = { Entry2, Entry4, Entry6, Entry8 } ParadropWaypoints = { Paradrop1, Paradrop2, Paradrop3, Paradrop4 } -OilDerricks = { OilDerrick1, OilDerrick2, OilDerrick3, OilDerrick4 } SpawnPoints = { Spawn1, Spawn2, Spawn3, Spawn4 } Snipers = { Sniper1, Sniper2, Sniper3, Sniper4, Sniper5, Sniper6, Sniper7, Sniper8, Sniper9, Sniper10, Sniper11, Sniper12 } Wave = 0 Waves = { - { delay = 500, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - - { delay = 750, entries = PatrolWaypoints, units = Patrol, targets = ParadropWaypoints }, - - { delay = 750, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Vehicles, targets = SpawnPoints }, - - { delay = 1500, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - - { delay = 1500, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Vehicles, targets = SpawnPoints }, - - { delay = 1500, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Tank, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Vehicles, targets = SpawnPoints }, - - { delay = 1500, entries = SovietEntryPoints, Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Tank, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Tank, targets = SpawnPoints }, - - { delay = 1500, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = LongRange, targets = SpawnPoints }, - - { delay = 1500, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = LongRange, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Tank, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = LongRange, targets = SpawnPoints }, - - { delay = 1500, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = LongRange, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = LongRange, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Tank, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Tank, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Vehicles, targets = SpawnPoints }, - - { delay = 1500, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Infantry, targets = SpawnPoints }, - { delay = 1, entries = SovietEntryPoints, units = Boss, targets = SpawnPoints } + { delay = 500, units = { Infantry } }, + { delay = 750, units = { Patrol } }, + { delay = 750, units = { Infantry, Infantry, Vehicles }, }, + { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry } }, + { delay = 1500, units = { Infantry, Infantry, Infantry, Vehicles } }, + { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry, Tank, Vehicles } }, + { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry, Tank, Tank } }, + { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, LongRange } }, + { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, LongRange, Tank, LongRange } }, + { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, LongRange, LongRange, Tank, Tank, Vehicles } }, + { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Boss } } } -SendUnits = function(entryCell, unitTypes, interval, targetCell) - Reinforcements.Reinforce(soviets, unitTypes, { entryCell }, interval, function(a) +SendUnits = function(entryCell, unitTypes, targetCell) + Reinforcements.Reinforce(soviets, unitTypes, { entryCell }, 40, function(a) Trigger.OnIdle(a, function(a) if a.Location ~= targetCell then a.AttackMove(targetCell) @@ -108,31 +37,29 @@ SendUnits = function(entryCell, unitTypes, interval, targetCell) end end) end) - - if (Wave < #Waves) then - SendWave() - else - Trigger.AfterDelay(DateTime.Minutes(2), SovietsRetreating) - Media.DisplayMessage("You survived the onslaught! No more waves incoming.") - end end SendWave = function() Wave = Wave + 1 local wave = Waves[Wave] - local entry = Utils.Random(wave.entries).Location - local target = Utils.Random(wave.targets).Location - Trigger.AfterDelay(wave.delay, function() - SendUnits(entry, wave.units, 40, target) + Utils.Do(wave.units, function(units) + local entry = Utils.Random(SovietEntryPoints).Location + local target = Utils.Random(SpawnPoints).Location - if not played then - played = true - Utils.Do(players, function(player) - Media.PlaySpeechNotification(player, "EnemyUnitsApproaching") - end) - Trigger.AfterDelay(DateTime.Seconds(1), function() played = false end) + SendUnits(entry, units, target) + end) + + Utils.Do(players, function(player) + Media.PlaySpeechNotification(player, "EnemyUnitsApproaching") + end) + + if (Wave < #Waves) then + SendWave() + else + Trigger.AfterDelay(DateTime.Minutes(2), SovietsRetreating) + Media.DisplayMessage("You almost survived the onslaught! No more waves incoming.") end end) end From 0f0cb206299dc03c53e4cd82f2c51ce44068ab30 Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Tue, 8 Dec 2015 22:01:34 +0100 Subject: [PATCH 03/16] Add paratroopers to Fort Lonestar --- mods/ra/maps/fort-lonestar/fort-lonestar.lua | 19 ++++++++++++++++++- mods/ra/maps/fort-lonestar/map.yaml | 3 +++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/mods/ra/maps/fort-lonestar/fort-lonestar.lua b/mods/ra/maps/fort-lonestar/fort-lonestar.lua index aebf81631f..f1ed0aa6a4 100644 --- a/mods/ra/maps/fort-lonestar/fort-lonestar.lua +++ b/mods/ra/maps/fort-lonestar/fort-lonestar.lua @@ -11,6 +11,8 @@ ParadropWaypoints = { Paradrop1, Paradrop2, Paradrop3, Paradrop4 } SpawnPoints = { Spawn1, Spawn2, Spawn3, Spawn4 } Snipers = { Sniper1, Sniper2, Sniper3, Sniper4, Sniper5, Sniper6, Sniper7, Sniper8, Sniper9, Sniper10, Sniper11, Sniper12 } +ParaChance = 30 + Wave = 0 Waves = { @@ -56,7 +58,21 @@ SendWave = function() end) if (Wave < #Waves) then - SendWave() + if Utils.RandomInteger(1, 100) < ParaChance then + local units = ParaProxy.SendParatroopers(Utils.Random(ParadropWaypoints).CenterPosition) + Utils.Do(units, function(unit) + Trigger.OnIdle(unit, function(a) + if a.IsInWorld then + a.Hunt() + end + end) + end) + + local delay = Utils.RandomInteger(DateTime.Seconds(20), DateTime.Seconds(45)) + Trigger.AfterDelay(delay, SendWave) + else + SendWave() + end else Trigger.AfterDelay(DateTime.Minutes(2), SovietsRetreating) Media.DisplayMessage("You almost survived the onslaught! No more waves incoming.") @@ -95,5 +111,6 @@ WorldLoaded = function() Media.DisplayMessage("Defend Fort Lonestar at all costs!") + ParaProxy = Actor.Create("powerproxy.paratroopers", false, { Owner = soviets }) SendWave() end diff --git a/mods/ra/maps/fort-lonestar/map.yaml b/mods/ra/maps/fort-lonestar/map.yaml index 95def2ba51..57ddfa9d42 100644 --- a/mods/ra/maps/fort-lonestar/map.yaml +++ b/mods/ra/maps/fort-lonestar/map.yaml @@ -714,6 +714,9 @@ Rules: Actor: MIG.Husk RenderSprites: Image: mig + powerproxy.paratroopers: + ParatroopersPower: + DropItems: E1,E1,E1,E1,E2,E2 SILO: Buildable: Prerequisites: ~disabled From be0903ab34ea3fc14c855987a68e43259eef7ae4 Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Sat, 12 Dec 2015 14:03:01 +0100 Subject: [PATCH 04/16] Improve crates on Fort Lonestar --- mods/ra/maps/fort-lonestar/map.yaml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/mods/ra/maps/fort-lonestar/map.yaml b/mods/ra/maps/fort-lonestar/map.yaml index 57ddfa9d42..78a3f37d56 100644 --- a/mods/ra/maps/fort-lonestar/map.yaml +++ b/mods/ra/maps/fort-lonestar/map.yaml @@ -496,8 +496,9 @@ Smudges: Rules: World: CrateSpawner: - Maximum: 1 - SpawnInterval: 2500 + InitialSpawnDelay: 0 + Maximum: 4 + SpawnInterval: 1000 CrateActors: fortcrate -SpawnMPUnits: -MPStartLocations: @@ -540,10 +541,21 @@ Rules: GiveUnitCrateAction@e7: Units: e7 SelectionShares: 10 + GrantUpgradeCrateAction@ironcurtain: + SelectionShares: 10 + Effect: invuln + Notification: ironcur9.aud + Upgrades: invulnerability + Duration: 1200 + ExplodeCrateAction@bigboom: + Weapon: SCUD + SelectionShares: 5 Player: ClassicProductionQueue@Infantry: BuildSpeed: 1 -EnemyWatcher: + ^Infantry: + Inherits@IC: ^IronCurtainable OILB: Health: HP: 3000 From 8b22f4fc7c31028640d5619f3239572308ea4cb3 Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Sat, 12 Dec 2015 14:21:20 +0100 Subject: [PATCH 05/16] Add different ProductionBars for each production queue on Fort Lonestar --- mods/ra/maps/fort-lonestar/map.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mods/ra/maps/fort-lonestar/map.yaml b/mods/ra/maps/fort-lonestar/map.yaml index 78a3f37d56..60f2a8ffe9 100644 --- a/mods/ra/maps/fort-lonestar/map.yaml +++ b/mods/ra/maps/fort-lonestar/map.yaml @@ -571,12 +571,15 @@ Rules: Health: HP: 1000 Production: - Produces: Defense, Infantry, Soldier, Dog + Produces: Infantry, Soldier, Dog, Defense -Sellable: BaseProvider: Range: 12c0 Power: Amount: 0 + ProductionBar@Defense: + ProductionType: Defense + Color: 8A8A8A FTUR: Buildable: Prerequisites: barracks From ba93269e73b16a7cb44788779640d6763347d277 Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Sat, 12 Dec 2015 14:39:41 +0100 Subject: [PATCH 06/16] Enable AllyBuildRadius and add GivesBuildableArea to the defenses on Fort Lonestar --- mods/ra/maps/fort-lonestar/map.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/ra/maps/fort-lonestar/map.yaml b/mods/ra/maps/fort-lonestar/map.yaml index 60f2a8ffe9..da3bd8fd33 100644 --- a/mods/ra/maps/fort-lonestar/map.yaml +++ b/mods/ra/maps/fort-lonestar/map.yaml @@ -23,7 +23,7 @@ Videos: Options: Fog: True Shroud: True - AllyBuildRadius: False + AllyBuildRadius: True FragileAlliances: False StartingCash: 50 TechLevel: Unrestricted @@ -587,6 +587,7 @@ Rules: Cost: 400 Power: Amount: 0 + GivesBuildableArea: PBOX: Buildable: Prerequisites: barracks @@ -598,6 +599,7 @@ Rules: Type: Heavy Power: Amount: 0 + GivesBuildableArea: DOG: Buildable: Prerequisites: barracks From 5dc91d533eb4ea68977831e65e40d59fe1713a2f Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Fri, 18 Dec 2015 22:59:04 +0100 Subject: [PATCH 07/16] Add support for sending unarmed actors as part of the waves on Fort Lonestar --- mods/ra/maps/fort-lonestar/fort-lonestar.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mods/ra/maps/fort-lonestar/fort-lonestar.lua b/mods/ra/maps/fort-lonestar/fort-lonestar.lua index f1ed0aa6a4..5a8ff0f330 100644 --- a/mods/ra/maps/fort-lonestar/fort-lonestar.lua +++ b/mods/ra/maps/fort-lonestar/fort-lonestar.lua @@ -31,6 +31,13 @@ Waves = SendUnits = function(entryCell, unitTypes, targetCell) Reinforcements.Reinforce(soviets, unitTypes, { entryCell }, 40, function(a) + if not a.HasProperty("AttackMove") then + Trigger.OnIdle(a, function(a) + a.Move(targetCell) + end) + return + end + Trigger.OnIdle(a, function(a) if a.Location ~= targetCell then a.AttackMove(targetCell) From 05c77c6df94511bfe9b394b24603516d081cb642 Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Fri, 18 Dec 2015 23:00:59 +0100 Subject: [PATCH 08/16] Add myself to the Authors of Fort Lonestar --- mods/ra/maps/fort-lonestar/map.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ra/maps/fort-lonestar/map.yaml b/mods/ra/maps/fort-lonestar/map.yaml index da3bd8fd33..44142469cb 100644 --- a/mods/ra/maps/fort-lonestar/map.yaml +++ b/mods/ra/maps/fort-lonestar/map.yaml @@ -6,7 +6,7 @@ Title: Fort Lonestar Description: Survive multiple waves of attacking enemies. -Author: Nuke'm Bro. +Author: Nuke'm Bro, abcdefg30 Tileset: TEMPERAT From 7092e81f2df997d0a7226207fd556fa989660dbc Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Fri, 18 Dec 2015 23:02:47 +0100 Subject: [PATCH 09/16] Make MECH buildable on Fort Lonestar but very expensive --- mods/ra/maps/fort-lonestar/map.yaml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/mods/ra/maps/fort-lonestar/map.yaml b/mods/ra/maps/fort-lonestar/map.yaml index 44142469cb..6da83a5a59 100644 --- a/mods/ra/maps/fort-lonestar/map.yaml +++ b/mods/ra/maps/fort-lonestar/map.yaml @@ -556,6 +556,9 @@ Rules: -EnemyWatcher: ^Infantry: Inherits@IC: ^IronCurtainable + ^Husk: + TransformOnCapture: + ForceHealthPercentage: 80 OILB: Health: HP: 3000 @@ -731,6 +734,11 @@ Rules: Actor: MIG.Husk RenderSprites: Image: mig + MECH: + Buildable: + Prerequisites: barracks + Valued: + Cost: 1500 powerproxy.paratroopers: ParatroopersPower: DropItems: E1,E1,E1,E1,E2,E2 @@ -773,9 +781,6 @@ Rules: TSLA: Buildable: Prerequisites: ~disabled - MECH: - Buildable: - Prerequisites: ~disabled HIJACKER: Buildable: Prerequisites: ~disabled From fff67d334857dac305d69163e6dd3fc250a72ab4 Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Sat, 19 Dec 2015 15:55:50 +0100 Subject: [PATCH 10/16] Add support for sending Iron Curtained units on Fort Lonestar --- mods/ra/maps/fort-lonestar/fort-lonestar.lua | 15 ++++++++++++++- mods/ra/maps/fort-lonestar/map.yaml | 2 ++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/mods/ra/maps/fort-lonestar/fort-lonestar.lua b/mods/ra/maps/fort-lonestar/fort-lonestar.lua index 5a8ff0f330..63d50e81d5 100644 --- a/mods/ra/maps/fort-lonestar/fort-lonestar.lua +++ b/mods/ra/maps/fort-lonestar/fort-lonestar.lua @@ -29,7 +29,7 @@ Waves = { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Boss } } } -SendUnits = function(entryCell, unitTypes, targetCell) +SendUnits = function(entryCell, unitTypes, targetCell, extraData) Reinforcements.Reinforce(soviets, unitTypes, { entryCell }, 40, function(a) if not a.HasProperty("AttackMove") then Trigger.OnIdle(a, function(a) @@ -45,6 +45,10 @@ SendUnits = function(entryCell, unitTypes, targetCell) a.Hunt() end end) + + if extraData == "IronCurtain" then + a.GrantTimedUpgrade("invulnerability", DateTime.Seconds(25)) + end end) end @@ -60,6 +64,15 @@ SendWave = function() SendUnits(entry, units, target) end) + if wave.ironUnits then + Utils.Do(wave.ironUnits, function(units) + local entry = Utils.Random(SovietEntryPoints).Location + local target = Utils.Random(SpawnPoints).Location + + SendUnits(entry, units, target, "IronCurtain") + end) + end + Utils.Do(players, function(player) Media.PlaySpeechNotification(player, "EnemyUnitsApproaching") end) diff --git a/mods/ra/maps/fort-lonestar/map.yaml b/mods/ra/maps/fort-lonestar/map.yaml index 6da83a5a59..fc105a1280 100644 --- a/mods/ra/maps/fort-lonestar/map.yaml +++ b/mods/ra/maps/fort-lonestar/map.yaml @@ -524,6 +524,8 @@ Rules: Type: LightningStrike LuaScript: Scripts: fort-lonestar.lua + ScriptUpgradesCache: + Upgrades: invulnerability FORTCRATE: Inherits: ^Crate SupportPowerCrateAction@parabombs: From 0b284de241f9dd325f4e817b35a8a27d3a1a06ad Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Mon, 21 Dec 2015 16:31:52 +0100 Subject: [PATCH 11/16] Fix the spawnpoint selection not working on Fort Lonestar --- mods/ra/maps/fort-lonestar/map.yaml | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/mods/ra/maps/fort-lonestar/map.yaml b/mods/ra/maps/fort-lonestar/map.yaml index fc105a1280..77dc86d13f 100644 --- a/mods/ra/maps/fort-lonestar/map.yaml +++ b/mods/ra/maps/fort-lonestar/map.yaml @@ -27,6 +27,7 @@ Options: FragileAlliances: False StartingCash: 50 TechLevel: Unrestricted + StartingUnitsClass: none ConfigurableStartingUnits: False ShortGame: False @@ -151,9 +152,6 @@ Actors: Actor73: tc05 Location: 16,34 Owner: Neutral - Actor30: tent - Location: 36,26 - Owner: Multi0 Actor84: brik Location: 35,25 Owner: Neutral @@ -373,15 +371,6 @@ Actors: Actor88: brik Location: 25,29 Owner: Neutral - Actor100: tent - Location: 27,26 - Owner: Multi3 - Actor99: tent - Location: 27,36 - Owner: Multi2 - Actor31: tent - Location: 36,36 - Owner: Multi1 Sniper1: sniper.soviets Location: 9,26 Owner: Soviets @@ -431,16 +420,16 @@ Actors: Location: 30,30 Owner: Multi3 Spawn1: mpspawn - Location: 36,28 + Location: 36,26 Owner: Neutral Spawn2: mpspawn - Location: 27,28 + Location: 27,26 Owner: Neutral Spawn3: mpspawn - Location: 27,38 + Location: 27,36 Owner: Neutral Spawn4: mpspawn - Location: 36,38 + Location: 36,36 Owner: Neutral Entry1: waypoint Location: 8,8 @@ -500,8 +489,8 @@ Rules: Maximum: 4 SpawnInterval: 1000 CrateActors: fortcrate - -SpawnMPUnits: - -MPStartLocations: + MPStartUnits@mcvonly: + BaseActor: tent WeatherOverlay: WindTick: 150, 550 UseSquares: false From 59385f9b047f6641431456a72e257db847d501d0 Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Sat, 19 Dec 2015 16:27:30 +0100 Subject: [PATCH 12/16] Add new difficulties to Fort Lonestar and try to balance them --- mods/ra/maps/fort-lonestar/fort-lonestar.lua | 94 ++++++++++++++++---- mods/ra/maps/fort-lonestar/map.yaml | 1 + 2 files changed, 78 insertions(+), 17 deletions(-) diff --git a/mods/ra/maps/fort-lonestar/fort-lonestar.lua b/mods/ra/maps/fort-lonestar/fort-lonestar.lua index 63d50e81d5..82c0b41e5a 100644 --- a/mods/ra/maps/fort-lonestar/fort-lonestar.lua +++ b/mods/ra/maps/fort-lonestar/fort-lonestar.lua @@ -1,9 +1,3 @@ -Patrol = { "e1", "e2", "e1" } -Infantry = { "e4", "e1", "e1", "e2", "e1", "e2" } -Vehicles = { "arty", "ftrk", "ftrk", "apc", "apc" } -Tank = { "3tnk" } -LongRange = { "v2rl" } -Boss = { "4tnk" } SovietEntryPoints = { Entry1, Entry2, Entry3, Entry4, Entry5, Entry6, Entry7, Entry8 } PatrolWaypoints = { Entry2, Entry4, Entry6, Entry8 } @@ -11,24 +5,76 @@ ParadropWaypoints = { Paradrop1, Paradrop2, Paradrop3, Paradrop4 } SpawnPoints = { Spawn1, Spawn2, Spawn3, Spawn4 } Snipers = { Sniper1, Sniper2, Sniper3, Sniper4, Sniper5, Sniper6, Sniper7, Sniper8, Sniper9, Sniper10, Sniper11, Sniper12 } -ParaChance = 30 +if Map.Difficulty == "Very Easy (1P)" then + ParaChance = 20 + Patrol = { "e1", "e2", "e1" } + Infantry = { "e4", "e1", "e1", "e2", "e2" } + Vehicles = { "apc" } + Tank = { "3tnk" } + LongRange = { "arty" } + Boss = { "v2rl" } + Swarm = { "shok", "shok", "shok" } +elseif Map.Difficulty == "Easy (2P)" then + ParaChance = 25 + Patrol = { "e1", "e2", "e1" } + Infantry = { "e4", "e1", "e1", "e2", "e1", "e2", "e1" } + Vehicles = { "ftrk", "apc", "arty" } + Tank = { "3tnk" } + LongRange = { "v2rl" } + Boss = { "4tnk" } + Swarm = { "shok", "shok", "shok", "shok", "ttnk" } +elseif Map.Difficulty == "Normal (3P)" then + ParaChance = 30 + Patrol = { "e1", "e2", "e1", "e1" } + Infantry = { "e4", "e1", "e1", "e2", "e1", "e2", "e1" } + Vehicles = { "ftrk", "ftrk", "apc", "arty" } + Tank = { "3tnk" } + LongRange = { "v2rl" } + Boss = { "4tnk" } + Swarm = { "shok", "shok", "shok", "shok", "ttnk", "ttnk", "ttnk" } +elseif Map.Difficulty == "Hard (4P)" then + ParaChance = 35 + Patrol = { "e1", "e2", "e1", "e1", "e4" } + Infantry = { "e4", "e1", "e1", "e2", "e1", "e2", "e1" } + Vehicles = { "arty", "ftrk", "ftrk", "apc", "apc" } + Tank = { "3tnk" } + LongRange = { "v2rl" } + Boss = { "4tnk" } + Swarm = { "shok", "shok", "shok", "shok", "shok", "ttnk", "ttnk", "ttnk", "ttnk" } +else + ParaChance = 40 + Patrol = { "e1", "e2", "e1", "e1", "e4", "e4" } + Infantry = { "e4", "e1", "e1", "e2", "e1", "e2", "e1", "e1" } + Vehicles = { "arty", "arty", "ftrk", "apc", "apc" } + Tank = { "ftrk", "3tnk" } + LongRange = { "v2rl" } + Boss = { "4tnk" } + Swarm = { "shok", "shok", "shok", "shok", "shok", "shok", "ttnk", "ttnk", "ttnk", "ttnk", "ttnk" } +end Wave = 0 Waves = { { delay = 500, units = { Infantry } }, - { delay = 750, units = { Patrol } }, - { delay = 750, units = { Infantry, Infantry, Vehicles }, }, + { delay = 500, units = { Patrol, Patrol } }, + { delay = 700, units = { Infantry, Infantry, Vehicles }, }, { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry } }, - { delay = 1500, units = { Infantry, Infantry, Infantry, Vehicles } }, - { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry, Tank, Vehicles } }, - { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry, Tank, Tank } }, - { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, LongRange } }, - { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, LongRange, Tank, LongRange } }, - { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, LongRange, LongRange, Tank, Tank, Vehicles } }, - { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Boss } } + { delay = 1500, units = { Infantry, Infantry, Patrol, Vehicles } }, + { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Tank, Vehicles } }, + { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Tank, Tank, Swarm } }, + { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry, LongRange } }, + { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry, Infantry, LongRange, Tank, LongRange } }, + { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry, Infantry, Infantry, LongRange, LongRange, Tank, Tank, Vehicles } }, + { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Boss, Swarm } } } +-- Now do some adjustments to the waves +if Map.Difficulty == "Real tough guy" or Map.Difficulty == "Endless mode" then + Waves[8] = { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry }, ironUnits = { LongRange } } + Waves[9] = { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry, Infantry, Infantry, LongRange, LongRange, Vehicles, Tank }, ironUnits = { Tank } } + Waves[11] = { delay = 1500, units = { Vehicles, Infantry, Patrol, Patrol, Patrol, Infantry, LongRange, Tank, Boss, Infantry, Infantry, Patrol } } +end + SendUnits = function(entryCell, unitTypes, targetCell, extraData) Reinforcements.Reinforce(soviets, unitTypes, { entryCell }, 40, function(a) if not a.HasProperty("AttackMove") then @@ -94,7 +140,14 @@ SendWave = function() SendWave() end else - Trigger.AfterDelay(DateTime.Minutes(2), SovietsRetreating) + if Map.Difficulty == "Endless mode" then + Wave = 0 + IncreaseDifficulty() + SendWave() + return + end + + Trigger.AfterDelay(DateTime.Minutes(1), SovietsRetreating) Media.DisplayMessage("You almost survived the onslaught! No more waves incoming.") end end) @@ -108,6 +161,13 @@ SovietsRetreating = function() end) end +IncreaseDifficulty = function() + local additions = { Infantry, Patrol, Vehicles, Tank, LongRange, Boss, Swarm } + Utils.Do(Waves, function(wave) + wave.units[#wave.units + 1] = Utils.Random(additions) + end) +end + Tick = function() if (Utils.RandomInteger(1, 200) == 10) then local delay = Utils.RandomInteger(1, 10) diff --git a/mods/ra/maps/fort-lonestar/map.yaml b/mods/ra/maps/fort-lonestar/map.yaml index 77dc86d13f..875228dece 100644 --- a/mods/ra/maps/fort-lonestar/map.yaml +++ b/mods/ra/maps/fort-lonestar/map.yaml @@ -30,6 +30,7 @@ Options: StartingUnitsClass: none ConfigurableStartingUnits: False ShortGame: False + Difficulties: Hard (4P), Normal (3P), Easy (2P), Very Easy (1P), Real tough guy, Endless mode Players: PlayerReference@Neutral: From b3436f9b6ad1dd09d813a9adc39f026b18b8cd7a Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Sun, 31 Jan 2016 18:23:24 +0100 Subject: [PATCH 13/16] Make the walls have a player as owner except when there is no player in the respective edge. --- mods/ra/maps/fort-lonestar/fort-lonestar.lua | 18 ++ mods/ra/maps/fort-lonestar/map.yaml | 202 +++++++++---------- 2 files changed, 119 insertions(+), 101 deletions(-) diff --git a/mods/ra/maps/fort-lonestar/fort-lonestar.lua b/mods/ra/maps/fort-lonestar/fort-lonestar.lua index 82c0b41e5a..098aa91dc8 100644 --- a/mods/ra/maps/fort-lonestar/fort-lonestar.lua +++ b/mods/ra/maps/fort-lonestar/fort-lonestar.lua @@ -5,6 +5,14 @@ ParadropWaypoints = { Paradrop1, Paradrop2, Paradrop3, Paradrop4 } SpawnPoints = { Spawn1, Spawn2, Spawn3, Spawn4 } Snipers = { Sniper1, Sniper2, Sniper3, Sniper4, Sniper5, Sniper6, Sniper7, Sniper8, Sniper9, Sniper10, Sniper11, Sniper12 } +Walls = +{ + { WallTopRight1, WallTopRight2, WallTopRight3, WallTopRight4, WallTopRight5, WallTopRight6, WallTopRight7, WallTopRight8, WallTopRight9 }, + { WallTopLeft1, WallTopLeft2, WallTopLeft3, WallTopLeft4, WallTopLeft5, WallTopLeft6, WallTopLeft7, WallTopLeft8, WallTopLeft9 }, + { WallBottomLeft1, WallBottomLeft2, WallBottomLeft3, WallBottomLeft4, WallBottomLeft5, WallBottomLeft6, WallBottomLeft7, WallBottomLeft8, WallBottomLeft9 }, + { WallBottomRight1, WallBottomRight2, WallBottomRight3, WallBottomRight4, WallBottomRight5, WallBottomRight6, WallBottomRight7, WallBottomRight8, WallBottomRight9 } +} + if Map.Difficulty == "Very Easy (1P)" then ParaChance = 20 Patrol = { "e1", "e2", "e1" } @@ -181,6 +189,14 @@ Tick = function() end end +SetupWallOwners = function() + Utils.Do(players, function(player) + Utils.Do(Walls[player.Spawn], function(wall) + wall.Owner = player + end) + end) +end + WorldLoaded = function() soviets = Player.GetPlayer("Soviets") players = { } @@ -191,6 +207,8 @@ WorldLoaded = function() Media.DisplayMessage("Defend Fort Lonestar at all costs!") + SetupWallOwners() + ParaProxy = Actor.Create("powerproxy.paratroopers", false, { Owner = soviets }) SendWave() end diff --git a/mods/ra/maps/fort-lonestar/map.yaml b/mods/ra/maps/fort-lonestar/map.yaml index 875228dece..a9062086bc 100644 --- a/mods/ra/maps/fort-lonestar/map.yaml +++ b/mods/ra/maps/fort-lonestar/map.yaml @@ -153,9 +153,6 @@ Actors: Actor73: tc05 Location: 16,34 Owner: Neutral - Actor84: brik - Location: 35,25 - Owner: Neutral Actor32: tc01 Location: 8,24 Owner: Neutral @@ -165,27 +162,6 @@ Actors: Actor5: tc01 Location: 44,44 Owner: Neutral - Actor67: brik - Location: 29,25 - Owner: Neutral - Actor41: brik - Location: 25,25 - Owner: Neutral - Actor56: brik - Location: 26,25 - Owner: Neutral - Actor85: brik - Location: 39,26 - Owner: Neutral - Actor81: brik - Location: 38,25 - Owner: Neutral - Actor65: brik - Location: 27,25 - Owner: Neutral - Actor66: brik - Location: 28,25 - Owner: Neutral Actor51: t08 Location: 55,46 Owner: Neutral @@ -213,12 +189,6 @@ Actors: Actor17: tc03 Location: 54,26 Owner: Neutral - Actor83: brik - Location: 36,25 - Owner: Neutral - Actor197: brik - Location: 39,37 - Owner: Neutral Actor11: tc04 Location: 20,53 Owner: Neutral @@ -234,15 +204,6 @@ Actors: Actor1: t05 Location: 29,16 Owner: Neutral - Actor82: brik - Location: 37,25 - Owner: Neutral - Actor86: brik - Location: 39,27 - Owner: Neutral - Actor80: brik - Location: 39,25 - Owner: Neutral Actor71: tc02 Location: 15,40 Owner: Neutral @@ -270,42 +231,6 @@ Actors: Actor52: t12 Location: 44,53 Owner: Neutral - Actor87: brik - Location: 39,28 - Owner: Neutral - Actor91: brik - Location: 37,39 - Owner: Neutral - Actor196: brik - Location: 39,38 - Owner: Neutral - Actor195: brik - Location: 39,39 - Owner: Neutral - Actor45: brik - Location: 25,28 - Owner: Neutral - Actor92: brik - Location: 39,29 - Owner: Neutral - Actor194: brik - Location: 38,39 - Owner: Neutral - Actor55: brik - Location: 25,39 - Owner: Neutral - Actor200: brik - Location: 28,39 - Owner: Neutral - Actor233: brik - Location: 29,39 - Owner: Neutral - Actor240: brik - Location: 39,35 - Owner: Neutral - Actor199: brik - Location: 27,39 - Owner: Neutral Actor28: tc01 Location: 24,54 Owner: Neutral @@ -339,39 +264,114 @@ Actors: Actor68: tc05 Location: 35,7 Owner: Neutral - Actor239: brik - Location: 39,36 + WallTopLeft1: brik + Location: 25,28 Owner: Neutral - Actor89: brik - Location: 35,39 - Owner: Neutral - Actor90: brik - Location: 36,39 - Owner: Neutral - Actor237: brik - Location: 25,35 - Owner: Neutral - Actor236: brik - Location: 25,36 - Owner: Neutral - Actor235: brik - Location: 25,37 - Owner: Neutral - Actor234: brik - Location: 25,38 - Owner: Neutral - Actor44: brik + WallTopLeft2: brik Location: 25,27 Owner: Neutral - Actor43: brik + WallTopLeft3: brik Location: 25,26 Owner: Neutral - Actor198: brik - Location: 26,39 - Owner: Neutral - Actor88: brik + WallTopLeft4: brik Location: 25,29 Owner: Neutral + WallTopLeft5: brik + Location: 29,25 + Owner: Neutral + WallTopLeft6: brik + Location: 25,25 + Owner: Neutral + WallTopLeft7: brik + Location: 26,25 + Owner: Neutral + WallTopLeft8: brik + Location: 27,25 + Owner: Neutral + WallTopLeft9: brik + Location: 28,25 + Owner: Neutral + WallTopRight1: brik + Location: 35,25 + Owner: Neutral + WallTopRight2: brik + Location: 36,25 + Owner: Neutral + WallTopRight3: brik + Location: 37,25 + Owner: Neutral + WallTopRight4: brik + Location: 38,25 + Owner: Neutral + WallTopRight5: brik + Location: 39,25 + Owner: Neutral + WallTopRight6: brik + Location: 39,26 + Owner: Neutral + WallTopRight7: brik + Location: 39,27 + Owner: Neutral + WallTopRight8: brik + Location: 39,28 + Owner: Neutral + WallTopRight9: brik + Location: 39,29 + Owner: Neutral + WallBottomRight1: brik + Location: 39,37 + Owner: Neutral + WallBottomRight2: brik + Location: 37,39 + Owner: Neutral + WallBottomRight3: brik + Location: 39,38 + Owner: Neutral + WallBottomRight4: brik + Location: 39,39 + Owner: Neutral + WallBottomRight5: brik + Location: 38,39 + Owner: Neutral + WallBottomRight6: brik + Location: 39,35 + Owner: Neutral + WallBottomRight7: brik + Location: 39,36 + Owner: Neutral + WallBottomRight8: brik + Location: 35,39 + Owner: Neutral + WallBottomRight9: brik + Location: 36,39 + Owner: Neutral + WallBottomLeft1: brik + Location: 25,39 + Owner: Neutral + WallBottomLeft2: brik + Location: 28,39 + Owner: Neutral + WallBottomLeft3: brik + Location: 29,39 + Owner: Neutral + WallBottomLeft4: brik + Location: 27,39 + Owner: Neutral + WallBottomLeft5: brik + Location: 25,35 + Owner: Neutral + WallBottomLeft6: brik + Location: 25,36 + Owner: Neutral + WallBottomLeft7: brik + Location: 25,37 + Owner: Neutral + WallBottomLeft8: brik + Location: 25,38 + Owner: Neutral + WallBottomLeft9: brik + Location: 26,39 + Owner: Neutral Sniper1: sniper.soviets Location: 9,26 Owner: Soviets From 07f9ec75623e014e113c0cf9a3fe9597f6f92991 Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Sun, 31 Jan 2016 19:24:23 +0100 Subject: [PATCH 14/16] Add "Mobile Tent" actor It is available through crates --- mods/ra/maps/fort-lonestar/map.yaml | 36 +++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/mods/ra/maps/fort-lonestar/map.yaml b/mods/ra/maps/fort-lonestar/map.yaml index a9062086bc..01981b0dd8 100644 --- a/mods/ra/maps/fort-lonestar/map.yaml +++ b/mods/ra/maps/fort-lonestar/map.yaml @@ -542,6 +542,11 @@ Rules: ExplodeCrateAction@bigboom: Weapon: SCUD SelectionShares: 5 + GiveMcvCrateAction: + SelectionShares: 0 + NoBaseSelectionShares: 1000 + Units: mobiletent + ValidFactions: allies Player: ClassicProductionQueue@Infantry: BuildSpeed: 1 @@ -562,6 +567,36 @@ Rules: CashTrickler: Period: 250 Amount: 50 + MOBILETENT: + Inherits: ^Vehicle + Valued: + Cost: 2000 + Tooltip: + Name: Mobile Tent + Selectable: + Priority: 4 + SelectionDecorations: + VisualBounds: 21,21 + Health: + HP: 600 + Armor: + Type: Light + Mobile: + Speed: 85 + Crushes: wall, mine, crate, infantry + RevealsShroud: + Range: 4c0 + MustBeDestroyed: + RequiredForShortGame: true + BaseBuilding: + Transforms: + IntoActor: tent + Offset: 0,0 + Facing: 96 + TransformSounds: placbldg.aud, build5.aud + NoTransformNotification: BuildingCannotPlaceAudio + RenderSprites: + Image: TRUK TENT: Health: HP: 1000 @@ -575,6 +610,7 @@ Rules: ProductionBar@Defense: ProductionType: Defense Color: 8A8A8A + BaseBuilding: FTUR: Buildable: Prerequisites: barracks From 3a217fed2064a94acf8d9c129fd4b438da88981b Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Sun, 31 Jan 2016 19:29:07 +0100 Subject: [PATCH 15/16] Let units directly hunt instead of attack move on Fort Lonestar --- mods/ra/maps/fort-lonestar/fort-lonestar.lua | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/mods/ra/maps/fort-lonestar/fort-lonestar.lua b/mods/ra/maps/fort-lonestar/fort-lonestar.lua index 098aa91dc8..0717c3d8e0 100644 --- a/mods/ra/maps/fort-lonestar/fort-lonestar.lua +++ b/mods/ra/maps/fort-lonestar/fort-lonestar.lua @@ -92,12 +92,9 @@ SendUnits = function(entryCell, unitTypes, targetCell, extraData) return end + a.AttackMove(targetCell) Trigger.OnIdle(a, function(a) - if a.Location ~= targetCell then - a.AttackMove(targetCell) - else - a.Hunt() - end + a.Hunt() end) if extraData == "IronCurtain" then From b23c5687ecd054b332ca8ac1593f308f8fe7809b Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Sun, 27 Dec 2015 16:17:54 +0100 Subject: [PATCH 16/16] Fix a crash when using parabombs on Fort Lonestar --- mods/ra/maps/fort-lonestar/map.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ra/maps/fort-lonestar/map.yaml b/mods/ra/maps/fort-lonestar/map.yaml index 01981b0dd8..7650a2d885 100644 --- a/mods/ra/maps/fort-lonestar/map.yaml +++ b/mods/ra/maps/fort-lonestar/map.yaml @@ -895,7 +895,7 @@ Weapons: Range: 5c0 Projectile: GravityBomb Image: BOMBLET - -OpenSequence: + OpenSequence: idle # TODO: This crashes otherwise Warhead@1Dam: SpreadDamage Spread: 426 Versus: