From dd84d48fed6dc2390dc79ee137a55cf0baaa26dc Mon Sep 17 00:00:00 2001
From: Ed <96445749+TheShuEd@users.noreply.github.com>
Date: Fri, 3 May 2024 20:40:31 +0300
Subject: [PATCH] Refactors, bugfixs + Crystals (#127)
* fix dwarf displacement map
* Big Fireplace update
* add crystalls placeholder
* bonfire update
* displaccement update
* Update wallmount_torch.yml
---
.../Atmos/Components/FlammableComponent.cs | 6 +
Content.Server/Sprite/RandomSpriteSystem.cs | 2 +-
.../Fireplace/CP14FireplaceComponent.cs | 22 ++--
.../Fireplace/CP14FireplaceFuelComponent.cs | 20 ---
.../Fireplace/CP14FireplaceSystem.cs | 62 ++++-----
.../Sprite/RandomSpriteComponent.cs | 6 +
.../_CP14/fireplace/fireplace-component.ftl | 1 -
.../_CP14/fireplace/fireplace-component.ftl | 1 -
.../Entities/Structures/Furniture/bonfire.yml | 24 ++--
.../Structures/Furniture/wallmount_torch.yml | 1 -
.../Structures/Specific/Alchemy/heater.yml | 20 ++-
.../Entities/Structures/Wallmount/crystal.yml | 116 +++++++++++++++++
.../{Decoration => Wallmount}/wallmount.yml | 6 +-
.../_CP14/Entities/Structures/crystal.yml | 119 ++++++++++++++++++
.../Species/Dwarf/displacement.rsi/pants.png | Bin 353 -> 350 bytes
.../Species/Dwarf/displacement.rsi/shoes.png | Bin 260 -> 256 bytes
.../Furniture/bonfire.rsi/full-0.png | Bin 0 -> 96 bytes
.../bonfire.rsi/{full1.png => full-1.png} | Bin
.../bonfire.rsi/{full2.png => full-2.png} | Bin
.../Furniture/bonfire.rsi/meta.json | 7 +-
.../wallmount_crystal.rsi/crystal1.png | Bin 0 -> 1007 bytes
.../wallmount_crystal.rsi/crystal2.png | Bin 0 -> 1078 bytes
.../wallmount_crystal.rsi/crystal3.png | Bin 0 -> 716 bytes
.../Wallmount/wallmount_crystal.rsi/meta.json | 23 ++++
.../wallmount_decor.rsi/boards.png | Bin
.../wallmount_decor.rsi/boards2.png | Bin
.../wallmount_decor.rsi/boards3.png | Bin
.../wallmount_decor.rsi/boards4.png | Bin
.../wallmount_decor.rsi/meta.json | 0
.../wallmount_decor.rsi/vines.png | Bin
.../wallmount_decor.rsi/web.png | Bin
.../wallmount_decor.rsi/web2.png | Bin
.../wallmount_decor.rsi/web3.png | Bin
.../_CP14/Structures/crystal.rsi/big.png | Bin 0 -> 1040 bytes
.../_CP14/Structures/crystal.rsi/medium.png | Bin 0 -> 921 bytes
.../_CP14/Structures/crystal.rsi/meta.json | 23 ++++
.../_CP14/Structures/crystal.rsi/shard.png | Bin 0 -> 502 bytes
.../_CP14/Structures/crystal.rsi/small.png | Bin 0 -> 596 bytes
38 files changed, 365 insertions(+), 94 deletions(-)
delete mode 100644 Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceFuelComponent.cs
delete mode 100644 Resources/Locale/en-US/_CP14/fireplace/fireplace-component.ftl
delete mode 100644 Resources/Locale/ru-RU/_CP14/fireplace/fireplace-component.ftl
create mode 100644 Resources/Prototypes/_CP14/Entities/Structures/Wallmount/crystal.yml
rename Resources/Prototypes/_CP14/Entities/Structures/{Decoration => Wallmount}/wallmount.yml (92%)
create mode 100644 Resources/Prototypes/_CP14/Entities/Structures/crystal.yml
create mode 100644 Resources/Textures/_CP14/Structures/Furniture/bonfire.rsi/full-0.png
rename Resources/Textures/_CP14/Structures/Furniture/bonfire.rsi/{full1.png => full-1.png} (100%)
rename Resources/Textures/_CP14/Structures/Furniture/bonfire.rsi/{full2.png => full-2.png} (100%)
create mode 100644 Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal1.png
create mode 100644 Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal2.png
create mode 100644 Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal3.png
create mode 100644 Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/meta.json
rename Resources/Textures/_CP14/Structures/{Decoration => Wallmount}/wallmount_decor.rsi/boards.png (100%)
rename Resources/Textures/_CP14/Structures/{Decoration => Wallmount}/wallmount_decor.rsi/boards2.png (100%)
rename Resources/Textures/_CP14/Structures/{Decoration => Wallmount}/wallmount_decor.rsi/boards3.png (100%)
rename Resources/Textures/_CP14/Structures/{Decoration => Wallmount}/wallmount_decor.rsi/boards4.png (100%)
rename Resources/Textures/_CP14/Structures/{Decoration => Wallmount}/wallmount_decor.rsi/meta.json (100%)
rename Resources/Textures/_CP14/Structures/{Decoration => Wallmount}/wallmount_decor.rsi/vines.png (100%)
rename Resources/Textures/_CP14/Structures/{Decoration => Wallmount}/wallmount_decor.rsi/web.png (100%)
rename Resources/Textures/_CP14/Structures/{Decoration => Wallmount}/wallmount_decor.rsi/web2.png (100%)
rename Resources/Textures/_CP14/Structures/{Decoration => Wallmount}/wallmount_decor.rsi/web3.png (100%)
create mode 100644 Resources/Textures/_CP14/Structures/crystal.rsi/big.png
create mode 100644 Resources/Textures/_CP14/Structures/crystal.rsi/medium.png
create mode 100644 Resources/Textures/_CP14/Structures/crystal.rsi/meta.json
create mode 100644 Resources/Textures/_CP14/Structures/crystal.rsi/shard.png
create mode 100644 Resources/Textures/_CP14/Structures/crystal.rsi/small.png
diff --git a/Content.Server/Atmos/Components/FlammableComponent.cs b/Content.Server/Atmos/Components/FlammableComponent.cs
index e00f5efbdc..b02109d433 100644
--- a/Content.Server/Atmos/Components/FlammableComponent.cs
+++ b/Content.Server/Atmos/Components/FlammableComponent.cs
@@ -77,5 +77,11 @@ namespace Content.Server.Atmos.Components
///
[DataField, ViewVariables(VVAccess.ReadWrite)]
public float FirestackFade = -0.1f;
+
+ ///
+ /// CrystallPunk fireplace fuel
+ ///
+ [DataField]
+ public float CP14FireplaceFuel = 10f;
}
}
diff --git a/Content.Server/Sprite/RandomSpriteSystem.cs b/Content.Server/Sprite/RandomSpriteSystem.cs
index 7f81f4bdd4..17518b52bd 100644
--- a/Content.Server/Sprite/RandomSpriteSystem.cs
+++ b/Content.Server/Sprite/RandomSpriteSystem.cs
@@ -39,7 +39,7 @@ public sealed class RandomSpriteSystem: SharedRandomSpriteSystem
component.Selected.EnsureCapacity(groups.Count);
- Color? previousColor = null;
+ Color? previousColor = component.CP14InheritBaseColor; //CrystallPunk
foreach (var group in groups)
{
diff --git a/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceComponent.cs b/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceComponent.cs
index 54cc47b8b1..a8949a90fe 100644
--- a/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceComponent.cs
+++ b/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceComponent.cs
@@ -1,3 +1,5 @@
+using Robust.Shared.Audio;
+
namespace Content.Server._CP14.Temperature.Fireplace;
///
@@ -7,6 +9,9 @@ namespace Content.Server._CP14.Temperature.Fireplace;
[RegisterComponent, Access(typeof(CP14FireplaceSystem))]
public sealed partial class CP14FireplaceComponent : Component
{
+ [DataField]
+ public string ContainerId = "storagebase";
+
///
/// The abstract amount of fuel that is used to keep a fire burning
///
@@ -23,7 +28,7 @@ public sealed partial class CP14FireplaceComponent : Component
/// current fuel quantity
///
[DataField]
- public float CurrentFuel;
+ public float CurrentFuel = 10f;
///
/// how much fuel is wasted every "UpdateFrequency"
@@ -34,18 +39,9 @@ public sealed partial class CP14FireplaceComponent : Component
[DataField]
public TimeSpan UpdateFrequency = TimeSpan.FromSeconds(2f);
- ///
- /// whether fuel can be added by hand
- ///
- [DataField]
- public bool CanInsertByHand = true;
-
- ///
- /// whether the fuel can be supplied by contact
- ///
- [DataField]
- public bool CanInsertByCollide = false;
-
[DataField]
public TimeSpan NextUpdateTime = TimeSpan.Zero;
+
+ [DataField]
+ public SoundSpecifier InsertFuelSound = new SoundPathSpecifier("/Audio/_CP14/Items/campfire_whoosh.ogg");
}
diff --git a/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceFuelComponent.cs b/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceFuelComponent.cs
deleted file mode 100644
index 694eb46650..0000000000
--- a/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceFuelComponent.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using Robust.Shared.Audio;
-
-namespace Content.Server._CP14.Temperature.Fireplace;
-
-///
-/// Allows this object to be used as fuel for a fireplace
-///
-
-[RegisterComponent, Access(typeof(CP14FireplaceSystem))]
-public sealed partial class CP14FireplaceFuelComponent : Component
-{
- ///
- /// How much fuel will be added in fireplace
- ///
- [DataField]
- public float Fuel = 10f;
-
- [DataField]
- public SoundSpecifier InsertFuelSound = new SoundPathSpecifier("/Audio/_CP14/Items/campfire_whoosh.ogg");
-}
diff --git a/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceSystem.cs b/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceSystem.cs
index 5f3f57d7b1..d4f0e4a4dc 100644
--- a/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceSystem.cs
+++ b/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceSystem.cs
@@ -5,6 +5,7 @@ using Content.Shared._CP14.Temperature;
using Content.Shared.Interaction;
using Content.Shared.Throwing;
using Robust.Server.Audio;
+using Robust.Server.Containers;
using Robust.Server.GameObjects;
using Robust.Shared.Physics.Events;
using Robust.Shared.Timing;
@@ -15,6 +16,7 @@ public sealed partial class CP14FireplaceSystem : EntitySystem
{
[Dependency] private readonly AppearanceSystem _appearance = default!;
[Dependency] private readonly AudioSystem _audio = default!;
+ [Dependency] private readonly ContainerSystem _containerSystem = default!;
[Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly FlammableSystem _flammable = default!;
[Dependency] private readonly PopupSystem _popupSystem = default!;
@@ -24,9 +26,6 @@ public sealed partial class CP14FireplaceSystem : EntitySystem
base.Initialize();
SubscribeLocalEvent(OnFireChanged);
-
- SubscribeLocalEvent(OnInteractUsing);
- SubscribeLocalEvent(OnCollide);
}
private void OnFireChanged(Entity fireplace, ref OnFireChangedEvent args)
@@ -38,47 +37,37 @@ public sealed partial class CP14FireplaceSystem : EntitySystem
flammable.FirestackFade = 0;
}
- private void OnInteractUsing(Entity fireplace, ref InteractUsingEvent args)
+ private bool TryFoundFuelInStorage(Entity fireplace, out Entity? fuel)
{
- if (!fireplace.Comp.CanInsertByHand)
- return;
+ fuel = null;
+ var container = _containerSystem.GetContainer(fireplace, fireplace.Comp.ContainerId);
- if (!TryComp(args.Used, out var fuel))
- return;
-
- TryInsertFuel(fireplace, args.Used, fuel);
- }
-
- private void OnCollide(Entity fireplace, ref StartCollideEvent args)
- {
- if (!fireplace.Comp.CanInsertByCollide)
- return;
-
- if (!TryComp(args.OtherEntity, out var fuel))
- return;
-
- TryInsertFuel(fireplace, args.OtherEntity, fuel);
- }
-
- private bool TryInsertFuel(Entity fireplace, EntityUid fuelUid, CP14FireplaceFuelComponent fuel)
- {
- if (fireplace.Comp.CurrentFuel > fireplace.Comp.MaxFuelLimit)
- {
- _popupSystem.PopupEntity(Loc.GetString("cp14-fireplace-full", ("target", fireplace)), fireplace);
+ if (container.ContainedEntities.Count == 0)
return false;
+
+ foreach (var ent in container.ContainedEntities)
+ {
+ if (!TryComp(ent, out var flammable))
+ continue;
+
+ fuel = new Entity(ent, flammable);
+ return true;
}
- if (!TryComp(fireplace, out var flammable))
- return false;
+ return false;
+ }
- fireplace.Comp.CurrentFuel += fuel.Fuel;
+ private void ConsumeFuel(EntityUid uid, CP14FireplaceComponent component, Entity fuel)
+ {
+ if (!TryComp(uid, out var flammable))
+ return;
+
+ component.CurrentFuel += fuel.Comp.CP14FireplaceFuel;
if (flammable.OnFire)
- _audio.PlayPvs(fuel.InsertFuelSound, fireplace);
+ _audio.PlayPvs(component.InsertFuelSound, uid);
- UpdateAppearance(fireplace, fireplace.Comp);
- QueueDel(fuelUid);
- return true;
+ QueueDel(fuel);
}
public override void Update(float frameTime)
@@ -104,6 +93,9 @@ public sealed partial class CP14FireplaceSystem : EntitySystem
}
else
{
+ if (TryFoundFuelInStorage(new Entity(uid, fireplace), out var fuel) && fuel != null)
+ ConsumeFuel(uid, fireplace, fuel.Value);
+
flammable.FirestackFade = -fireplace.FireFadeDelta;
}
}
diff --git a/Content.Shared/Sprite/RandomSpriteComponent.cs b/Content.Shared/Sprite/RandomSpriteComponent.cs
index 0e9133d1c8..548645e019 100644
--- a/Content.Shared/Sprite/RandomSpriteComponent.cs
+++ b/Content.Shared/Sprite/RandomSpriteComponent.cs
@@ -24,4 +24,10 @@ public sealed partial class RandomSpriteComponent : Component
///
[ViewVariables(VVAccess.ReadWrite), DataField("selected")]
public Dictionary Selected = new();
+
+ ///
+ /// CP14 Base Random Sprite color
+ ///
+ [DataField]
+ public Color CP14InheritBaseColor = Color.White;
}
diff --git a/Resources/Locale/en-US/_CP14/fireplace/fireplace-component.ftl b/Resources/Locale/en-US/_CP14/fireplace/fireplace-component.ftl
deleted file mode 100644
index a34f452e8f..0000000000
--- a/Resources/Locale/en-US/_CP14/fireplace/fireplace-component.ftl
+++ /dev/null
@@ -1 +0,0 @@
-cp14-fireplace-full = There's no more room in {$target}!
\ No newline at end of file
diff --git a/Resources/Locale/ru-RU/_CP14/fireplace/fireplace-component.ftl b/Resources/Locale/ru-RU/_CP14/fireplace/fireplace-component.ftl
deleted file mode 100644
index dc3b303c6d..0000000000
--- a/Resources/Locale/ru-RU/_CP14/fireplace/fireplace-component.ftl
+++ /dev/null
@@ -1 +0,0 @@
-cp14-fireplace-full = В {$target} больше ничего не влезет!
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/bonfire.yml b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/bonfire.yml
index 63e439bc1e..154bb89671 100644
--- a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/bonfire.yml
+++ b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/bonfire.yml
@@ -9,9 +9,9 @@
sprite: _CP14/Structures/Furniture/bonfire.rsi
layers:
- state: base
- - state: full1
+ - state: full-1
visible: false
- map: ["fuel"]
+ - map: ["enum.StorageFillLayers.Fill"]
- type: Construction
graph: CP14Bonfire
node: CP14Bonfire
@@ -26,20 +26,12 @@
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- - type: GenericVisualizer
- visuals:
- enum.FireplaceFuelVisuals.Status:
- fuel:
- Empty: { visible: false }
- Medium: { visible: true, state: full1 }
- Full: { visible: true, state: full2 }
+ - type: StorageFillVisualizer
+ maxFillLevels: 2
+ fillBaseName: full
- type: FireVisuals
sprite: _CP14/Structures/Furniture/bonfire.rsi
normalState: burning
-
-- type: entity
- id: CP14Stick
- parent: CP14Bucket
- name: Stick!!!
- components:
- - type: CP14FireplaceFuel
+ - type: Storage
+ grid:
+ - 0,0,2,1
diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount_torch.yml b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount_torch.yml
index 78e9f5b40d..d15f8c0d07 100644
--- a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount_torch.yml
+++ b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount_torch.yml
@@ -56,7 +56,6 @@
- type: CP14Fireplace
maxFuelLimit: 150
currentFuel: 150
- canInsertByHand: false
- type: FireVisuals
sprite: _CP14/Structures/Furniture/wallmount_torch.rsi
normalState: fire
diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Alchemy/heater.yml b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Alchemy/heater.yml
index 62fe322ed4..0272369135 100644
--- a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Alchemy/heater.yml
+++ b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Alchemy/heater.yml
@@ -43,6 +43,21 @@
- type: CP14FlammableEntityHeater
- type: CP14FlammableSolutionHeater
- type: CP14Fireplace
+ - type: ContainerContainer
+ containers:
+ storagebase: !type:Container
+ ents: []
+ - type: Storage
+ maxItemSize: Normal
+ grid:
+ - 0,0,2,2
+ blacklist:
+ components:
+ - IgnitionSource
+ - type: UserInterface
+ interfaces:
+ enum.StorageUiKey.Key:
+ type: StorageBoundUserInterface
- type: entity
id: CP14AlchemyFurnaceDebug
@@ -110,4 +125,7 @@
mask:
- TableMask
layer:
- - TableLayer
\ No newline at end of file
+ - TableLayer
+ - type: Storage
+ grid:
+ - 0,0,2,2
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Wallmount/crystal.yml b/Resources/Prototypes/_CP14/Entities/Structures/Wallmount/crystal.yml
new file mode 100644
index 0000000000..58afd1c442
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Entities/Structures/Wallmount/crystal.yml
@@ -0,0 +1,116 @@
+- type: entity
+ id: CP14WallmountCrystalBase
+ parent:
+ - BaseStructure
+ abstract: true
+ placement:
+ mode: SnapgridCenter
+ components:
+ - type: Sprite
+ drawdepth: Mobs
+ sprite: _CP14/Structures/Wallmount/wallmount_crystal.rsi
+ layers:
+ - state: crystal1
+ map: ["random"]
+ shader: unshaded
+ - type: Damageable
+ damageContainer: Inorganic
+ damageModifierSet: Glass
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 20
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: GlassBreak
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape:
+ !type:PhysShapeAabb
+ bounds: "0.49,0.49,-0.49,0.36"
+ density: 60
+ mask:
+ - MachineMask
+ layer:
+ - MidImpassable
+ - LowImpassable
+ - type: RandomSprite
+ available:
+ - random:
+ crystal1: Inherit
+ crystal2: Inherit
+ crystal3: Inherit
+ - type: PointLight
+ radius: 1.5
+ energy: 1
+
+- type: entity
+ id: CP14WallmountCrystalRubies
+ parent: CP14WallmountCrystalBase
+ name: sparkling rubies
+ description: wawa
+ components:
+ - type: RandomSprite
+ cP14InheritBaseColor: "#ff3d0b"
+ - type: PointLight
+ color: "#ff3d0b"
+
+- type: entity
+ id: CP14WallmountCrystalTopazes
+ parent: CP14WallmountCrystalBase
+ name: sparkling topazes
+ description: wawa
+ components:
+ - type: RandomSprite
+ cP14InheritBaseColor: "#ffe269"
+ - type: PointLight
+ color: "#ffe269"
+
+- type: entity
+ id: CP14WallmountCrystalEmeralds
+ parent: CP14WallmountCrystalBase
+ name: sparkling emeralds
+ description: wawa
+ components:
+ - type: RandomSprite
+ cP14InheritBaseColor: "#30be81"
+ - type: PointLight
+ color: "#30be81"
+
+- type: entity
+ id: CP14WallmountCrystalSapphires
+ parent: CP14WallmountCrystalBase
+ name: sparkling sapphires
+ description: wawa
+ components:
+ - type: RandomSprite
+ cP14InheritBaseColor: "#5eabeb"
+ - type: PointLight
+ color: "#5eabeb"
+
+- type: entity
+ id: CP14WallmountCrystalAmethysts
+ parent: CP14WallmountCrystalBase
+ name: sparkling amethysts
+ description: wawa
+ components:
+ - type: RandomSprite
+ cP14InheritBaseColor: "#a878d1"
+ - type: PointLight
+ color: "#a878d1"
+
+- type: entity
+ id: CP14WallmountCrystalDiamonds
+ parent: CP14WallmountCrystalBase
+ name: sparkling diamonds
+ description: wawa
+ components:
+ - type: RandomSprite
+ cP14InheritBaseColor: "#f8f8f8"
+ - type: PointLight
+ color: "#f8f8f8"
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Decoration/wallmount.yml b/Resources/Prototypes/_CP14/Entities/Structures/Wallmount/wallmount.yml
similarity index 92%
rename from Resources/Prototypes/_CP14/Entities/Structures/Decoration/wallmount.yml
rename to Resources/Prototypes/_CP14/Entities/Structures/Wallmount/wallmount.yml
index c626aad825..e8a2aeefc6 100644
--- a/Resources/Prototypes/_CP14/Entities/Structures/Decoration/wallmount.yml
+++ b/Resources/Prototypes/_CP14/Entities/Structures/Wallmount/wallmount.yml
@@ -10,7 +10,7 @@
components:
- type: Sprite
drawdepth: Mobs
- sprite: _CP14/Structures/Decoration/wallmount_decor.rsi
+ sprite: _CP14/Structures/Wallmount/wallmount_decor.rsi
layers:
- state: boards
map: ["random"]
@@ -49,7 +49,7 @@
components:
- type: Sprite
drawdepth: Mobs
- sprite: _CP14/Structures/Decoration/wallmount_decor.rsi
+ sprite: _CP14/Structures/Wallmount/wallmount_decor.rsi
layers:
- state: web
map: ["random"]
@@ -88,7 +88,7 @@
components:
- type: Sprite
drawdepth: Mobs
- sprite: _CP14/Structures/Decoration/wallmount_decor.rsi
+ sprite: _CP14/Structures/Wallmount/wallmount_decor.rsi
layers:
- state: vines
- type: Damageable
diff --git a/Resources/Prototypes/_CP14/Entities/Structures/crystal.yml b/Resources/Prototypes/_CP14/Entities/Structures/crystal.yml
new file mode 100644
index 0000000000..704cc54083
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Entities/Structures/crystal.yml
@@ -0,0 +1,119 @@
+- type: entity
+ id: CP14CrystalBase
+ abstract: true
+ parent: BaseStructure
+ components:
+ - type: Sprite
+ drawdepth: Mobs
+ sprite: _CP14/Structures/crystal.rsi
+ offset: 0, 0.25
+ layers:
+ - state: big
+ map: ["random"]
+ shader: unshaded
+ noRot: true
+ - type: Physics
+ bodyType: Static
+ - type: Damageable
+ damageContainer: Inorganic
+ damageModifierSet: Glass
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 20
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: GlassBreak
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape:
+ !type:PhysShapeCircle
+ radius: 0.45
+ density: 60
+ mask:
+ - MachineMask
+ layer:
+ - MidImpassable
+ - LowImpassable
+ - BulletImpassable
+ - Opaque
+ - type: RandomSprite
+ available:
+ - random:
+ big: Inherit
+ medium: Inherit
+ small: Inherit
+ - type: PointLight
+ radius: 2
+ energy: 2
+
+- type: entity
+ id: CP14CrystalRubies
+ parent: CP14CrystalBase
+ name: sparkling rubies
+ description: wawa
+ components:
+ - type: RandomSprite
+ cP14InheritBaseColor: "#ff3d0b"
+ - type: PointLight
+ color: "#ff3d0b"
+
+- type: entity
+ id: CP14CrystalTopazes
+ parent: CP14CrystalBase
+ name: sparkling topazes
+ description: wawa
+ components:
+ - type: RandomSprite
+ cP14InheritBaseColor: "#ffe269"
+ - type: PointLight
+ color: "#ffe269"
+
+- type: entity
+ id: CP14CrystalEmeralds
+ parent: CP14CrystalBase
+ name: sparkling emeralds
+ description: wawa
+ components:
+ - type: RandomSprite
+ cP14InheritBaseColor: "#30be81"
+ - type: PointLight
+ color: "#30be81"
+
+- type: entity
+ id: CP14CrystalSapphires
+ parent: CP14CrystalBase
+ name: sparkling sapphires
+ description: wawa
+ components:
+ - type: RandomSprite
+ cP14InheritBaseColor: "#5eabeb"
+ - type: PointLight
+ color: "#5eabeb"
+
+- type: entity
+ id: CP14CrystalAmethysts
+ parent: CP14CrystalBase
+ name: sparkling amethysts
+ description: wawa
+ components:
+ - type: RandomSprite
+ cP14InheritBaseColor: "#a878d1"
+ - type: PointLight
+ color: "#a878d1"
+
+- type: entity
+ id: CP14CrystalDiamonds
+ parent: CP14CrystalBase
+ name: sparkling diamonds
+ description: wawa
+ components:
+ - type: RandomSprite
+ cP14InheritBaseColor: "#f8f8f8"
+ - type: PointLight
+ color: "#f8f8f8"
\ No newline at end of file
diff --git a/Resources/Textures/_CP14/Mobs/Species/Dwarf/displacement.rsi/pants.png b/Resources/Textures/_CP14/Mobs/Species/Dwarf/displacement.rsi/pants.png
index d20c20749ba4a90eae7a68938ff10555f8ceb9f3..525ab65c837b09e9cce7adfbb3cb80db7941196b 100644
GIT binary patch
delta 37
rcmaFJbdPC*A)~}bBN0Z4mV`=%Uk9Xm5`5KuGXR07tDnm{r-UW|>iG;S
delta 40
ucmcb|^pI(SA*1w0BN0aF43P%01(gg8SEVK>Z}4Mf00K`}KbLh*2~7a;o(pyW
diff --git a/Resources/Textures/_CP14/Mobs/Species/Dwarf/displacement.rsi/shoes.png b/Resources/Textures/_CP14/Mobs/Species/Dwarf/displacement.rsi/shoes.png
index ac527d95628e6c0f6320f6197f989da74bfcb3fc..bf1d5a2190957980e0448a78ba54d03ef4ed65ba 100644
GIT binary patch
delta 36
qcmZo+YG9gR$hd2w(KZP|^XI&-ySVCv?6iUzfWXt$&t;ucLK6VWVG5W4
delta 40
vcmZo*YGImS$hdE!(KZ>@3rw?avsW+&9^+~`eWz$S0}yz+`njxgN@xNAB=!zN
diff --git a/Resources/Textures/_CP14/Structures/Furniture/bonfire.rsi/full-0.png b/Resources/Textures/_CP14/Structures/Furniture/bonfire.rsi/full-0.png
new file mode 100644
index 0000000000000000000000000000000000000000..7244b37f5c785d78eee7767f9a4aa6bef3263b07
GIT binary patch
literal 96
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ql2i3ArY-_
n4>B?Wc})uc*XMaSfSB*u1QZw;-5D2j067evu6{1-oD!MgAGV-xtR*07>k44ofy`glX=O&z`WAa#WAE}
z&fB{ObDIrB8XmI0;+VRlwA(|rNzuyDKT^TA_!L)cBWq3f6;=z@PU%VI3)-)p5O};q
zkyG#A{@`0CoON|(Ds`nUKyw*(WUSr2wEy9}p!;)O151=%^EH_>Y!}HAP-hMhalLNR
zE5paW@^#fGPQA>C6Em-{C%k&FNoVr5+`0V!yqkRl&L%r?x@kRnw{ThJlM0)zAg@n0
z{?GPZc>X-S-g-&T3*&@4&cFZK2@2lK+kWm?eDR0U*y{GnLcbVp*rrTLwanO)x#gv!
z;KaiZ3%pA`p1&@=&GWL!WX+h+sU36D8h=*)vGV>D$9Ze-6DhTI
zB4*+NdZn@Kg|9aMeHnB^PEBp<@|v2OjuQslQ-U1N{3)OMyz=|MfA^kN-pgETeZNM4
zDV^<%=Vf5nJpQPm^l!7vhOR{~wp_cbd+gN@9U-N3wjTZN^-rx_+m1;xTu=QNW$Sx)
z$c>KJq4};6ItNc5fOtvqXNU5Vm=J#uJZrr+Truq_imGR@tMcRL1H}DcYIx|pJz5(<@BaH&$uTgvB`U!
zQuROit>e~l&A!{4EwpOYr0dtipVulW<=*xJhFNi2P}T;oRCefhe`%62gIz>T%9c%8J*?mV^iE8D(V
z?GKC(m@U7TuJnbK{qTHc=CHpU`>uGX5PyJ#%TS_w8+y+CJs#_g~xg*8lkY+j(hc*>d|cm27T$
z>nuAaJ%_b!so}SMhBth4mzlGbMK7*5pD|0?FqY@0^oFJT^nIhXtC_c5`MxwWJIyS?
z+x1TTtZik6+aBI6UV#KG=Ie-%jw6u%ew{S4>YjL-Wy#9k=-y>@9fRYP33bzD02|
bg96iiuAU#Px&@JU2LRCt{2-92urKokYw1M(6qO&7_jya9SIU>4$vDs?1MQ)LB6*#ZkN9g;Ud
z1ri++d*Bt;5KJ%(JYptrzUt}48FMf5<1p6%5D^g(5s{9vEUTrDVNUj#7q2aNpd$fm
z46;vW59mt5S`(u+1bpAGgOB5QmNzyfp+6E31Ob5W160A!6?n5v6Oz!|1Hv$@E|&}P
zJO^+~f)HZzo0$-B+rtE?V9)0>03b;c2qEA&jy2_tnrA)FbHs6sEXyVx^qhVqAkT9I
zK>#5HilTrJ0%@8e&vO(-G1y?=SylnRzrWY*FYQMHK0iM#0PsAo?(Sh2S^yxW96bA3
zmOV_u*VkA5?0Mjn%M1a;Co!Q&uG^f
z_I+P_8B3DnVLPUKNnA%H4M7fH;qcbT!j-V5$*O=@kdkV
z=IFD{wJRlrsDoFR?}x5NFWv*@ESzv0#}Y!+J5uNK`7SA47Eb`6S2&?NEQ+G2&wjJW
zBM1U??Nk|&0G+~#zQT(p^}A~CLI?rR^8j?$I2bVp0KKK^-MW?u8s9@t!p@%96F|KF{xD{8tzP=(&Qv^YPIF5U(QKXcWPR)Yi
zx^9)GDNd)8nLS`^amAS6f$;?)i(+vF5fKp)5fKp)5fKp)5fKp)5fKp)5fKqhV)PA9
ze~F6O-tspxuGed2Kl)bH+U@syYs~kNX|=XE0V?%ZXSbMydKFmuK$f=K>TR#HEJINg
zuuXZ|%d@GQt7zYGX^plVJ5kf7KL>0vc*WS8s5}!B0L=R|$-hFyys4+ocEx6eVOR+v
za5x+QVD(prR1)gH1(GDGgWr}c10Jkx*_OlP%dbk?@$K#Q!K>fHq6Q2M1
zEK*9#geTsbVa?0l5MC4oKMG^F)yY7`z4JT|r_*WKqgg-{MYvopOCJUi5iM`ip9EPX
w#Ud#pA|fIpA|fIpA|fIpA|fIpA|hI;e}R?Jx)d6MMF0Q*07*qoM6N<$f++yo4gdfE
literal 0
HcmV?d00001
diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal3.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal3.png
new file mode 100644
index 0000000000000000000000000000000000000000..36e0bc53f044b772c095a36dbd1c9236af779bbd
GIT binary patch
literal 716
zcmeAS@N?(olHy`uVBq!ia0vp^4nTZ>gAGV-xtR*07>k44ofy`glX=O&z|`jH;uumf
z=k49Sy{jEW+8!o95t^`~}R0f7M3t#WL_f3NB;4S|MkyhiQ-4PiL*P;#?+*$i~&+4Mg
zu6m>2JON%`m2PJqdZo{J{mt_lgQX$&O?sbH>II6N{du9gat7mlpS%9`!mbmy$ZS}||>9X%fXU}`}YFAzLoSQ6{%}q0Bee<03<*?}D@+m>J
zlT_-&_`#knIDgGINd2FAhOzMj7v?=Dc+MntPVW>pejx4rl+WyP!_qUe_#;kD+S%-T
zwxN6{^W~VsYEmCG%RlICE_fgL?chqbJ-52&7qP!L;{I-zD!<0)ET7L=9Sc+DWhv}F
z#@v3U2UM&LOgBFWVRku|&i?F_jzwZt*@3MJ-!f9z!S7_{Q$&q(YhZr#Ahm)3sx$7oL9TQM&LB&0qKL-3$#AH@mXeey(4Uh0L42V@zwm
s=Gq1^e3*S*+$p8y1P3FE>l^G}iO*lLLhIA=>|Bt9r>mdKI;Vst03ixN9smFU
literal 0
HcmV?d00001
diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/meta.json b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/meta.json
new file mode 100644
index 0000000000..171e21682b
--- /dev/null
+++ b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/meta.json
@@ -0,0 +1,23 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "By TheShuEd",
+ "size": {
+ "x": 32,
+ "y": 96
+ },
+ "states": [
+ {
+ "name": "crystal1",
+ "directions": 4
+ },
+ {
+ "name": "crystal2",
+ "directions": 4
+ },
+ {
+ "name": "crystal3",
+ "directions": 4
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/boards.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards.png
similarity index 100%
rename from Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/boards.png
rename to Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards.png
diff --git a/Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/boards2.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards2.png
similarity index 100%
rename from Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/boards2.png
rename to Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards2.png
diff --git a/Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/boards3.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards3.png
similarity index 100%
rename from Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/boards3.png
rename to Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards3.png
diff --git a/Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/boards4.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards4.png
similarity index 100%
rename from Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/boards4.png
rename to Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards4.png
diff --git a/Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/meta.json b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/meta.json
similarity index 100%
rename from Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/meta.json
rename to Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/meta.json
diff --git a/Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/vines.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/vines.png
similarity index 100%
rename from Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/vines.png
rename to Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/vines.png
diff --git a/Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/web.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web.png
similarity index 100%
rename from Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/web.png
rename to Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web.png
diff --git a/Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/web2.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web2.png
similarity index 100%
rename from Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/web2.png
rename to Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web2.png
diff --git a/Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/web3.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web3.png
similarity index 100%
rename from Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/web3.png
rename to Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web3.png
diff --git a/Resources/Textures/_CP14/Structures/crystal.rsi/big.png b/Resources/Textures/_CP14/Structures/crystal.rsi/big.png
new file mode 100644
index 0000000000000000000000000000000000000000..91bbe51fb384947aa6479d1208f8f7318643ea13
GIT binary patch
literal 1040
zcmV+r1n>KaP)vOMSXyXd
zCH?~&E9-z=z(PgEKVWbPYREzm6bVLH5(EvJ7+En0+PK%uDZK{#E$?R4oAoKTCLVI*tY@V@i=*U
zdIA9W{r7AN23wpcm&?pq#eq;L)Dk?IOxo7*^Yas$rlDT1v(gEI
z0CNcffk0OPx81{PwTfb~2$#!+bUKZ-wKWn91}(uqK0cr*3i|r`plOhI%|(c
zqgY;EhTH9iVHhm{H2M7eeCH#x8DMU1&N3jA$uNlKMfd*xj`j6*5JI4;YD-{RhFYyg
z%vVPMs?pI=a2$tfwaNe#MFG&5eLkND0EnW9jg5^KIKSVITrLMe5Qr#>5Jj;!2Y`kP
zp-_lHyu7>s02D<*I2^XDg~7o=h@yza#YOgPcz75W7Z)fL3IG6~&j-KXkIl_Z+wE!V
z0EM6;gs_z^Ns^_n$KzqYIgUdrm4eIV!s_ZOd_EuY`8>9_w-JlQY#p%Oh7^M5d6GyZ
zAW0G;kqCfBZ3BS-WLbv8;lSP99kaMpDq(7B3TJ0$czAeVv0||pR8>VXne6OS`GAo3VMwI1v9J*%QW;|<8XIioJ7QvtV&?`(1O*HPWZ&XsH}Zn#pje#3JK1Ds=9%Zd
zW@hJE_|>m|^{a14Q53CMENVZItFM>IS65d(Lwp%PQ4~#8RR9D*AQFl61o0&RMNzc-
z`}?;3ULe{4B9VwzDwVoUC`l5MB%vtEw;%>Ob;e>bN~Mx!u~-DXuhZ%!Ng@~we#h5P
z+YVe_UbaAd95b8Eh@yzqY6Tz|43bPHe-_~4;sTS&gvn$g7K`!v`f5N}tyWZ3C6!A3
zhKz|PK&2B4}cxm*r__xE=+t@l#U@fL`ph}Y`{AP@*}c6Qbl
z^YZdSqtT$*Z1x1w2B6<@Q4|RT0)#>#o}ZsvVm3E7Sy@@3TCGwn7I}PpY)kC-`?XT3
z)bex%;BvW8RTWiL2?m1{3I$^2$jL9dNtdg3ILsV0?W1(}~4mkxVAT-rkCb81OcDV$HBotcK|ws
z!{KOwNTpKP?RN6{JhCjKk7qI&*4EaHx&8h9MsWhz+S+1iY3b92v=pLnIIQVkKEU?&
zHi<-{<3w4OIXXIOJO5}jN;DcZz~|=XczSvw9*=j-)BmxN&*#@|HXEv{VzpXXTwLVj
zg?9VD
zjzE@Wd_Eu7*Vn}3apLi~vDLaf9uH$c_jjTNb#SLPi7Ize>O{{B9dO2ugFKd8ycNp5a#x-$P1;3LGxGMq}K
zT4GEllkpx7hp|{J+}+&~3Wd5d|5pGVqS0tjE|(b^8u~Qu@bD0TY&OgJ`FYpo09^$;
voz9MRd}L&Vx3@Qjhld#)9Q@MC|2O&r!(Nc&_A9!J00000NkvXXu0mjfeT=I_
literal 0
HcmV?d00001
diff --git a/Resources/Textures/_CP14/Structures/crystal.rsi/meta.json b/Resources/Textures/_CP14/Structures/crystal.rsi/meta.json
new file mode 100644
index 0000000000..d551c51028
--- /dev/null
+++ b/Resources/Textures/_CP14/Structures/crystal.rsi/meta.json
@@ -0,0 +1,23 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "by malanisa (discord)",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "big"
+ },
+ {
+ "name": "medium"
+ },
+ {
+ "name": "small"
+ },
+ {
+ "name": "shard"
+ }
+ ]
+}
diff --git a/Resources/Textures/_CP14/Structures/crystal.rsi/shard.png b/Resources/Textures/_CP14/Structures/crystal.rsi/shard.png
new file mode 100644
index 0000000000000000000000000000000000000000..8472dc5d82c0634d006f6bf2128984cbe6d53326
GIT binary patch
literal 502
zcmVX~fpfSMn9?v=Mv*
zA3$OrK*dHuQBWibY9Znuf>;F9I9u()R%`UP+ibpan7QZ9<;)rI@$vEb-wAw0kw&8-
zOQjNyu0`K4BqXufVnmnCOsHzHpqA35afm*F59mnDEc;LD&
zo6QE(G_foTRaFr}{JjRM)vCN)E(C)?gb?Vuj%k`~w_D=zIEtb$9*-~TCGSV5`@EH#^W))UhgGi1igyew$1&1ClZNJC=_V7+bk9fG)+TQ
zRYs!`-EQ|~SH8TlTrNuh+qOxiQs}ylVHhlzOS0K4(P)%Tr{hT+JWOD{UK5MO&@>HQ
z*J-s{Os7+l$t0mr=q+*ZV8Z==4?rf9!7vQw^Ev5sn(Ot7Wm)w5{kOuv^DC&=>)dWP
zgbdW@N=lmGw#07*qoM6N<$f{3o>c>n+a
literal 0
HcmV?d00001
diff --git a/Resources/Textures/_CP14/Structures/crystal.rsi/small.png b/Resources/Textures/_CP14/Structures/crystal.rsi/small.png
new file mode 100644
index 0000000000000000000000000000000000000000..47ed9451b541b9682aadc67c9661f8f91ae5fe35
GIT binary patch
literal 596
zcmV-a0;~OrP)u@jRfegua&i6jw;SdN3
z2?+@a2?_Zh(KJoW=W}t0UPphk`4AGm0>k0((+M?A6a9Xl#bR*~310yrgl}_A(?lc^
z0l+YfgGl%aSeC_XHuG)X>-7LoRTaZ9m`o;K?f(8=%;)pH=SKqNa+yx2!*n|RAR)^#
zsZ`37czu24`T3cPiwp7c^1@&+U@#a2<$C=3tPqdK>2|xM(`jO{81;Hxj7B2>+U+*3
z>jIESBse;HpTn{&E-xuZX|B85W1tFKloHk%Eu>*6@hhy9M@P^;B`CXmbJ_9Or=
z{O0Bcfc1KfVHl*-X--d1DV0h9oS&Z~NfPyXol2z=2@>$V1NnSD(rh+`uIqc>tJNyD
zZ3FP|@Zg04JUu-D?~^wgjW2}*{BhAv!Zb|)GMNmvZF}#ks?u(^NhXt=ot+_spw()9
zIUE9h#rb?blFQ{#6eX~c5Q4kAyKjXxLMg5x->Rx1Fa(J0I1lH=oJ
iBuS!Lt$r)~pWqE4Y7N#RBUEt!0000