Merge pull request #9006 from reaperrr/remove-cantarget

Remove legacy 0% = not targetable assumption
This commit is contained in:
Pavel Penev
2015-08-25 20:03:31 +03:00
15 changed files with 54 additions and 111 deletions

View File

@@ -2238,6 +2238,17 @@ namespace OpenRA.Mods.Common.UtilityCommands
} }
} }
if (engineVersion < 20150809)
{
// Removed 0% versus armor type = cannot target actor assumptions from warheads
if (depth == 3 && parentKey == "Versus" && node.Value.Value == "0")
{
Console.WriteLine("The '0% versus armor type = cannot target this actor' assumption has been removed.");
Console.WriteLine("If you want to reproduce its behavior, use ValidTargets/InvalidTargets in");
Console.WriteLine("conjunction with one of the Targetable* actor traits.");
}
}
UpgradeWeaponRules(engineVersion, ref node.Value.Nodes, node, depth + 1); UpgradeWeaponRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
} }
} }

View File

@@ -47,17 +47,6 @@ namespace OpenRA.Mods.Common.Warheads
return 100; return 100;
} }
// TODO: This can be removed after the legacy and redundant 0% = not targetable
// assumption has been removed from the yaml definitions
public override bool CanTargetActor(ActorInfo victim, Actor firedBy)
{
var health = victim.Traits.GetOrDefault<HealthInfo>();
if (health == null)
return false;
return DamageVersus(victim) > 0;
}
public override void DoImpact(Target target, Actor firedBy, IEnumerable<int> damageModifiers) public override void DoImpact(Target target, Actor firedBy, IEnumerable<int> damageModifiers)
{ {
// Used by traits that damage a single actor, rather than a position // Used by traits that damage a single actor, rather than a position

View File

@@ -29,10 +29,6 @@ namespace OpenRA.Mods.Common.Warheads
public readonly WDist Range = WDist.FromCells(1); public readonly WDist Range = WDist.FromCells(1);
// TODO: This can be removed after the legacy and redundant 0% = not targetable
// assumption has been removed from the yaml definitions
public override bool CanTargetActor(ActorInfo victim, Actor firedBy) { return true; }
public override void DoImpact(Target target, Actor firedBy, IEnumerable<int> damageModifiers) public override void DoImpact(Target target, Actor firedBy, IEnumerable<int> damageModifiers)
{ {
var actors = target.Type == TargetType.Actor ? new[] { target.Actor } : var actors = target.Type == TargetType.Actor ? new[] { target.Actor } :

View File

@@ -47,16 +47,9 @@ namespace OpenRA.Mods.Common.Warheads
/// <summary>Applies the warhead's effect against the target.</summary> /// <summary>Applies the warhead's effect against the target.</summary>
public abstract void DoImpact(Target target, Actor firedBy, IEnumerable<int> damageModifiers); public abstract void DoImpact(Target target, Actor firedBy, IEnumerable<int> damageModifiers);
// TODO: This can be removed after the legacy and redundant 0% = not targetable
// assumption has been removed from the yaml definitions
public virtual bool CanTargetActor(ActorInfo victim, Actor firedBy) { return false; }
/// <summary>Checks if the warhead is valid against (can do something to) the actor.</summary> /// <summary>Checks if the warhead is valid against (can do something to) the actor.</summary>
public bool IsValidAgainst(Actor victim, Actor firedBy) public bool IsValidAgainst(Actor victim, Actor firedBy)
{ {
if (!CanTargetActor(victim.Info, firedBy))
return false;
if (!AffectsParent && victim == firedBy) if (!AffectsParent && victim == firedBy)
return false; return false;
@@ -75,9 +68,6 @@ namespace OpenRA.Mods.Common.Warheads
/// <summary>Checks if the warhead is valid against (can do something to) the frozen actor.</summary> /// <summary>Checks if the warhead is valid against (can do something to) the frozen actor.</summary>
public bool IsValidAgainst(FrozenActor victim, Actor firedBy) public bool IsValidAgainst(FrozenActor victim, Actor firedBy)
{ {
if (!CanTargetActor(victim.Info, firedBy))
return false;
// AffectsParent checks do not make sense for FrozenActors, so skip to stance checks // AffectsParent checks do not make sense for FrozenActors, so skip to stance checks
var stance = firedBy.Owner.Stances[victim.Owner]; var stance = firedBy.Owner.Stances[victim.Owner];
if (!ValidStances.HasStance(stance)) if (!ValidStances.HasStance(stance))

View File

@@ -117,7 +117,7 @@
UseLocation: yes UseLocation: yes
TargetableAircraft: TargetableAircraft:
TargetTypes: Air TargetTypes: Air
GroundedTargetTypes: Ground GroundedTargetTypes: Ground, Vehicle
SelectionDecorations: SelectionDecorations:
Selectable: Selectable:
Bounds: 24,24 Bounds: 24,24
@@ -299,7 +299,7 @@
Selectable: Selectable:
Bounds: 24,24 Bounds: 24,24
TargetableUnit: TargetableUnit:
TargetTypes: Ground, Infantry TargetTypes: Ground
HiddenUnderFog: HiddenUnderFog:
WithInfantryBody: WithInfantryBody:
AttackSequence: attack AttackSequence: attack
@@ -639,7 +639,7 @@
Interval: 2 Interval: 2
TargetableUnit: TargetableUnit:
RequiresForceFire: yes RequiresForceFire: yes
TargetTypes: Ground TargetTypes: Ground, Husk
Capturable: Capturable:
Type: husk Type: husk
AllowAllies: yes AllowAllies: yes

View File

@@ -1,6 +1,7 @@
Sniper: Sniper:
Report: RAMGUN2.AUD Report: RAMGUN2.AUD
ValidTargets: Infantry ValidTargets: Ground, Infantry
InvalidTargets: Vehicle, Water, Structure, Wall, Husk
ReloadDelay: 40 ReloadDelay: 40
Range: 6c0 Range: 6c0
Projectile: Bullet Projectile: Bullet

View File

@@ -123,7 +123,7 @@ orni:
Bounds: 32,32 Bounds: 32,32
TargetableAircraft: TargetableAircraft:
TargetTypes: Air TargetTypes: Air
GroundedTargetTypes: Ground GroundedTargetTypes: Ground, Vehicle
Voiced: Voiced:
VoiceSet: GenericVoice VoiceSet: GenericVoice

View File

@@ -66,7 +66,7 @@
Selectable: Selectable:
Bounds: 32,32 Bounds: 32,32
TargetableUnit: TargetableUnit:
TargetTypes: Ground, C4 TargetTypes: Ground, Vehicle, C4
Passenger: Passenger:
CargoType: Vehicle CargoType: Vehicle
AttackMove: AttackMove:
@@ -129,7 +129,7 @@
Burns: Burns:
Interval: 4 Interval: 4
TargetableUnit: TargetableUnit:
TargetTypes: Ground TargetTypes: Ground, Vehicle
RequiresForceFire: yes RequiresForceFire: yes
Capturable: Capturable:
Type: husk Type: husk
@@ -187,7 +187,7 @@
Selectable: Selectable:
Bounds: 12,18,0,-6 Bounds: 12,18,0,-6
TargetableUnit: TargetableUnit:
TargetTypes: Ground TargetTypes: Ground, Infantry
UpgradeTypes: parachute UpgradeTypes: parachute
UpgradeMaxEnabledLevel: 0 UpgradeMaxEnabledLevel: 0
RenderSprites: RenderSprites:

View File

@@ -509,7 +509,7 @@ wall:
LineBuildNode: LineBuildNode:
Types: wall Types: wall
TargetableBuilding: TargetableBuilding:
TargetTypes: Ground TargetTypes: Ground, Wall
RenderBuildingWall: RenderBuildingWall:
AutoTargetIgnore: AutoTargetIgnore:
Sellable: Sellable:

View File

@@ -57,6 +57,8 @@ Sniper:
ReloadDelay: 100 ReloadDelay: 100
Range: 8c512 Range: 8c512
Report: FREMODD1.WAV Report: FREMODD1.WAV
ValidTargets: Ground, Infantry
InvalidTargets: Vehicle, Structure, Wall
Projectile: Bullet Projectile: Bullet
Speed: 1c896 Speed: 1c896
ContrailLength: 6 ContrailLength: 6
@@ -66,19 +68,14 @@ Sniper:
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 32 Spread: 32
Damage: 60 Damage: 60
Versus: ValidTargets: Infantry
None: 100
Wood: 0
Light: 1
Heavy: 0
Concrete: 0
DamageTypes: Prone50Percent, TriggerProne, BulletDeath DamageTypes: Prone50Percent, TriggerProne, BulletDeath
Vulcan: Vulcan:
ReloadDelay: 30 ReloadDelay: 30
Range: 5c768 Range: 5c768
Report: VULCAN.AUD Report: VULCAN.AUD
ValidTargets: Ground InvalidTargets: Structure
Projectile: Bullet Projectile: Bullet
Speed: 1c256 Speed: 1c256
ContrailLength: 3 ContrailLength: 3
@@ -88,12 +85,10 @@ Vulcan:
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 96 Spread: 96
Damage: 30 Damage: 30
ValidTargets: Ground InvalidTargets: Structure
Versus: Versus:
Wood: 0
Light: 60 Light: 60
Heavy: 10 Heavy: 10
Concrete: 0
DamageTypes: Prone50Percent, TriggerProne, BulletDeath DamageTypes: Prone50Percent, TriggerProne, BulletDeath
Warhead@2Eff: CreateEffect Warhead@2Eff: CreateEffect
Explosion: piffs Explosion: piffs
@@ -103,7 +98,7 @@ Slung:
Delay: 5 Delay: 5
Range: 5c512 Range: 5c512
Report: BAZOOK2.WAV Report: BAZOOK2.WAV
ValidTargets: Ground InvalidTargets: Infantry
Projectile: Bullet Projectile: Bullet
Speed: 320 Speed: 320
Blockable: false Blockable: false
@@ -114,9 +109,8 @@ Slung:
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 192 Spread: 192
Damage: 30 Damage: 30
ValidTargets: Ground InvalidTargets: Infantry
Versus: Versus:
None: 0
Wood: 75 Wood: 75
Light: 40 Light: 40
Heavy: 90 Heavy: 90
@@ -372,8 +366,8 @@ DevBullet:
NerveGasMissile: NerveGasMissile:
ReloadDelay: 120 ReloadDelay: 120
Range: 8c0 Range: 8c0
Burst: 1
Report: MISSLE1.WAV Report: MISSLE1.WAV
InvalidTargets: Infantry, Structure
Projectile: Bullet Projectile: Bullet
Speed: 384 Speed: 384
Blockable: false Blockable: false
@@ -388,10 +382,7 @@ NerveGasMissile:
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 96 Spread: 96
Damage: 10 Damage: 10
Versus: InvalidTargets: Infantry, Structure
None: 0
Wood: 0
Concrete: 0
DamageTypes: Prone50Percent, TriggerProne, SmallExplosionDeath DamageTypes: Prone50Percent, TriggerProne, SmallExplosionDeath
Warhead@2Smu: LeaveSmudge Warhead@2Smu: LeaveSmudge
SmudgeType: SandCrater, RockCrater SmudgeType: SandCrater, RockCrater
@@ -476,26 +467,22 @@ Heal:
ReloadDelay: 160 ReloadDelay: 160
Range: 4c0 Range: 4c0
Report: Report:
ValidTargets: Infantry
Projectile: Bullet Projectile: Bullet
Speed: 1c256 Speed: 1c256
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 160 Spread: 160
Damage: -50 Damage: -50
Versus: ValidTargets: Infantry
Wood: 0
Light: 0
Heavy: 0
Concrete: 0
WormJaw: WormJaw:
ReloadDelay: 10 ReloadDelay: 10
Range: 3c0 Range: 3c0
InvalidTargets: Structure
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 160 Spread: 160
Damage: 100 Damage: 100
Versus: InvalidTargets: Structure
Wood: 0
Concrete: 0
ParaBomb: ParaBomb:
ReloadDelay: 10 ReloadDelay: 10

View File

@@ -337,7 +337,7 @@
Bounds: 24,24 Bounds: 24,24
TargetableAircraft: TargetableAircraft:
TargetTypes: Air TargetTypes: Air
GroundedTargetTypes: Ground, Repair GroundedTargetTypes: Ground, Repair, Vehicle
HiddenUnderFog: HiddenUnderFog:
Type: CenterPosition Type: CenterPosition
AttackMove: AttackMove:
@@ -455,7 +455,7 @@
LineBuildNode: LineBuildNode:
Types: wall Types: wall
TargetableBuilding: TargetableBuilding:
TargetTypes: Ground, DetonateAttack TargetTypes: Ground, DetonateAttack, Wall
RenderBuildingWall: RenderBuildingWall:
Palette: effect Palette: effect
GivesExperience: GivesExperience:
@@ -587,7 +587,7 @@
ForceHealthPercentage: 25 ForceHealthPercentage: 25
DisabledOverlay: DisabledOverlay:
TargetableUnit: TargetableUnit:
TargetTypes: Ground TargetTypes: Ground, Husk
RequiresForceFire: true RequiresForceFire: true
Chronoshiftable: Chronoshiftable:
Tooltip: Tooltip:

View File

@@ -208,10 +208,8 @@ Nike:
ValidTargets: Air ValidTargets: Air
Versus: Versus:
None: 90 None: 90
Wood: 0
Light: 90 Light: 90
Heavy: 50 Heavy: 50
Concrete: 0
DamageTypes: Prone50Percent, TriggerProne, SmallExplosionDeath DamageTypes: Prone50Percent, TriggerProne, SmallExplosionDeath
Warhead@2Smu: LeaveSmudge Warhead@2Smu: LeaveSmudge
SmudgeType: Crater SmudgeType: Crater

View File

@@ -186,27 +186,19 @@ DogJaw:
Spread: 213 Spread: 213
Damage: 100 Damage: 100
ValidTargets: Infantry ValidTargets: Infantry
Versus:
Wood: 0
Light: 0
Heavy: 0
Concrete: 0
DamageTypes: DefaultDeath DamageTypes: DefaultDeath
Heal: Heal:
ReloadDelay: 80 ReloadDelay: 80
Range: 4c0 Range: 4c0
Report: HEAL2.AUD Report: HEAL2.AUD
ValidTargets: Infantry
Projectile: Bullet Projectile: Bullet
Speed: 1c682 Speed: 1c682
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 213 Spread: 213
Damage: -50 Damage: -50
Versus: ValidTargets: Infantry
Wood: 0
Light: 0
Heavy: 0
Concrete: 0
Repair: Repair:
ReloadDelay: 80 ReloadDelay: 80
@@ -219,12 +211,6 @@ Repair:
Spread: 213 Spread: 213
Damage: -20 Damage: -20
ValidTargets: Repair ValidTargets: Repair
Versus:
None: 0
Wood: 0
Light: 100
Heavy: 100
Concrete: 0
Crush: Crush:
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
@@ -273,22 +259,18 @@ Mandible:
DamageTypes: Prone50Percent, TriggerProne, DefaultDeath DamageTypes: Prone50Percent, TriggerProne, DefaultDeath
MADTankThump: MADTankThump:
InvalidTargets: MADTank InvalidTargets: MADTank, Infantry
Warhead@1Dam: HealthPercentageDamage Warhead@1Dam: HealthPercentageDamage
Spread: 7c0 Spread: 7c0
Damage: 1 Damage: 1
InvalidTargets: MADTank InvalidTargets: MADTank, Infantry
Versus:
None: 0
MADTankDetonate: MADTankDetonate:
InvalidTargets: MADTank InvalidTargets: MADTank, Infantry
Warhead@1Dam: HealthPercentageDamage Warhead@1Dam: HealthPercentageDamage
Spread: 7c0 Spread: 7c0
Damage: 19 Damage: 19
InvalidTargets: MADTank InvalidTargets: MADTank, Infantry
Versus:
None: 0
Warhead@2Smu: LeaveSmudge Warhead@2Smu: LeaveSmudge
SmudgeType: Crater SmudgeType: Crater
Size: 7,6 Size: 7,6

View File

@@ -2,17 +2,14 @@ Colt45:
ReloadDelay: 5 ReloadDelay: 5
Range: 7c0 Range: 7c0
Report: GUN5.AUD Report: GUN5.AUD
ValidTargets: Ground, Infantry
InvalidTargets: Vehicle, Tank, Water, Structure, Wall, Husk
Projectile: Bullet Projectile: Bullet
Speed: 1c682 Speed: 1c682
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 42 Spread: 42
Damage: 50 Damage: 50
Versus: ValidTargets: Infantry
None: 100
Wood: 0
Light: 0
Heavy: 0
Concrete: 0
DamageTypes: Prone50Percent, TriggerProne, BulletDeath DamageTypes: Prone50Percent, TriggerProne, BulletDeath
Warhead@2Eff: CreateEffect Warhead@2Eff: CreateEffect
Explosion: piff Explosion: piff
@@ -282,16 +279,14 @@ SilencedPPK:
ReloadDelay: 80 ReloadDelay: 80
Range: 2c512 Range: 2c512
Report: silppk.aud Report: silppk.aud
ValidTargets: Ground, Infantry
InvalidTargets: Vehicle, Tank, Water, Structure, Wall, Husk
Projectile: Bullet Projectile: Bullet
Speed: 1c682 Speed: 1c682
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 128 Spread: 128
Damage: 150 Damage: 150
Versus: ValidTargets: Infantry
Wood: 0
Light: 0
Heavy: 0
Concrete: 0
DamageTypes: Prone50Percent, TriggerProne, BulletDeath DamageTypes: Prone50Percent, TriggerProne, BulletDeath
Warhead@2Eff: CreateEffect Warhead@2Eff: CreateEffect
Explosion: piffs Explosion: piffs
@@ -333,16 +328,13 @@ Sniper:
Report: GUN5.AUD Report: GUN5.AUD
ReloadDelay: 70 ReloadDelay: 70
Range: 10c0 Range: 10c0
ValidTargets: Ground, Infantry
InvalidTargets: Vehicle, Tank, Water, Structure, Wall, Husk
Projectile: Bullet Projectile: Bullet
Speed: 1c682 Speed: 1c682
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 42 Spread: 42
Damage: 140 Damage: 140
Versus: ValidTargets: Infantry
None: 100
Wood: 0
Light: 0
Heavy: 0
Concrete: 0
DamageTypes: Prone50Percent, TriggerProne, BulletDeath DamageTypes: Prone50Percent, TriggerProne, BulletDeath

View File

@@ -2,16 +2,13 @@ Heal:
ReloadDelay: 80 ReloadDelay: 80
Range: 2c849 Range: 2c849
Report: HEALER1.AUD Report: HEALER1.AUD
ValidTargets: Infantry
Projectile: Bullet Projectile: Bullet
Speed: 1c682 Speed: 1c682
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 213 Spread: 213
Damage: -50 Damage: -50
Versus: ValidTargets: Infantry
Wood: 0
Light: 0
Heavy: 0
Concrete: 0
Repair: Repair:
ReloadDelay: 80 ReloadDelay: 80