diff --git a/Content.Server/_Honk/Cunt/CuntSystems.cs b/Content.Server/_Honk/Cunt/CuntSystems.cs new file mode 100644 index 0000000000..1711c46e07 --- /dev/null +++ b/Content.Server/_Honk/Cunt/CuntSystems.cs @@ -0,0 +1,98 @@ +using Content.Server.Chat.Systems; +using Content.Server.Chemistry.Containers.EntitySystems; +using Content.Server.Fluids.EntitySystems; +using Content.Shared._Honk.Cunt; +using Content.Shared.Chemistry.Components; +using Content.Shared.FixedPoint; +using Robust.Shared.Timing; + +namespace Content.Server._Honk.Cunt; + +public sealed class CuntSystem : EntitySystem +{ + [Dependency] private readonly PuddleSystem _puddle = default!; + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly SolutionContainerSystem _solutionContainer = default!; + + public override void Initialize() + { + SubscribeLocalEvent(OnCunt); + SubscribeLocalEvent(OnStartup); + SubscribeLocalEvent(OnUnpaused); + } + + private void OnStartup(EntityUid uid, CuntableComponent component, ComponentStartup args) + { + var cuntSolution = _solutionContainer.EnsureSolution(uid, CuntableComponent.CuntSolutionName); + cuntSolution.MaxVolume = 10; + } + + private void OnCunt(EntityUid uid, CuntableComponent component, ref EmoteEvent args) + { + if (args.Emote.ID == "Squelch") + { + GenCum(uid, component); + TryCunt(uid, component); + } + } + + public bool TryCunt(EntityUid uid, CuntableComponent? component = null) + { + if (!Resolve(uid, ref component)) + return false; + + if(!_solutionContainer.TryGetSolution(uid,CuntableComponent.CuntSolutionName,out var cuntSolution)) + return false; + + if(cuntSolution.Volume < 5) + return false; + + _puddle.TrySpillAt(uid, cuntSolution, out _); + _solutionContainer.SplitSolution(uid,cuntSolution,50); + + return true; + } + + public void GenCum(EntityUid uid, CuntableComponent? component = null) + { + if (!Resolve(uid, ref component)) + return ; + + if (_solutionContainer.TryGetSolution(uid, CuntableComponent.CuntSolutionName, out var solution)) + { + if (solution.AvailableVolume <= FixedPoint2.Zero) + return; + + var generated = new Solution("Cunt", 2); + + _solutionContainer.TryAddSolution(uid, solution, generated); + } + } + //public override void Update(float frameTime) + //{ + // base.Update(frameTime); +// + // var query = EntityQueryEnumerator(); + // while (query.MoveNext(out var uid, out var regen, out var manager)) + // { + // if (_timing.CurTime < regen.NextRegenTime) + // continue; + + // regen.NextRegenTime = _timing.CurTime + regen.Duration; + // if (_solutionContainer.TryGetSolution(uid, CuntableComponent.CuntSolutionName, out var solution, manager)) + // { + // if (solution.AvailableVolume <= FixedPoint2.Zero) + // continue; +// + // var generated = new Solution("Cunt", 5); +// + // _solutionContainer.TryAddSolution(uid, solution, generated); + // } + // } + //} + + private void OnUnpaused(EntityUid uid, CuntableComponent comp, ref EntityUnpausedEvent args) + { + comp.NextRegenTime += args.PausedTime; + } +} diff --git a/Content.Shared/Content.Shared.csproj b/Content.Shared/Content.Shared.csproj index d90021820f..51a80dfd21 100644 --- a/Content.Shared/Content.Shared.csproj +++ b/Content.Shared/Content.Shared.csproj @@ -25,7 +25,6 @@ - diff --git a/Content.Shared/_Honk/Cunt/CuntableComponent.cs b/Content.Shared/_Honk/Cunt/CuntableComponent.cs new file mode 100644 index 0000000000..0cb29c7ec2 --- /dev/null +++ b/Content.Shared/_Honk/Cunt/CuntableComponent.cs @@ -0,0 +1,10 @@ +namespace Content.Shared._Honk.Cunt; + +[RegisterComponent] +public sealed partial class CuntableComponent : Component +{ + public const string CuntSolutionName = "cunt"; + + [ViewVariables] public TimeSpan NextRegenTime = TimeSpan.Zero; + [ViewVariables] public TimeSpan Duration = TimeSpan.FromSeconds(1); +} diff --git a/Resources/Locale/ru-RU/_honk/reagents/cunt.ftl b/Resources/Locale/ru-RU/_honk/reagents/cunt.ftl new file mode 100644 index 0000000000..2a7752f709 --- /dev/null +++ b/Resources/Locale/ru-RU/_honk/reagents/cunt.ftl @@ -0,0 +1,5 @@ +reagent-name-cunt = конча +reagent-desc-cunt = на вкус как сперма +reagent-physical-desc-cunt = густой и тёплый + +flavor-base-cunt = солёное diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml index 9ad5042bc9..152befe42e 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml @@ -287,6 +287,7 @@ - type: RoleplayInfo - type: Mood # WD - type: OfferItem # WD-EDIT + - type: Cuntable #Honk Edit - type: entity save: false diff --git a/Resources/Prototypes/_Honk/Actions/cunt.yml b/Resources/Prototypes/_Honk/Actions/cunt.yml new file mode 100644 index 0000000000..ab71fcae72 --- /dev/null +++ b/Resources/Prototypes/_Honk/Actions/cunt.yml @@ -0,0 +1,12 @@ +- type: emote + id: Squelch + category: Gesture + buttonText: Кончать + chatMessages: [ кончает ] + chatTriggers: + - кончит + - кончает + - кончил + - кончила + - кончило + allowMenu: true diff --git a/Resources/Prototypes/_Honk/Reagents/cunt.yml b/Resources/Prototypes/_Honk/Reagents/cunt.yml new file mode 100644 index 0000000000..1f32cc7247 --- /dev/null +++ b/Resources/Prototypes/_Honk/Reagents/cunt.yml @@ -0,0 +1,13 @@ +- type: reagent + id: Cunt + name: reagent-name-cunt + desc: reagent-desc-cunt + physicalDesc: reagent-physical-desc-cunt + recognizable: true + flavor: cunt + color: "#AAAAAA" + +- type: flavor + id: cunt + flavorType: Base + description: flavor-base-cunt