Add a DamagesConcreteWarhead to remove buildable concrete.
This commit is contained in:
committed by
abcdefg30
parent
7438af8266
commit
399e451ada
@@ -83,6 +83,7 @@
|
|||||||
<Compile Include="Traits\World\D2kEditorResourceLayer.cs" />
|
<Compile Include="Traits\World\D2kEditorResourceLayer.cs" />
|
||||||
<Compile Include="Lint\CheckImportActors.cs" />
|
<Compile Include="Lint\CheckImportActors.cs" />
|
||||||
<Compile Include="PackageLoaders\D2kSoundResources.cs" />
|
<Compile Include="PackageLoaders\D2kSoundResources.cs" />
|
||||||
|
<Compile Include="Warheads\DamagesConcreteWarhead.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\OpenRA.Game\OpenRA.Game.csproj">
|
<ProjectReference Include="..\OpenRA.Game\OpenRA.Game.csproj">
|
||||||
|
|||||||
@@ -21,6 +21,9 @@ namespace OpenRA.Mods.D2k.Traits
|
|||||||
[Desc("Palette to render the layer sprites in.")]
|
[Desc("Palette to render the layer sprites in.")]
|
||||||
public readonly string Palette = TileSet.TerrainPaletteInternalName;
|
public readonly string Palette = TileSet.TerrainPaletteInternalName;
|
||||||
|
|
||||||
|
[Desc("The hitpoints, which can be reduced by the DamagesConcreteWarhead.")]
|
||||||
|
public readonly int MaxStrength = 9000;
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new BuildableTerrainLayer(init.Self, this); }
|
public object Create(ActorInitializer init) { return new BuildableTerrainLayer(init.Self, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,6 +32,7 @@ namespace OpenRA.Mods.D2k.Traits
|
|||||||
readonly BuildableTerrainLayerInfo info;
|
readonly BuildableTerrainLayerInfo info;
|
||||||
readonly Dictionary<CPos, Sprite> dirty = new Dictionary<CPos, Sprite>();
|
readonly Dictionary<CPos, Sprite> dirty = new Dictionary<CPos, Sprite>();
|
||||||
readonly Map map;
|
readonly Map map;
|
||||||
|
readonly CellLayer<int> strength;
|
||||||
|
|
||||||
TerrainSpriteLayer render;
|
TerrainSpriteLayer render;
|
||||||
Theater theater;
|
Theater theater;
|
||||||
@@ -38,6 +42,7 @@ namespace OpenRA.Mods.D2k.Traits
|
|||||||
{
|
{
|
||||||
this.info = info;
|
this.info = info;
|
||||||
map = self.World.Map;
|
map = self.World.Map;
|
||||||
|
strength = new CellLayer<int>(self.World.Map);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void WorldLoaded(World w, WorldRenderer wr)
|
public void WorldLoaded(World w, WorldRenderer wr)
|
||||||
@@ -49,12 +54,30 @@ namespace OpenRA.Mods.D2k.Traits
|
|||||||
public void AddTile(CPos cell, TerrainTile tile)
|
public void AddTile(CPos cell, TerrainTile tile)
|
||||||
{
|
{
|
||||||
map.CustomTerrain[cell] = map.Rules.TileSet.GetTerrainIndex(tile);
|
map.CustomTerrain[cell] = map.Rules.TileSet.GetTerrainIndex(tile);
|
||||||
|
strength[cell] = info.MaxStrength;
|
||||||
|
|
||||||
// Terrain tiles define their origin at the topleft
|
// Terrain tiles define their origin at the topleft
|
||||||
var s = theater.TileSprite(tile);
|
var s = theater.TileSprite(tile);
|
||||||
dirty[cell] = new Sprite(s.Sheet, s.Bounds, s.ZRamp, float2.Zero, s.Channel, s.BlendMode);
|
dirty[cell] = new Sprite(s.Sheet, s.Bounds, s.ZRamp, float2.Zero, s.Channel, s.BlendMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void HitTile(CPos cell, int damage)
|
||||||
|
{
|
||||||
|
if (strength[cell] == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
strength[cell] = strength[cell] - damage;
|
||||||
|
if (strength[cell] < 1)
|
||||||
|
RemoveTile(cell);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RemoveTile(CPos cell)
|
||||||
|
{
|
||||||
|
map.CustomTerrain[cell] = byte.MaxValue;
|
||||||
|
strength[cell] = 0;
|
||||||
|
dirty[cell] = null;
|
||||||
|
}
|
||||||
|
|
||||||
void ITickRender.TickRender(WorldRenderer wr, Actor self)
|
void ITickRender.TickRender(WorldRenderer wr, Actor self)
|
||||||
{
|
{
|
||||||
var remove = new List<CPos>();
|
var remove = new List<CPos>();
|
||||||
|
|||||||
34
OpenRA.Mods.D2k/Warheads/DamagesConcreteWarhead.cs
Normal file
34
OpenRA.Mods.D2k/Warheads/DamagesConcreteWarhead.cs
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2018 The OpenRA Developers (see AUTHORS)
|
||||||
|
* This file is part of OpenRA, which is free software. It is made
|
||||||
|
* available to you under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation, either version 3 of
|
||||||
|
* the License, or (at your option) any later version. For more
|
||||||
|
* information, see COPYING.
|
||||||
|
*/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using OpenRA.Mods.Common.Warheads;
|
||||||
|
using OpenRA.Mods.D2k.Traits;
|
||||||
|
using OpenRA.Traits;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.D2k.Warheads
|
||||||
|
{
|
||||||
|
[Desc("Interacts with the BuildableTerrainLayer trait.")]
|
||||||
|
public class DamagesConcreteWarhead : Warhead
|
||||||
|
{
|
||||||
|
[Desc("How much damage to deal.")]
|
||||||
|
[FieldLoader.Require]
|
||||||
|
public readonly int Damage = 0;
|
||||||
|
|
||||||
|
public override void DoImpact(Target target, Actor firedBy, IEnumerable<int> damageModifiers)
|
||||||
|
{
|
||||||
|
var world = firedBy.World;
|
||||||
|
var layer = world.WorldActor.Trait<BuildableTerrainLayer>();
|
||||||
|
var cell = world.Map.CellContaining(target.CenterPosition);
|
||||||
|
layer.HitTile(cell, Damage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -32,6 +32,8 @@ Debris:
|
|||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
Explosions: tiny_explosion
|
Explosions: tiny_explosion
|
||||||
ImpactActors: false
|
ImpactActors: false
|
||||||
|
Warhead@4Concrete: DamagesConcrete
|
||||||
|
Damage: 300
|
||||||
|
|
||||||
Debris2:
|
Debris2:
|
||||||
Inherits: Debris
|
Inherits: Debris
|
||||||
@@ -56,6 +58,8 @@ Debris2:
|
|||||||
DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath
|
DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
Explosions: small_napalm
|
Explosions: small_napalm
|
||||||
|
Warhead@4Concrete: DamagesConcrete
|
||||||
|
Damage: 2250
|
||||||
|
|
||||||
Debris3:
|
Debris3:
|
||||||
Inherits: Debris2
|
Inherits: Debris2
|
||||||
@@ -64,6 +68,8 @@ Debris3:
|
|||||||
TrailImage: small_trail2
|
TrailImage: small_trail2
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Damage: 1500
|
Damage: 1500
|
||||||
|
Warhead@4Concrete: DamagesConcrete
|
||||||
|
Damage: 1350
|
||||||
|
|
||||||
Debris4:
|
Debris4:
|
||||||
Inherits: Debris2
|
Inherits: Debris2
|
||||||
|
|||||||
@@ -26,6 +26,8 @@
|
|||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
Explosions: small_napalm
|
Explosions: small_napalm
|
||||||
ImpactActors: false
|
ImpactActors: false
|
||||||
|
Warhead@4Concrete: DamagesConcrete
|
||||||
|
Damage: 540
|
||||||
|
|
||||||
110mm_Gun:
|
110mm_Gun:
|
||||||
Inherits: ^Cannon
|
Inherits: ^Cannon
|
||||||
@@ -37,6 +39,8 @@
|
|||||||
Blockable: false
|
Blockable: false
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Damage: 2900
|
Damage: 2900
|
||||||
|
Warhead@2Concrete: DamagesConcrete
|
||||||
|
Damage: 2900
|
||||||
|
|
||||||
80mm_A:
|
80mm_A:
|
||||||
Inherits: ^Cannon
|
Inherits: ^Cannon
|
||||||
@@ -69,6 +73,8 @@ DevBullet:
|
|||||||
invulnerable: 0
|
invulnerable: 0
|
||||||
cy: 40
|
cy: 40
|
||||||
harvester: 100
|
harvester: 100
|
||||||
|
Warhead@2Concrete: DamagesConcrete
|
||||||
|
Damage: 3250
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
Explosions: shockwave
|
Explosions: shockwave
|
||||||
ImpactSounds: EXPLMD1.WAV
|
ImpactSounds: EXPLMD1.WAV
|
||||||
@@ -101,6 +107,8 @@ DevBullet:
|
|||||||
cy: 20
|
cy: 20
|
||||||
harvester: 25
|
harvester: 25
|
||||||
DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath
|
DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath
|
||||||
|
Warhead@2Concrete: DamagesConcrete
|
||||||
|
Damage: 5625
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
Explosions: med_explosion
|
Explosions: med_explosion
|
||||||
ImpactSounds: EXPLMD2.WAV
|
ImpactSounds: EXPLMD2.WAV
|
||||||
|
|||||||
@@ -32,6 +32,8 @@
|
|||||||
Explosions: tiny_explosion
|
Explosions: tiny_explosion
|
||||||
ImpactActors: false
|
ImpactActors: false
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
|
Warhead@3Concrete: DamagesConcrete
|
||||||
|
Damage: 240
|
||||||
|
|
||||||
^Missile:
|
^Missile:
|
||||||
Inherits: ^Rocket
|
Inherits: ^Rocket
|
||||||
@@ -62,6 +64,8 @@
|
|||||||
invulnerable: 0
|
invulnerable: 0
|
||||||
cy: 30
|
cy: 30
|
||||||
harvester: 50
|
harvester: 50
|
||||||
|
Warhead@2Concrete: DamagesConcrete
|
||||||
|
Damage: 720
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
Explosions: small_explosion
|
Explosions: small_explosion
|
||||||
ImpactSounds: EXPLSML1.WAV
|
ImpactSounds: EXPLSML1.WAV
|
||||||
@@ -88,6 +92,8 @@ Rocket:
|
|||||||
invulnerable: 0
|
invulnerable: 0
|
||||||
cy: 20
|
cy: 20
|
||||||
harvester: 50
|
harvester: 50
|
||||||
|
Warhead@2Concrete: DamagesConcrete
|
||||||
|
Damage: 625
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
Explosions: rocket_explosion
|
Explosions: rocket_explosion
|
||||||
ExplosionPalette: effect75alpha
|
ExplosionPalette: effect75alpha
|
||||||
@@ -117,6 +123,8 @@ mtank_pri:
|
|||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
Damage: 6000
|
Damage: 6000
|
||||||
ValidTargets: Ground, Air
|
ValidTargets: Ground, Air
|
||||||
|
Warhead@2Concrete: DamagesConcrete
|
||||||
|
Damage: 900
|
||||||
|
|
||||||
DeviatorMissile:
|
DeviatorMissile:
|
||||||
Inherits: ^Missile
|
Inherits: ^Missile
|
||||||
@@ -151,3 +159,5 @@ DeviatorMissile:
|
|||||||
Range: 512
|
Range: 512
|
||||||
Duration: 375
|
Duration: 375
|
||||||
InvalidTargets: Infantry, Structure
|
InvalidTargets: Infantry, Structure
|
||||||
|
Warhead@5Concrete: DamagesConcrete
|
||||||
|
Damage: 1000
|
||||||
|
|||||||
@@ -46,6 +46,8 @@ Sound:
|
|||||||
cy: 20
|
cy: 20
|
||||||
harvester: 50
|
harvester: 50
|
||||||
DamageTypes: Prone50Percent, TriggerProne, SoundDeath
|
DamageTypes: Prone50Percent, TriggerProne, SoundDeath
|
||||||
|
Warhead@3Concrete: DamagesConcrete
|
||||||
|
Damage: 1720
|
||||||
|
|
||||||
WormJaw:
|
WormJaw:
|
||||||
ReloadDelay: 10
|
ReloadDelay: 10
|
||||||
@@ -86,6 +88,8 @@ OrniBomb:
|
|||||||
Explosions: large_explosion
|
Explosions: large_explosion
|
||||||
ImpactSounds: EXPLSML4.WAV
|
ImpactSounds: EXPLSML4.WAV
|
||||||
ImpactActors: false
|
ImpactActors: false
|
||||||
|
Warhead@4Concrete: DamagesConcrete
|
||||||
|
Damage: 6750
|
||||||
|
|
||||||
Crush:
|
Crush:
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
@@ -122,6 +126,8 @@ Atomic:
|
|||||||
Explosions: nuke
|
Explosions: nuke
|
||||||
ImpactSounds: EXPLLG2.WAV
|
ImpactSounds: EXPLLG2.WAV
|
||||||
ImpactActors: false
|
ImpactActors: false
|
||||||
|
Warhead@3Concrete: DamagesConcrete
|
||||||
|
Damage: 24300
|
||||||
|
|
||||||
CrateNuke:
|
CrateNuke:
|
||||||
Inherits: Atomic
|
Inherits: Atomic
|
||||||
@@ -152,6 +158,8 @@ CrateExplosion:
|
|||||||
Explosions: large_explosion
|
Explosions: large_explosion
|
||||||
ImpactSounds: EXPLSML4.WAV
|
ImpactSounds: EXPLSML4.WAV
|
||||||
ImpactActors: false
|
ImpactActors: false
|
||||||
|
Warhead@2Concrete: DamagesConcrete
|
||||||
|
Damage: 4500
|
||||||
|
|
||||||
UnitExplodeSmall:
|
UnitExplodeSmall:
|
||||||
Warhead@1Eff: CreateEffect
|
Warhead@1Eff: CreateEffect
|
||||||
@@ -212,6 +220,8 @@ grenade:
|
|||||||
Explosions: med_explosion
|
Explosions: med_explosion
|
||||||
ImpactSounds: EXPLMD2.WAV
|
ImpactSounds: EXPLMD2.WAV
|
||||||
ImpactActors: false
|
ImpactActors: false
|
||||||
|
Warhead@4Concrete: DamagesConcrete
|
||||||
|
Damage: 1875
|
||||||
|
|
||||||
GrenDeath:
|
GrenDeath:
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
@@ -233,6 +243,8 @@ GrenDeath:
|
|||||||
Explosions: building
|
Explosions: building
|
||||||
ImpactSounds: EXPLSML4.WAV
|
ImpactSounds: EXPLSML4.WAV
|
||||||
ImpactActors: false
|
ImpactActors: false
|
||||||
|
Warhead@4Concrete: DamagesConcrete
|
||||||
|
Damage: 1875
|
||||||
|
|
||||||
SardDeath:
|
SardDeath:
|
||||||
Warhead@1Dam: SpreadDamage
|
Warhead@1Dam: SpreadDamage
|
||||||
@@ -255,6 +267,8 @@ SardDeath:
|
|||||||
Explosions: small_napalm
|
Explosions: small_napalm
|
||||||
ImpactSounds: EXPLSML2.WAV
|
ImpactSounds: EXPLSML2.WAV
|
||||||
ImpactActors: false
|
ImpactActors: false
|
||||||
|
Warhead@4Concrete: DamagesConcrete
|
||||||
|
Damage: 450
|
||||||
|
|
||||||
SpiceExplosion:
|
SpiceExplosion:
|
||||||
Projectile: Bullet
|
Projectile: Bullet
|
||||||
@@ -323,3 +337,5 @@ PlasmaExplosion:
|
|||||||
SmudgeType: SandCrater
|
SmudgeType: SandCrater
|
||||||
Warhead@3Eff: CreateEffect
|
Warhead@3Eff: CreateEffect
|
||||||
Explosions: devastator
|
Explosions: devastator
|
||||||
|
Warhead@4Concrete: DamagesConcrete
|
||||||
|
Damage: 20000
|
||||||
|
|||||||
@@ -20,6 +20,8 @@
|
|||||||
Warhead@2Eff: CreateEffect
|
Warhead@2Eff: CreateEffect
|
||||||
Explosions: piffs
|
Explosions: piffs
|
||||||
ImpactActors: false
|
ImpactActors: false
|
||||||
|
Warhead@3Concrete: DamagesConcrete
|
||||||
|
Damage: 1250
|
||||||
|
|
||||||
LMG:
|
LMG:
|
||||||
Inherits: ^MG
|
Inherits: ^MG
|
||||||
@@ -57,6 +59,8 @@ M_HMG:
|
|||||||
invulnerable: 0
|
invulnerable: 0
|
||||||
cy: 20
|
cy: 20
|
||||||
harvester: 50
|
harvester: 50
|
||||||
|
Warhead@2Concrete: DamagesConcrete
|
||||||
|
Damage: 625
|
||||||
|
|
||||||
M_HMG_H:
|
M_HMG_H:
|
||||||
Inherits: M_HMG
|
Inherits: M_HMG
|
||||||
@@ -79,6 +83,8 @@ HMG:
|
|||||||
Spread: 160
|
Spread: 160
|
||||||
Falloff: 100, 60, 30, 0
|
Falloff: 100, 60, 30, 0
|
||||||
Damage: 1800
|
Damage: 1800
|
||||||
|
Warhead@2Concrete: DamagesConcrete
|
||||||
|
Damage: 1800
|
||||||
|
|
||||||
HMGo:
|
HMGo:
|
||||||
Inherits: HMG
|
Inherits: HMG
|
||||||
|
|||||||
Reference in New Issue
Block a user