From d7c0a4ec1ef9bffdbe1098afb1b8afe3ca8df336 Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Sun, 9 Jun 2024 15:45:27 +0300 Subject: [PATCH] Tile burning (#228) * tile burning * add big planks burning, some fix * FIRE!!! more structures can burn * wallmount burn * fuck Jetbrains! * Update CP14FireSpreadSystem.cs --- .../Atmos/Components/FireVisualsComponent.cs | 2 +- .../Temperature/CP14AutoIgniteComponent.cs | 8 ++ .../CP14DespawnOnExtinguishComponent.cs | 6 ++ .../Temperature/CP14FireSpreadComponent.cs | 6 ++ .../_CP14/Temperature/CP14FireSpreadSystem.cs | 95 +++++++++++++++--- Content.Shared/Maps/ContentTileDefinition.cs | 8 +- Resources/Locale/en-US/_CP14/tiles/tiles.ftl | 4 + Resources/Locale/ru-RU/_CP14/tiles/tiles.ftl | 10 +- .../Structures/Decorations/wallmount.yml | 33 ++++++ .../Entities/Structures/Furniture/bonfire.yml | 2 + .../Structures/Specific/Alchemy/heater.yml | 6 +- .../_CP14/Entities/Structures/Walls/walls.yml | 22 +++- .../Structures/Walls/wooden_fence.yml | 4 +- Resources/Prototypes/_CP14/Entities/fire.yml | 63 ++++++++++++ Resources/Prototypes/_CP14/Tiles/produced.yml | 75 ++++++++++++++ .../Textures/_CP14/Effects/fire.rsi/full2.png | Bin 0 -> 8652 bytes .../Textures/_CP14/Effects/fire.rsi/meta.json | 11 ++ .../Textures/_CP14/Tiles/attributions.yml | 7 +- .../_CP14/Tiles/woodplanks_big_broken.png | Bin 0 -> 1446 bytes .../_CP14/Tiles/woodplanks_big_burned.png | Bin 0 -> 3058 bytes .../_CP14/Tiles/woodplanks_broken.png | Bin 0 -> 2221 bytes .../_CP14/Tiles/woodplanks_burned.png | Bin 0 -> 5193 bytes 22 files changed, 327 insertions(+), 35 deletions(-) create mode 100644 Content.Server/_CP14/Temperature/CP14AutoIgniteComponent.cs create mode 100644 Content.Server/_CP14/Temperature/CP14DespawnOnExtinguishComponent.cs create mode 100644 Resources/Prototypes/_CP14/Entities/fire.yml create mode 100644 Resources/Textures/_CP14/Effects/fire.rsi/full2.png create mode 100644 Resources/Textures/_CP14/Tiles/woodplanks_big_broken.png create mode 100644 Resources/Textures/_CP14/Tiles/woodplanks_big_burned.png create mode 100644 Resources/Textures/_CP14/Tiles/woodplanks_broken.png create mode 100644 Resources/Textures/_CP14/Tiles/woodplanks_burned.png diff --git a/Content.Client/Atmos/Components/FireVisualsComponent.cs b/Content.Client/Atmos/Components/FireVisualsComponent.cs index 02278e9479..36e58438f3 100644 --- a/Content.Client/Atmos/Components/FireVisualsComponent.cs +++ b/Content.Client/Atmos/Components/FireVisualsComponent.cs @@ -32,7 +32,7 @@ public sealed partial class FireVisualsComponent : Component public float MaxLightRadius = 4f; [DataField("lightColor")] - public Color LightColor = Color.Orange; + public Color LightColor = Color.FromSrgb( new Color(239, 181, 20)); //CP14 fire color in art style pallette /// /// Client side point-light entity. We use this instead of directly adding a light to diff --git a/Content.Server/_CP14/Temperature/CP14AutoIgniteComponent.cs b/Content.Server/_CP14/Temperature/CP14AutoIgniteComponent.cs new file mode 100644 index 0000000000..2f23c840be --- /dev/null +++ b/Content.Server/_CP14/Temperature/CP14AutoIgniteComponent.cs @@ -0,0 +1,8 @@ +namespace Content.Server._CP14.Temperature; + +[RegisterComponent, Access(typeof(CP14FireSpreadSystem))] +public sealed partial class CP14AutoIgniteComponent : Component +{ + [DataField] + public float StartStack = 1f; +} diff --git a/Content.Server/_CP14/Temperature/CP14DespawnOnExtinguishComponent.cs b/Content.Server/_CP14/Temperature/CP14DespawnOnExtinguishComponent.cs new file mode 100644 index 0000000000..0b101b0d42 --- /dev/null +++ b/Content.Server/_CP14/Temperature/CP14DespawnOnExtinguishComponent.cs @@ -0,0 +1,6 @@ +namespace Content.Server._CP14.Temperature; + +[RegisterComponent, Access(typeof(CP14FireSpreadSystem))] +public sealed partial class CP14DespawnOnExtinguishComponent : Component +{ +} diff --git a/Content.Server/_CP14/Temperature/CP14FireSpreadComponent.cs b/Content.Server/_CP14/Temperature/CP14FireSpreadComponent.cs index 786511b498..31a7301bb2 100644 --- a/Content.Server/_CP14/Temperature/CP14FireSpreadComponent.cs +++ b/Content.Server/_CP14/Temperature/CP14FireSpreadComponent.cs @@ -19,6 +19,12 @@ public sealed partial class CP14FireSpreadComponent : Component [DataField] public float Prob = 0.5f; + /// + /// chance of tile spreading to neighboring properties + /// + [DataField] + public float ProbTile = 0.15f; + /// /// how often objects will try to set the neighbors on fire. In Seconds /// diff --git a/Content.Server/_CP14/Temperature/CP14FireSpreadSystem.cs b/Content.Server/_CP14/Temperature/CP14FireSpreadSystem.cs index d570f5ed3a..64ab303ada 100644 --- a/Content.Server/_CP14/Temperature/CP14FireSpreadSystem.cs +++ b/Content.Server/_CP14/Temperature/CP14FireSpreadSystem.cs @@ -1,5 +1,11 @@ +using System.Linq; +using System.Numerics; using Content.Server.Atmos.Components; using Content.Server.Atmos.EntitySystems; +using Content.Shared.Maps; +using Robust.Shared.Map; +using Robust.Shared.Map.Components; +using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; @@ -7,17 +13,35 @@ namespace Content.Server._CP14.Temperature; public sealed partial class CP14FireSpreadSystem : EntitySystem { - [Dependency] private readonly FlammableSystem _flammable = default!; [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly EntityLookupSystem _lookup = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly SharedMapSystem _mapSystem = default!; + [Dependency] private readonly TileSystem _tile = default!; + [Dependency] private readonly ITileDefinitionManager _tiledef = default!; - + private EntProtoId _fireProto = "CP14Fire"; public override void Initialize() { - SubscribeLocalEvent (OnCompInit); + SubscribeLocalEvent(OnCompInit); + SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnFireChanged); + } + + private void OnFireChanged(Entity ent, ref OnFireChangedEvent args) + { + if (!args.OnFire) + QueueDel(ent); + } + + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + if (!TryComp(ent, out var flammable)) + return; + _flammable.AdjustFireStacks(ent, ent.Comp.StartStack, flammable); + _flammable.Ignite(ent, ent, flammable); } private void OnCompInit(Entity ent, ref OnFireChangedEvent args) @@ -33,27 +57,68 @@ public sealed partial class CP14FireSpreadSystem : EntitySystem { base.Update(frameTime); + List> spreadUids = new(); var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var spread, out var flammable)) { if (!flammable.OnFire) continue; - if (spread.NextSpreadTime < _gameTiming.CurTime) // Spread - { - var targets = _lookup.GetEntitiesInRange(_transform.GetMapCoordinates(uid), spread.Radius); + if (spread.NextSpreadTime >= _gameTiming.CurTime) + continue; - foreach (var target in targets) - { - if (!_random.Prob(spread.Prob)) - continue; + var cooldown = _random.NextFloat(spread.SpreadCooldownMin, spread.SpreadCooldownMax); + spread.NextSpreadTime = _gameTiming.CurTime + TimeSpan.FromSeconds(cooldown); - _flammable.Ignite(target, uid); + spreadUids.Add(new Entity(uid, spread)); + } - var cooldown = _random.NextFloat(spread.SpreadCooldownMin, spread.SpreadCooldownMax); - spread.NextSpreadTime = _gameTiming.CurTime + TimeSpan.FromSeconds(cooldown); - } - } + foreach (var uid in spreadUids) + { + IgniteEntities(uid, uid.Comp); + IgniteTiles(uid, uid.Comp); + } + } + + private void IgniteEntities(EntityUid uid, CP14FireSpreadComponent spread) + { + var targets = _lookup.GetEntitiesInRange(_transform.GetMapCoordinates(uid), spread.Radius); + foreach (var target in targets) + { + if (!_random.Prob(spread.Prob)) + continue; + + _flammable.Ignite(target, uid); + } + } + + private void IgniteTiles(EntityUid uid, CP14FireSpreadComponent spread) + { + var xform = Transform(uid); + if (!TryComp(xform.GridUid, out var grid)) + return; + + var localPos = xform.Coordinates.Position; + var tileRefs = _mapSystem.GetLocalTilesIntersecting(grid.Owner, + grid, + new Box2( + localPos + new Vector2(-spread.Radius, -spread.Radius), + localPos + new Vector2(spread.Radius, spread.Radius))) + .ToList(); + + + foreach (var tileref in tileRefs) + { + if (!_random.Prob(spread.ProbTile)) + continue; + + var tile = tileref.Tile.GetContentTileDefinition(); + + if (tile.BurnedTile == string.Empty) + continue; + + Spawn(_fireProto, _mapSystem.ToCenterCoordinates(tileref, grid)); + _tile.ReplaceTile(tileref, (ContentTileDefinition) _tiledef[tile.BurnedTile]); } } } diff --git a/Content.Shared/Maps/ContentTileDefinition.cs b/Content.Shared/Maps/ContentTileDefinition.cs index c6485d2461..fea4384db3 100644 --- a/Content.Shared/Maps/ContentTileDefinition.cs +++ b/Content.Shared/Maps/ContentTileDefinition.cs @@ -119,9 +119,15 @@ namespace Content.Shared.Maps } /// - /// CrystallPunk Tile filtering + /// CP14 - Tile filtering /// [DataField] public bool EditorHidden { get; private set; } = true; + + /// + /// CP14 - If not empty, the tile can burn from fires, and will turn into the specified tile after burning. + /// + [DataField] + public string BurnedTile { get; private set; } = string.Empty; } } diff --git a/Resources/Locale/en-US/_CP14/tiles/tiles.ftl b/Resources/Locale/en-US/_CP14/tiles/tiles.ftl index e3fa1afc02..8bfa01495b 100644 --- a/Resources/Locale/en-US/_CP14/tiles/tiles.ftl +++ b/Resources/Locale/en-US/_CP14/tiles/tiles.ftl @@ -10,7 +10,11 @@ cp14-tiles-sand = sand cp14-tiles-foundation = foundation cp14-tiles-woodplanks = wood plank floor +cp14-tiles-woodplanks-broken = broken wood plank floor +cp14-tiles-woodplanks-burned = burned wood plank floor cp14-tiles-woodplanks-big = large wood plank floor +cp14-tiles-woodplanks-big-broken = broken large wood plank floor +cp14-tiles-woodplanks-big-burned = burned large wood plank floor cp14-tiles-stonebricks = stone brick floor cp14-tiles-stonebricks-small-carved1 = carved brick floor cp14-tiles-stonebricks-small-carved2 = carved brick floor diff --git a/Resources/Locale/ru-RU/_CP14/tiles/tiles.ftl b/Resources/Locale/ru-RU/_CP14/tiles/tiles.ftl index 3d441acf11..ff60e53ae3 100644 --- a/Resources/Locale/ru-RU/_CP14/tiles/tiles.ftl +++ b/Resources/Locale/ru-RU/_CP14/tiles/tiles.ftl @@ -9,9 +9,13 @@ cp14-tiles-sand = песок # Produced cp14-tiles-foundation = фундамент -cp14-tiles-woodplanks = пол из деревянных досок -cp14-tiles-woodplanks-big = пол из больших деревянных досок -cp14-tiles-stonebricks = каменный кирпичынй пол +cp14-tiles-woodplanks = деревянные доски +cp14-tiles-woodplanks-broken = сломанные деревянные доски +cp14-tiles-woodplanks-burned = сгоревшие деревянные доски +cp14-tiles-woodplanks-big = большие деревянные доски +cp14-tiles-woodplanks-big-broken = сломанные большие деревянные доски +cp14-tiles-woodplanks-big-burned = сгоревшие большие деревянные доски +cp14-tiles-stonebricks = каменный кирпичный пол cp14-tiles-stonebricks-small-carved1 = пол из резного кирпича cp14-tiles-stonebricks-small-carved2 = пол из резного кирпича cp14-tiles-stonebricks-square-carved = пол из резного кирпича \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Decorations/wallmount.yml b/Resources/Prototypes/_CP14/Entities/Structures/Decorations/wallmount.yml index 962b6e0215..34494604d4 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Decorations/wallmount.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Decorations/wallmount.yml @@ -17,6 +17,17 @@ - type: Damageable damageContainer: Inorganic damageModifierSet: Wood + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 25 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: WoodDestroy + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: Fixtures fixtures: fix1: @@ -56,6 +67,17 @@ - type: Damageable damageContainer: Inorganic damageModifierSet: Wood + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 25 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: WoodDestroy + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: Fixtures fixtures: fix1: @@ -94,6 +116,17 @@ - type: Damageable damageContainer: Inorganic damageModifierSet: Wood + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 25 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: WoodDestroy + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: Fixtures fixtures: fix1: diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/bonfire.yml b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/bonfire.yml index abad860d8f..4fcf0f725a 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/bonfire.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/bonfire.yml @@ -38,3 +38,5 @@ whitelist: tags: - CP14FireplaceFuel + - type: CP14FireSpread + radius: 0.25 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Alchemy/heater.yml b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Alchemy/heater.yml index 2a8544e3a9..f4c87ee8d2 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Alchemy/heater.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Alchemy/heater.yml @@ -63,19 +63,19 @@ - type: entity id: CP14AlchemyFurnaceDebug parent: CP14AlchemyFurnace - suffix: DEBUG + categories: + - Debug components: - type: CP14Fireplace fuel: 100 fuelDrainingPerUpdate: 0 + - type: CP14AutoIgnite - type: entity id: CP14AlchemyFurnace name: alchemy furnace parent: CP14BaseFireplace description: A furnace fueled by wood, coal, or any other burning material. Handy for heating your alchemical potions. - categories: - - Debug components: - type: Sprite sprite: _CP14/Structures/Specific/Alchemy/alchemy_furnace.rsi diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Walls/walls.yml b/Resources/Prototypes/_CP14/Entities/Structures/Walls/walls.yml index ca73f852e7..422e9ba177 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Walls/walls.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Walls/walls.yml @@ -24,7 +24,6 @@ id: CP14WallStonebrick name: stone brick wall parent: CP14BaseWall - description: Bruh components: - type: Sprite sprite: _CP14/Structures/Walls/bricks_stone_wall.rsi @@ -37,7 +36,6 @@ id: CP14WallWhitebrick name: white brick wall parent: CP14BaseWall - description: Bruh components: - type: Sprite sprite: _CP14/Structures/Walls/whitebricks_stone_wall.rsi @@ -50,7 +48,6 @@ id: CP14WallBrownbrick name: brick wall parent: CP14BaseWall - description: Bruh components: - type: Sprite sprite: _CP14/Structures/Walls/bricks_wall.rsi @@ -62,8 +59,9 @@ - type: entity id: CP14WallWooden name: wooden wall - parent: CP14BaseWall - description: Bruh + parent: + - CP14BaseWall + - CP14BaseWooden components: - type: Sprite sprite: _CP14/Structures/Walls/wooden_wall.rsi @@ -71,6 +69,20 @@ sprite: _CP14/Structures/Walls/wooden_wall.rsi - type: IconSmooth base: wood + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Wood + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: WoodDestroy + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: entity id: CP14WallCardboard diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Walls/wooden_fence.yml b/Resources/Prototypes/_CP14/Entities/Structures/Walls/wooden_fence.yml index ac80259f2f..d7227c5dc9 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Walls/wooden_fence.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Walls/wooden_fence.yml @@ -1,5 +1,7 @@ - type: entity - parent: BaseStructure + parent: + - BaseStructure + - CP14BaseWooden id: CP14BaseFenceWood name: wooden fence description: Wooden piece of fencing. I hope there is babushka's garden behind it. diff --git a/Resources/Prototypes/_CP14/Entities/fire.yml b/Resources/Prototypes/_CP14/Entities/fire.yml new file mode 100644 index 0000000000..80e2e10eca --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/fire.yml @@ -0,0 +1,63 @@ +- type: entity + id: CP14Fire + name: fire + suffix: cp14 + placement: + mode: SnapgridCenter + components: + - type: Sprite + drawDepth: Mobs + sprite: _CP14/Effects/fire.rsi + layers: + - state: full + - type: FireVisuals + sprite: _CP14/Effects/fire.rsi + normalState: full + alternateState: full2 + fireStackAlternateState: 5 + - type: Physics + bodyType: Static + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.5,-0.5,0.5,0.5" + layer: + - SlipLayer + mask: + - ItemMask + density: 1000 + hard: false + - type: Lava + fireStacks: 0.2 + - type: StepTrigger + requiredTriggeredSpeed: 0 + intersectRatio: 0.1 + - type: AmbientSound + enabled: true + volume: -5 + range: 5 + sound: + path: /Audio/Ambience/Objects/fireplace.ogg #TODO more aggressive sound + - type: Appearance + - type: Reactive + groups: + Flammable: [ Touch ] + Extinguish: [ Touch ] + - type: Flammable + fireSpread: false #Lava comp kostыль + canResistFire: false + alwaysCombustible: true + canExtinguish: true + firestacksOnIgnite: 0.5 + damage: + types: + Heat: 0 + - type: CP14FlammableEntityHeater + - type: CP14FlammableSolutionHeater + - type: CP14Fireplace + fuel: 15 + - type: CP14AutoIgnite + - type: CP14FireSpread + - type: CP14DespawnOnExtinguish \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Tiles/produced.yml b/Resources/Prototypes/_CP14/Tiles/produced.yml index 50d4a903ff..60e0f413d5 100644 --- a/Resources/Prototypes/_CP14/Tiles/produced.yml +++ b/Resources/Prototypes/_CP14/Tiles/produced.yml @@ -33,6 +33,43 @@ collection: FootstepWood heatCapacity: 10000 weather: false + burnedTile: CP14FloorWoodPlanksBurned + +- type: tile + editorHidden: false + id: CP14FloorWoodPlanksBroken + name: cp14-tiles-woodplanks-broken + sprite: /Textures/_CP14/Tiles/woodplanks_broken.png + variants: 4 + placementVariants: + - 1.0 + - 1.0 + - 1.0 + - 1.0 + baseTurf: CP14FloorFoundation + isSubfloor: false + footstepSounds: + collection: FootstepWood + heatCapacity: 10000 + weather: false + burnedTile: CP14FloorWoodPlanksBurned + +- type: tile + editorHidden: false + id: CP14FloorWoodPlanksBurned + name: cp14-tiles-woodplanks-burned + sprite: /Textures/_CP14/Tiles/woodplanks_burned.png + variants: 4 + placementVariants: + - 1.0 + - 1.0 + - 1.0 + - 1.0 + baseTurf: CP14FloorFoundation + isSubfloor: false + footstepSounds: + collection: FootstepWood + heatCapacity: 10000 - type: tile editorHidden: false @@ -51,6 +88,44 @@ collection: FootstepWood heatCapacity: 10000 weather: false + burnedTile: CP14FloorWoodPlanksBigBurned + +- type: tile + editorHidden: false + id: CP14FloorWoodPlanksBigBroken + name: cp14-tiles-woodplanks-big-broken + sprite: /Textures/_CP14/Tiles/woodplanks_big_broken.png + variants: 4 + placementVariants: + - 1.0 + - 1.0 + - 1.0 + - 1.0 + baseTurf: CP14FloorFoundation + isSubfloor: false + footstepSounds: + collection: FootstepWood + heatCapacity: 10000 + weather: false + burnedTile: CP14FloorWoodPlanksBigBurned + +- type: tile + editorHidden: false + id: CP14FloorWoodPlanksBigBurned + name: cp14-tiles-woodplanks-big-burned + sprite: /Textures/_CP14/Tiles/woodplanks_big_burned.png + variants: 4 + placementVariants: + - 1.0 + - 1.0 + - 1.0 + - 1.0 + baseTurf: CP14FloorFoundation + isSubfloor: false + footstepSounds: + collection: FootstepWood + heatCapacity: 10000 + weather: false - type: tile editorHidden: false diff --git a/Resources/Textures/_CP14/Effects/fire.rsi/full2.png b/Resources/Textures/_CP14/Effects/fire.rsi/full2.png new file mode 100644 index 0000000000000000000000000000000000000000..0164ffa8e94809744ff5788f757444f85b0f1de8 GIT binary patch literal 8652 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 etg$UBApa*e$3#ss#ytH10000a# literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Effects/fire.rsi/meta.json b/Resources/Textures/_CP14/Effects/fire.rsi/meta.json index 676afa22ff..898190e400 100644 --- a/Resources/Textures/_CP14/Effects/fire.rsi/meta.json +++ b/Resources/Textures/_CP14/Effects/fire.rsi/meta.json @@ -18,6 +18,17 @@ ] ] }, + { + "name": "full2", + "delays": [ + [ + 0.3, + 0.3, + 0.3, + 0.3 + ] + ] + }, { "name": "small", "delays": [ diff --git a/Resources/Textures/_CP14/Tiles/attributions.yml b/Resources/Textures/_CP14/Tiles/attributions.yml index 9623a0283c..117b0d3598 100644 --- a/Resources/Textures/_CP14/Tiles/attributions.yml +++ b/Resources/Textures/_CP14/Tiles/attributions.yml @@ -16,12 +16,7 @@ copyright: "Created by Jaraten for CrystallPunk14" source: "https://github.com/crystallpunk-14/crystall-punk-14/" -- files: ["woodplanks.png"] - license: "CC-BY-SA-3.0" - copyright: "Space Station 14, recolored by TheShuEd" - source: "https://github.com/crystallpunk-14/crystall-punk-14/" - -- files: ["woodplanks_big.png"] +- files: ["woodplanks.png", "woodplanks_big.png", "woodplanks_broken.png", "woodplanks_burned.png", "woodplanks_big_burned.png", "woodplanks_big_broken.png"] license: "CC-BY-SA-3.0" copyright: "Space Station 14, recolored by TheShuEd" source: "https://github.com/crystallpunk-14/crystall-punk-14/" \ No newline at end of file diff --git a/Resources/Textures/_CP14/Tiles/woodplanks_big_broken.png b/Resources/Textures/_CP14/Tiles/woodplanks_big_broken.png new file mode 100644 index 0000000000000000000000000000000000000000..b8b9a8c7719792c70eb46f2cec048c844a3f1ff6 GIT binary patch literal 1446 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 ArvLx| literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Tiles/woodplanks_broken.png b/Resources/Textures/_CP14/Tiles/woodplanks_broken.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ffc01e9dcbda3986a1c3574b002aa9eb08e8de GIT binary patch literal 2221 zcmV;e2vYZnP)Px-XGugsRA_w37o(^C|DUp#B8LRnU>gL1VZ-v0 zat|YoM*Om!?G`OM5CTP}M#B;H-h8n7?fSM>8sAy=oe!?iL+Sdt2C%kT>3!$_cKbqRyJhS9(IZx;PZog;C9+lzc@TkmHW3L*^gI~7oTkD?J+m~%iN7Csx z%jUwG3u|)v$sRi2?f1h}$G?2=c$y1Mmc7qYkn@%HOKoHZdx?(EGiyv$D{ZwZ>8B+= zx5jF9fdl`xnjJ8!>Adyb!qT~JeP^|5eYeu%;5+4^Dr1auhaU#FilwA^%)ax+RCn-B zYXI~P`t@R}r`JvFcb2!-&Fea+|6}JS_E_WG_J z08zz~!*prSDfZ`P3cxJq;#9E$4=x#om-}0s!#@rurZn$Aws>C12ldG9q zL(7)%i}5|iJH~57ct^6D9ROvUy7e7;Bt`2hVh(!$W&Orf1u;6~ ztxy(Pl@foa_>R;0EJ;pD%%KmC*Glgb9B7pzL$2S81O9Kq0e-*}!Sz@SVIO}K!BUbU zRqz9n&=$i&5(<$_AcimO6gHaIwR}pP3Y4kqdA$vIBH^GDsKRJHFxlwL=k+$=IZ_z- zM=?MXa!E(mO7kII&v>`*{L|}(@a}oN4WKg#{SpdusYVR_IX0qrA0ibf3`RsYN;T->DQv`R zmQ#VVsB7Q(fL8!b)B<4BdH@$q-TLkh-p(}9K};37yaysLfmr)8HK~68`PcUqWd2(c z6mtrT>8KwHm7=6JNeuB|6N56nOoG>-Oau|>9}TM!L3{vz0bx)w5i?3T^LTpQNS{(= z3BX%BrpJt;^0U5KHnKLrCIx8+Qk5ct^g>kBYhC#rK zVr}H#EXhKDT(Bztlq>#V>Zm0BnA^)mvfhGXP5^*Lrs8z#@}c)TfIgXL1a%9R6RT1T z$Bf0v@iMl-z=%O(fTvvMDnyh(7nLk|lQ7T+g?o~lWpmZon`J{-M(^|7s?k|MpBpTn z0+9+3wgO=;B0+rDx<_TKR$R3Ys#udLn2L^EW1!F#V3#Jj#CdNh=H-$_9~TcmA6G)? zv$(xnd~4O{9H5U&D6OxEU07sSU^P3mz5=u{eL6zrcv+VxZWGuYR#m;ulf$fTgHjdOUL)0ci00jHtICK#BP)VJu9}64wLi++p z4v5PIpSSIvo=RlSZz2xJ=!#4xDPX_9UIzMQuN7lFJ^@x?zmmOy6YVebitp_bLo#tx z3iXedZA;a&f4Uz~_ySG=;-mX>lHqoFug?3XfPDC$Q=V)Rm=Ci`CgRC9EK;4-y#*c_C9dD|`LW^U&@QRHD^4Ij9lELzRn^@B)m;@&!)(8n5Q8*)ZuVZe?U zG1>54JP}OV35HEoq;a?3Q!txs!=AWvh9q0NpYE|K1o%1Sb88+t&52taddu5`M{~C$ z$ZUd+?(OB`^qo#TUz!Dbod5E8>Cexzem~B07*W3H+C6~Yc_;VeD$>}?tdh@br%2)+j4LQfc z>J{Yp@3t=}mK=0`J1GAxQciL3-Yh4XI>^a}{Q#C^LU7h*(6}rU2Y-alG5Sk0f-6T$ z_LG*wu`Y!e&%oWUdhQtK^dIF*wx62^h*~Tv*Aay%Vav^z=R#!MLV!TYm;(}}n0(0| zXHwKzn@720oGar<<<#9gx)aoi77KkAX4;|EyxAs~5S#^(L1l>sOO&Mi1Nqoo4#u=( vFFU$XHh>a~eB0*HquEAbCn%;Z7OT}?Zbj-~8EftR00000NkvXXu0mjffUiti literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Tiles/woodplanks_burned.png b/Resources/Textures/_CP14/Tiles/woodplanks_burned.png new file mode 100644 index 0000000000000000000000000000000000000000..f3b05539ed244565f4ce58db9afc292c8f35025d GIT binary patch literal 5193 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 DknUs< literal 0 HcmV?d00001