Skip to content

Commit a18a209

Browse files
committed
- Minor performance improvements.
- Hoplite muzzle. - Dialed back Hoplite IFV buffs a little. - Fix Atomic Eradicator selectable class. - Demo Truck detonates on Tiberium Stealth. - Fix Mothership shields overlay on Singularity. - Zeus hits affected by prone & flak vest. Increased damage vs infantry to compensate.
1 parent e901657 commit a18a209

6 files changed

Lines changed: 37 additions & 10 deletions

File tree

OpenRA.Mods.CA/Traits/PeriodicExplosion.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ class PeriodicExplosion : ConditionalTrait<PeriodicExplosionInfo>, ITick, INotif
7272

7373
List<(int Tick, Action Action)> delayedActions = new List<(int, Action)>();
7474

75+
IFirepowerModifier[] firepowerModifiers;
76+
IReloadModifier[] reloadModifiers;
77+
7578
public PeriodicExplosion(Actor self, PeriodicExplosionInfo info)
7679
: base(info)
7780
{
@@ -87,6 +90,17 @@ protected override void Created(Actor self)
8790
{
8891
ammoPool = self.TraitsImplementing<AmmoPool>().FirstOrDefault(la => la.Info.Name == Info.AmmoPoolName);
8992

93+
if (info.ApplyModifiers)
94+
{
95+
firepowerModifiers = self.TraitsImplementing<IFirepowerModifier>().ToArray();
96+
reloadModifiers = self.TraitsImplementing<IReloadModifier>().ToArray();
97+
}
98+
else
99+
{
100+
firepowerModifiers = Array.Empty<IFirepowerModifier>();
101+
reloadModifiers = Array.Empty<IReloadModifier>();
102+
}
103+
90104
base.Created(self);
91105
}
92106

@@ -123,7 +137,7 @@ void ITick.Tick(Actor self)
123137
};
124138

125139
if (info.ApplyModifiers)
126-
args.DamageModifiers = self.TraitsImplementing<IFirepowerModifier>().Select(a => a.GetFirepowerModifier()).ToArray();
140+
args.DamageModifiers = firepowerModifiers.Select(a => a.GetFirepowerModifier()).ToArray();
127141

128142
weapon.Impact(Target.FromPos(self.CenterPosition + localoffset), args);
129143

@@ -144,7 +158,7 @@ void ITick.Tick(Actor self)
144158
{
145159
if (info.ApplyModifiers)
146160
{
147-
var modifiers = self.TraitsImplementing<IReloadModifier>().Select(m => m.GetReloadModifier());
161+
var modifiers = reloadModifiers.Select(m => m.GetReloadModifier());
148162
fireDelay = Util.ApplyPercentageModifiers(weapon.ReloadDelay, modifiers);
149163
}
150164
else

OpenRA.Mods.CA/Traits/Render/WithRadiatingCircle.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*/
99
#endregion
1010

11-
using System;
11+
using System.Linq;
1212
using System.Collections.Generic;
1313
using OpenRA.Graphics;
1414
using OpenRA.Mods.Common.Graphics;
@@ -62,6 +62,7 @@ class WithRadiatingCircle : ConditionalTrait<WithRadiatingCircleInfo>, ITick, IR
6262
Queue<RadiatingCircle> activeCircles;
6363
int intervalTicks;
6464
bool flash;
65+
WDist radiusChangePerTick;
6566

6667
struct RadiatingCircle
6768
{
@@ -165,7 +166,6 @@ void ITick.Tick(Actor self)
165166
}
166167

167168
// Update all active circles
168-
var radiusChangePerTick = (Info.EndRadius - Info.StartRadius) / Info.Duration;
169169
var tempCircles = new Queue<RadiatingCircle>();
170170
var circleCompleted = false;
171171

@@ -195,7 +195,15 @@ void ITick.Tick(Actor self)
195195

196196
protected override void TraitEnabled(Actor self)
197197
{
198-
activeCircles.Enqueue(new RadiatingCircle(Info.StartRadius));
198+
if (Info.Duration > 0)
199+
radiusChangePerTick = (Info.EndRadius - Info.StartRadius) / Info.Duration;
200+
else
201+
radiusChangePerTick = WDist.Zero;
202+
203+
if (Info.Interval == 0 || !activeCircles.Any())
204+
activeCircles.Enqueue(new RadiatingCircle(Info.StartRadius));
205+
206+
intervalTicks = 0;
199207
}
200208

201209
protected override void TraitDisabled(Actor self)

mods/ca/bits/hopl.shp

108 Bytes
Binary file not shown.

mods/ca/maps/ca30-singularity/singularity-rules.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@ MSHP:
103103
GrantConditionOnPrerequisite@MSHPSHIELDS:
104104
Condition: mothership-shields
105105
Prerequisites: mothership.shields
106+
WithFacingSpriteBody@SHIELDS:
107+
RequiresCondition: mothership-shields
106108

107109
MSHP.Husk:
108110
FallsToEarth:

mods/ca/rules/vehicles.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1475,6 +1475,8 @@ GTNK.squad:
14751475
Prerequisites: stek, ~vehicles.soviet, ~atomicengines.upgrade, ~erad.upgrade, ~!ovld.upgrade, ~!apoc.upgrade, ~techlevel.high
14761476
Description: Big and slow tank armed with a radiation cannon.
14771477
BuildPaletteOrder: 234
1478+
Selectable:
1479+
Class: 4tnk.erad
14781480
Armament@PRIMARY:
14791481
Weapon: RadBeamWeaponHeavy
14801482
MuzzlePalette: caneon
@@ -2960,7 +2962,7 @@ DTRK:
29602962
DeployedCondition: triggered
29612963
-DamageMultiplier@IRONCURTAIN:
29622964
KillsSelf:
2963-
RequiresCondition: invulnerability || triggered || berserk
2965+
RequiresCondition: invulnerability || tibstealth || triggered || berserk
29642966
ChronoshiftableCA:
29652967
ExplodeInstead: true
29662968
Passenger:
@@ -6789,7 +6791,7 @@ IFV:
67896791
DamageMultiplier@IRONCURTAIN:
67906792
RequiresCondition: invulnerability && !ivanturr
67916793
KillsSelf:
6792-
RequiresCondition: ivanturr && (invulnerability || triggered || berserk)
6794+
RequiresCondition: ivanturr && (invulnerability || tibstealth || triggered || berserk)
67936795
ProximityExternalCondition@MEDIC:
67946796
RequiresCondition: medturr
67956797
EnableSound: heal2.aud

mods/ca/weapons/other.yaml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1668,9 +1668,10 @@ HopliteIFVGun:
16681668
Projectile: LaserZapCA
16691669
HitAnim: plaserfire
16701670
Warhead@1Dam: SpreadDamage
1671-
Damage: 8000
1671+
Damage: 7000
16721672
Spread: 288
16731673
Versus:
1674+
Wood: 80
16741675
Heavy: 30
16751676

16761677
KirovBomb:
@@ -3668,9 +3669,9 @@ ZeusBolt:
36683669
Spread: 384
36693670
Falloff: 1000, 448, 192, 50, 18, 7, 0
36703671
Damage: 3500
3671-
DamageTypes: TriggerProne, ElectricityDeath
3672+
DamageTypes: Prone50Percent, TriggerProne, ElectricityDeath, FlakVestMitigatedMinor
36723673
Versus:
3673-
None: 80
3674+
None: 85
36743675
Wood: 100
36753676
Concrete: 65
36763677
Brick: 50

0 commit comments

Comments
 (0)