diff --git a/Content.Server/_CP14/Temperature/CPMeltingComponent.cs b/Content.Server/_CP14/Temperature/CPMeltingComponent.cs new file mode 100644 index 0000000000..44f525325b --- /dev/null +++ b/Content.Server/_CP14/Temperature/CPMeltingComponent.cs @@ -0,0 +1,17 @@ +using Content.Shared.Chemistry.Components; + +namespace Content.Server._CP14.Temperature; + +/// +/// +/// + +[RegisterComponent, Access(typeof(CPMeltingSystem))] +public sealed partial class CPMeltingComponent : Component +{ + [DataField] + public Solution? MeltSolution; + + [DataField] + public float MeltTemperature = 1000f; +} diff --git a/Content.Server/_CP14/Temperature/CPMeltingSystem.cs b/Content.Server/_CP14/Temperature/CPMeltingSystem.cs new file mode 100644 index 0000000000..69d2e65cec --- /dev/null +++ b/Content.Server/_CP14/Temperature/CPMeltingSystem.cs @@ -0,0 +1,28 @@ +using Content.Server.Fluids.EntitySystems; +using Content.Server.Temperature.Systems; + +namespace Content.Server._CP14.Temperature; + +public sealed partial class CPMeltingSystem : EntitySystem +{ + [Dependency] private readonly PuddleSystem _puddleSystem = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnTemperatureChange); + } + + private void OnTemperatureChange(Entity ent, ref OnTemperatureChangeEvent args) + { + if (!(args.CurrentTemperature >= ent.Comp.MeltTemperature)) + return; + + if (ent.Comp.MeltSolution != null) + { + _puddleSystem.TrySplashSpillAt(ent, Transform(ent).Coordinates, ent.Comp.MeltSolution, out var puddleUid); + } + QueueDel(ent); + } +} diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/dagger.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/dagger.yml index c49758c3d8..474b0a434f 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/dagger.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/dagger.yml @@ -40,4 +40,12 @@ offset: 0.15,0.15 removalTime: 1 - type: ThrowingAngle - angle: 225 \ No newline at end of file + angle: 225 + - type: CPMelting + meltTemperature: 1000 + meltSolution: + temperature: 1000 + reagents: + - ReagentId: CPMetledIron + Quantity: 10 + - type: Temperature \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Reagents/metalls.yml b/Resources/Prototypes/_CP14/Reagents/metalls.yml new file mode 100644 index 0000000000..a999bfb05b --- /dev/null +++ b/Resources/Prototypes/_CP14/Reagents/metalls.yml @@ -0,0 +1,35 @@ +- type: reagent + id: CPBaseMetledMetall + group: Metled + abstract: true + reactiveEffects: + Flammable: + methods: [ Touch ] + effects: + - !type:FlammableReaction + +- type: reagent + id: CPMetledIron + parent: CPBaseMetledMetall + name: расплавленный металл #TODO + desc: Металл, доведенный до огромных температур. #TODO + physicalDesc: reagent-physical-desc-grainy #TODO + flavor: безумно #TODO + color: "#757245" + tileReactions: + - !type:FlammableTileReaction #TODO: Spawn fire puddle + temperatureMultiplier: 2 + reactiveEffects: + Flammable: + methods: [ Touch ] + effects: + - !type:FlammableReaction + multiplier: 0.2 + - !type:Ignite + metabolisms: + Poison: + effects: + - !type:HealthChange + damage: + types: + Heat: 5 \ No newline at end of file