]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Sedin (#27110)
authorEris <eris@erisws.com>
Thu, 15 Aug 2024 00:38:21 +0000 (20:38 -0400)
committerGitHub <noreply@github.com>
Thu, 15 Aug 2024 00:38:21 +0000 (10:38 +1000)
* Sedin

* almost forgot this.

* what

* Did a few fixes, tried to readd popup

* Fix popup, ready for merge

* minor change

* Generalize seed removal/destruction system, add popups in general.

* fix

* fix (again)

* deadcode is no more

* Sedin buff (nerfing the recipe soon)

* godont

* webedit moment

ok listen I had to nuke my setup because my computer was being Dumb As Shit so let me do this ONE webedit

* CRIKEY

* Revert "CRIKEY"

This reverts commit 1c6959ffd9ba8bb1e97ccf2eb0b37b3ff4ec82ee.

I was not supposed to commit that >:/

* Alright, it should be good now but I havent tested it

* ready for merge/review

* prob -> probability

* Requested changes nodoc

* Review nodoc

* documento

* thumb up emoji

Content.Server/EntityEffects/Effects/PlantMetabolism/PlantAdjustPotency.cs [new file with mode: 0644]
Content.Server/EntityEffects/Effects/PlantMetabolism/PlantDestroySeeds.cs [new file with mode: 0644]
Content.Server/EntityEffects/Effects/PlantMetabolism/PlantRestoreSeeds.cs [new file with mode: 0644]
Resources/Locale/en-US/botany/seeds.ftl [new file with mode: 0644]
Resources/Locale/en-US/guidebook/chemistry/effects.ftl
Resources/Locale/en-US/guidebook/chemistry/plant-attributes.ftl
Resources/Locale/en-US/reagents/meta/botany.ftl
Resources/Prototypes/Reagents/botany.yml
Resources/Prototypes/Recipes/Reactions/botany.yml

diff --git a/Content.Server/EntityEffects/Effects/PlantMetabolism/PlantAdjustPotency.cs b/Content.Server/EntityEffects/Effects/PlantMetabolism/PlantAdjustPotency.cs
new file mode 100644 (file)
index 0000000..5776463
--- /dev/null
@@ -0,0 +1,28 @@
+using Content.Server.Botany.Systems;
+using Content.Shared.EntityEffects;
+
+namespace Content.Server.EntityEffects.Effects.PlantMetabolism;
+
+/// <summary>
+///     Handles increase or decrease of plant potency.
+/// </summary>
+
+public sealed partial class PlantAdjustPotency : PlantAdjustAttribute
+{
+    public override string GuidebookAttributeName { get; set; } = "plant-attribute-potency";
+
+    public override void Effect(EntityEffectBaseArgs args)
+    {
+        if (!CanMetabolize(args.TargetEntity, out var plantHolderComp, args.EntityManager))
+            return;
+
+        if (plantHolderComp.Seed == null)
+            return;
+
+        var plantHolder = args.EntityManager.System<PlantHolderSystem>();
+
+        plantHolder.EnsureUniqueSeed(args.TargetEntity, plantHolderComp);
+
+        plantHolderComp.Seed.Potency = Math.Max(plantHolderComp.Seed.Potency + Amount, 1);
+    }
+}
diff --git a/Content.Server/EntityEffects/Effects/PlantMetabolism/PlantDestroySeeds.cs b/Content.Server/EntityEffects/Effects/PlantMetabolism/PlantDestroySeeds.cs
new file mode 100644 (file)
index 0000000..2929bb6
--- /dev/null
@@ -0,0 +1,42 @@
+using Content.Server.Botany.Components;
+using Content.Server.Botany.Systems;
+using Content.Shared.EntityEffects;
+using Content.Shared.Popups;
+using Robust.Shared.Prototypes;
+
+namespace Content.Server.EntityEffects.Effects.PlantMetabolism;
+
+/// <summary>
+///     Handles removal of seeds on a plant.
+/// </summary>
+
+public sealed partial class PlantDestroySeeds : EntityEffect
+{
+    public override void Effect(EntityEffectBaseArgs args)
+    {
+        if (
+            !args.EntityManager.TryGetComponent(args.TargetEntity, out PlantHolderComponent? plantHolderComp)
+            || plantHolderComp.Seed == null
+            || plantHolderComp.Dead
+            || plantHolderComp.Seed.Immutable
+        )
+            return;
+
+        var plantHolder = args.EntityManager.System<PlantHolderSystem>();
+        var popupSystem = args.EntityManager.System<SharedPopupSystem>();
+
+        if (plantHolderComp.Seed.Seedless == false)
+        {
+            plantHolder.EnsureUniqueSeed(args.TargetEntity, plantHolderComp);
+            popupSystem.PopupEntity(
+                Loc.GetString("botany-plant-seedsdestroyed"),
+                args.TargetEntity,
+                PopupType.SmallCaution
+            );
+            plantHolderComp.Seed.Seedless = true;
+        }
+    }
+
+    protected override string? ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) =>
+        Loc.GetString("reagent-effect-guidebook-plant-seeds-remove", ("chance", Probability));
+}
diff --git a/Content.Server/EntityEffects/Effects/PlantMetabolism/PlantRestoreSeeds.cs b/Content.Server/EntityEffects/Effects/PlantMetabolism/PlantRestoreSeeds.cs
new file mode 100644 (file)
index 0000000..11af8d5
--- /dev/null
@@ -0,0 +1,38 @@
+using Content.Server.Botany.Components;
+using Content.Server.Botany.Systems;
+using Content.Shared.EntityEffects;
+using Content.Shared.Popups;
+using Robust.Shared.Prototypes;
+
+namespace Content.Server.EntityEffects.Effects.PlantMetabolism;
+
+/// <summary>
+///     Handles restoral of seeds on a plant.
+/// </summary>
+
+public sealed partial class PlantRestoreSeeds : EntityEffect
+{
+    public override void Effect(EntityEffectBaseArgs args)
+    {
+        if (
+            !args.EntityManager.TryGetComponent(args.TargetEntity, out PlantHolderComponent? plantHolderComp)
+            || plantHolderComp.Seed == null
+            || plantHolderComp.Dead
+            || plantHolderComp.Seed.Immutable
+        )
+            return;
+
+        var plantHolder = args.EntityManager.System<PlantHolderSystem>();
+        var popupSystem = args.EntityManager.System<SharedPopupSystem>();
+
+        if (plantHolderComp.Seed.Seedless)
+        {
+            plantHolder.EnsureUniqueSeed(args.TargetEntity, plantHolderComp);
+            popupSystem.PopupEntity(Loc.GetString("botany-plant-seedsrestored"), args.TargetEntity);
+            plantHolderComp.Seed.Seedless = false;
+        }
+    }
+
+    protected override string? ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) =>
+        Loc.GetString("reagent-effect-guidebook-plant-seeds-add", ("chance", Probability));
+}
diff --git a/Resources/Locale/en-US/botany/seeds.ftl b/Resources/Locale/en-US/botany/seeds.ftl
new file mode 100644 (file)
index 0000000..6fdf78a
--- /dev/null
@@ -0,0 +1,2 @@
+botany-plant-seedsrestored = You can hear the faint sound of shuffling leaves.
+botany-plant-seedsdestroyed = The seeds on the plant start cracking and fall off!
index c60e690d26733464b9a2d29d6d2f5cc70ac9a720..b65c332346a923129c5c6dd82f8f62e06e4a5877 100644 (file)
@@ -386,3 +386,15 @@ reagent-effect-guidebook-plant-robust-harvest =
         [1] Increases
         *[other] increase
     } the plant's potency by {$increase} up to a maximum of {$limit}. Causes the plant to lose its seeds once the potency reaches {$seedlesstreshold}. Trying to add potency over {$limit} may cause decrease in yield at a 10% chance
+
+reagent-effect-guidebook-plant-seeds-add =
+    { $chance ->
+        [1] Restores the
+        *[other] restore the
+    } seeds of the plant
+
+reagent-effect-guidebook-plant-seeds-remove =
+    { $chance ->
+        [1] Removes the
+        *[other] remove the
+    } seeds of the plant
index 25752210089061ebb36895b623116408429da319..ee82be04ad754047781b7d9c0c2081c9bad57922 100644 (file)
@@ -1,5 +1,6 @@
 plant-attribute-growth = age
 plant-attribute-water = water level
+plant-attribute-potency = potency
 plant-attribute-weeds = weeds level
 plant-attribute-toxins = toxins level
 plant-attribute-nutrition = nutrition level
index c7101c2327958aa605e0f440edaeee50ad72b84d..36fad2195b95240f2ed5a4fd56923be41a5616a4 100644 (file)
@@ -21,3 +21,6 @@ reagent-desc-ammonia = An effective fertilizer, it gives your plants some nutrie
 
 reagent-name-diethylamine = diethylamine
 reagent-desc-diethylamine = A very potent fertilizer, treats plants with nutrients, eliminates pests, and sometimes it can even speed up growth.
+
+reagent-name-sedin = sedin
+reagent-desc-sedin = A modified version of diethylamine that can restore seeds on plants at the cost of potency.
index 99e9182103dc19a16833f6b2873c7b25ff4fb5df..23d80f0e79bdf1fab2c7f830e6e3163802b05ed4 100644 (file)
           - !type:ReagentThreshold
             min: 80
 
+- type: reagent
+  id: Sedin
+  name: reagent-name-sedin
+  group: Botanical
+  desc: reagent-desc-sedin
+  flavor: bitter
+  color: "#3CB371"
+  physicalDesc: reagent-physical-desc-sickly
+  plantMetabolism:
+    - !type:PlantAdjustHealth
+      amount: -2
+    - !type:PlantRestoreSeeds
+      probability: 0.20
+    - !type:PlantAdjustPotency
+      amount: -3 # Match this with current rate of Robust Harvest potency increase
 
 - type: reagent
   id: WeedKiller
index 0e95bd7ad92774084577d45680d86dbefb64d14c..1d96de479a7ea06ee95e5d27ff14d979010e2acc 100644 (file)
   products:
     RobustHarvest: 1
 
+- type: reaction
+  id: Sedin
+  reactants:
+    Cryoxadone:
+      amount: 1
+    RobustHarvest:
+      amount: 3
+    Diethylamine: 
+      amount: 3
+  products:
+    Sedin: 1
+
 - type: reaction
   id: Left4Zed
   reactants: