CatStation/Content.Shared/Fluids/Components/SpillableComponent.cs
Samuka e927a6d1c4
Oil gun (#44389)
* xenoborg oil

* xenoborg oil vial

* oil gun

* minor fix to all welders

* make it more flammable

* turn into a ampoule

* update the proto

* don't declare the anchors again

* rename state

* its now a proper item

* make it spill from hitting something, but not from the hand

* fix description

* AmmoVisuals.IsFull

* make reloading animation

* update sprite

* oil gun module

* add todo comment

* less fire stacks per direct hit

* increase evaporation speed

* make it darker and not recognizable

* make oil color darker on the sprite

* add a crystal

* make it slower

* add fire sprite

* oil gun now comes with a tiny fire

* some description

* make gun glow a little

* have to be ignited

* fix

* update sprite

* flame in separate layer

* ops

* make the bullets slower

* fix the angle

* ops, it was uppercase

* comment

* typo

* empty commit

* overkill behavior is now automatic

* fix xenoborg ampoule

* oil gun custom ammo sprites

* remove glass thing

* alphabetical

* fix ampoule proto

* use localizedLabel

* update ammo counter sprite
2026-08-03 06:54:53 +00:00

45 lines
1.4 KiB
C#

using Content.Shared.FixedPoint;
namespace Content.Shared.Fluids.Components;
/// <summary>
/// Makes a solution contained in this entity spillable.
/// Spills can occur when a container with this component overflows,
/// is used to melee attack something, is equipped (see <see cref="SpillWorn"/>),
/// lands after being thrown, or has the Spill verb used.
/// </summary>
[RegisterComponent]
public sealed partial class SpillableComponent : Component
{
[DataField("solution")]
public string SolutionName = "puddle";
[DataField]
public float? SpillDelay;
/// <summary>
/// If you can spill the reagent from the container from your hands with the the spill verb
/// </summary>
[DataField]
public bool CanSpillFromHand = true;
/// <summary>
/// At most how much reagent can be splashed on someone at once?
/// </summary>
[DataField]
public FixedPoint2 MaxMeleeSpillAmount = FixedPoint2.New(20);
/// <summary>
/// Should this item be spilled when thrown?
/// </summary>
[DataField]
public bool SpillWhenThrown = true;
/// <summary>
/// If true, melee processing will stop if any reagent is transferred.
/// Otherwise, melee processing keeps occuring allowing both reagent
/// transfer and melee damage to happen.
/// </summary>
[DataField]
public bool PreventMelee = true;
}