diff --git a/OpenRA.Mods.Common/Projectiles/Bullet.cs b/OpenRA.Mods.Common/Projectiles/Bullet.cs index ba7be41ef2..cd74d5b833 100644 --- a/OpenRA.Mods.Common/Projectiles/Bullet.cs +++ b/OpenRA.Mods.Common/Projectiles/Bullet.cs @@ -287,21 +287,22 @@ namespace OpenRA.Mods.Common.Projectiles var world = args.SourceActor.World; if (!world.FogObscures(pos)) { - if (info.Shadow) - { - var dat = world.Map.DistanceAboveTerrain(pos); - var shadowPos = pos - new WVec(0, 0, dat.Length); - foreach (var r in anim.Render(shadowPos, wr.Palette(info.Palette))) - yield return ((IModifyableRenderable)r) - .WithTint(shadowColor, ((IModifyableRenderable)r).TintModifiers | TintModifiers.ReplaceColor) - .WithAlpha(shadowAlpha); - } - var paletteName = info.Palette; if (paletteName != null && info.IsPlayerPalette) paletteName += args.SourceActor.Owner.InternalName; var palette = wr.Palette(paletteName); + + if (info.Shadow) + { + var dat = world.Map.DistanceAboveTerrain(pos); + var shadowPos = pos - new WVec(0, 0, dat.Length); + foreach (var r in anim.Render(shadowPos, palette)) + yield return ((IModifyableRenderable)r) + .WithTint(shadowColor, ((IModifyableRenderable)r).TintModifiers | TintModifiers.ReplaceColor) + .WithAlpha(shadowAlpha); + } + foreach (var r in anim.Render(pos, palette)) yield return r; } diff --git a/OpenRA.Mods.Common/Projectiles/GravityBomb.cs b/OpenRA.Mods.Common/Projectiles/GravityBomb.cs index 14026c49f8..cae3589d08 100644 --- a/OpenRA.Mods.Common/Projectiles/GravityBomb.cs +++ b/OpenRA.Mods.Common/Projectiles/GravityBomb.cs @@ -120,17 +120,22 @@ namespace OpenRA.Mods.Common.Projectiles var world = args.SourceActor.World; if (!world.FogObscures(pos)) { + var paletteName = info.Palette; + if (paletteName != null && info.IsPlayerPalette) + paletteName += args.SourceActor.Owner.InternalName; + + var palette = wr.Palette(paletteName); + if (info.Shadow) { var dat = world.Map.DistanceAboveTerrain(pos); var shadowPos = pos - new WVec(0, 0, dat.Length); - foreach (var r in anim.Render(shadowPos, wr.Palette(info.Palette))) + foreach (var r in anim.Render(shadowPos, palette)) yield return ((IModifyableRenderable)r) .WithTint(shadowColor, ((IModifyableRenderable)r).TintModifiers | TintModifiers.ReplaceColor) .WithAlpha(shadowAlpha); } - var palette = wr.Palette(info.Palette + (info.IsPlayerPalette ? args.SourceActor.Owner.InternalName : "")); foreach (var r in anim.Render(pos, palette)) yield return r; } diff --git a/OpenRA.Mods.Common/Projectiles/Missile.cs b/OpenRA.Mods.Common/Projectiles/Missile.cs index 5ab2a22ed9..4be6349d10 100644 --- a/OpenRA.Mods.Common/Projectiles/Missile.cs +++ b/OpenRA.Mods.Common/Projectiles/Missile.cs @@ -921,17 +921,22 @@ namespace OpenRA.Mods.Common.Projectiles var world = args.SourceActor.World; if (!world.FogObscures(pos)) { + var paletteName = info.Palette; + if (paletteName != null && info.IsPlayerPalette) + paletteName += args.SourceActor.Owner.InternalName; + + var palette = wr.Palette(paletteName); + if (info.Shadow) { var dat = world.Map.DistanceAboveTerrain(pos); var shadowPos = pos - new WVec(0, 0, dat.Length); - foreach (var r in anim.Render(shadowPos, wr.Palette(info.Palette))) + foreach (var r in anim.Render(shadowPos, palette)) yield return ((IModifyableRenderable)r) .WithTint(shadowColor, ((IModifyableRenderable)r).TintModifiers | TintModifiers.ReplaceColor) .WithAlpha(shadowAlpha); } - var palette = wr.Palette(info.Palette + (info.IsPlayerPalette ? args.SourceActor.Owner.InternalName : "")); foreach (var r in anim.Render(pos, palette)) yield return r; }