diff --git a/OpenRA.Mods.Common/Lint/CheckBuildingFootprint.cs b/OpenRA.Mods.Common/Lint/CheckBuildingFootprint.cs new file mode 100644 index 0000000000..2e96d8bd0d --- /dev/null +++ b/OpenRA.Mods.Common/Lint/CheckBuildingFootprint.cs @@ -0,0 +1,36 @@ +#region Copyright & License Information +/* + * Copyright 2007-2016 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; +using System.Linq; +using OpenRA.Mods.Common.Traits; +using OpenRA.Traits; + +namespace OpenRA.Mods.Common.Lint +{ + class CheckBuildingFootprint : ILintRulesPass + { + public void Run(Action emitError, Action emitWarning, Ruleset rules) + { + foreach (var actorInfo in rules.Actors) + { + var building = actorInfo.Value.TraitInfoOrDefault(); + if (building == null) + continue; + + var footprint = building.Footprint.Where(x => !char.IsWhiteSpace(x)).ToArray(); + var dimension = building.Dimensions; + if (footprint.Length != dimension.X * dimension.Y) + emitError("Invalid building footprint/dimension for " + actorInfo.Key); + } + } + } +} diff --git a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj index e817174245..480cd2fdf8 100644 --- a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj +++ b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj @@ -179,6 +179,7 @@ + @@ -431,6 +432,7 @@ + @@ -447,7 +449,6 @@ - diff --git a/OpenRA.Mods.Common/Traits/Render/WithDamageOverlay.cs b/OpenRA.Mods.Common/Traits/Render/WithDamageOverlay.cs new file mode 100644 index 0000000000..ddb8f23695 --- /dev/null +++ b/OpenRA.Mods.Common/Traits/Render/WithDamageOverlay.cs @@ -0,0 +1,74 @@ +#region Copyright & License Information +/* + * Copyright 2007-2016 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.Graphics; +using OpenRA.Mods.Common.Warheads; +using OpenRA.Traits; + +namespace OpenRA.Mods.Common.Traits.Render +{ + [Desc("Renders an overlay when the actor is taking heavy damage.")] + public class WithDamageOverlayInfo : ITraitInfo, Requires + { + public readonly string Image = "smoke_m"; + + [SequenceReference("Image")] public readonly string IdleSequence = "idle"; + [SequenceReference("Image")] public readonly string LoopSequence = "loop"; + [SequenceReference("Image")] public readonly string EndSequence = "end"; + + [Desc("Damage types that this should be used for (defined on the warheads).", + "Leave empty to disable all filtering.")] + public readonly HashSet DamageTypes = new HashSet(); + + [Desc("Trigger when Undamaged, Light, Medium, Heavy, Critical or Dead.")] + public readonly DamageState MinimumDamageState = DamageState.Heavy; + public readonly DamageState MaximumDamageState = DamageState.Dead; + + public object Create(ActorInitializer init) { return new WithDamageOverlay(init.Self, this); } + } + + public class WithDamageOverlay : INotifyDamage + { + readonly WithDamageOverlayInfo info; + readonly Animation anim; + + bool isSmoking; + + public WithDamageOverlay(Actor self, WithDamageOverlayInfo info) + { + this.info = info; + + var rs = self.Trait(); + + anim = new Animation(self.World, info.Image); + rs.Add(new AnimationWithOffset(anim, null, () => !isSmoking)); + } + + public void Damaged(Actor self, AttackInfo e) + { + var warhead = e.Warhead as DamageWarhead; + if (info.DamageTypes.Count > 0 && (warhead != null && !warhead.DamageTypes.Overlaps(info.DamageTypes))) + return; + + if (isSmoking) return; + if (e.Damage < 0) return; /* getting healed */ + if (e.DamageState < info.MinimumDamageState) return; + if (e.DamageState > info.MaximumDamageState) return; + + isSmoking = true; + anim.PlayThen(info.IdleSequence, + () => anim.PlayThen(info.LoopSequence, + () => anim.PlayThen(info.EndSequence, + () => isSmoking = false))); + } + } +} diff --git a/OpenRA.Mods.Common/Traits/Render/WithSmoke.cs b/OpenRA.Mods.Common/Traits/Render/WithSmoke.cs deleted file mode 100644 index 94323f4fe1..0000000000 --- a/OpenRA.Mods.Common/Traits/Render/WithSmoke.cs +++ /dev/null @@ -1,59 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2016 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 OpenRA.Graphics; -using OpenRA.Traits; - -namespace OpenRA.Mods.Common.Traits.Render -{ - [Desc("Renders an overlay when the actor is taking heavy damage.")] - public class WithSmokeInfo : ITraitInfo, Requires - { - public readonly string Sequence = "smoke_m"; - - [SequenceReference("Sequence")] public readonly string IdleSequence = "idle"; - [SequenceReference("Sequence")] public readonly string LoopSequence = "loop"; - [SequenceReference("Sequence")] public readonly string EndSequence = "end"; - - public object Create(ActorInitializer init) { return new WithSmoke(init.Self, this); } - } - - public class WithSmoke : INotifyDamage - { - readonly WithSmokeInfo info; - readonly Animation anim; - - bool isSmoking; - - public WithSmoke(Actor self, WithSmokeInfo info) - { - this.info = info; - - var rs = self.Trait(); - - anim = new Animation(self.World, info.Sequence); - rs.Add(new AnimationWithOffset(anim, null, () => !isSmoking)); - } - - public void Damaged(Actor self, AttackInfo e) - { - if (isSmoking) return; - if (e.Damage < 0) return; /* getting healed */ - if (e.DamageState < DamageState.Heavy) return; - - isSmoking = true; - anim.PlayThen(info.IdleSequence, - () => anim.PlayThen(info.LoopSequence, - () => anim.PlayBackwardsThen(info.EndSequence, - () => isSmoking = false))); - } - } -} diff --git a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs index 4fa6ad33ba..2222cf84a7 100644 --- a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs +++ b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs @@ -788,6 +788,22 @@ namespace OpenRA.Mods.Common.UtilityCommands n.Key = "DetonationDelay"; } + // WithSmoke was refactored to become more generic and Sequence/Image notation has been unified. + if (engineVersion < 20160528) + { + if (depth == 1 && node.Key.StartsWith("WithSmoke")) + { + var s = node.Value.Nodes.FirstOrDefault(n => n.Key == "Sequence"); + if (s != null) + s.Key = "Image"; + + var parts = node.Key.Split('@'); + node.Key = "WithDamageOverlay"; + if (parts.Length > 1) + node.Key += "@" + parts[1]; + } + } + UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1); } } diff --git a/mods/cnc/rules/defaults.yaml b/mods/cnc/rules/defaults.yaml index e4c867ce36..e516665f32 100644 --- a/mods/cnc/rules/defaults.yaml +++ b/mods/cnc/rules/defaults.yaml @@ -79,7 +79,7 @@ HiddenUnderFog: AttackMove: DrawLineToTarget: - WithSmoke: + WithDamageOverlay: WithFacingSpriteBody: Explodes: Weapon: UnitExplodeSmall @@ -447,7 +447,7 @@ ActorLostNotification: AttackMove: DrawLineToTarget: - WithSmoke: + WithDamageOverlay: Explodes: Weapon: UnitExplodeShip EmptyWeapon: UnitExplodeShip @@ -635,10 +635,40 @@ HP: 500 Armor: Type: Wood + Targetable: + TargetTypes: Trees + WithDamageOverlay@SmallBurn: + DamageType: Incendiary + Image: burn-s + MinimumDamageState: Light + MaximumDamageState: Medium + WithDamageOverlay@MediumBurn: + DamageType: Incendiary + Image: burn-m + MinimumDamageState: Medium + MaximumDamageState: Heavy + WithDamageOverlay@LargeBurn: + DamageType: Incendiary + Image: burn-l + MinimumDamageState: Heavy + MaximumDamageState: Dead AutoTargetIgnore: HiddenUnderShroud: ScriptTriggers: +^TreeHusk: + Inherits@1: ^SpriteActor + AppearsOnRadar: + Building: + Footprint: __ x_ + Dimensions: 2,2 + WithSpriteBody: + Tooltip: + Name: Tree (Burnt) + ShowOwnerRow: false + FrozenUnderFog: + ScriptTriggers: + ^TibTree: Inherits@1: ^SpriteActor Tooltip: diff --git a/mods/cnc/rules/trees.yaml b/mods/cnc/rules/trees.yaml index eaefa4a9a7..0f97deacef 100644 --- a/mods/cnc/rules/trees.yaml +++ b/mods/cnc/rules/trees.yaml @@ -69,42 +69,99 @@ T01: Inherits: ^Tree EditorTilesetFilter: ExcludeTilesets: DESERT + SpawnActorOnDeath: + Actor: T01.Husk + +T01.Husk: + Inherits: ^TreeHusk + EditorTilesetFilter: + ExcludeTilesets: DESERT T02: Inherits: ^Tree EditorTilesetFilter: ExcludeTilesets: DESERT + SpawnActorOnDeath: + Actor: T02.Husk + +T02.Husk: + Inherits: ^TreeHusk + EditorTilesetFilter: + ExcludeTilesets: DESERT T03: Inherits: ^Tree EditorTilesetFilter: ExcludeTilesets: DESERT + SpawnActorOnDeath: + Actor: T03.Husk + +T03.Husk: + Inherits: ^TreeHusk + EditorTilesetFilter: + ExcludeTilesets: DESERT T04: Inherits: ^Tree EditorTilesetFilter: RequireTilesets: DESERT + SpawnActorOnDeath: + Actor: T04.Husk + +T04.Husk: + Inherits: ^TreeHusk + EditorTilesetFilter: + RequireTilesets: DESERT T05: Inherits: ^Tree EditorTilesetFilter: ExcludeTilesets: DESERT + SpawnActorOnDeath: + Actor: T05.Husk + +T05.Husk: + Inherits: ^TreeHusk + EditorTilesetFilter: + ExcludeTilesets: DESERT T06: Inherits: ^Tree EditorTilesetFilter: ExcludeTilesets: DESERT + SpawnActorOnDeath: + Actor: T06.Husk + +T06.Husk: + Inherits: ^TreeHusk + EditorTilesetFilter: + ExcludeTilesets: DESERT T07: Inherits: ^Tree EditorTilesetFilter: ExcludeTilesets: DESERT + SpawnActorOnDeath: + Actor: T07.Husk + +T07.Husk: + Inherits: ^TreeHusk + EditorTilesetFilter: + ExcludeTilesets: DESERT T08: Inherits: ^Tree Building: Footprint: x_ Dimensions: 2,1 + SpawnActorOnDeath: + Actor: T08.Husk + +T08.Husk: + Inherits: ^TreeHusk + Building: + Footprint: x_ + Dimensions: 2,1 T09: Inherits: ^Tree @@ -113,6 +170,16 @@ T09: Dimensions: 2,1 EditorTilesetFilter: RequireTilesets: DESERT + SpawnActorOnDeath: + Actor: T09.Husk + +T09.Husk: + Inherits: ^TreeHusk + Building: + Footprint: x_ + Dimensions: 2,1 + EditorTilesetFilter: + ExcludeTilesets: DESERT T10: Inherits: ^Tree @@ -120,6 +187,15 @@ T10: Footprint: __ xx EditorTilesetFilter: ExcludeTilesets: DESERT + SpawnActorOnDeath: + Actor: T10.Husk + +T10.Husk: + Inherits: ^TreeHusk + Building: + Footprint: __ xx + EditorTilesetFilter: + ExcludeTilesets: DESERT T11: Inherits: ^Tree @@ -127,21 +203,53 @@ T11: Footprint: __ xx EditorTilesetFilter: ExcludeTilesets: DESERT + SpawnActorOnDeath: + Actor: T11.Husk + +T11.Husk: + Inherits: ^TreeHusk + Building: + Footprint: __ xx + EditorTilesetFilter: + ExcludeTilesets: DESERT T12: Inherits: ^Tree EditorTilesetFilter: ExcludeTilesets: DESERT + SpawnActorOnDeath: + Actor: T12.Husk + +T12.Husk: + Inherits: ^TreeHusk + Building: + EditorTilesetFilter: + ExcludeTilesets: DESERT T13: Inherits: ^Tree EditorTilesetFilter: ExcludeTilesets: DESERT + SpawnActorOnDeath: + Actor: T13.Husk + +T13.Husk: + Inherits: ^TreeHusk + Building: + EditorTilesetFilter: + ExcludeTilesets: DESERT T14: Inherits: ^Tree EditorTilesetFilter: ExcludeTilesets: DESERT + SpawnActorOnDeath: + Actor: T14.Husk + +T14.Husk: + Inherits: ^TreeHusk + EditorTilesetFilter: + ExcludeTilesets: DESERT T15: Inherits: ^Tree @@ -150,21 +258,52 @@ T15: Dimensions: 3,2 EditorTilesetFilter: ExcludeTilesets: DESERT + SpawnActorOnDeath: + Actor: T15.Husk + +T15.Husk: + Inherits: ^TreeHusk + Building: + Footprint: ___ xx_ + Dimensions: 3,2 + EditorTilesetFilter: + ExcludeTilesets: DESERT T16: Inherits: ^Tree EditorTilesetFilter: ExcludeTilesets: DESERT + SpawnActorOnDeath: + Actor: T16.Husk + +T16.Husk: + Inherits: ^TreeHusk + EditorTilesetFilter: + ExcludeTilesets: DESERT T17: Inherits: ^Tree EditorTilesetFilter: ExcludeTilesets: DESERT + SpawnActorOnDeath: + Actor: T17.Husk + +T17.Husk: + Inherits: ^TreeHusk + EditorTilesetFilter: + ExcludeTilesets: DESERT T18: Inherits: ^Tree EditorTilesetFilter: RequireTilesets: DESERT + SpawnActorOnDeath: + Actor: T18.Husk + +T18.Husk: + Inherits: ^TreeHusk + EditorTilesetFilter: + RequireTilesets: DESERT TC01: Inherits: ^Tree @@ -173,6 +312,16 @@ TC01: Dimensions: 3,2 EditorTilesetFilter: ExcludeTilesets: DESERT + SpawnActorOnDeath: + Actor: TC01.Husk + +TC01.Husk: + Inherits: ^TreeHusk + Building: + Footprint: ___ xx_ + Dimensions: 3,2 + EditorTilesetFilter: + ExcludeTilesets: DESERT TC02: Inherits: ^Tree @@ -181,6 +330,16 @@ TC02: Dimensions: 3,2 EditorTilesetFilter: ExcludeTilesets: DESERT + SpawnActorOnDeath: + Actor: TC02.Husk + +TC02.Husk: + Inherits: ^TreeHusk + Building: + Footprint: _x_ xx_ + Dimensions: 3,2 + EditorTilesetFilter: + ExcludeTilesets: DESERT TC03: Inherits: ^Tree @@ -189,6 +348,16 @@ TC03: Dimensions: 3,2 EditorTilesetFilter: ExcludeTilesets: DESERT + SpawnActorOnDeath: + Actor: TC03.Husk + +TC03.Husk: + Inherits: ^TreeHusk + Building: + Footprint: _x_ xx_ + Dimensions: 3,2 + EditorTilesetFilter: + ExcludeTilesets: DESERT TC04: Inherits: ^Tree @@ -197,6 +366,16 @@ TC04: Dimensions: 4,3 EditorTilesetFilter: ExcludeTilesets: DESERT + SpawnActorOnDeath: + Actor: TC04.Husk + +TC04.Husk: + Inherits: ^TreeHusk + Building: + Footprint: ____ xxx_ x___ + Dimensions: 4,3 + EditorTilesetFilter: + ExcludeTilesets: DESERT TC05: Inherits: ^Tree @@ -205,3 +384,13 @@ TC05: Dimensions: 4,3 EditorTilesetFilter: ExcludeTilesets: DESERT + SpawnActorOnDeath: + Actor: TC05.Husk + +TC05.Husk: + Inherits: ^TreeHusk + Building: + Footprint: __x_ xxx_ _xx_ + Dimensions: 4,3 + EditorTilesetFilter: + ExcludeTilesets: DESERT diff --git a/mods/cnc/sequences/decorations.yaml b/mods/cnc/sequences/decorations.yaml index 5ff5cd8da9..b55dd65bdb 100644 --- a/mods/cnc/sequences/decorations.yaml +++ b/mods/cnc/sequences/decorations.yaml @@ -60,6 +60,14 @@ tc04: idle: damaged-idle: Start: 1 + +tc04.husk: + Defaults: tc04 + UseTilesetExtension: true + TilesetOverrides: + DESERT: TEMPERAT + idle: + Start: 2 dead: Start: 2 Length: 8 @@ -73,6 +81,14 @@ tc05: idle: damaged-idle: Start: 1 + +tc05.husk: + Defaults: tc05 + UseTilesetExtension: true + TilesetOverrides: + DESERT: TEMPERAT + idle: + Start: 2 dead: Start: 2 Length: 8 @@ -84,7 +100,13 @@ tc03: TilesetOverrides: DESERT: TEMPERAT idle: - damaged-idle: + +tc03.husk: + Defaults: tc03 + UseTilesetExtension: true + TilesetOverrides: + DESERT: TEMPERAT + idle: Start: 1 dead: Start: 2 @@ -97,7 +119,13 @@ tc02: TilesetOverrides: DESERT: TEMPERAT idle: - damaged-idle: + +tc02.husk: + Defaults: tc02 + UseTilesetExtension: true + TilesetOverrides: + DESERT: TEMPERAT + idle: Start: 1 dead: Start: 2 @@ -110,7 +138,13 @@ tc01: TilesetOverrides: DESERT: TEMPERAT idle: - damaged-idle: + +tc01.husk: + Defaults: tc01 + UseTilesetExtension: true + TilesetOverrides: + DESERT: TEMPERAT + idle: Start: 1 dead: Start: 2 @@ -121,7 +155,11 @@ t18: Defaults: AddExtension: false idle: t18.des - damaged-idle: t18.des + +t18.husk: + Defaults: t18 + AddExtension: false + idle: t18.des Start: 1 dead: t18.des Start: 2 @@ -134,7 +172,13 @@ t17: TilesetOverrides: DESERT: TEMPERAT idle: - damaged-idle: + +t17.husk: + Defaults: t17 + UseTilesetExtension: true + TilesetOverrides: + DESERT: TEMPERAT + idle: Start: 1 dead: Start: 2 @@ -147,7 +191,13 @@ t16: TilesetOverrides: DESERT: TEMPERAT idle: - damaged-idle: + +t16.husk: + Defaults: t16 + UseTilesetExtension: true + TilesetOverrides: + DESERT: TEMPERAT + idle: Start: 1 dead: Start: 2 @@ -160,7 +210,13 @@ t15: TilesetOverrides: DESERT: TEMPERAT idle: - damaged-idle: + +t15.husk: + Defaults: t15 + UseTilesetExtension: true + TilesetOverrides: + DESERT: TEMPERAT + idle: Start: 1 dead: Start: 2 @@ -173,7 +229,13 @@ t14: TilesetOverrides: DESERT: TEMPERAT idle: - damaged-idle: + +t14.husk: + Defaults: t14 + UseTilesetExtension: true + TilesetOverrides: + DESERT: TEMPERAT + idle: Start: 1 dead: Start: 2 @@ -186,7 +248,13 @@ t13: TilesetOverrides: DESERT: TEMPERAT idle: - damaged-idle: + +t13.husk: + Defaults: t13 + UseTilesetExtension: true + TilesetOverrides: + DESERT: TEMPERAT + idle: Start: 1 dead: Start: 2 @@ -199,7 +267,13 @@ t12: TilesetOverrides: DESERT: TEMPERAT idle: - damaged-idle: + +t12.husk: + Defaults: t12 + UseTilesetExtension: true + TilesetOverrides: + DESERT: TEMPERAT + idle: Start: 1 dead: Start: 2 @@ -212,7 +286,13 @@ t11: TilesetOverrides: DESERT: TEMPERAT idle: - damaged-idle: + +t11.husk: + Defaults: t11 + UseTilesetExtension: true + TilesetOverrides: + DESERT: TEMPERAT + idle: Start: 1 dead: Start: 2 @@ -225,7 +305,13 @@ t10: TilesetOverrides: DESERT: TEMPERAT idle: - damaged-idle: + +t10.husk: + Defaults: t10 + UseTilesetExtension: true + TilesetOverrides: + DESERT: TEMPERAT + idle: Start: 1 dead: Start: 2 @@ -236,7 +322,11 @@ t09: Defaults: AddExtension: false idle: t09.des - damaged-idle: t09.des + +t09.husk: + Defaults: t09 + AddExtension: false + idle: t09.des Start: 1 dead: t09.des Start: 2 @@ -247,7 +337,13 @@ t08: Defaults: UseTilesetExtension: true idle: - damaged-idle: + +t08.husk: + Defaults: t08 + UseTilesetExtension: true + TilesetOverrides: + DESERT: TEMPERAT + idle: Start: 1 dead: Start: 2 @@ -260,7 +356,13 @@ t07: TilesetOverrides: DESERT: TEMPERAT idle: - damaged-idle: + +t07.husk: + Defaults: t07 + UseTilesetExtension: true + TilesetOverrides: + DESERT: TEMPERAT + idle: Start: 1 dead: Start: 2 @@ -273,7 +375,13 @@ t06: TilesetOverrides: DESERT: TEMPERAT idle: - damaged-idle: + +t06.husk: + Defaults: t06 + UseTilesetExtension: true + TilesetOverrides: + DESERT: TEMPERAT + idle: Start: 1 dead: Start: 2 @@ -286,7 +394,13 @@ t05: TilesetOverrides: DESERT: TEMPERAT idle: - damaged-idle: + +t05.husk: + Defaults: t05 + UseTilesetExtension: true + TilesetOverrides: + DESERT: TEMPERAT + idle: Start: 1 dead: Start: 2 @@ -297,7 +411,11 @@ t04: Defaults: AddExtension: false idle: t04.des - damaged-idle: t04.des + +t04.husk: + Defaults: t04 + AddExtension: false + idle: t04.des Start: 1 dead: t04.des Start: 2 @@ -310,7 +428,13 @@ t03: TilesetOverrides: DESERT: TEMPERAT idle: - damaged-idle: + +t03.husk: + Defaults: t03 + UseTilesetExtension: true + TilesetOverrides: + DESERT: TEMPERAT + idle: Start: 1 dead: Start: 2 @@ -323,7 +447,13 @@ t02: TilesetOverrides: DESERT: TEMPERAT idle: - damaged-idle: + +t02.husk: + Defaults: t02 + UseTilesetExtension: true + TilesetOverrides: + DESERT: TEMPERAT + idle: Start: 1 dead: Start: 2 @@ -336,7 +466,13 @@ t01: TilesetOverrides: DESERT: TEMPERAT idle: - damaged-idle: + +t01.husk: + Defaults: t01 + UseTilesetExtension: true + TilesetOverrides: + DESERT: TEMPERAT + idle: Start: 1 dead: Start: 2 @@ -913,4 +1049,4 @@ arco: arco.husk: idle: arco - Start: 1 \ No newline at end of file + Start: 1 diff --git a/mods/cnc/sequences/misc.yaml b/mods/cnc/sequences/misc.yaml index 420264f17e..e1a6412312 100644 --- a/mods/cnc/sequences/misc.yaml +++ b/mods/cnc/sequences/misc.yaml @@ -13,6 +13,45 @@ fire: Offset: 0,-3 ZOffset: 1023 +burn-l: + idle: + Length: * + ZOffset: 512 + loop: + Start: 16 + Length: 44 + ZOffset: 512 + end: + Start: 60 + Length: 6 + ZOffset: 512 + +burn-m: + idle: + Length: * + ZOffset: 512 + loop: + Start: 16 + Length: 44 + ZOffset: 512 + end: + Start: 60 + Length: 6 + ZOffset: 512 + +burn-s: + idle: + Length: * + ZOffset: 512 + loop: + Start: 12 + Length: 46 + ZOffset: 512 + end: + Start: 59 + Length: 5 + ZOffset: 512 + 120mm: idle: ZOffset: 1023 @@ -28,7 +67,8 @@ smoke_m: Offset: 2, -5 ZOffset: 512 end: - Length: 26 + Start: 26 + Length: -26 Offset: 2, -5 ZOffset: 512 @@ -385,4 +425,4 @@ smokland: Start: 60 Length: 32 Tick: 120 - ZOffset: 1023 \ No newline at end of file + ZOffset: 1023 diff --git a/mods/cnc/weapons/other.yaml b/mods/cnc/weapons/other.yaml index 025ae304d5..d32f8afa31 100644 --- a/mods/cnc/weapons/other.yaml +++ b/mods/cnc/weapons/other.yaml @@ -1,4 +1,5 @@ Flamethrower: + ValidTargets: Ground, Trees ReloadDelay: 55 Range: 2c512 InvalidTargets: Wall @@ -8,13 +9,14 @@ Flamethrower: Warhead@1Dam: SpreadDamage Spread: 341 Damage: 40 + ValidTargets: Ground, Trees InvalidTargets: Wall Versus: None: 100 Wood: 100 Light: 100 Heavy: 20 - DamageTypes: Prone50Percent, TriggerProne, FireDeath + DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary Warhead@2Smu: LeaveSmudge SmudgeType: Scorch Warhead@3Eff: CreateEffect @@ -22,6 +24,7 @@ Flamethrower: ImpactSounds: flamer2.aud BigFlamer: + ValidTargets: Ground, Trees ReloadDelay: 50 Range: 3c512 InvalidTargets: Wall @@ -34,12 +37,13 @@ BigFlamer: Spread: 341 Damage: 75 InvalidTargets: Wall + ValidTargets: Ground, Trees Versus: None: 100 Wood: 100 Light: 67 Heavy: 25 - DamageTypes: Prone50Percent, TriggerProne, FireDeath + DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary Warhead@2Smu: LeaveSmudge SmudgeType: Scorch Warhead@3Eff: CreateEffect @@ -93,7 +97,7 @@ Grenade: ImpactSounds: xplos.aud Napalm: - ValidTargets: Ground, Water + ValidTargets: Ground, Water, Trees ReloadDelay: 4 Range: 2c0 Burst: 2 @@ -104,13 +108,13 @@ Napalm: Spread: 341 Damage: 30 Falloff: 1000, 368, 135, 50, 18, 7, 0 - ValidTargets: Ground, Water + ValidTargets: Ground, Water, Trees Versus: None: 100 Wood: 100 Light: 100 Heavy: 80 - DamageTypes: Prone50Percent, TriggerProne, FireDeath + DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary Warhead@2Smu: LeaveSmudge SmudgeType: Scorch Warhead@3Eff: CreateEffect diff --git a/mods/cnc/weapons/superweapons.yaml b/mods/cnc/weapons/superweapons.yaml index e40d0c2127..d79adafb5f 100644 --- a/mods/cnc/weapons/superweapons.yaml +++ b/mods/cnc/weapons/superweapons.yaml @@ -1,17 +1,17 @@ Atomic: - ValidTargets: Ground, Air + ValidTargets: Ground, Air, Trees Report: nukemisl.aud Warhead@1Dam_impact: SpreadDamage Spread: 1c0 Damage: 150 Falloff: 1000, 368, 135, 50, 18, 7, 0 - ValidTargets: Ground, Air + ValidTargets: Ground, Air, Trees Versus: None: 100 Wood: 100 Light: 60 Heavy: 50 - DamageTypes: Prone50Percent, TriggerProne, FireDeath + DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary Warhead@2Eff_impact: CreateEffect Explosions: nuke_explosion ImpactSounds: nukexplo.aud @@ -26,7 +26,7 @@ Atomic: Wood: 100 Light: 60 Heavy: 50 - DamageTypes: Prone50Percent, TriggerProne, FireDeath + DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary Warhead@4Res_areanukea: DestroyResource Size: 3 Delay: 3 @@ -42,13 +42,13 @@ Atomic: Damage: 50 Falloff: 1000, 368, 135, 50, 18, 7, 0 Delay: 6 - ValidTargets: Ground, Air + ValidTargets: Ground, Air, Trees Versus: None: 100 Wood: 100 Light: 60 Heavy: 50 - DamageTypes: Prone50Percent, TriggerProne, FireDeath + DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary Warhead@8Res_areanukeb: DestroyResource Size: 4 Delay: 6 @@ -61,13 +61,13 @@ Atomic: Damage: 20 Falloff: 1000, 368, 135, 50, 18, 7, 0 Delay: 9 - ValidTargets: Ground, Air + ValidTargets: Ground, Air, Trees Versus: None: 100 Wood: 100 Light: 60 Heavy: 50 - DamageTypes: Prone50Percent, TriggerProne, FireDeath + DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary Warhead@11Res_areanukec: DestroyResource Size: 5 Delay: 9 @@ -77,13 +77,13 @@ Atomic: Delay: 9 IonCannon: - ValidTargets: Ground, Air + ValidTargets: Ground, Air, Trees Warhead@1Dam_impact: SpreadDamage Range: 0, 1c1, 2c1, 2c512 Damage: 100 Falloff: 1000, 1000, 250, 100 - ValidTargets: Ground, Air - DamageTypes: Prone50Percent, TriggerProne, FireDeath + ValidTargets: Ground, Air, Trees + DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary Warhead@2Smu_impact: LeaveSmudge SmudgeType: Scorch Warhead@3Smu_area: LeaveSmudge diff --git a/mods/ra/rules/defaults.yaml b/mods/ra/rules/defaults.yaml index 4b32540e6b..061af76ddd 100644 --- a/mods/ra/rules/defaults.yaml +++ b/mods/ra/rules/defaults.yaml @@ -99,7 +99,7 @@ GivesBounty: GpsDot: String: Vehicle - WithSmoke: + WithDamageOverlay: Guard: Guardable: Tooltip: @@ -325,7 +325,7 @@ RepairableNear: GpsDot: String: Ship - WithSmoke: + WithDamageOverlay: Explodes: Weapon: UnitExplodeShip EmptyWeapon: UnitExplodeShip diff --git a/mods/ra/sequences/misc.yaml b/mods/ra/sequences/misc.yaml index 0993ad96b9..36cbfdb11f 100644 --- a/mods/ra/sequences/misc.yaml +++ b/mods/ra/sequences/misc.yaml @@ -132,7 +132,8 @@ smoke_m: Offset: 2, -5 ZOffset: 512 end: - Length: 26 + Start: 26 + Length: -26 Offset: 2, -5 ZOffset: 512