From 60907482389c3c259ab94cc3aebe0d7b54392cb9 Mon Sep 17 00:00:00 2001 From: Pierson Arnold Date: Tue, 13 Aug 2024 22:58:04 -0500 Subject: [PATCH 01/10] Fixed cum/milk generation --- .../Traits/Components/CumProducerComponent.cs | 14 +-- .../Components/MilkProducerComponent.cs | 16 ++-- .../FloofStation/Traits/LewdTraitSystem.cs | 94 +++++++++++-------- .../{FloofStation => Floof}/Traits/lewd.yml | 8 +- 4 files changed, 72 insertions(+), 60 deletions(-) rename Resources/Prototypes/{FloofStation => Floof}/Traits/lewd.yml (92%) diff --git a/Content.Server/FloofStation/Traits/Components/CumProducerComponent.cs b/Content.Server/FloofStation/Traits/Components/CumProducerComponent.cs index aa7ed3fc009..c9400ea1384 100644 --- a/Content.Server/FloofStation/Traits/Components/CumProducerComponent.cs +++ b/Content.Server/FloofStation/Traits/Components/CumProducerComponent.cs @@ -13,7 +13,7 @@ namespace Content.Server.FloofStation.Traits; public sealed partial class CumProducerComponent : Component { [DataField("solutionname"), ViewVariables(VVAccess.ReadWrite)] - public string SolutionName; + public string SolutionName = "penis"; [DataField, ViewVariables(VVAccess.ReadWrite)] public ProtoId ReagentId = "Cum"; @@ -24,15 +24,15 @@ public sealed partial class CumProducerComponent : Component [DataField] public Entity? Solution = null; - [DataField, ViewVariables(VVAccess.ReadOnly)] - public FixedPoint2 QuantityPerUpdate = 25; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public FixedPoint2 QuantityPerUpdate = 5; - [DataField] + [DataField, ViewVariables(VVAccess.ReadWrite)] public float HungerUsage = 10f; - [DataField] - public TimeSpan GrowthDelay = TimeSpan.FromMinutes(1); + [DataField, ViewVariables(VVAccess.ReadWrite)] + public TimeSpan GrowthDelay = TimeSpan.FromSeconds(10); - [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)] public TimeSpan NextGrowth = TimeSpan.FromSeconds(0); } diff --git a/Content.Server/FloofStation/Traits/Components/MilkProducerComponent.cs b/Content.Server/FloofStation/Traits/Components/MilkProducerComponent.cs index f557394c94c..a964211b96b 100644 --- a/Content.Server/FloofStation/Traits/Components/MilkProducerComponent.cs +++ b/Content.Server/FloofStation/Traits/Components/MilkProducerComponent.cs @@ -13,26 +13,26 @@ namespace Content.Server.FloofStation.Traits; public sealed partial class MilkProducerComponent : Component { [DataField("solutionname"), ViewVariables(VVAccess.ReadWrite)] - public string SolutionName; + public string SolutionName = "breasts"; [DataField, ViewVariables(VVAccess.ReadWrite)] public ProtoId ReagentId = "Milk"; [DataField] - public FixedPoint2 MaxVolume = FixedPoint2.New(25); + public FixedPoint2 MaxVolume = FixedPoint2.New(50); [DataField] public Entity? Solution = null; - [DataField, ViewVariables(VVAccess.ReadOnly)] - public FixedPoint2 QuantityPerUpdate = 25; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public FixedPoint2 QuantityPerUpdate = 5; - [DataField] + [DataField, ViewVariables(VVAccess.ReadWrite)] public float HungerUsage = 10f; - [DataField] - public TimeSpan GrowthDelay = TimeSpan.FromMinutes(1); + [DataField, ViewVariables(VVAccess.ReadWrite)] + public TimeSpan GrowthDelay = TimeSpan.FromSeconds(10); - [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)] public TimeSpan NextGrowth = TimeSpan.FromSeconds(0); } diff --git a/Content.Server/FloofStation/Traits/LewdTraitSystem.cs b/Content.Server/FloofStation/Traits/LewdTraitSystem.cs index 1429488a47a..5c5f084ce08 100644 --- a/Content.Server/FloofStation/Traits/LewdTraitSystem.cs +++ b/Content.Server/FloofStation/Traits/LewdTraitSystem.cs @@ -268,61 +268,73 @@ private void AttemptMilk(Entity lewd, EntityUid userUid, public override void Update(float frameTime) { base.Update(frameTime); - + var queryCum = EntityQueryEnumerator(); //SquirtProducerComponent -unused , + var queryMilk = EntityQueryEnumerator(); var now = _timing.CurTime; - var query = AllEntityQuery(); //SquirtProducerComponent -unused - while (query.MoveNext(out var uid, out var containerCum, out var containerMilk)) // out var containerSquirt -unused + while (queryCum.MoveNext(out var uid, out var containerCum)) { + if (now < containerCum.NextGrowth) + continue; + + containerCum.NextGrowth = now + containerCum.GrowthDelay; + if (_mobState.IsDead(uid)) continue; - if (!(now < containerCum.NextGrowth)) + if (EntityManager.TryGetComponent(uid, out HungerComponent? hunger)) { - containerCum.NextGrowth = now + containerCum.GrowthDelay; - - // Actually there is food digestion so no problem with instant reagent generation "OnFeed" - if (EntityManager.TryGetComponent(uid, out HungerComponent? hunger)) - { - // Is there enough nutrition to produce reagent? - if (!(_hunger.GetHungerThreshold(hunger) < HungerThreshold.Okay)) - _hunger.ModifyHunger(uid, -containerCum.HungerUsage, hunger); - } - - if (_solutionContainer.ResolveSolution(uid, containerCum.SolutionName, ref containerCum.Solution)) - _solutionContainer.TryAddReagent(containerCum.Solution.Value, containerCum.ReagentId, containerCum.QuantityPerUpdate, out _); + if (_hunger.GetHungerThreshold(hunger) < HungerThreshold.Okay) + continue; + + _hunger.ModifyHunger(uid, -containerCum.HungerUsage, hunger); } - if (!(now < containerMilk.NextGrowth)) - { - containerMilk.NextGrowth = now + containerMilk.GrowthDelay; + if (!_solutionContainer.ResolveSolution(uid, containerCum.SolutionName, ref containerCum.Solution)) + continue; + + _solutionContainer.TryAddReagent(containerCum.Solution.Value, containerCum.ReagentId, containerCum.QuantityPerUpdate, out _); + } + + while (queryMilk.MoveNext(out var uid, out var containerMilk)) + { + if (now < containerMilk.NextGrowth) + continue; + + containerMilk.NextGrowth = now + containerMilk.GrowthDelay; + + if (_mobState.IsDead(uid)) + continue; - if (EntityManager.TryGetComponent(uid, out HungerComponent? hunger)) - { - if (!(_hunger.GetHungerThreshold(hunger) < HungerThreshold.Okay)) - _hunger.ModifyHunger(uid, -containerMilk.HungerUsage, hunger); - } + if (EntityManager.TryGetComponent(uid, out HungerComponent? hunger)) + { + if (_hunger.GetHungerThreshold(hunger) < HungerThreshold.Okay) + continue; - if (_solutionContainer.ResolveSolution(uid, containerMilk.SolutionName, ref containerMilk.Solution)) - _solutionContainer.TryAddReagent(containerMilk.Solution.Value, containerMilk.ReagentId, containerMilk.QuantityPerUpdate, out _); + _hunger.ModifyHunger(uid, -containerMilk.HungerUsage, hunger); } - //if (!(now < containerSquirt.NextGrowth)) //Unused-Trait is WIP - //{ - // containerSquirt.NextGrowth = now + containerSquirt.GrowthDelay; - - // - // if (EntityManager.TryGetComponent(uid, out HungerComponent? hunger)) - // { - // - // if (!(_hunger.GetHungerThreshold(hunger) < HungerThreshold.Okay)) - // _hunger.ModifyHunger(uid, -containerSquirt.HungerUsage, hunger); - // } - - // if (_solutionContainer.ResolveSolution(uid, containerSquirt.SolutionName, ref containerSquirt.Solution)) - // _solutionContainer.TryAddReagent(containerSquirt.Solution.Value, containerSquirt.ReagentId, containerSquirt.QuantityPerUpdate, out _); - //} + if (!_solutionContainer.ResolveSolution(uid, containerMilk.SolutionName, ref containerMilk.Solution)) + continue; + + _solutionContainer.TryAddReagent(containerMilk.Solution.Value, containerMilk.ReagentId, containerMilk.QuantityPerUpdate, out _); } + + //if (!(now < containerSquirt.NextGrowth)) //Unused-Trait is WIP + //{ + // containerSquirt.NextGrowth = now + containerSquirt.GrowthDelay; + + // + // if (EntityManager.TryGetComponent(uid, out HungerComponent? hunger)) + // { + // + // if (!(_hunger.GetHungerThreshold(hunger) < HungerThreshold.Okay)) + // _hunger.ModifyHunger(uid, -containerSquirt.HungerUsage, hunger); + // } + + // if (_solutionContainer.ResolveSolution(uid, containerSquirt.SolutionName, ref containerSquirt.Solution)) + // _solutionContainer.TryAddReagent(containerSquirt.Solution.Value, containerSquirt.ReagentId, containerSquirt.QuantityPerUpdate, out _); + //} } #endregion } diff --git a/Resources/Prototypes/FloofStation/Traits/lewd.yml b/Resources/Prototypes/Floof/Traits/lewd.yml similarity index 92% rename from Resources/Prototypes/FloofStation/Traits/lewd.yml rename to Resources/Prototypes/Floof/Traits/lewd.yml index d3cd1304479..fb05c082657 100644 --- a/Resources/Prototypes/FloofStation/Traits/lewd.yml +++ b/Resources/Prototypes/Floof/Traits/lewd.yml @@ -13,10 +13,10 @@ - type: SolutionContainerManager solutions: penis: - maxVol: 250 + maxVol: 25 reagents: - ReagentId: Cum - Quantity: 30 + Quantity: 25 - type: trait id: MilkProducer @@ -33,10 +33,10 @@ - type: SolutionContainerManager solutions: breasts: - maxVol: 250 + maxVol: 50 reagents: - ReagentId: Milk - Quantity: 30 + Quantity: 50 # WIP - Needs a Reagent # - type: trait From 5b40e9994609edfd234e1cccf05ffd7ed54611b9 Mon Sep 17 00:00:00 2001 From: Pierson Arnold Date: Thu, 15 Aug 2024 08:00:38 -0500 Subject: [PATCH 02/10] DataField usage for components --- .../Traits/Components/CumProducerComponent.cs | 12 ++++++------ .../Traits/Components/MilkProducerComponent.cs | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Content.Server/FloofStation/Traits/Components/CumProducerComponent.cs b/Content.Server/FloofStation/Traits/Components/CumProducerComponent.cs index c9400ea1384..0eb0d8a0e1c 100644 --- a/Content.Server/FloofStation/Traits/Components/CumProducerComponent.cs +++ b/Content.Server/FloofStation/Traits/Components/CumProducerComponent.cs @@ -12,10 +12,10 @@ namespace Content.Server.FloofStation.Traits; [RegisterComponent, Access(typeof(LewdTraitSystem))] public sealed partial class CumProducerComponent : Component { - [DataField("solutionname"), ViewVariables(VVAccess.ReadWrite)] + [DataField("solutionname")] public string SolutionName = "penis"; - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public ProtoId ReagentId = "Cum"; [DataField] @@ -24,15 +24,15 @@ public sealed partial class CumProducerComponent : Component [DataField] public Entity? Solution = null; - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public FixedPoint2 QuantityPerUpdate = 5; - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public float HungerUsage = 10f; - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public TimeSpan GrowthDelay = TimeSpan.FromSeconds(10); - [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)] + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] public TimeSpan NextGrowth = TimeSpan.FromSeconds(0); } diff --git a/Content.Server/FloofStation/Traits/Components/MilkProducerComponent.cs b/Content.Server/FloofStation/Traits/Components/MilkProducerComponent.cs index a964211b96b..8b159e3921b 100644 --- a/Content.Server/FloofStation/Traits/Components/MilkProducerComponent.cs +++ b/Content.Server/FloofStation/Traits/Components/MilkProducerComponent.cs @@ -12,10 +12,10 @@ namespace Content.Server.FloofStation.Traits; [RegisterComponent, Access(typeof(LewdTraitSystem))] public sealed partial class MilkProducerComponent : Component { - [DataField("solutionname"), ViewVariables(VVAccess.ReadWrite)] + [DataField("solutionname")] public string SolutionName = "breasts"; - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public ProtoId ReagentId = "Milk"; [DataField] @@ -24,15 +24,15 @@ public sealed partial class MilkProducerComponent : Component [DataField] public Entity? Solution = null; - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public FixedPoint2 QuantityPerUpdate = 5; - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public float HungerUsage = 10f; - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public TimeSpan GrowthDelay = TimeSpan.FromSeconds(10); - [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)] + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] public TimeSpan NextGrowth = TimeSpan.FromSeconds(0); } From 98e20594eb4502753954b575cba90f2c49488fc2 Mon Sep 17 00:00:00 2001 From: Pierson Arnold Date: Thu, 15 Aug 2024 13:18:14 -0500 Subject: [PATCH 03/10] pink collar and coder arms --- .../Inventories/clothesmate.yml | 1 + .../VendingMachines/Inventories/pride.yml | 3 +- .../Floof/Entities/Clothing/Hands/gloves.yml | 12 ++++++++ .../Floof/Entities/Clothing/Neck/collars.yml | 11 ++++++++ Resources/Prototypes/Floof/Loadouts/hands.yml | 8 ++++++ Resources/Prototypes/Floof/Loadouts/neck.yml | 8 ++++++ .../Hands/coderarms.rsi/equipped-HAND.png | Bin 0 -> 733 bytes .../Clothing/Hands/coderarms.rsi/icon.png | Bin 0 -> 884 bytes .../Hands/coderarms.rsi/inhand-left.png | Bin 0 -> 617 bytes .../Hands/coderarms.rsi/inhand-right.png | Bin 0 -> 634 bytes .../Clothing/Hands/coderarms.rsi/meta.json | 26 ++++++++++++++++++ .../Neck/collar_pink.rsi/equipped-NECK.png | Bin 0 -> 314 bytes .../Clothing/Neck/collar_pink.rsi/icon.png | Bin 0 -> 252 bytes .../Clothing/Neck/collar_pink.rsi/meta.json | 18 ++++++++++++ 14 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 Resources/Prototypes/Floof/Entities/Clothing/Hands/gloves.yml create mode 100644 Resources/Textures/Floof/Clothing/Hands/coderarms.rsi/equipped-HAND.png create mode 100644 Resources/Textures/Floof/Clothing/Hands/coderarms.rsi/icon.png create mode 100644 Resources/Textures/Floof/Clothing/Hands/coderarms.rsi/inhand-left.png create mode 100644 Resources/Textures/Floof/Clothing/Hands/coderarms.rsi/inhand-right.png create mode 100644 Resources/Textures/Floof/Clothing/Hands/coderarms.rsi/meta.json create mode 100644 Resources/Textures/Floof/Clothing/Neck/collar_pink.rsi/equipped-NECK.png create mode 100644 Resources/Textures/Floof/Clothing/Neck/collar_pink.rsi/icon.png create mode 100644 Resources/Textures/Floof/Clothing/Neck/collar_pink.rsi/meta.json diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml index b8398008d41..9f5362af5bb 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml @@ -23,6 +23,7 @@ ClothingUniformLoinCloth: 5 # FloofStation ClothingNeckCollarBlue: 1 # Floofstation - Collar addition ClothingNeckCollarBlack: 1 # Floofstation - Collar addition + ClothingNeckCollarPink: 1 # Floofstation - Collar addition ClothingLongcoatNT: 2 # Floofstation ClothingLongcoatAL: 2 # Floofstation ClothingLongcoatBrown: 2 # Floofstation diff --git a/Resources/Prototypes/DeltaV/Catalog/VendingMachines/Inventories/pride.yml b/Resources/Prototypes/DeltaV/Catalog/VendingMachines/Inventories/pride.yml index 28d2fbc1af2..f2db0a081c8 100644 --- a/Resources/Prototypes/DeltaV/Catalog/VendingMachines/Inventories/pride.yml +++ b/Resources/Prototypes/DeltaV/Catalog/VendingMachines/Inventories/pride.yml @@ -26,7 +26,8 @@ BedsheetRainbow: 2 ClothingUniformColorRainbow: 2 ClothingUnderSocksCoder: 1 + ClothingHandsCoderArms: 1 # Floofstation ClothingUnderSocksBee: 1 emaggedInventory: # 3 for more friends! - ClothingUnderSocksCoderValid: 3 # Floofstation \ No newline at end of file + ClothingUnderSocksCoderValid: 3 # Floofstation diff --git a/Resources/Prototypes/Floof/Entities/Clothing/Hands/gloves.yml b/Resources/Prototypes/Floof/Entities/Clothing/Hands/gloves.yml new file mode 100644 index 00000000000..bb62055ff86 --- /dev/null +++ b/Resources/Prototypes/Floof/Entities/Clothing/Hands/gloves.yml @@ -0,0 +1,12 @@ +- type: entity + parent: ClothingHandsBase + id: ClothingHandsCoderArms + name: Coder Armwarmers + description: A pair of armwarmers that provide some protection during those long nights at the keyboard. + components: + - type: Sprite + sprite: Floof/Clothing/Hands/coderarms.rsi + - type: Clothing + sprite: Floof/Clothing/Hands/coderarms.rsi + - type: Fiber + fiberColor: fibers-white diff --git a/Resources/Prototypes/Floof/Entities/Clothing/Neck/collars.yml b/Resources/Prototypes/Floof/Entities/Clothing/Neck/collars.yml index a0d64910eb9..5ce31b6f691 100644 --- a/Resources/Prototypes/Floof/Entities/Clothing/Neck/collars.yml +++ b/Resources/Prototypes/Floof/Entities/Clothing/Neck/collars.yml @@ -20,6 +20,17 @@ - type: Clothing sprite: Floof/Clothing/Neck/collar_black.rsi +- type: entity + parent: ClothingNeckBase + id: ClothingNeckCollarPink + name: pink collar + description: A cute pink collar. + components: + - type: Sprite + sprite: Floof/Clothing/Neck/collar_pink.rsi + - type: Clothing + sprite: Floof/Clothing/Neck/collar_pink.rsi + - type: entity parent: ClothingNeckBase id: ClothingNeckCollarEpi diff --git a/Resources/Prototypes/Floof/Loadouts/hands.yml b/Resources/Prototypes/Floof/Loadouts/hands.yml index 5cc25557ed0..3b2705b64f6 100644 --- a/Resources/Prototypes/Floof/Loadouts/hands.yml +++ b/Resources/Prototypes/Floof/Loadouts/hands.yml @@ -5,3 +5,11 @@ exclusive: true items: - ClothingHandsTacticalMaidGloves + +- type: loadout #FloofStation + id: LoadoutHandsGlovesCoderArms + category: Hands + cost: 1 + exclusive: true + items: + - ClothingHandsCoderArms diff --git a/Resources/Prototypes/Floof/Loadouts/neck.yml b/Resources/Prototypes/Floof/Loadouts/neck.yml index e75b8560268..c227a7b0ad5 100644 --- a/Resources/Prototypes/Floof/Loadouts/neck.yml +++ b/Resources/Prototypes/Floof/Loadouts/neck.yml @@ -101,6 +101,14 @@ items: - ClothingNeckCollarBlack +- type: loadout + id: LoadoutItemsNeckPinkCollar + category: Neck + cost: 1 + exclusive: true + items: + - ClothingNeckCollarPink + - type: loadout id: LoadoutItemsNeckSyndieCollar category: Neck diff --git a/Resources/Textures/Floof/Clothing/Hands/coderarms.rsi/equipped-HAND.png b/Resources/Textures/Floof/Clothing/Hands/coderarms.rsi/equipped-HAND.png new file mode 100644 index 0000000000000000000000000000000000000000..853944c1828d3974ded0071a314894fb989c246d GIT binary patch literal 733 zcmV<30wVp1P)g_{?7I>sm%{BB?82>lU6>RIMm1(-7P$swVFV4=R~h zLij}3tI2@Ex27Jq_|4?B#a||Cku73%eb}JMgR3*xN59KL7v#0000&RnJN&gQJ zT7+-jTtT@4q6Y5Vum>Hz=%z+dnQgYu{E>_maf P00000NkvXXu0mjfWCdUO literal 0 HcmV?d00001 diff --git a/Resources/Textures/Floof/Clothing/Hands/coderarms.rsi/icon.png b/Resources/Textures/Floof/Clothing/Hands/coderarms.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..81f0bded3a1053a92dee02eecb0fb6d28ac5ee0f GIT binary patch literal 884 zcmV-)1B?8LP)tcQZ4b|w|aH1Ya6}El%ayHM|ein^rEm#Lujk0S-dAaq-Ntu z;S*t>E&~eRT6&_+Zx(0j{AIBo4bOw!>ZxQ}IMKptR?iDh2z&FnlG>QZ`Vx1lupE&* zB4-qXFhK$+Bq*^#jv{`^1=(49-(=0V#HM&ud25u>#gQQ^UZ1EX>6((97Cj|Tj;{~n@P5-9sY4%(6N>lS5gJ%aWZ<<=- z0Iqgn_*skV@tWk2V^62y;{y6(FnABHwfe3a_nbdLbX$JW9ULCPxYT>r{{X@uXYD?p zx(5IN0l`T`K~z|U?N&Q(!axvxiE@KZrUys!ZCDzJSMH{vy)w!R z4CQQFVa=4(_j?WiK+at3cUufcV*vI8Y4v9z9P{=0frrN@0Dzu{0D$k8`;0&v5>^D1 z7nsOb*$&|LD=%o(hQ{Co8u=fe z>ln*PfI1>)3FLrv3^{XgI3+m}hf{*#Xbi1mgwsVfm^?UBOvc zpw4dh?KSrd0O52|DQLgjBAhPjogg*J3;s-d(TT`cxgAiZnsx=L=l7-Hk*_ja2|#&4 z<@EEl1jLcsUWOU3*5*LbA4a*zjDD09VWf@q8l!Mdf8y zmpMRSWqGS_2CkHp7Yml<&jHi{pM7c2qT-9?s-I$AbkRi@mxv$NUyqrnju{dF0000< KMNUMnLSTXjrI6SF literal 0 HcmV?d00001 diff --git a/Resources/Textures/Floof/Clothing/Hands/coderarms.rsi/inhand-left.png b/Resources/Textures/Floof/Clothing/Hands/coderarms.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..7994331ab6df664095baf957d6122da9d2a27966 GIT binary patch literal 617 zcmV-v0+#)WP)tcQZ4b|w|aH1Ya6}El%ayHM|ein^rEm#Lujk0S-dAaq-Ntu z;S*t>E&~eRT6&_+Zx(0j{AIBo4bOw!>ZxQ}IMKptR?iDh2z&FnlG>QZ`Vx1lupE&* zB4-qXFhK$+Bq*^#jv{`^1=(49-(=0V#HM&ud25u>#gQQ^UZ1EX>6((97Cj|Tj;{~n@P5-9sY4%(6N>lS5gJ%aWZ<<=- z0Iqgn_*skV@tWk2V^62y;{y6(FnABHwfe3a_nbdLbX$JW9ULCPxYT>r{{X@uXYD?p zx(5IN0Jcd)K~#90?b^W!0x=Lq;aL%jSaxd=u?PEzC0Rf`d9#AtEFgr`pe%T>fSj_Y ztss+N;C%%=0&~nS0ssI2000001!C~Ir|wQO=8VmU=TDrms*kPJRTYEJDWx2P&)V18 znpUbTvLtfw`cKzR&$Tg4K@P+02EmPHvMs1=qpj>00000NkvXXu0mjf D_naAT literal 0 HcmV?d00001 diff --git a/Resources/Textures/Floof/Clothing/Hands/coderarms.rsi/inhand-right.png b/Resources/Textures/Floof/Clothing/Hands/coderarms.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..992c269e5ce4d5bde03001d6b199fac7086620ae GIT binary patch literal 634 zcmV-=0)_pFP)tcQZ4b|w|aH1Ya6}El%ayHM|ein^rEm#Lujk0S-dAaq-Ntu z;S*t>E&~eRT6&_+Zx(0j{AIBo4bOw!>ZxQ}IMKptR?iDh2z&FnlG>QZ`Vx1lupE&* zB4-qXFhK$+Bq*^#jv{`^1=(49-(=0V#HM&ud25u>#gQQ^UZ1EX>6((97Cj|Tj;{~n@P5-9sY4%(6N>lS5gJ%aWZ<<=- z0Iqgn_*skV@tWk2V^62y;{y6(FnABHwfe3a_nbdLbX$JW9ULCPxYT>r{{X@uXYD?p zx(5IN0LMv0K~#90?b@*ogD?<<;UkI|0>KOju|xJCRpwy;QqeI19RpaFXGnxZ!2ncF zn}WiiSm5aY>XZC*y3S7o00000000117_IEl8C-15d2t!)tH#FNEPd6SdI{cg8m+9+ z$}Y=d&w2^p`L<-dx(rRVkt|7N7+bkL@6rC4{^Ug&^;KiDB$e0r{`~`6H+zH-G6Dbq z000000000X`iFlwr+&biP&xzNgwPpqvHJq1+DP2ZGCW$zi}IA60q^*a2LK>wA49Tn US_pw@bpQYW07*qoM6N<$f)(E&)Bpeg literal 0 HcmV?d00001 diff --git a/Resources/Textures/Floof/Clothing/Hands/coderarms.rsi/meta.json b/Resources/Textures/Floof/Clothing/Hands/coderarms.rsi/meta.json new file mode 100644 index 00000000000..e6321f48aea --- /dev/null +++ b/Resources/Textures/Floof/Clothing/Hands/coderarms.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprited by bribrooo (Discord), original from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Floof/Clothing/Neck/collar_pink.rsi/equipped-NECK.png b/Resources/Textures/Floof/Clothing/Neck/collar_pink.rsi/equipped-NECK.png new file mode 100644 index 0000000000000000000000000000000000000000..b295e5862416d48990b6a05c98d04350d1570bf5 GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|zIeJghE&XX zdrOh;kb%gtkNqr%ML8B6Ea>6XYmj4Ca9n&*MJC}zEW<_S0tTMX(PgYDfw5f*k=_z4 z|Lm{ly{%rq`u1d?F&EC2X6KyvWBq8hNp(l+r8CEly>H!e>d#b`lV+bqj-!wtExZR{qH_s=9yk7?W&i3ev|7uzjgn@ zf4zRh2s9iF8sx8s$~*MTxbtfv_o-dK{;bdJpWl7o_(E98r*-}Z@@Kp_E9^V{WA(Pc zC!4+{&DyAKwar}d2b)EmL%GD{$~Sq5ak^3vgMK8J-+z_3Vn$8^Gf2SG)z4*}Q$iB} D*dm15 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Floof/Clothing/Neck/collar_pink.rsi/icon.png b/Resources/Textures/Floof/Clothing/Neck/collar_pink.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..70dd83c7259732499e4c45cacb3fe20bb86f4183 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|6a#!hTp9i| z>`I(>@%-7JKYw1Y-sR}%2$Xp@<>KVYlW(kKD2QNK?mN2+D8yY7e|G45ROX ztJhMuvfuG>y>WF$cOt7=`u)pnX=xmd4*TXZ&g@z6bmp$hjH~ls Date: Fri, 16 Aug 2024 10:58:52 -0500 Subject: [PATCH 04/10] Update LewdTraitSystem.cs updated to be as Master's as this should not be in this branch. From cdb0be7defb96a5919adbc822f04ad217d80f306 Mon Sep 17 00:00:00 2001 From: Memeji Dankiri <39416235+Memeji@users.noreply.github.com> Date: Fri, 16 Aug 2024 11:13:39 -0500 Subject: [PATCH 05/10] Update CumProducerComponent.cs --- .../Traits/Components/CumProducerComponent.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Content.Server/FloofStation/Traits/Components/CumProducerComponent.cs b/Content.Server/FloofStation/Traits/Components/CumProducerComponent.cs index 0eb0d8a0e1c..db109e803ef 100644 --- a/Content.Server/FloofStation/Traits/Components/CumProducerComponent.cs +++ b/Content.Server/FloofStation/Traits/Components/CumProducerComponent.cs @@ -12,26 +12,26 @@ namespace Content.Server.FloofStation.Traits; [RegisterComponent, Access(typeof(LewdTraitSystem))] public sealed partial class CumProducerComponent : Component { - [DataField("solutionname")] - public string SolutionName = "penis"; + [DataField("solutionname"), ViewVariables(VVAccess.ReadWrite)] + public string SolutionName; - [DataField] + [DataField, ViewVariables(VVAccess.ReadWrite)] public ProtoId ReagentId = "Cum"; - [DataField] + [DataField, ViewVariables(VVAccess.ReadWrite)] public FixedPoint2 MaxVolume = FixedPoint2.New(25); [DataField] public Entity? Solution = null; [DataField] - public FixedPoint2 QuantityPerUpdate = 5; + public FixedPoint2 QuantityPerUpdate = 25; [DataField] public float HungerUsage = 10f; [DataField] - public TimeSpan GrowthDelay = TimeSpan.FromSeconds(10); + public TimeSpan GrowthDelay = TimeSpan.FromMinutes(1); [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] public TimeSpan NextGrowth = TimeSpan.FromSeconds(0); From 913eaf2c8a3fecac28c296f0e0a6df6c69597145 Mon Sep 17 00:00:00 2001 From: Memeji Dankiri <39416235+Memeji@users.noreply.github.com> Date: Fri, 16 Aug 2024 11:13:59 -0500 Subject: [PATCH 06/10] Update MilkProducerComponent.cs --- .../Traits/Components/MilkProducerComponent.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Content.Server/FloofStation/Traits/Components/MilkProducerComponent.cs b/Content.Server/FloofStation/Traits/Components/MilkProducerComponent.cs index 8b159e3921b..17492e5d075 100644 --- a/Content.Server/FloofStation/Traits/Components/MilkProducerComponent.cs +++ b/Content.Server/FloofStation/Traits/Components/MilkProducerComponent.cs @@ -12,10 +12,10 @@ namespace Content.Server.FloofStation.Traits; [RegisterComponent, Access(typeof(LewdTraitSystem))] public sealed partial class MilkProducerComponent : Component { - [DataField("solutionname")] - public string SolutionName = "breasts"; + [DataField("solutionname"), ViewVariables(VVAccess.ReadWrite)] + public string SolutionName; - [DataField] + [DataField, ViewVariables(VVAccess.ReadWrite)] public ProtoId ReagentId = "Milk"; [DataField] @@ -24,14 +24,14 @@ public sealed partial class MilkProducerComponent : Component [DataField] public Entity? Solution = null; - [DataField] - public FixedPoint2 QuantityPerUpdate = 5; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public FixedPoint2 QuantityPerUpdate = 25; [DataField] public float HungerUsage = 10f; [DataField] - public TimeSpan GrowthDelay = TimeSpan.FromSeconds(10); + public TimeSpan GrowthDelay = TimeSpan.FromMinutes(1); [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] public TimeSpan NextGrowth = TimeSpan.FromSeconds(0); From 1e6a1a9ddf8fac4d5fc3bdc0bd0971a6d1c1a7c4 Mon Sep 17 00:00:00 2001 From: Memeji Dankiri <39416235+Memeji@users.noreply.github.com> Date: Fri, 16 Aug 2024 11:14:18 -0500 Subject: [PATCH 07/10] Update LewdTraitSystem.cs --- .../FloofStation/Traits/LewdTraitSystem.cs | 94 ++++++++----------- 1 file changed, 41 insertions(+), 53 deletions(-) diff --git a/Content.Server/FloofStation/Traits/LewdTraitSystem.cs b/Content.Server/FloofStation/Traits/LewdTraitSystem.cs index 5c5f084ce08..1429488a47a 100644 --- a/Content.Server/FloofStation/Traits/LewdTraitSystem.cs +++ b/Content.Server/FloofStation/Traits/LewdTraitSystem.cs @@ -268,73 +268,61 @@ private void AttemptMilk(Entity lewd, EntityUid userUid, public override void Update(float frameTime) { base.Update(frameTime); - var queryCum = EntityQueryEnumerator(); //SquirtProducerComponent -unused , - var queryMilk = EntityQueryEnumerator(); + var now = _timing.CurTime; + var query = AllEntityQuery(); //SquirtProducerComponent -unused - while (queryCum.MoveNext(out var uid, out var containerCum)) + while (query.MoveNext(out var uid, out var containerCum, out var containerMilk)) // out var containerSquirt -unused { - if (now < containerCum.NextGrowth) - continue; - - containerCum.NextGrowth = now + containerCum.GrowthDelay; - if (_mobState.IsDead(uid)) continue; - if (EntityManager.TryGetComponent(uid, out HungerComponent? hunger)) + if (!(now < containerCum.NextGrowth)) { - if (_hunger.GetHungerThreshold(hunger) < HungerThreshold.Okay) - continue; - - _hunger.ModifyHunger(uid, -containerCum.HungerUsage, hunger); + containerCum.NextGrowth = now + containerCum.GrowthDelay; + + // Actually there is food digestion so no problem with instant reagent generation "OnFeed" + if (EntityManager.TryGetComponent(uid, out HungerComponent? hunger)) + { + // Is there enough nutrition to produce reagent? + if (!(_hunger.GetHungerThreshold(hunger) < HungerThreshold.Okay)) + _hunger.ModifyHunger(uid, -containerCum.HungerUsage, hunger); + } + + if (_solutionContainer.ResolveSolution(uid, containerCum.SolutionName, ref containerCum.Solution)) + _solutionContainer.TryAddReagent(containerCum.Solution.Value, containerCum.ReagentId, containerCum.QuantityPerUpdate, out _); } - if (!_solutionContainer.ResolveSolution(uid, containerCum.SolutionName, ref containerCum.Solution)) - continue; - - _solutionContainer.TryAddReagent(containerCum.Solution.Value, containerCum.ReagentId, containerCum.QuantityPerUpdate, out _); - } - - while (queryMilk.MoveNext(out var uid, out var containerMilk)) - { - if (now < containerMilk.NextGrowth) - continue; - - containerMilk.NextGrowth = now + containerMilk.GrowthDelay; - - if (_mobState.IsDead(uid)) - continue; - - if (EntityManager.TryGetComponent(uid, out HungerComponent? hunger)) + if (!(now < containerMilk.NextGrowth)) { - if (_hunger.GetHungerThreshold(hunger) < HungerThreshold.Okay) - continue; + containerMilk.NextGrowth = now + containerMilk.GrowthDelay; - _hunger.ModifyHunger(uid, -containerMilk.HungerUsage, hunger); - } + if (EntityManager.TryGetComponent(uid, out HungerComponent? hunger)) + { + if (!(_hunger.GetHungerThreshold(hunger) < HungerThreshold.Okay)) + _hunger.ModifyHunger(uid, -containerMilk.HungerUsage, hunger); + } - if (!_solutionContainer.ResolveSolution(uid, containerMilk.SolutionName, ref containerMilk.Solution)) - continue; + if (_solutionContainer.ResolveSolution(uid, containerMilk.SolutionName, ref containerMilk.Solution)) + _solutionContainer.TryAddReagent(containerMilk.Solution.Value, containerMilk.ReagentId, containerMilk.QuantityPerUpdate, out _); + } - _solutionContainer.TryAddReagent(containerMilk.Solution.Value, containerMilk.ReagentId, containerMilk.QuantityPerUpdate, out _); + //if (!(now < containerSquirt.NextGrowth)) //Unused-Trait is WIP + //{ + // containerSquirt.NextGrowth = now + containerSquirt.GrowthDelay; + + // + // if (EntityManager.TryGetComponent(uid, out HungerComponent? hunger)) + // { + // + // if (!(_hunger.GetHungerThreshold(hunger) < HungerThreshold.Okay)) + // _hunger.ModifyHunger(uid, -containerSquirt.HungerUsage, hunger); + // } + + // if (_solutionContainer.ResolveSolution(uid, containerSquirt.SolutionName, ref containerSquirt.Solution)) + // _solutionContainer.TryAddReagent(containerSquirt.Solution.Value, containerSquirt.ReagentId, containerSquirt.QuantityPerUpdate, out _); + //} } - - //if (!(now < containerSquirt.NextGrowth)) //Unused-Trait is WIP - //{ - // containerSquirt.NextGrowth = now + containerSquirt.GrowthDelay; - - // - // if (EntityManager.TryGetComponent(uid, out HungerComponent? hunger)) - // { - // - // if (!(_hunger.GetHungerThreshold(hunger) < HungerThreshold.Okay)) - // _hunger.ModifyHunger(uid, -containerSquirt.HungerUsage, hunger); - // } - - // if (_solutionContainer.ResolveSolution(uid, containerSquirt.SolutionName, ref containerSquirt.Solution)) - // _solutionContainer.TryAddReagent(containerSquirt.Solution.Value, containerSquirt.ReagentId, containerSquirt.QuantityPerUpdate, out _); - //} } #endregion } From 9a6bf8a1a134a4b200af17776a56f325a2a4c155 Mon Sep 17 00:00:00 2001 From: Memeji Dankiri <39416235+Memeji@users.noreply.github.com> Date: Fri, 16 Aug 2024 11:16:05 -0500 Subject: [PATCH 08/10] Update CumProducerComponent.cs --- .../FloofStation/Traits/Components/CumProducerComponent.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Server/FloofStation/Traits/Components/CumProducerComponent.cs b/Content.Server/FloofStation/Traits/Components/CumProducerComponent.cs index db109e803ef..aa7ed3fc009 100644 --- a/Content.Server/FloofStation/Traits/Components/CumProducerComponent.cs +++ b/Content.Server/FloofStation/Traits/Components/CumProducerComponent.cs @@ -18,13 +18,13 @@ public sealed partial class CumProducerComponent : Component [DataField, ViewVariables(VVAccess.ReadWrite)] public ProtoId ReagentId = "Cum"; - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public FixedPoint2 MaxVolume = FixedPoint2.New(25); [DataField] public Entity? Solution = null; - [DataField] + [DataField, ViewVariables(VVAccess.ReadOnly)] public FixedPoint2 QuantityPerUpdate = 25; [DataField] From d059089edf13c284e1753ecc54dd3e7ef9133ce3 Mon Sep 17 00:00:00 2001 From: Memeji Dankiri <39416235+Memeji@users.noreply.github.com> Date: Fri, 16 Aug 2024 11:16:45 -0500 Subject: [PATCH 09/10] Update MilkProducerComponent.cs --- .../FloofStation/Traits/Components/MilkProducerComponent.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Server/FloofStation/Traits/Components/MilkProducerComponent.cs b/Content.Server/FloofStation/Traits/Components/MilkProducerComponent.cs index 17492e5d075..f557394c94c 100644 --- a/Content.Server/FloofStation/Traits/Components/MilkProducerComponent.cs +++ b/Content.Server/FloofStation/Traits/Components/MilkProducerComponent.cs @@ -19,12 +19,12 @@ public sealed partial class MilkProducerComponent : Component public ProtoId ReagentId = "Milk"; [DataField] - public FixedPoint2 MaxVolume = FixedPoint2.New(50); + public FixedPoint2 MaxVolume = FixedPoint2.New(25); [DataField] public Entity? Solution = null; - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField, ViewVariables(VVAccess.ReadOnly)] public FixedPoint2 QuantityPerUpdate = 25; [DataField] From a2ca0a6698d704a46a0a83d559d1ba72c0bc2f2d Mon Sep 17 00:00:00 2001 From: Memeji Dankiri <39416235+Memeji@users.noreply.github.com> Date: Sat, 17 Aug 2024 14:17:32 -0500 Subject: [PATCH 10/10] Update lewd.yml --- Resources/Prototypes/Floof/Traits/lewd.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Resources/Prototypes/Floof/Traits/lewd.yml b/Resources/Prototypes/Floof/Traits/lewd.yml index fb05c082657..d3cd1304479 100644 --- a/Resources/Prototypes/Floof/Traits/lewd.yml +++ b/Resources/Prototypes/Floof/Traits/lewd.yml @@ -13,10 +13,10 @@ - type: SolutionContainerManager solutions: penis: - maxVol: 25 + maxVol: 250 reagents: - ReagentId: Cum - Quantity: 25 + Quantity: 30 - type: trait id: MilkProducer @@ -33,10 +33,10 @@ - type: SolutionContainerManager solutions: breasts: - maxVol: 50 + maxVol: 250 reagents: - ReagentId: Milk - Quantity: 50 + Quantity: 30 # WIP - Needs a Reagent # - type: trait