diff --git a/OpenRA.Mods.Common/Lint/CheckDeathTypes.cs b/OpenRA.Mods.Common/Lint/CheckDeathTypes.cs index 69fc51bd58..252700de77 100644 --- a/OpenRA.Mods.Common/Lint/CheckDeathTypes.cs +++ b/OpenRA.Mods.Common/Lint/CheckDeathTypes.cs @@ -28,7 +28,9 @@ namespace OpenRA.Mods.Common.Lint if (!animations.Any()) continue; - var deathTypes = animations.SelectMany(x => x.DeathTypes.Select(y => y.Key)).ToList(); + var deathAnimationDeathtypes = animations.SelectMany(x => x.DeathTypes.Select(y => y.Key)).ToList(); + var spawnActorDeathtypes = actorInfo.Value.TraitInfos().Where(s => !string.IsNullOrEmpty(s.DeathType)).Select(a => a.DeathType); + var deathTypes = deathAnimationDeathtypes.Concat(spawnActorDeathtypes).Distinct(); if (!deathTypes.Any()) continue; @@ -51,7 +53,7 @@ namespace OpenRA.Mods.Common.Lint continue; if (!warhead.DamageTypes.Overlaps(deathTypes)) - emitError("Actor type `{0}` does not define a death animation for weapon `{1}`!" + emitError("Actor type {0} doesn't define a death animation or spawn an actor on death for weapon {1}!" .F(actorInfo.Key, weaponInfo.Key)); } } diff --git a/mods/ts/rules/civilian-infantry.yaml b/mods/ts/rules/civilian-infantry.yaml index f520765adf..0bc7ff4495 100644 --- a/mods/ts/rules/civilian-infantry.yaml +++ b/mods/ts/rules/civilian-infantry.yaml @@ -17,6 +17,10 @@ WEEDGUY: LocalOffset: 85,0,384 AttackFrontal: Voice: Attack + -SpawnActorOnDeath@FLAMEGUY: + WithDeathAnimation@fire: + DeathTypes: + FireDeath: 5 UMAGON: Inherits: ^Soldier @@ -235,6 +239,10 @@ DOGGIE: WanderMoveRadius: 2 MinMoveDelayInTicks: 25 MaxMoveDelayInTicks: 45 + -SpawnActorOnDeath@FLAMEGUY: + WithDeathAnimation@fire: + DeathTypes: + FireDeath: 5 VISC_SML: Inherits: ^Visceroid diff --git a/mods/ts/rules/defaults.yaml b/mods/ts/rules/defaults.yaml index fd2ade8bb9..e57e4390ef 100644 --- a/mods/ts/rules/defaults.yaml +++ b/mods/ts/rules/defaults.yaml @@ -279,7 +279,9 @@ BulletDeath: 1 SmallExplosionDeath: 2 HeadshotDeath: 3 - FireDeath: 5 + SpawnActorOnDeath@FLAMEGUY: + Actor: FLAMEGUY + DeathType: FireDeath WithDeathAnimation@explosion: DeathSequencePalette: effect DeathPaletteIsPlayerPalette: False diff --git a/mods/ts/rules/shared-infantry.yaml b/mods/ts/rules/shared-infantry.yaml index ffead6617f..8ede00b575 100644 --- a/mods/ts/rules/shared-infantry.yaml +++ b/mods/ts/rules/shared-infantry.yaml @@ -67,3 +67,31 @@ ENGINEER: nod: engineer.nod Selectable: Priority: 5 + +FLAMEGUY: + Inherits@1: ^ExistsInWorld + Inherits@2: ^SpriteActor + Mobile: + Speed: 71 + SharesCell: true + TerrainSpeeds: + Clear: 45 + Road: 50 + Rail: 45 + DirtRoad: 50 + Rough: 40 + Tiberium: 45 + BlueTiberium: 45 + Veins: 25 + HiddenUnderFog: + WithInfantryBody: + IdleSequences: run + Health: + HP: 160 + SelfHealing: + Step: -10 + HealIfBelow: 101 + ScaredyCat: + WithDeathAnimation: + FallbackSequence: die + UseDeathTypeSuffix: false diff --git a/mods/ts/sequences/infantry.yaml b/mods/ts/sequences/infantry.yaml index 23aaed6c00..c4165aa479 100644 --- a/mods/ts/sequences/infantry.yaml +++ b/mods/ts/sequences/infantry.yaml @@ -60,10 +60,6 @@ e1.gdi: Length: 2 Facings: 8 ShadowStart: 552 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * icon: sidebar-gdi|e1icon @@ -130,10 +126,6 @@ e1.nod: Length: 2 Facings: 8 ShadowStart: 552 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * icon: sidebar-nod|e1icon @@ -201,10 +193,6 @@ e2: Length: 2 Facings: 8 ShadowStart: 552 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * icon: e2icon @@ -273,10 +261,6 @@ e3: Length: 2 Facings: 8 ShadowStart: 552 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * icon: e4icon @@ -409,10 +393,6 @@ medic: Start: 292 Length: 14 ShadowStart: 599 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * icon: mediicon @@ -471,10 +451,6 @@ engineer.gdi: Length: 2 Facings: 8 ShadowStart: 552 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * icon: sidebar-gdi|engnicon @@ -533,10 +509,6 @@ engineer.nod: Length: 2 Facings: 8 ShadowStart: 552 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * icon: sidebar-nod|engnicon @@ -605,10 +577,6 @@ umagon: Length: 2 Facings: 8 ShadowStart: 552 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * icon: umagicon @@ -677,10 +645,6 @@ ghost: Length: 2 Facings: 8 ShadowStart: 552 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * icon: gosticon @@ -746,10 +710,6 @@ jumpjet: Length: 2 Facings: 8 ShadowStart: 711 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * icon: jjeticon @@ -818,10 +778,6 @@ mhijack: Length: 2 Facings: 8 ShadowStart: 552 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * icon: chamicon @@ -890,10 +846,6 @@ chamspy: Length: 2 Facings: 8 ShadowStart: 552 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * icon: chamicon @@ -947,10 +899,6 @@ cyc2: Length: 6 Facings: 8 ShadowStart: 568 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * emp-overlay: emp_fx01 @@ -1088,10 +1036,6 @@ mutant: Length: 2 Facings: 8 ShadowStart: 552 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * icon: mutcicon @@ -1161,10 +1105,6 @@ mwmn: Length: 2 Facings: 8 ShadowStart: 552 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * icon: mutcicon @@ -1234,10 +1174,6 @@ mutant3: Length: 2 Facings: 8 ShadowStart: 552 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * icon: mutcicon @@ -1307,10 +1243,6 @@ tratos: Length: 2 Facings: 8 ShadowStart: 552 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * icon: mutcicon @@ -1380,10 +1312,6 @@ oxanna: Length: 2 Facings: 8 ShadowStart: 552 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * @@ -1452,10 +1380,6 @@ slav: Length: 2 Facings: 8 ShadowStart: 552 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * @@ -1587,10 +1511,6 @@ civ1: Length: 6 Facings: 8 ShadowStart: 456 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * @@ -1644,10 +1564,6 @@ civ2: ShadowStart: 451 Tick: 800 ZOffset: -511 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * @@ -1706,9 +1622,21 @@ civ3: Length: 6 Facings: 8 ShadowStart: 456 - die5: flameguy # TODO: walking animation unused - Start: 42 - Length: 104 - ShadowStart: 190 die6: electro Length: * + +flameguy: + Defaults: + Facings: 8 + Tick: 80 + ShadowStart: 148 + idle: + stand: + run: + Length: 6 + die: + Start: 44 + Facings: 1 + Length: 104 + ShadowStart: 192 +