From 6270ac94c0c03a51feeaa04e5b784169e60e5b98 Mon Sep 17 00:00:00 2001 From: Darkmajia Date: Sat, 8 Feb 2025 08:58:06 +0000 Subject: [PATCH 1/3] crafting recipe, bonfire prototype changes, firestructure component --- .../FireStructure/FireStructureComponent.cs | 18 ++++++ .../FireStructure/FireStructureSystem.cs | 59 ++++++++++++++++++ .../Structures/Decoration/bonfire.yml | 62 ++++++++++++++++--- .../Graphs/structures/bonfire.yml | 25 ++++++++ .../Recipes/Construction/structures.yml | 19 +++++- 5 files changed, 172 insertions(+), 11 deletions(-) create mode 100644 Content.Server/_Impstation/FireStructure/FireStructureComponent.cs create mode 100644 Content.Server/_Impstation/FireStructure/FireStructureSystem.cs create mode 100644 Resources/Prototypes/_Impstation/Recipes/Construction/Graphs/structures/bonfire.yml diff --git a/Content.Server/_Impstation/FireStructure/FireStructureComponent.cs b/Content.Server/_Impstation/FireStructure/FireStructureComponent.cs new file mode 100644 index 000000000000..cfa77c90f86a --- /dev/null +++ b/Content.Server/_Impstation/FireStructure/FireStructureComponent.cs @@ -0,0 +1,18 @@ +using Content.Shared.Audio; +using Content.Shared.Smoking; +using Robust.Shared.GameStates; + +namespace Content.Server._Impstation.FireStructure; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(FireStructureSystem))] +public sealed partial class FireStructureComponent : Component +{ + [DataField, AutoNetworkedField] + public SmokableState CurrentState = SmokableState.Unlit; + + [DataField] + public AmbientSoundComponentState? AmbientSound; + + [DataField] + public PointLightComponentState? PointLight; +} diff --git a/Content.Server/_Impstation/FireStructure/FireStructureSystem.cs b/Content.Server/_Impstation/FireStructure/FireStructureSystem.cs new file mode 100644 index 000000000000..2db686283393 --- /dev/null +++ b/Content.Server/_Impstation/FireStructure/FireStructureSystem.cs @@ -0,0 +1,59 @@ +using Content.Server.Audio; +using Content.Shared.Audio; +using Content.Shared.Interaction; +using Content.Shared.Smoking; +using Content.Shared.Temperature; +using Robust.Server.GameObjects; + +namespace Content.Server._Impstation.FireStructure; + +public sealed class FireStructureSystem : EntitySystem +{ + [Dependency] private readonly AmbientSoundSystem _ambient = default!; + [Dependency] private readonly PointLightSystem _light = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnInteractUsing); + } + + private void OnInteractUsing(Entity ent, ref InteractUsingEvent args) + { + if (args.Handled || ent.Comp.CurrentState != SmokableState.Unlit) + return; + + var isHotEvent = new IsHotEvent(); + RaiseLocalEvent(args.Used, isHotEvent); + + if (!isHotEvent.IsHot) + return; + + LightFire(ent); + args.Handled = true; + } + + private void LightFire(Entity ent) + { + if (ent.Comp.AmbientSound != null) + { + var component = EnsureComp(ent); + var ambient = ent.Comp.AmbientSound; + _ambient.SetRange(ent, ambient.Range, component); + _ambient.SetVolume(ent, ambient.Volume, component); + _ambient.SetSound(ent, ambient.Sound, component); + } + + if (ent.Comp.PointLight != null) + { + var component = EnsureComp(ent); + var light = ent.Comp.PointLight; + _light.SetColor(ent, light.Color, component); + _light.SetEnergy(ent, light.Energy, component); + _light.SetSoftness(ent, light.Softness, component); + _light.SetCastShadows(ent, light.CastShadows, component); + _light.SetRadius(ent, light.Radius, component); + } + } +} diff --git a/Resources/Prototypes/Entities/Structures/Decoration/bonfire.yml b/Resources/Prototypes/Entities/Structures/Decoration/bonfire.yml index b60b2bd94359..cad01eef6966 100644 --- a/Resources/Prototypes/Entities/Structures/Decoration/bonfire.yml +++ b/Resources/Prototypes/Entities/Structures/Decoration/bonfire.yml @@ -10,27 +10,69 @@ layers: - state: bonfire - state: burning - - type: PointLight - radius: 5 - energy: 3 - color: "#FFC90C" + #- type: PointLight + # radius: 5 + # energy: 3 + # color: "#FFC90C" - type: Damageable damageContainer: StructuralInorganic damageModifierSet: Wood - type: Destructible thresholds: + - trigger: + !type:DamageTrigger + damage: 100 # imp edit + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + # imp edits - trigger: !type:DamageTrigger damage: 50 behaviors: - !type:DoActsBehavior acts: [ "Destruction" ] - - type: AmbientSound - volume: -5 - range: 5 - sound: - path: /Audio/Ambience/Objects/fireplace.ogg - - type: AlwaysHot + - !type:PlaySoundBehavior + sound: + collection: WoodDestroy + - !type:SpawnEntitiesBehavior + spawn: + MaterialWoodPlank1: + min: 6 + max: 10 + # end imp edits + #- type: AmbientSound + # volume: -5 + # range: 5 + # sound: + # path: /Audio/Ambience/Objects/fireplace.ogg + # imp edits + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.25 + density: 60 + mask: + - MachineMask + layer: + - SlipLayer + hard: false + - type: StepTrigger + requiredTriggeredSpeed: 0 + intersectRatio: 0.1 + - type: TileEntityEffect + effects: + - !type:FlammableReaction + multiplier: 2.5 + multiplierOnExisting: 0.75 + - !type:Ignite + - type: Climbable + - type: Construction + graph: Bonfire + node: bonfire + # end imp edits - type: entity id: LegionnaireBonfire diff --git a/Resources/Prototypes/_Impstation/Recipes/Construction/Graphs/structures/bonfire.yml b/Resources/Prototypes/_Impstation/Recipes/Construction/Graphs/structures/bonfire.yml new file mode 100644 index 000000000000..584af6a2dfba --- /dev/null +++ b/Resources/Prototypes/_Impstation/Recipes/Construction/Graphs/structures/bonfire.yml @@ -0,0 +1,25 @@ +- type: constructionGraph + id: Bonfire + start: start + graph: + - node: start + edges: + - to: bonfire + steps: + - material: WoodPlank + amount: 10 + doAfter: 6 + - node: bonfire + entity: Bonfire + actions: + - !type:SnapToGrid {} + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: MaterialWoodPlank1 + amount: 10 + - !type:DeleteEntity {} + steps: + - tool: Prying + doAfter: 3 diff --git a/Resources/Prototypes/_Impstation/Recipes/Construction/structures.yml b/Resources/Prototypes/_Impstation/Recipes/Construction/structures.yml index d19416a9fb55..a7fe1aa7a55f 100644 --- a/Resources/Prototypes/_Impstation/Recipes/Construction/structures.yml +++ b/Resources/Prototypes/_Impstation/Recipes/Construction/structures.yml @@ -32,4 +32,21 @@ sprite: Structures/Windows/directional.rsi state: uranium_reinforced_window objectType: Structure - placementMode: SnapgridCenter \ No newline at end of file + placementMode: SnapgridCenter + +- type: construction + id: Bonfire + name: bonfire + description: What can be better than a late evening under the sky with guitar and friends? + graph: Bonfire + startNode: start + targetNode: bonfire + category: construction-category-structures + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + icon: + sprite: Structures/Decoration/bonfire.rsi + state: bonfire + conditions: + - !type:TileNotBlocked From 3fce92877f5fd128cdf4e7f33b79928f9796c7e0 Mon Sep 17 00:00:00 2001 From: Darkmajia Date: Sat, 8 Feb 2025 18:35:24 +0000 Subject: [PATCH 2/3] rest of the fucking bonfire --- .../Atmos/Components/FlammableComponent.cs | 7 ++ .../Atmos/EntitySystems/FlammableSystem.cs | 28 ++++++- .../FireStructure/FireStructureComponent.cs | 18 ---- .../FireStructure/FireStructureSystem.cs | 59 -------------- .../Structures/Decoration/bonfire.yml | 77 ++++++++++-------- .../bonfire.rsi/bonfire_extinguished.png | Bin 1035 -> 4606 bytes .../Decoration/bonfire.rsi/burning.png | Bin 2049 -> 5398 bytes .../Decoration/bonfire.rsi/meta.json | 2 +- 8 files changed, 76 insertions(+), 115 deletions(-) delete mode 100644 Content.Server/_Impstation/FireStructure/FireStructureComponent.cs delete mode 100644 Content.Server/_Impstation/FireStructure/FireStructureSystem.cs diff --git a/Content.Server/Atmos/Components/FlammableComponent.cs b/Content.Server/Atmos/Components/FlammableComponent.cs index 9ae99a15136e..b94047b50841 100644 --- a/Content.Server/Atmos/Components/FlammableComponent.cs +++ b/Content.Server/Atmos/Components/FlammableComponent.cs @@ -82,5 +82,12 @@ public sealed partial class FlammableComponent : Component [DataField] public ProtoId FireAlert = "Fire"; + + // imp edit + /// + /// Should the entity enable an AmbientSound component when lit, and disable it when unlit? + /// + [DataField] + public bool ToggleAmbientSound; } } diff --git a/Content.Server/Atmos/EntitySystems/FlammableSystem.cs b/Content.Server/Atmos/EntitySystems/FlammableSystem.cs index bc96807af2db..1a5924c3b1dc 100644 --- a/Content.Server/Atmos/EntitySystems/FlammableSystem.cs +++ b/Content.Server/Atmos/EntitySystems/FlammableSystem.cs @@ -1,5 +1,6 @@ using Content.Server.Administration.Logs; using Content.Server.Atmos.Components; +using Content.Server.Audio; using Content.Server.IgnitionSource; using Content.Server.Stunnable; using Content.Server.Temperature.Components; @@ -9,6 +10,7 @@ using Content.Shared.Alert; using Content.Shared.Atmos; using Content.Shared.Atmos.Components; +using Content.Shared.Audio; using Content.Shared.Damage; using Content.Shared.Database; using Content.Shared.Interaction; @@ -24,6 +26,7 @@ using Content.Shared.Weapons.Melee.Events; using Content.Shared.FixedPoint; using Robust.Server.Audio; +using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Events; using Robust.Shared.Physics.Systems; @@ -47,6 +50,7 @@ public sealed class FlammableSystem : EntitySystem [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly UseDelaySystem _useDelay = default!; [Dependency] private readonly AudioSystem _audio = default!; + [Dependency] private readonly AmbientSoundSystem _ambient = default!; [Dependency] private readonly IRobustRandom _random = default!; private EntityQuery _inventoryQuery; @@ -137,6 +141,10 @@ private void OnMapInit(EntityUid uid, FlammableComponent component, MapInitEvent _fixture.TryCreateFixture(uid, component.FlammableCollisionShape, component.FlammableFixtureID, hard: false, collisionMask: (int) CollisionGroup.FullTileLayer, body: body); + + // imp edit, disables AmbientSound if it's meant to be handled with a toggle + if (component.ToggleAmbientSound && TryComp(uid, out var ambient)) + _ambient.SetAmbience(uid, false, ambient); } private void OnInteractUsing(EntityUid uid, FlammableComponent flammable, InteractUsingEvent args) @@ -211,8 +219,14 @@ private void OnCollide(EntityUid uid, FlammableComponent flammable, ref StartCol var mass2 = 1f; if (_physicsQuery.TryComp(uid, out var physics) && _physicsQuery.TryComp(otherUid, out var otherPhys)) { - mass1 = physics.Mass; - mass2 = otherPhys.Mass; + // imp edit - if either entity has a static BodyType then it has no mass, so just equalise instead + var anyStatic = physics.BodyType == BodyType.Static || otherPhys.BodyType == BodyType.Static; + + if (!anyStatic) + { + mass1 = physics.Mass; + mass2 = otherPhys.Mass; + } } // when the thing on fire is more massive than the other, the following happens: @@ -315,6 +329,10 @@ public void Extinguish(EntityUid uid, FlammableComponent? flammable = null) _ignitionSourceSystem.SetIgnited(uid, false); + // imp edit + if (flammable.ToggleAmbientSound && TryComp(uid, out var ambient)) + _ambient.SetAmbience(uid, false, ambient); + UpdateAppearance(uid, flammable); } @@ -338,6 +356,12 @@ public void Ignite(EntityUid uid, EntityUid ignitionSource, FlammableComponent? flammable.OnFire = true; } + // imp edit + if (flammable.ToggleAmbientSound && + TryComp(uid, out var ambient) && + !ambient.Enabled) + _ambient.SetAmbience(uid, true, ambient); + UpdateAppearance(uid, flammable); } diff --git a/Content.Server/_Impstation/FireStructure/FireStructureComponent.cs b/Content.Server/_Impstation/FireStructure/FireStructureComponent.cs deleted file mode 100644 index cfa77c90f86a..000000000000 --- a/Content.Server/_Impstation/FireStructure/FireStructureComponent.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Content.Shared.Audio; -using Content.Shared.Smoking; -using Robust.Shared.GameStates; - -namespace Content.Server._Impstation.FireStructure; - -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(FireStructureSystem))] -public sealed partial class FireStructureComponent : Component -{ - [DataField, AutoNetworkedField] - public SmokableState CurrentState = SmokableState.Unlit; - - [DataField] - public AmbientSoundComponentState? AmbientSound; - - [DataField] - public PointLightComponentState? PointLight; -} diff --git a/Content.Server/_Impstation/FireStructure/FireStructureSystem.cs b/Content.Server/_Impstation/FireStructure/FireStructureSystem.cs deleted file mode 100644 index 2db686283393..000000000000 --- a/Content.Server/_Impstation/FireStructure/FireStructureSystem.cs +++ /dev/null @@ -1,59 +0,0 @@ -using Content.Server.Audio; -using Content.Shared.Audio; -using Content.Shared.Interaction; -using Content.Shared.Smoking; -using Content.Shared.Temperature; -using Robust.Server.GameObjects; - -namespace Content.Server._Impstation.FireStructure; - -public sealed class FireStructureSystem : EntitySystem -{ - [Dependency] private readonly AmbientSoundSystem _ambient = default!; - [Dependency] private readonly PointLightSystem _light = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnInteractUsing); - } - - private void OnInteractUsing(Entity ent, ref InteractUsingEvent args) - { - if (args.Handled || ent.Comp.CurrentState != SmokableState.Unlit) - return; - - var isHotEvent = new IsHotEvent(); - RaiseLocalEvent(args.Used, isHotEvent); - - if (!isHotEvent.IsHot) - return; - - LightFire(ent); - args.Handled = true; - } - - private void LightFire(Entity ent) - { - if (ent.Comp.AmbientSound != null) - { - var component = EnsureComp(ent); - var ambient = ent.Comp.AmbientSound; - _ambient.SetRange(ent, ambient.Range, component); - _ambient.SetVolume(ent, ambient.Volume, component); - _ambient.SetSound(ent, ambient.Sound, component); - } - - if (ent.Comp.PointLight != null) - { - var component = EnsureComp(ent); - var light = ent.Comp.PointLight; - _light.SetColor(ent, light.Color, component); - _light.SetEnergy(ent, light.Energy, component); - _light.SetSoftness(ent, light.Softness, component); - _light.SetCastShadows(ent, light.CastShadows, component); - _light.SetRadius(ent, light.Radius, component); - } - } -} diff --git a/Resources/Prototypes/Entities/Structures/Decoration/bonfire.yml b/Resources/Prototypes/Entities/Structures/Decoration/bonfire.yml index cad01eef6966..c99e67e59c35 100644 --- a/Resources/Prototypes/Entities/Structures/Decoration/bonfire.yml +++ b/Resources/Prototypes/Entities/Structures/Decoration/bonfire.yml @@ -9,23 +9,36 @@ sprite: Structures/Decoration/bonfire.rsi layers: - state: bonfire - - state: burning - #- type: PointLight - # radius: 5 - # energy: 3 - # color: "#FFC90C" + - type: AmbientSound + volume: -5 + range: 5 + sound: + path: /Audio/Ambience/Objects/fireplace.ogg - type: Damageable damageContainer: StructuralInorganic damageModifierSet: Wood + # imp edits + - type: Appearance + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.35 + density: 130 + mask: + - MachineMask + layer: + - MidImpassable + - LowImpassable - type: Destructible thresholds: - trigger: !type:DamageTrigger - damage: 100 # imp edit + damage: 100 behaviors: - !type:DoActsBehavior acts: [ "Destruction" ] - # imp edits - trigger: !type:DamageTrigger damage: 50 @@ -40,35 +53,29 @@ MaterialWoodPlank1: min: 6 max: 10 - # end imp edits - #- type: AmbientSound - # volume: -5 - # range: 5 - # sound: - # path: /Audio/Ambience/Objects/fireplace.ogg - # imp edits - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeCircle - radius: 0.25 - density: 60 - mask: - - MachineMask - layer: - - SlipLayer - hard: false - - type: StepTrigger - requiredTriggeredSpeed: 0 - intersectRatio: 0.1 - - type: TileEntityEffect - effects: - - !type:FlammableReaction - multiplier: 2.5 - multiplierOnExisting: 0.75 - - !type:Ignite + - type: Reactive + groups: + Flammable: [ Touch ] + Extinguish: [ Touch ] - type: Climbable + - type: Flammable + damage: + types: + Heat: 0 # adding any damage would make it break loudly into pieces, which feels weird + flammableCollisionShape: + !type:PhysShapeCircle + radius: 0.25 + maximumFireStacks: 6 + fireSpread: true + alwaysCombustible: true + firestacksOnIgnite: 2 + firestackFade: 0.05 # gets hotter the longer it's on + toggleAmbientSound: true + - type: FireVisuals + sprite: Structures/Decoration/bonfire.rsi + normalState: burning + maxLightRadius: 8 + maxLightEnergy: 5 - type: Construction graph: Bonfire node: bonfire diff --git a/Resources/Textures/Structures/Decoration/bonfire.rsi/bonfire_extinguished.png b/Resources/Textures/Structures/Decoration/bonfire.rsi/bonfire_extinguished.png index f0600a8ce2bad01ed147b3b4f31d4fb1445ca5e0..5b6b5f3ee508b74f5fa498268bf997b7c1a8e48a 100644 GIT binary patch literal 4606 zcmeHKdr%X19$z2=0wOB3Rz;V9XQ^yfCzJ)xpC(DA3L+z-S6Y` z`+h&)@9#VLtujte9TqSq0D_=ldRmLl<7jzCCYMIIV7r4gGZq@= z%Iq{uyBRYCxxcp>X9l;y{!g!m#xC}rt6ZCVkW!rgbw%Rl1Kks+EK05OzghnvaD4bj zZ+sP#_W9qbd31+)QB>;K+EK&D|D`gf{ug^d!Niu$aW!L}rfTYaD`cxrcIfINcJFT( z_v|hiil*1^Jf1z889m}aWn06eFVkja?a9l0Ak{vZI_ZP5o7t`B?|)&s9rDxkjn(3r z|MuEh?|m-ibk=V1sO%iw`&H6YmWb!~IjHqwP1e{0Va>-N$ZIL1)f)9$?Tc(c4z&xa zG`hB_<2v%vw?i{cy-tAFggH+jfs`#M@0N@2!&FI<9#Vxi&sov@s_PbHp_G zhE-qnd%onKmo{~DMJu91{mSz!kI5kao8HaKt?y2_Sb9TnC*Ehy+~avg-uq^p85@o` z1VJ{R*Z&c2xa=cxExa-*7mrH4dp7jF{_~j(Um*s^z!K$WO)&(qJ;5N0^;0i0AQs# z0(M(1HmBOH5qfad;GGwvLfB)%6={T-1|zIx9W*QzNktfv>}E=F;gkS4&Ow>gX-O%) z5a3HAEZ{i18bw_$m&hd%v5tIHtWv2^3`cPs0Tzg}%*GLJ#O93TA$l;9Xea4l>>R_| zU>=h&u_c^FCP-@SsT&k2S zWnvS8Q*s3&m6}b6k|s@v45u)h64Pc(A?^pIw>de&M$$YK02eU;hr%!kX;M;%oRVRP zR3;`7f|QU5h2vteM4>QaVpBhe84dpSm`O^G&?*IiNL3Vts4z2* zPzs8~3WUNF!joNMb9tBUhI>D&d2yqeiQew0aoEbQPJ;2x~ z*5!Pu%3!Q?I!Ew)iWL$ShRYQSOrnrTl!})|vuTGD^dgTc#zYdiN5dCJ4blPB5`3ou z0FNAGqt-fTf@2*SENjsS`JiClvrlaR8;T-0B8lK=0E*!kA;JBWm>li0kzsw`**;DCsanD!Jr-kusCK&c?3pGLZq~IhMp< z&76yH&p!qrg$`A}k`Y4lNLbNwol%E(cvW-Lki;p;u zLBA0L{CZ?ybb(2T_Km_`zWAZ@J6^qY_#IaO(1VM-62F6V4bt^W47`%@V0R7D^-2u9 zlJQ`7{om*cczKwjZQvh}3mlbdBkE1ynB{AlmYM`@f`TC5#cR&j1IbXkF3Sl)fus1_ z3))mW8VLP3y&>7J%iBLVcKq5-N(#=>P5PvSjLf!M8)Bzv6GE09UM2t7v~}5=!onMk zVb@ajo;%vTqvej@%Gt~k>t6qBs9<7r&1a^OIziLI_gA7(LZJ>0*=vtEda~SLTD-1s z_zypeVy~atC!EVTQ?lMfr~1)Z-|udA+mgZwPJ z+Ofv+O-*<$YWifX)D z{Krami@Rd0?~jL8v4yXRq-U#qt|&)jTla1Iq~Xx;{o}?alzw>ev8C>^J-1mQINvyQ z!h$_TjS8L37{e5H)eT!%xMh=T^0P-9$A52Ib~Wkl%rifC{}g(*bl7df{FHl=?WMi8&Rg@(8#a&>{i#^pz0EpR``3ywpVtWf+~hYt+P|ZE$FXm- zhAwZqzHrWFc-*A4=Jckh&J%S3>rX!MZ~8-RZu2Zv%Ix(!HL=+XFI3N4(JXJcpbaaW zbkwr6_}c24I(aL5d5AOqBMH=XtO|sd+umKUbDdY@!x^XF(pmGS`mG4Q6U>NC*1yx% Ro)0Ps>651??Ma-s_&>|imTUk3 delta 1014 zcmV1oJ+YWxDgE%)ZBLX@~^xTg~!peBu1tHuZs)8b4ER5G=~QXvaKr+c6stC+?Htph6A zos9>EXn(w=adP+W1^|uqRZYmf)s>MD5zjp)Am+7pE~;0B#QmP+yC9x4AF0G$?{Le# zsrfp|UlDU!+<&AQN+$)C3R&4+)mK3zgqxt}o$di{twLjc zRU0+|wNjDXtyO4j?r8bo{anNcbIgLZt54-dw^pI$2a?>eE!l-qAuESYpkD6FW5>2| zYZXZ>gv4**l)AWe<4=Bk@(o^K;@DPPn?&bPQ%-*8QGatxNU4yevAILb5455LR1qn0 zQYvJrHj7x9=h&CN1d!E>iUeAIpv{0|TikYDY3Jg$X^Zz~vz(U%mssz1kHro1anJ3G-L5wQ(EA)^}+K3ler&i0EEM1 z>Vrdm>&?@98NRQqZOYC$wuL?aMoV75aLBd%K7WpFQEe8fHj7#(qyY7n6JB|lsBO!a zUsJat!u;ns?sFc1xyA3<%D>PEgW-~_`qzsq(PGzNCfpu-hKzMUo%m|Ah+C_$koNKa z_zPMFUSP6!I{9G-9lW+Fujl4I0l>KO)fc1qV$zG`w)2W`c#PLJr2sL20J+R8 zC%Nm|dq4ac_QXe-g1uzTRjW>7)xu z5OxR>@q&8X1Bkj6e<+;>QTW(5p?F4zgCl8497*2`YUOeJM7}tAq5u_l-5aAxBBsS8 k;;94(5&uO%5~+%R0eRaKIsJUa+W-In07*qoM6N<$f@wJOO#lD@ diff --git a/Resources/Textures/Structures/Decoration/bonfire.rsi/burning.png b/Resources/Textures/Structures/Decoration/bonfire.rsi/burning.png index 4f5e2fc12699740173bf60860ef38039d8363d11..302741abf9a3b0cbd97b4e7a8571442e301320d3 100644 GIT binary patch literal 5398 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 Date: Sat, 8 Feb 2025 18:53:41 +0000 Subject: [PATCH 3/3] yaml restructuring --- .../Structures/Decoration/bonfire.yml | 41 +++++++++++++++---- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Decoration/bonfire.yml b/Resources/Prototypes/Entities/Structures/Decoration/bonfire.yml index c99e67e59c35..cf0255244515 100644 --- a/Resources/Prototypes/Entities/Structures/Decoration/bonfire.yml +++ b/Resources/Prototypes/Entities/Structures/Decoration/bonfire.yml @@ -1,23 +1,44 @@ +# imp edit - base bonfire so legionnaire bonfire and other static bonfires can parent off this - type: entity - id: Bonfire + id: BonfireBase parent: BaseStructure name: bonfire description: What can be better than a late evening under the sky with guitar and friends? + abstract: true components: - type: Sprite noRot: true sprite: Structures/Decoration/bonfire.rsi layers: - - state: bonfire + - state: bonfire + - state: burning + - type: Damageable + damageContainer: StructuralInorganic + damageModifierSet: Wood + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 50 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: AmbientSound volume: -5 range: 5 sound: path: /Audio/Ambience/Objects/fireplace.ogg - - type: Damageable - damageContainer: StructuralInorganic - damageModifierSet: Wood - # imp edits + +# imp edit - most of these components are new, with old ones rolled into BaseBonfire. and yet, we are still in an upstream file +- type: entity + id: Bonfire + parent: BonfireBase + name: bonfire + description: What can be better than a late evening under the sky with guitar and friends? + components: + - type: Sprite + layers: + - state: bonfire - type: Appearance - type: Fixtures fixtures: @@ -79,16 +100,20 @@ - type: Construction graph: Bonfire node: bonfire - # end imp edits - type: entity id: LegionnaireBonfire - parent: Bonfire + parent: BonfireBase name: legionnaire bonfire description: There, in the land of lava and ash, place to to cook marshmallow and potato. components: - type: Sprite layers: - state: legionnaire_bonfire + # imp edits - type: PointLight + radius: 5 + energy: 3 color: "#FF5601" + - type: AlwaysHot + # end imp edits