Create a new damage model for the MAD Tank. Fixes #4105
This commit is contained in:
@@ -47,8 +47,6 @@ namespace OpenRA.GameRules
|
||||
public readonly DamageModel DamageModel = DamageModel.Normal;
|
||||
[Desc("Whether we should prevent prone response for infantry.")]
|
||||
public readonly bool PreventProne = false;
|
||||
[Desc("Whether to use the provided Damage value as a maximum health percentage.")]
|
||||
public readonly bool ScaleDamageByTargetHealth = false;
|
||||
|
||||
public float EffectivenessAgainst(ActorInfo ai)
|
||||
{
|
||||
@@ -83,6 +81,7 @@ namespace OpenRA.GameRules
|
||||
{
|
||||
Normal, // classic RA damage model: point actors, distance-based falloff
|
||||
PerCell, // like RA's "nuke damage"
|
||||
HealthPercentage // for MAD Tank
|
||||
}
|
||||
|
||||
public class ProjectileArgs
|
||||
|
||||
@@ -122,6 +122,23 @@ namespace OpenRA.Mods.RA
|
||||
unit.InflictDamage(firedBy, damage, warhead);
|
||||
}
|
||||
} break;
|
||||
|
||||
case DamageModel.HealthPercentage:
|
||||
{
|
||||
var range = new WRange(warhead.Size[0] * 1024);
|
||||
var hitActors = world.FindActorsInCircle(pos, range);
|
||||
|
||||
foreach (var victim in hitActors)
|
||||
{
|
||||
var damage = GetDamageToInflict(pos, victim, warhead, weapon, firepowerModifier, false);
|
||||
if (damage != 0) // will be 0 if the target doesn't have HealthInfo
|
||||
{
|
||||
var healthInfo = victim.Info.Traits.Get<HealthInfo>();
|
||||
damage = (float)(damage / 100 * healthInfo.HP);
|
||||
}
|
||||
victim.InflictDamage(firedBy, (int)damage, warhead);
|
||||
}
|
||||
} break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -174,8 +191,6 @@ namespace OpenRA.Mods.RA
|
||||
return 0;
|
||||
|
||||
var rawDamage = (float)warhead.Damage;
|
||||
if (warhead.ScaleDamageByTargetHealth)
|
||||
rawDamage = (float)(rawDamage / 100 * healthInfo.HP);
|
||||
if (withFalloff)
|
||||
{
|
||||
var distance = (int)Math.Max(0, (target.CenterPosition - pos).Length * Game.CellSize / 1024 - healthInfo.Radius);
|
||||
|
||||
@@ -1331,9 +1331,8 @@ Mandible:
|
||||
MADTankThump:
|
||||
InvalidTargets: MADTank
|
||||
Warhead:
|
||||
DamageModel: PerCell
|
||||
DamageModel: HealthPercentage
|
||||
Damage: 1
|
||||
ScaleDamageByTargetHealth: True
|
||||
Versus:
|
||||
None: 0%
|
||||
Size: 7,6
|
||||
@@ -1341,9 +1340,8 @@ MADTankThump:
|
||||
MADTankDetonate:
|
||||
InvalidTargets: MADTank
|
||||
Warhead:
|
||||
DamageModel: PerCell
|
||||
DamageModel: HealthPercentage
|
||||
Damage: 19
|
||||
ScaleDamageByTargetHealth: True
|
||||
Versus:
|
||||
None: 0%
|
||||
Size: 7,6
|
||||
|
||||
Reference in New Issue
Block a user