damage stuff in any part of the cell; don't put smudge in water

This commit is contained in:
Chris Forbes
2010-04-02 11:40:51 +13:00
parent 03a037a84f
commit ca3c6ee5fe
3 changed files with 3 additions and 6 deletions

View File

@@ -76,13 +76,10 @@ namespace OpenRA
case DamageModel.PerCell: case DamageModel.PerCell:
{ {
foreach (var t in world.FindTilesInCircle(targetTile, warhead.SmudgeSize[0])) foreach (var t in world.FindTilesInCircle(targetTile, warhead.SmudgeSize[0]))
{ foreach (var unit in world.FindUnits(Game.CellSize * t, Game.CellSize * (t + new float2(1,1))))
var x = Util.CenterOfCell(t);
foreach (var unit in world.FindUnits(x, x))
unit.InflictDamage(args.firedBy, unit.InflictDamage(args.firedBy,
(int)(warhead.Damage * warhead.EffectivenessAgainst( (int)(warhead.Damage * warhead.EffectivenessAgainst(
unit.Info.Traits.Get<OwnedActorInfo>().Armor)), warhead); unit.Info.Traits.Get<OwnedActorInfo>().Armor)), warhead);
}
} break; } break;
} }
} }

View File

@@ -53,7 +53,8 @@ namespace OpenRA
else else
foreach (var t in Game.world.FindTilesInCircle(targetTile, warhead.SmudgeSize[0])) foreach (var t in Game.world.FindTilesInCircle(targetTile, warhead.SmudgeSize[0]))
if ((t - targetTile).LengthSquared >= warhead.SmudgeSize[1] * warhead.SmudgeSize[1]) if ((t - targetTile).LengthSquared >= warhead.SmudgeSize[1] * warhead.SmudgeSize[1])
map.AddSmudge(warhead.SmudgeType == SmudgeType.Crater, t.X, t.Y); if (Game.world.GetTerrainType(t) != TerrainType.Water)
map.AddSmudge(warhead.SmudgeType == SmudgeType.Crater, t.X, t.Y);
} }
static int lastSmudge = 0; static int lastSmudge = 0;

View File

@@ -640,7 +640,6 @@ Atomic:
Warhead@inner-nuke: Warhead@inner-nuke:
DamageModel: PerCell DamageModel: PerCell
Damage: 150 Damage: 150
SmudgeType: Scorch
SmudgeSize: 3,2 SmudgeSize: 3,2
Wall: true Wall: true
Wood: true Wood: true