diff --git a/Content.Omu.Server/Enraged/EnragedBypassPrediction.cs b/Content.Omu.Server/Enraged/EnragedBypassPrediction.cs
new file mode 100644
index 00000000000..31704111de3
--- /dev/null
+++ b/Content.Omu.Server/Enraged/EnragedBypassPrediction.cs
@@ -0,0 +1,126 @@
+// SPDX-FileCopyrightText: 2026 Eponymic-sys
+//
+// SPDX-License-Identifier: AGPL-3.0-or-later
+
+using System.Numerics;
+using Content.Omu.Shared.Enraged;
+using Robust.Shared.Audio;
+using Robust.Shared.Audio.Systems;
+using Robust.Shared.Map;
+using Content.Shared.Mind.Components;
+using Content.Shared.StatusEffectNew;
+using Content.Shared.StatusEffectNew.Components;
+using Content.Shared.Weapons.Melee;
+using Content.Shared.Weapons.Melee.Components;
+using Content.Shared.Weapons.Melee.Events;
+using Robust.Shared.Player;
+
+namespace Content.Omu.Server.Enraged;
+
+///
+/// Handles melee attack sounds and lunge animation for enraged entities.
+/// Resends animations to the attacking player to bypass client-side prediction.
+/// Without this the client will not show the lunge animation as the server is making the attacks.
+///
+public sealed class EnragedBypassPrediction : EntitySystem
+{
+ [Dependency] private readonly SharedAudioSystem _audio = default!;
+ [Dependency] private readonly SharedTransformSystem _transform = default!;
+
+ private const float LungeBuffer = 0.2f;
+ private const float MinLungeLength = 0.1f;
+ private const float DamagePitchVariation = 0.05f;
+
+ public void OnMeleeHit(Entity weapon, ref MeleeHitEvent args)
+ {
+ if (!args.IsHit || !IsEnraged(args.User))
+ return;
+
+ if (!TryComp(args.User, out var actor) ||
+ !TryComp(args.User, out TransformComponent? userXform))
+ return;
+
+ var lungeOffset = ComputeLungeOffset(weapon.Comp, args.Coords, userXform);
+ var (animation, spriteRotation) = GetMeleeAnimation(weapon.Comp, args);
+
+ var filter = Filter.SinglePlayer(actor.PlayerSession);
+ RaiseNetworkEvent(
+ new MeleeLungeEvent(
+ GetNetEntity(args.User),
+ GetNetEntity(weapon.Owner),
+ weapon.Comp.Angle,
+ lungeOffset,
+ animation,
+ spriteRotation,
+ weapon.Comp.FlipAnimation),
+ filter);
+
+ SendWeaponAudio(filter, weapon, args);
+ }
+
+ private bool IsEnraged(EntityUid user)
+ {
+ if (!TryComp(user, out var statusEffects))
+ return false;
+
+ var effects = statusEffects.ActiveStatusEffects?.ContainedEntities;
+ if (effects == null)
+ return false;
+
+ foreach (var effect in effects)
+ {
+ if (HasComp(effect))
+ return true;
+ }
+
+ return false;
+ }
+
+ private Vector2 ComputeLungeOffset(
+ MeleeWeaponComponent weapon,
+ EntityCoordinates hitCoords,
+ TransformComponent userXform)
+ {
+ var mapCoords = _transform.ToMapCoordinates(hitCoords);
+ var localPos = Vector2.Transform(mapCoords.Position, _transform.GetInvWorldMatrix(userXform));
+
+ var visualLength = MathF.Max(weapon.Range - LungeBuffer, weapon.Range);
+ if (localPos.LengthSquared() <= 0f)
+ localPos = new Vector2(MathF.Max(visualLength, MinLungeLength), 0f);
+
+ localPos = userXform.LocalRotation.RotateVec(localPos);
+ if (localPos.Length() > visualLength)
+ localPos = localPos.Normalized() * visualLength;
+
+ return localPos;
+ }
+
+ private static (string? Animation, Angle Rotation) GetMeleeAnimation(
+ MeleeWeaponComponent weapon,
+ MeleeHitEvent args)
+ {
+ if (args.Direction != null)
+ return (weapon.WideAnimation, weapon.WideAnimationRotation);
+
+ var animation = args.HitEntities.Count == 0
+ ? weapon.MissAnimation
+ : weapon.Animation;
+
+ return (animation, weapon.AnimationRotation);
+ }
+
+ private void SendWeaponAudio(
+ Filter filter,
+ Entity weapon,
+ MeleeHitEvent args)
+ {
+ _audio.PlayEntity(weapon.Comp.SwingSound, filter, weapon.Owner, false);
+
+ if (args.HitEntities.Count == 0)
+ return;
+
+ var hitSound = args.HitSoundOverride ?? weapon.Comp.HitSound ?? (SoundSpecifier)weapon.Comp.NoDamageSound;
+ _audio.PlayStatic(hitSound, filter, args.Coords, false,
+ AudioParams.Default.WithVariation(DamagePitchVariation));
+ }
+}
diff --git a/Content.Omu.Server/Enraged/EnragedStatusEffectSystem.cs b/Content.Omu.Server/Enraged/EnragedStatusEffectSystem.cs
new file mode 100644
index 00000000000..bbcb6de9ed9
--- /dev/null
+++ b/Content.Omu.Server/Enraged/EnragedStatusEffectSystem.cs
@@ -0,0 +1,173 @@
+// SPDX-FileCopyrightText: 2026 Eponymic-sys
+//
+// SPDX-License-Identifier: AGPL-3.0-or-later
+
+using Content.Omu.Shared.Enraged;
+using Content.Server.NPC;
+using Content.Server.NPC.HTN;
+using Content.Server.NPC.Systems;
+using Content.Shared.Administration.Logs;
+using Content.Shared.Database;
+using Content.Shared.NPC.Components;
+using Content.Shared.NPC.Systems;
+using Content.Shared.SSDIndicator;
+using Content.Shared.StatusEffectNew;
+using Content.Shared.Weapons.Melee;
+using Content.Shared.Weapons.Melee.Components;
+using Content.Shared.Weapons.Melee.Events;
+
+namespace Content.Omu.Server.Enraged;
+
+///
+/// Swaps NPC factions and HTN tasks, allows HTN to drive players and restores previous state on expiry.
+///
+public sealed partial class EnragedStatusEffectSystem : EntitySystem
+{
+ [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!;
+ [Dependency] private readonly HTNSystem _htn = default!;
+ [Dependency] private readonly NPCSystem _npc = default!;
+ [Dependency] private readonly NpcFactionSystem _npcFaction = default!;
+ [Dependency] private readonly EnragedBypassPrediction _bypass = default!;
+
+ public override void Initialize()
+ {
+ base.Initialize();
+
+ SubscribeLocalEvent(OnStatusApplied);
+ SubscribeLocalEvent(OnStatusRemoved);
+ SubscribeLocalEvent(OnMeleeHit);
+ }
+
+ private void OnMeleeHit(Entity weapon, ref MeleeHitEvent args)
+ {
+ _bypass.OnMeleeHit(weapon, ref args);
+ }
+
+ // ──────────────────────────────────────────────
+ // Status-effect lifecycle
+ // ──────────────────────────────────────────────
+
+ private void OnStatusApplied(Entity ent, ref StatusEffectAppliedEvent args)
+ {
+ var target = args.Target;
+
+ _adminLogger.Add(LogType.Action, LogImpact.High,
+ $"{ToPrettyString(target):target} became enraged.");
+
+ RemoveSsdIndicator(ent, target);
+ ApplyHostileFaction(ent, target);
+ ApplyHostileHtn(ent, target);
+ }
+
+ private void OnStatusRemoved(Entity ent, ref StatusEffectRemovedEvent args)
+ {
+ var target = args.Target;
+
+ RestoreSsdIndicator(ent, target);
+ RestoreFaction(ent, target);
+ RestoreHtn(ent, target);
+ }
+
+ // ──────────────────────────────────────────────
+ // SSD indicator helpers
+ // ──────────────────────────────────────────────
+
+ private void RemoveSsdIndicator(Entity ent, EntityUid target)
+ {
+ if (!TryComp(target, out _))
+ return;
+
+ RemComp(target);
+ ent.Comp.RemovedSsdIndicator = true;
+ }
+
+ private void RestoreSsdIndicator(Entity ent, EntityUid target)
+ {
+ if (!ent.Comp.RemovedSsdIndicator || HasComp(target))
+ return;
+
+ var ssd = EnsureComp(target);
+ ssd.IsSSD = false;
+ Dirty(target, ssd);
+ }
+
+ // ──────────────────────────────────────────────
+ // NPC faction helpers
+ // ──────────────────────────────────────────────
+
+ private void ApplyHostileFaction(Entity ent, EntityUid target)
+ {
+ if (!TryComp(target, out var npcFaction))
+ {
+ npcFaction = EnsureComp(target);
+ ent.Comp.AddedFactionComponent = true;
+ }
+
+ foreach (var f in npcFaction.Factions)
+ ent.Comp.OldFactions.Add(f.ToString());
+
+ _npcFaction.ClearFactions((target, npcFaction), false);
+ _npcFaction.AddFaction((target, npcFaction), ent.Comp.HostileFaction);
+ }
+
+ private void RestoreFaction(Entity ent, EntityUid target)
+ {
+ if (!TryComp(target, out var npcFaction))
+ return;
+
+ _npcFaction.ClearFactions((target, npcFaction), false);
+
+ if (ent.Comp.AddedFactionComponent)
+ {
+ RemComp(target);
+ return;
+ }
+
+ foreach (var faction in ent.Comp.OldFactions)
+ {
+ _npcFaction.AddFaction((target, npcFaction), faction);
+ }
+ }
+
+ // ──────────────────────────────────────────────
+ // HTN AI helpers
+ // ──────────────────────────────────────────────
+
+ private void ApplyHostileHtn(Entity ent, EntityUid target)
+ {
+ if (!TryComp(target, out var htn))
+ {
+ htn = EnsureComp(target);
+ ent.Comp.AddedHtnComponent = true;
+ }
+ else
+ {
+ ent.Comp.OldRootTask = htn.RootTask.Task;
+ }
+
+ htn.RootTask = new HTNCompoundTask { Task = ent.Comp.HostileRootTask };
+ htn.Blackboard.SetValue(NPCBlackboard.Owner, target);
+
+ _npc.WakeNPC(target, htn);
+ _htn.Replan(htn);
+ }
+
+ private void RestoreHtn(Entity ent, EntityUid target)
+ {
+ if (!TryComp(target, out var htn))
+ return;
+
+ if (ent.Comp.AddedHtnComponent)
+ {
+ RemComp(target);
+ return;
+ }
+
+ if (!string.IsNullOrEmpty(ent.Comp.OldRootTask))
+ {
+ htn.RootTask = new HTNCompoundTask { Task = ent.Comp.OldRootTask };
+ _htn.Replan(htn);
+ }
+ }
+}
+
diff --git a/Content.Omu.Server/Organs/OrganReagentInjectorSystem.cs b/Content.Omu.Server/Organs/OrganReagentInjectorSystem.cs
new file mode 100644
index 00000000000..f7d17313218
--- /dev/null
+++ b/Content.Omu.Server/Organs/OrganReagentInjectorSystem.cs
@@ -0,0 +1,37 @@
+// SPDX-FileCopyrightText: 2026 Eponymic-sys
+//
+// SPDX-License-Identifier: AGPL-3.0-or-later
+
+using Content.Omu.Shared.Organs;
+using Content.Shared.Body.Organ;
+using Content.Shared.Chemistry.EntitySystems;
+using Robust.Shared.Timing;
+
+namespace Content.Omu.Server.Organs;
+
+///
+/// Injects reagents from organs into their host body's solutions at regular intervals.
+///
+public sealed class OrganReagentInjectorSystem : EntitySystem
+{
+ [Dependency] private readonly SharedSolutionContainerSystem _solution = default!;
+ [Dependency] private readonly IGameTiming _timing = default!;
+
+ public override void Update(float frameTime)
+ {
+ var query = EntityQueryEnumerator();
+ while (query.MoveNext(out var uid, out var injector, out var organ))
+ {
+ if (_timing.CurTime < injector.NextInjectTime)
+ continue;
+
+ injector.NextInjectTime = _timing.CurTime + injector.Duration;
+
+ if (organ.Body is not { } body)
+ continue;
+
+ if (_solution.TryGetSolution(body, injector.TargetSolution, out var soln, out _))
+ _solution.TryAddSolution(soln.Value, injector.Reagents.Clone());
+ }
+ }
+}
diff --git a/Content.Omu.Shared/Enraged/EnragedStatusEffectComponent.cs b/Content.Omu.Shared/Enraged/EnragedStatusEffectComponent.cs
new file mode 100644
index 00000000000..6424c443f32
--- /dev/null
+++ b/Content.Omu.Shared/Enraged/EnragedStatusEffectComponent.cs
@@ -0,0 +1,24 @@
+// SPDX-FileCopyrightText: 2026 Eponymic-sys
+//
+// SPDX-License-Identifier: AGPL-3.0-or-later
+
+namespace Content.Omu.Shared.Enraged;
+
+///
+/// Tracks the enraged status effect state and configuration.
+/// Stores hostility settings and restoration data for when the effect expires.
+///
+[RegisterComponent]
+public sealed partial class EnragedStatusEffectComponent : Component
+{
+ [DataField]
+ public string HostileFaction = "Hostile";
+
+ [DataField]
+ public string HostileRootTask = "SimpleHostileCompound";
+ public bool RemovedSsdIndicator;
+ public bool AddedFactionComponent;
+ public bool AddedHtnComponent;
+ public HashSet OldFactions = new();
+ public string? OldRootTask;
+}
diff --git a/Content.Omu.Shared/Organs/OrganReagentInjectorComponent.cs b/Content.Omu.Shared/Organs/OrganReagentInjectorComponent.cs
new file mode 100644
index 00000000000..610278e640c
--- /dev/null
+++ b/Content.Omu.Shared/Organs/OrganReagentInjectorComponent.cs
@@ -0,0 +1,26 @@
+// SPDX-FileCopyrightText: 2026 Eponymic-sys
+//
+// SPDX-License-Identifier: AGPL-3.0-or-later
+
+using Content.Shared.Chemistry.Components;
+
+namespace Content.Omu.Shared.Organs;
+
+///
+/// Injects reagents into host body's solution at regular intervals.
+///
+[RegisterComponent]
+public sealed partial class OrganReagentInjectorComponent : Component
+{
+ [DataField]
+ public string TargetSolution = "chemicals";
+
+ [DataField(required: true)]
+ public Solution Reagents = default!;
+
+ [DataField]
+ public TimeSpan Duration = TimeSpan.FromSeconds(1);
+
+ [ViewVariables]
+ public TimeSpan NextInjectTime;
+}
diff --git a/Resources/Locale/en-US/_Omu/reagents.ftl b/Resources/Locale/en-US/_Omu/reagents.ftl
new file mode 100644
index 00000000000..27bc2d9516a
--- /dev/null
+++ b/Resources/Locale/en-US/_Omu/reagents.ftl
@@ -0,0 +1,23 @@
+## SPDX-FileCopyrightText: 2026 Eponymic-sys
+##
+## SPDX-License-Identifier: AGPL-3.0-or-later
+
+# Cocaine Reagent
+reagent-name-cocaine = cocaine
+reagent-name-raw-cocaine = raw cocaine
+reagent-desc-cocaine = A dangerous stimulant that causes aggressive behavior patterns.
+reagent-desc-raw-cocaine = An unrefined alkaloid extract from coco leaves. Must be processed to produce cocaine.
+cocaine-effect = You feel your mind slipping away...
+raw-cocaine-effect = Your mouth goes numb and your heart quickens.
+cocaine-overdose-heartpounding = Your heart is pounding out of your chest!
+cocaine-overdose-chestpain = You feel a sharp pain in your chest!
+cocaine-overdose-cantbreathe = You can barely breathe!
+raw-cocaine-nausea = Your stomach churns and you feel nauseous...
+
+# Coco Plant Localization
+seeds-coco-name = coco
+seeds-coco-display-name = coco plant
+
+# Coco Food Sequence
+food-sequence-burger-content-coco = coco
+food-sequence-content-coco = coco
diff --git a/Resources/Locale/en-US/_Omu/stack/stacks.ftl b/Resources/Locale/en-US/_Omu/stack/stacks.ftl
index 03c53531ef2..93f0c167e2b 100644
--- a/Resources/Locale/en-US/_Omu/stack/stacks.ftl
+++ b/Resources/Locale/en-US/_Omu/stack/stacks.ftl
@@ -1 +1,3 @@
-stack-revcoin = RevCoin
\ No newline at end of file
+stack-revcoin = RevCoin
+stack-dried-coco-leaves = dried coco leaves
+stack-cocaine-powder = cocaine powder
diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/service.yml b/Resources/Prototypes/Catalog/Fills/Lockers/service.yml
index 258c4b04f6e..73cf1a58c71 100644
--- a/Resources/Prototypes/Catalog/Fills/Lockers/service.yml
+++ b/Resources/Prototypes/Catalog/Fills/Lockers/service.yml
@@ -73,6 +73,10 @@
- id: DrinkBottleBeer
amount: !type:BinomialNumberSelector
trials: 3
+ - id: CocainePowder #OMU Start
+ prob: 0.01
+ amount: !type:RangeNumberSelector
+ range: 30, 30 #OMU End
- !type:AllSelector
rolls: 2
children:
diff --git a/Resources/Prototypes/Entities/Clothing/Back/smuggler_tables.yml b/Resources/Prototypes/Entities/Clothing/Back/smuggler_tables.yml
index 13088ecd590..73e94a38c30 100644
--- a/Resources/Prototypes/Entities/Clothing/Back/smuggler_tables.yml
+++ b/Resources/Prototypes/Entities/Clothing/Back/smuggler_tables.yml
@@ -41,6 +41,8 @@
tableId: RandomSatchelClothingTable #1x small
- !type:NestedSelector
tableId: RandomSatchelCannabisTable #5x tiny
+ - !type:NestedSelector #OMU
+ tableId: RandomSatchelCocaineTable #5x tiny #OMU
- !type:NestedSelector
tableId: RandomSatchelGizmosTable #2x small
- !type:NestedSelector
@@ -82,7 +84,23 @@
- id: GroundCannabis
amount: !type:RangeNumberSelector
range: 1, 15
-
+ #OMU Start
+- type: entityTable #5x tiny
+ id: RandomSatchelCocaineTable
+ table: !type:GroupSelector
+ children:
+ - id: SpaceCash100
+ weight: 4
+ - id: CocainePowder
+ amount: !type:RangeNumberSelector
+ range: 1, 3
+ - id: LeavesCoco
+ amount: !type:RangeNumberSelector
+ range: 1, 4
+ - id: CocoSeeds
+ amount: !type:RangeNumberSelector
+ range: 1, 2
+ #OMU End
- type: entityTable #2x small
id: RandomSatchelGizmosTable
table: !type:GroupSelector
diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml
index d147f3b16aa..8a4564c645c 100644
--- a/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml
+++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml
@@ -323,6 +323,13 @@
- id: FoodSnackLollypopWrappedMysteryEvil # Goobstation - Lollypops!
- id: MysteryLighterBox
- id: GoldenPersonalAI
+ - id: CocainePowder #OMU Start
+ amount: !type:RangeNumberSelector
+ range: 1, 2
+ - id: LeavesCoco
+ amount: !type:RangeNumberSelector
+ range: 1, 2
+ - id: CocoSeeds #OMU End
- type: entity
name: Maint Loot Spawner
diff --git a/Resources/Prototypes/_Omu/Body/Organs/misc.yml b/Resources/Prototypes/_Omu/Body/Organs/misc.yml
new file mode 100644
index 00000000000..e56a50d4bd2
--- /dev/null
+++ b/Resources/Prototypes/_Omu/Body/Organs/misc.yml
@@ -0,0 +1,27 @@
+## SPDX-FileCopyrightText: 2026 Eponymic-sys
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+- type: entity
+ parent: [OrganAnimalHeart, BaseMajorContraband]
+ id: CocaineSpaceBearHeart
+ name: Cocaine Space Bear Heart
+ description: A heart from a cocaine space bear. It is still beating.
+ components:
+ - type: Sprite
+ sprite: _Omu/Mobs/Species/CocaineBear/organs.rsi
+ scale: 0.5, 0.5
+ layers:
+ - state: heart-on
+ - state: energy
+ shader: unshaded
+ - type: Organ
+ - type: OrganReagentInjector
+ targetSolution: chemicals
+ duration: 5
+ reagents:
+ reagents:
+ - ReagentId: Cocaine
+ Quantity: 1
+ - ReagentId: Omnizine
+ Quantity: 2.5
diff --git a/Resources/Prototypes/_Omu/Body/Prototypes/Animal/cocainebear.yml b/Resources/Prototypes/_Omu/Body/Prototypes/Animal/cocainebear.yml
new file mode 100644
index 00000000000..2c08681fb23
--- /dev/null
+++ b/Resources/Prototypes/_Omu/Body/Prototypes/Animal/cocainebear.yml
@@ -0,0 +1,37 @@
+# SPDX-FileCopyrightText: 2022 DrSmugleaf
+# SPDX-FileCopyrightText: 2022 Jezithyr
+# SPDX-FileCopyrightText: 2023 Kara
+# SPDX-FileCopyrightText: 2023 brainfood1183 <113240905+brainfood1183@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 gluesniffler <159397573+gluesniffler@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2025 ExponentialWizard <38435756+ExponentialWizard@users.noreply.github.com>
+## SPDX-FileCopyrightText: 2026 Eponymic-sys
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+- type: body
+ id: CocaineSpaceBear
+ name: "cocaine space bear"
+ root: chest
+ slots:
+ chest:
+ part: ChestAnimal
+ connections:
+ - groin
+ organs:
+ lungs: OrganAnimalLungs
+ heart: CocaineSpaceBearHeart
+ groin:
+ part: GroinAnimal
+ connections:
+ - legs
+ organs:
+ stomach: OrganAnimalStomach
+ liver: OrganAnimalLiver
+ kidneys: OrganAnimalKidneys
+ legs:
+ part: LegsAnimal
+ connections:
+ - feet
+ feet:
+ part: FeetAnimal
diff --git a/Resources/Prototypes/_Omu/Entities/Mobs/NPCs/cocainebear.yml b/Resources/Prototypes/_Omu/Entities/Mobs/NPCs/cocainebear.yml
new file mode 100644
index 00000000000..bd2fa9552e4
--- /dev/null
+++ b/Resources/Prototypes/_Omu/Entities/Mobs/NPCs/cocainebear.yml
@@ -0,0 +1,171 @@
+# SPDX-FileCopyrightText: 2022 CommieFlowers
+# SPDX-FileCopyrightText: 2022 CrudeWax <75271456+CrudeWax@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2022 Jacob Tong <10494922+ShadowCommander@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2022 Rane <60792108+Elijahrane@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2022 metalgearsloth
+# SPDX-FileCopyrightText: 2022 mirrorcult
+# SPDX-FileCopyrightText: 2022 rolfero <45628623+rolfero@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2023 Alekshhh <44923899+Alekshhh@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2023 DrSmugleaf
+# SPDX-FileCopyrightText: 2023 DrSmugleaf
+# SPDX-FileCopyrightText: 2023 I.K <45953835+notquitehadouken@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2023 Jackrost
+# SPDX-FileCopyrightText: 2023 Jezithyr
+# SPDX-FileCopyrightText: 2023 JimGamemaster <140008923+JimGamemaster@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2023 Nairod <110078045+Nairodian@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2023 Nim <128169402+Nimfar11@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2023 brainfood1183 <113240905+brainfood1183@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2023 crazybrain23 <44417085+crazybrain23@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2023 faint <46868845+ficcialfaint@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2023 liltenhead <104418166+liltenhead@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2023 lzk228 <124214523+lzk228@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2023 notquitehadouken <1isthisameme>
+# SPDX-FileCopyrightText: 2024 AJCM
+# SPDX-FileCopyrightText: 2024 Alex Evgrashin
+# SPDX-FileCopyrightText: 2024 Alex Pavlenko
+# SPDX-FileCopyrightText: 2024 Alice "Arimah" Heurlin <30327355+arimah@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 ArkiveDev <95712736+ArkiveDev@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Boaz1111 <149967078+Boaz1111@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Brandon Hu <103440971+Brandon-Huu@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Centronias
+# SPDX-FileCopyrightText: 2024 Chief-Engineer <119664036+Chief-Engineer@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Cojoke <83733158+Cojoke-dot@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Doomsdrayk
+# SPDX-FileCopyrightText: 2024 DrEnzyme
+# SPDX-FileCopyrightText: 2024 DrSmugleaf <10968691+DrSmugleaf@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Ed <96445749+TheShuEd@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Elysium206 <151651971+Elysium206@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Emisse <99158783+Emisse@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Eoin Mcloughlin
+# SPDX-FileCopyrightText: 2024 Flareguy <78941145+Flareguy@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Floofi <126319569+Shadowtheprotogen546@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Ghagliiarghii <68826635+Ghagliiarghii@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 HS <81934438+HolySSSS@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 IProduceWidgets <107586145+IProduceWidgets@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 K-Dynamic <20566341+K-Dynamic@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Kara
+# SPDX-FileCopyrightText: 2024 Kevin Zheng
+# SPDX-FileCopyrightText: 2024 Ko4ergaPunk <62609550+Ko4ergaPunk@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Leon Friedrich <60421075+ElectroJr@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 MetalSage <74924875+MetalSage@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 MetalSage
+# SPDX-FileCopyrightText: 2024 MilenVolf <63782763+MilenVolf@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Morb <14136326+Morb0@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Mr. 27 <45323883+Dutch-VanDerLinde@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 MureixloI <132683811+MureixloI@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 PJBot
+# SPDX-FileCopyrightText: 2024 Partmedia
+# SPDX-FileCopyrightText: 2024 Pieter-Jan Briers
+# SPDX-FileCopyrightText: 2024 Plykiya <58439124+Plykiya@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Redfire1331 <125223432+Redfire1331@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Rouge2t7 <81053047+Sarahon@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Tayrtahn
+# SPDX-FileCopyrightText: 2024 Truoizys <153248924+Truoizys@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 TsjipTsjip <19798667+TsjipTsjip@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Ubaser <134914314+UbaserB@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 Vasilis
+# SPDX-FileCopyrightText: 2024 WarMechanic <69510347+WarMechanic@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 beck-thompson <107373427+beck-thompson@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 deathride58
+# SPDX-FileCopyrightText: 2024 eoineoineoin
+# SPDX-FileCopyrightText: 2024 github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 lzk <124214523+lzk228@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 marbow <152051971+marboww@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 metalgearsloth
+# SPDX-FileCopyrightText: 2024 mhamster <81412348+mhamsterr@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 neutrino <67447925+neutrino-laser@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 nikthechampiongr <32041239+nikthechampiongr@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 osjarw <62134478+osjarw@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2024 plykiya
+# SPDX-FileCopyrightText: 2024 redfire1331
+# SPDX-FileCopyrightText: 2024 Арт <123451459+JustArt1m@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2025 Aiden
+# SPDX-FileCopyrightText: 2025 Aidenkrz
+# SPDX-FileCopyrightText: 2025 Aineias1
+# SPDX-FileCopyrightText: 2025 Errant <35878406+Errant-4@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2025 ExponentialWizard <38435756+ExponentialWizard@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2025 FaDeOkno <143940725+FaDeOkno@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2025 Fishbait
+# SPDX-FileCopyrightText: 2025 GoobBot
+# SPDX-FileCopyrightText: 2025 McBosserson <148172569+McBosserson@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2025 Milon
+# SPDX-FileCopyrightText: 2025 Piras314
+# SPDX-FileCopyrightText: 2025 Rinary <72972221+Rinary1@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2025 Rouden <149893554+Roudenn@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2025 TheBorzoiMustConsume <197824988+TheBorzoiMustConsume@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2025 Unlumination <144041835+Unlumy@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2025 Zokkie <6126135+Zokkie@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2025 coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2025 deltanedas <39013340+deltanedas@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2025 deltanedas <@deltanedas:kde.org>
+# SPDX-FileCopyrightText: 2025 fishbait
+# SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2025 gluesniffler
+# SPDX-FileCopyrightText: 2025 gus
+# SPDX-FileCopyrightText: 2025 slarticodefast <161409025+slarticodefast@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2025 ss14-Starlight
+# SPDX-FileCopyrightText: 2025 username <113782077+whateverusername0@users.noreply.github.com>
+# SPDX-FileCopyrightText: 2025 whateverusername0
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+- type: entity
+ name: cocaine space bear
+ id: CocaineMobBearSpace
+ parent: MobSpaceBasic
+ description: It looks friendly. Why don't you give it a hug?
+ components:
+ - type: Body # Shitmed Change
+ prototype: CocaineSpaceBear
+ - type: SurgeryTarget # Shitmed
+ - type: UserInterface # Shitmed
+ interfaces:
+ enum.SurgeryUIKey.Key:
+ type: SurgeryBui
+ - type: Sprite
+ drawdepth: Mobs
+ sprite: _Omu/Mobs/Animals/cocainebear.rsi
+ layers:
+ - map: [ "enum.DamageStateVisualLayers.Base" ]
+ state: cocaine-bear
+ - map: [ "enum.DamageStateVisualLayers.BaseUnshaded" ]
+ state: glow
+ shader: unshaded
+ - state: energy
+ shader: unshaded
+ - type: DamageStateVisuals
+ states:
+ Alive:
+ Base: cocaine-bear
+ BaseUnshaded: glow
+ Critical:
+ Base: cocaine-bear_dead
+ Dead:
+ Base: cocaine-bear_dead
+ - type: MobThresholds
+ thresholds:
+ 0: Alive
+ 60: Critical
+ 120: Dead
+ - type: Butcherable
+ spawned:
+ - id: FoodMeatBear
+ amount: 3
+ - id: MaterialHideBear
+ amount: 1
+ prob: 0.3
+ - type: ReplacementAccent
+ accent: genericAggressive
+ - type: Vocal
+ sounds:
+ Unsexed: Bear
+ - type: InteractionPopup
+ successChance: 0.25
+ interactSuccessString: petting-success-bear
+ interactFailureString: petting-failure-bear
+ interactSuccessSound:
+ path: /Audio/Animals/sloth_squeak.ogg
+ - type: Fauna # Lavaland Change
diff --git a/Resources/Prototypes/_Omu/Entities/Objects/Consumable/Narcotics/cocainepowder.yml b/Resources/Prototypes/_Omu/Entities/Objects/Consumable/Narcotics/cocainepowder.yml
new file mode 100644
index 00000000000..923b5dfc66c
--- /dev/null
+++ b/Resources/Prototypes/_Omu/Entities/Objects/Consumable/Narcotics/cocainepowder.yml
@@ -0,0 +1,23 @@
+- type: entity
+ name: cocaine powder
+ parent: [FoodInjectableBase, BaseMajorContraband]
+ id: CocainePowder
+ description: You know you want to.
+ components:
+ - type: Stack
+ stackType: CocainePowder
+ count: 1
+ - type: FlavorProfile
+ flavors:
+ - oily
+ - bitter
+ - type: Sprite
+ sprite: _Omu/Objects/Consumable/Narcotics/cocainepowder.rsi
+ state: cocainepowder
+ - type: SolutionContainerManager
+ solutions:
+ food:
+ maxVol: 20
+ reagents:
+ - ReagentId: Cocaine
+ Quantity: 20
diff --git a/Resources/Prototypes/_Omu/Entities/Objects/Specific/Hydroponics/leaves.yml b/Resources/Prototypes/_Omu/Entities/Objects/Specific/Hydroponics/leaves.yml
new file mode 100644
index 00000000000..a1bc6891812
--- /dev/null
+++ b/Resources/Prototypes/_Omu/Entities/Objects/Specific/Hydroponics/leaves.yml
@@ -0,0 +1,45 @@
+## SPDX-FileCopyrightText: 2026 Eponymic-sys
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+- type: entity
+ id: LeavesCoco
+ parent: ProduceBase
+ name: coco leaves
+ description: "Fresh coco leaves containing stimulant alkaloids."
+ components:
+ - type: Sprite
+ sprite: _Omu/Objects/Specific/Hydroponics/coco.rsi
+ - type: Produce
+ seedId: coco
+ - type: Food
+ - type: SolutionContainerManager
+ solutions:
+ food:
+ reagents:
+ - ReagentId: RawCocaine
+ Quantity: 20
+ - type: FoodSequenceElement
+ entries:
+ Burger: CocoBurger
+ Taco: CocoTaco
+
+- type: entity
+ id: LeavesCocoDried
+ parent: ProduceBase
+ name: dried coco leaves
+ description: "Dried coco leaves, ready to be ground."
+ components:
+ - type: Stack
+ stackType: LeavesCocoDried
+ count: 1
+ - type: Food
+ - type: Sprite
+ sprite: _Omu/Objects/Specific/Hydroponics/coco.rsi
+ state: dried
+ - type: SolutionContainerManager
+ solutions:
+ food:
+ reagents:
+ - ReagentId: RawCocaine
+ Quantity: 15
diff --git a/Resources/Prototypes/_Omu/Entities/Objects/Specific/Hydroponics/seeds.yml b/Resources/Prototypes/_Omu/Entities/Objects/Specific/Hydroponics/seeds.yml
new file mode 100644
index 00000000000..892a254d593
--- /dev/null
+++ b/Resources/Prototypes/_Omu/Entities/Objects/Specific/Hydroponics/seeds.yml
@@ -0,0 +1,13 @@
+# SPDX-FileCopyrightText: 2026 Eponymic-sys
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+- type: entity
+ parent: SeedBase
+ name: packet of coco seeds
+ id: CocoSeeds
+ components:
+ - type: Seed
+ seedId: coco
+ - type: Sprite
+ sprite: _Omu/Objects/Specific/Hydroponics/coco.rsi
diff --git a/Resources/Prototypes/_Omu/Hydroponics/seeds.yml b/Resources/Prototypes/_Omu/Hydroponics/seeds.yml
new file mode 100644
index 00000000000..22de42006f1
--- /dev/null
+++ b/Resources/Prototypes/_Omu/Hydroponics/seeds.yml
@@ -0,0 +1,28 @@
+# SPDX-FileCopyrightText: 2026 Eponymic-sys
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+- type: seed
+ id: coco
+ name: seeds-coco-name
+ noun: seeds-noun-seeds
+ displayName: seeds-coco-display-name
+ plantRsi: _Omu/Objects/Specific/Hydroponics/coco.rsi
+ packetPrototype: CocoSeeds
+ productPrototypes:
+ - LeavesCoco
+ harvestRepeat: Repeat
+ lifespan: 75
+ maturation: 8
+ production: 12
+ yield: 2
+ potency: 20
+ growthStages: 3
+ waterConsumption: 0.40
+ idealLight: 9
+ idealHeat: 298
+ chemicals:
+ RawCocaine:
+ Min: 1
+ Max: 10
+ PotencyDivisor: 10
diff --git a/Resources/Prototypes/_Omu/Polymorphs/cocaine.yml b/Resources/Prototypes/_Omu/Polymorphs/cocaine.yml
new file mode 100644
index 00000000000..ffb78a58b31
--- /dev/null
+++ b/Resources/Prototypes/_Omu/Polymorphs/cocaine.yml
@@ -0,0 +1,14 @@
+# SPDX-FileCopyrightText: 2026 OmuStation Contributors
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+- type: polymorph
+ id: CocaineSpaceBear
+ configuration:
+ entity: CocaineMobBearSpace
+ forced: true
+ inventory: Drop
+ transferName: true
+ transferDamage: true
+ revertOnCrit: false
+ revertOnDeath: true
diff --git a/Resources/Prototypes/_Omu/Reagents/narcotics.yml b/Resources/Prototypes/_Omu/Reagents/narcotics.yml
new file mode 100644
index 00000000000..ab277dcc0d7
--- /dev/null
+++ b/Resources/Prototypes/_Omu/Reagents/narcotics.yml
@@ -0,0 +1,233 @@
+# SPDX-FileCopyrightText: 2026 Eponymic-sys
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+- type: reagent
+ id: Cocaine
+ name: reagent-name-cocaine
+ group: Narcotics
+ desc: reagent-desc-cocaine
+ physicalDesc: reagent-physical-desc-powdery
+ flavor: bitter
+ color: "#c2c2c2"
+ boilingPoint: 150.0
+ meltingPoint: -10.0
+ metabolisms:
+ Narcotic:
+ metabolismRate: 0.20
+ effects:
+ - !type:PopupMessage
+ type: Local
+ visualType: MediumCaution
+ messages:
+ - cocaine-effect
+ probability: 0.1
+ - !type:PopupMessage
+ conditions:
+ - !type:ReagentThreshold
+ min: 30
+ type: Local
+ visualType: LargeCaution
+ messages:
+ - cocaine-overdose-heartpounding
+ - cocaine-overdose-chestpain
+ - cocaine-overdose-cantbreathe
+ probability: 0.2
+ - !type:ModifyStatusEffect
+ effectProto: StatusEffectEnraged
+ time: 2.5
+ refresh: true
+ type: Add
+ - !type:Polymorph
+ prototype: CocaineSpaceBear
+ conditions:
+ - !type:ReagentThreshold
+ min: 80
+ - !type:HealthChange
+ conditions:
+ - !type:OrganType # Goobstation - Yowie
+ type: Yowie
+ damage:
+ groups:
+ Brute: -1
+ types:
+ Heat: -0.5
+ Shock: -0.5
+ Cold: -0.5
+ Radiation: -0.5
+ - !type:MovespeedModifier
+ walkSpeedModifier: 1.3
+ sprintSpeedModifier: 1.3
+ - !type:HealthChange
+ conditions:
+ - !type:OrganType
+ type: Yowie
+ shouldHave: false
+ - !type:ReagentThreshold
+ min: 20 #please wait 3 minutes before using another stimpack, also goob edit
+ damage:
+ types:
+ Poison: 1
+ - !type:AdjustReagent
+ conditions:
+ - !type:ReagentThreshold
+ reagent: ChloralHydrate
+ min: 1
+ reagent: ChloralHydrate
+ amount: -10
+ - !type:GenericStatusEffect
+ key: Stun
+ time: 3
+ type: Remove
+ - !type:GenericStatusEffect
+ key: KnockedDown
+ time: 1
+ type: Remove
+ - !type:GenericStatusEffect
+ key: StaminaModifier
+ component: StaminaModifier
+ time: 3
+ type: Add
+ - !type:ModifyStatusEffect
+ effectProto: StatusEffectForcedSleeping
+ time: 3
+ type: Remove
+ - !type:ModifyStatusEffect
+ conditions:
+ - !type:ReagentThreshold
+ reagent: Haloperidol
+ max: 0.01
+ effectProto: StatusEffectDrowsiness
+ time: 10
+ type: Remove
+ - !type:GenericStatusEffect # goob edit
+ key: Adrenaline
+ component: IgnoreSlowOnDamage
+ time: 4
+ - !type:RemoveComponentEffect # goob edit
+ component: DelayedKnockdown
+ locale: reagent-effect-guidebook-remove-delayed-knockdown
+ - !type:TakeStaminaDamage # goob edit
+ amount: -10
+ immediate: true
+ - !type:SuppressPain
+ amount: 1.2
+ time: 30 # it accumulated 1.2*quantity and then exists for 30 seconds.
+ Medicine:
+ metabolismRate: 0.25 # Goobstation edit
+ effects:
+ - !type:ResetNarcolepsy
+ - !type:SatiateHunger
+ factor: 1
+ - !type:SatiateThirst
+ factor: 1
+ - !type:HealthChange
+ conditions:
+ - !type:TotalDamage
+ min: 70 # only heals when you're more dead than alive
+ damage: # heals at the same rate as tricordrazine, doesn't heal poison because if you OD'd I'm not giving you a safety net
+ groups:
+ Burn: -1
+ Brute: -1
+
+
+- type: reagent
+ id: RawCocaine
+ name: reagent-name-raw-cocaine
+ group: Narcotics
+ desc: reagent-desc-raw-cocaine
+ physicalDesc: reagent-physical-desc-powdery
+ flavor: bitter
+ color: "#c2c2c2"
+ boilingPoint: 150.0
+ meltingPoint: -10.0
+ metabolisms:
+ Narcotic:
+ metabolismRate: 0.25
+ effects:
+ - !type:HealthChange
+ conditions:
+ - !type:OrganType # Goobstation - Yowie
+ type: Yowie
+ damage:
+ groups:
+ Brute: -1
+ types:
+ Heat: -0.5
+ Shock: -0.5
+ Cold: -0.5
+ Radiation: -0.5
+ - !type:MovespeedModifier
+ walkSpeedModifier: 1.15
+ sprintSpeedModifier: 1.15
+ - !type:HealthChange # impurities cause constant low toxin damage
+ conditions:
+ - !type:OrganType
+ type: Yowie
+ shouldHave: false
+ damage:
+ types:
+ Poison: 0.25
+ - !type:HealthChange
+ conditions:
+ - !type:OrganType
+ type: Yowie
+ shouldHave: false
+ - !type:ReagentThreshold
+ min: 10
+ damage:
+ types:
+ Poison: 1.5
+ - !type:Jitter # unrefined stimulant makes you jittery
+ ticksOfJitter: 3
+ - !type:PopupMessage # nausea from impurities
+ type: Local
+ visualType: MediumCaution
+ messages:
+ - raw-cocaine-nausea
+ probability: 0.2
+ - !type:AdjustReagent
+ conditions:
+ - !type:ReagentThreshold
+ reagent: ChloralHydrate
+ min: 1
+ reagent: ChloralHydrate
+ amount: -2
+ - !type:GenericStatusEffect
+ key: Stun
+ time: 1
+ type: Remove
+ - !type:GenericStatusEffect
+ key: KnockedDown
+ time: 1
+ type: Remove
+ - !type:GenericStatusEffect
+ key: StaminaModifier
+ component: StaminaModifier
+ time: 1
+ type: Add
+ - !type:ModifyStatusEffect
+ effectProto: StatusEffectForcedSleeping
+ time: 1
+ type: Remove
+ - !type:ModifyStatusEffect
+ conditions:
+ - !type:ReagentThreshold
+ reagent: Haloperidol
+ max: 0.01
+ effectProto: StatusEffectDrowsiness
+ time: 5
+ type: Remove
+ - !type:GenericStatusEffect # goob edit
+ key: Adrenaline
+ component: IgnoreSlowOnDamage
+ time: 2
+ - !type:RemoveComponentEffect # goob edit
+ component: DelayedKnockdown
+ locale: reagent-effect-guidebook-remove-delayed-knockdown
+ - !type:TakeStaminaDamage # goob edit
+ amount: -5
+ immediate: true
+ - !type:SuppressPain
+ amount: 0.3
+ time: 15
diff --git a/Resources/Prototypes/_Omu/Recipes/Cooking/food_sequence_element.yml b/Resources/Prototypes/_Omu/Recipes/Cooking/food_sequence_element.yml
new file mode 100644
index 00000000000..2d5ba7889cf
--- /dev/null
+++ b/Resources/Prototypes/_Omu/Recipes/Cooking/food_sequence_element.yml
@@ -0,0 +1,17 @@
+# SPDX-FileCopyrightText: 2026 Eponymic-sys
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+- type: foodSequenceElement
+ id: CocoBurger
+ name: food-sequence-burger-content-coco
+ sprites:
+ - sprite: _Omu/Objects/Specific/Hydroponics/coco.rsi
+ state: produce
+
+- type: foodSequenceElement
+ id: CocoTaco
+ name: food-sequence-content-coco
+ sprites:
+ - sprite: _Omu/Objects/Specific/Hydroponics/coco.rsi
+ state: produce
diff --git a/Resources/Prototypes/_Omu/Recipes/Cooking/meal_recipes.yml b/Resources/Prototypes/_Omu/Recipes/Cooking/meal_recipes.yml
index 5d46e87fd6a..320e3ae23fe 100644
--- a/Resources/Prototypes/_Omu/Recipes/Cooking/meal_recipes.yml
+++ b/Resources/Prototypes/_Omu/Recipes/Cooking/meal_recipes.yml
@@ -11,6 +11,13 @@
FoodMeatRat: 1
FoodButter: 1
+- type: microwaveMealRecipe
+ id: RecipeDriedCocoLeaves
+ name: dried coco leaves recipe
+ result: LeavesCocoDried
+ time: 5
+ solids:
+ LeavesCoco: 1
#Lazy tiramisu and fancy tiramisu added by jellygato 3-1-26
- type: microwaveMealRecipe
id: RecipeLazyTiramisu
diff --git a/Resources/Prototypes/_Omu/Recipes/Reactions/narcotics.yml b/Resources/Prototypes/_Omu/Recipes/Reactions/narcotics.yml
new file mode 100644
index 00000000000..9bcef8661e7
--- /dev/null
+++ b/Resources/Prototypes/_Omu/Recipes/Reactions/narcotics.yml
@@ -0,0 +1,23 @@
+# SPDX-FileCopyrightText: 2026 Eponymic-sys
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+
+# The reagent product is for the guidebook.
+- type: reaction
+ id: Cocaine
+ reactants:
+ RawCocaine:
+ amount: 1
+ Ash:
+ amount: 1
+ WeldingFuel:
+ amount: 1
+ catalyst: true
+ products:
+ Cocaine: 1
+ effects:
+ - !type:CreateEntityReactionEffect
+ entity: CocainePowder
+ minTemp: 300
+ maxTemp: 450
diff --git a/Resources/Prototypes/_Omu/Stacks/consumable_stacks.yml b/Resources/Prototypes/_Omu/Stacks/consumable_stacks.yml
new file mode 100644
index 00000000000..39c87d7c32d
--- /dev/null
+++ b/Resources/Prototypes/_Omu/Stacks/consumable_stacks.yml
@@ -0,0 +1,17 @@
+# SPDX-FileCopyrightText: 2026 Eponymic-sys
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+- type: stack
+ id: LeavesCocoDried
+ name: stack-dried-coco-leaves
+ icon: { sprite: /Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi, state: dried }
+ spawn: LeavesCocoDried
+ maxCount: 15
+
+- type: stack
+ id: CocainePowder
+ name: stack-cocaine-powder
+ icon: { sprite: /Textures/_Omu/Objects/Consumable/Narcotics/cocainepowder.rsi, state: cocainepowder }
+ spawn: CocainePowder
+ maxCount: 30
diff --git a/Resources/Prototypes/_Omu/StatusEffects/enraged.yml b/Resources/Prototypes/_Omu/StatusEffects/enraged.yml
new file mode 100644
index 00000000000..fdaee45321b
--- /dev/null
+++ b/Resources/Prototypes/_Omu/StatusEffects/enraged.yml
@@ -0,0 +1,11 @@
+# SPDX-FileCopyrightText: 2026 Eponymic-sys
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+- type: entity
+ parent: MobStatusEffectBase
+ id: StatusEffectEnraged
+ name: enraged
+ components:
+ - type: EnragedStatusEffect
+ hostileFaction: AllHostile
diff --git a/Resources/Textures/_Omu/Mobs/Animals/coacinebear.rsi/cocaine-bear.png b/Resources/Textures/_Omu/Mobs/Animals/coacinebear.rsi/cocaine-bear.png
new file mode 100644
index 00000000000..6cf3f1f6fb7
Binary files /dev/null and b/Resources/Textures/_Omu/Mobs/Animals/coacinebear.rsi/cocaine-bear.png differ
diff --git a/Resources/Textures/_Omu/Mobs/Animals/coacinebear.rsi/cocaine-bear_dead.png b/Resources/Textures/_Omu/Mobs/Animals/coacinebear.rsi/cocaine-bear_dead.png
new file mode 100644
index 00000000000..c17e7e8b9ea
Binary files /dev/null and b/Resources/Textures/_Omu/Mobs/Animals/coacinebear.rsi/cocaine-bear_dead.png differ
diff --git a/Resources/Textures/_Omu/Mobs/Animals/coacinebear.rsi/energy.png b/Resources/Textures/_Omu/Mobs/Animals/coacinebear.rsi/energy.png
new file mode 100644
index 00000000000..13db1a80ab7
Binary files /dev/null and b/Resources/Textures/_Omu/Mobs/Animals/coacinebear.rsi/energy.png differ
diff --git a/Resources/Textures/_Omu/Mobs/Animals/coacinebear.rsi/glow.png b/Resources/Textures/_Omu/Mobs/Animals/coacinebear.rsi/glow.png
new file mode 100644
index 00000000000..8de394e1797
Binary files /dev/null and b/Resources/Textures/_Omu/Mobs/Animals/coacinebear.rsi/glow.png differ
diff --git a/Resources/Textures/_Omu/Mobs/Animals/coacinebear.rsi/meta.json b/Resources/Textures/_Omu/Mobs/Animals/coacinebear.rsi/meta.json
new file mode 100644
index 00000000000..a6e6eec47e5
--- /dev/null
+++ b/Resources/Textures/_Omu/Mobs/Animals/coacinebear.rsi/meta.json
@@ -0,0 +1,67 @@
+{
+ "version": 1,
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from https://github.com/tgstation/tgstation/commit/53d1f1477d22a11a99c6c6924977cd431075761b , remade by Alekshhh, energy is from a modified from tgstation https://github.com/tgstation/tgstation/blob/HEAD/icons/obj/weapons/guns/projectiles.dmi",
+ "states": [
+ {
+ "name": "cocaine-bear",
+ "directions": 4
+ },
+ {
+ "name": "glow",
+ "directions": 4,
+ "delays": [
+ [
+ 0.2,
+ 0.2,
+ 0.2,
+ 0.2
+ ],
+ [
+ 0.2,
+ 0.2,
+ 0.2,
+ 0.2
+ ],
+ [
+ 0.2,
+ 0.2,
+ 0.2,
+ 0.2
+ ],
+ [
+ 0.2,
+ 0.2,
+ 0.2,
+ 0.2
+ ]
+ ]
+ },
+ {
+ "name": "energy",
+ "delays": [
+ [
+ 0.120000005,
+ 0.04,
+ 0.120000005,
+ 0.08,
+ 0.04,
+ 0.120000005,
+ 0.04,
+ 0.120000005,
+ 0.08,
+ 0.04,
+ 0.120000005,
+ 0.04
+ ]
+ ]
+ },
+ {
+ "name": "cocaine-bear_dead"
+ }
+ ]
+}
diff --git a/Resources/Textures/_Omu/Mobs/Species/CocaineBear/organs.rsi/energy.png b/Resources/Textures/_Omu/Mobs/Species/CocaineBear/organs.rsi/energy.png
new file mode 100644
index 00000000000..f41acaab976
Binary files /dev/null and b/Resources/Textures/_Omu/Mobs/Species/CocaineBear/organs.rsi/energy.png differ
diff --git a/Resources/Textures/_Omu/Mobs/Species/CocaineBear/organs.rsi/heart-inhand-left.png b/Resources/Textures/_Omu/Mobs/Species/CocaineBear/organs.rsi/heart-inhand-left.png
new file mode 100644
index 00000000000..2e4fdc47c02
Binary files /dev/null and b/Resources/Textures/_Omu/Mobs/Species/CocaineBear/organs.rsi/heart-inhand-left.png differ
diff --git a/Resources/Textures/_Omu/Mobs/Species/CocaineBear/organs.rsi/heart-inhand-right.png b/Resources/Textures/_Omu/Mobs/Species/CocaineBear/organs.rsi/heart-inhand-right.png
new file mode 100644
index 00000000000..5b9eaa8bae0
Binary files /dev/null and b/Resources/Textures/_Omu/Mobs/Species/CocaineBear/organs.rsi/heart-inhand-right.png differ
diff --git a/Resources/Textures/_Omu/Mobs/Species/CocaineBear/organs.rsi/heart-off.png b/Resources/Textures/_Omu/Mobs/Species/CocaineBear/organs.rsi/heart-off.png
new file mode 100644
index 00000000000..5116f6b54a7
Binary files /dev/null and b/Resources/Textures/_Omu/Mobs/Species/CocaineBear/organs.rsi/heart-off.png differ
diff --git a/Resources/Textures/_Omu/Mobs/Species/CocaineBear/organs.rsi/heart-on.png b/Resources/Textures/_Omu/Mobs/Species/CocaineBear/organs.rsi/heart-on.png
new file mode 100644
index 00000000000..650ad85bc92
Binary files /dev/null and b/Resources/Textures/_Omu/Mobs/Species/CocaineBear/organs.rsi/heart-on.png differ
diff --git a/Resources/Textures/_Omu/Mobs/Species/CocaineBear/organs.rsi/meta.json b/Resources/Textures/_Omu/Mobs/Species/CocaineBear/organs.rsi/meta.json
new file mode 100644
index 00000000000..3600f83f6f4
--- /dev/null
+++ b/Resources/Textures/_Omu/Mobs/Species/CocaineBear/organs.rsi/meta.json
@@ -0,0 +1,51 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Made by wyvernrer (337793232195026944), modified by Eponymic-sys",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "heart-inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "heart-inhand-right",
+ "directions": 4
+ },
+ {
+ "name": "heart-off"
+ },
+ {
+ "name": "heart-on",
+ "delays": [
+ [
+ 0.6,
+ 0.1,
+ 0.1
+ ]
+ ]
+ },
+ {
+ "name": "energy",
+ "delays": [
+ [
+ 0.120000005,
+ 0.04,
+ 0.120000005,
+ 0.08,
+ 0.04,
+ 0.120000005,
+ 0.04,
+ 0.120000005,
+ 0.08,
+ 0.04,
+ 0.120000005,
+ 0.04
+ ]
+ ]
+ }
+ ]
+}
diff --git a/Resources/Textures/_Omu/Objects/Consumable/Narcotics/cocainepowder.rsi/cocainepowder.png b/Resources/Textures/_Omu/Objects/Consumable/Narcotics/cocainepowder.rsi/cocainepowder.png
new file mode 100644
index 00000000000..efca9b7dc08
Binary files /dev/null and b/Resources/Textures/_Omu/Objects/Consumable/Narcotics/cocainepowder.rsi/cocainepowder.png differ
diff --git a/Resources/Textures/_Omu/Objects/Consumable/Narcotics/cocainepowder.rsi/meta.json b/Resources/Textures/_Omu/Objects/Consumable/Narcotics/cocainepowder.rsi/meta.json
new file mode 100644
index 00000000000..347ee0a88ad
--- /dev/null
+++ b/Resources/Textures/_Omu/Objects/Consumable/Narcotics/cocainepowder.rsi/meta.json
@@ -0,0 +1,14 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "cocainepowder.png made by r3stful",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "cocainepowder"
+ }
+ ]
+}
diff --git a/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/dead.png b/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/dead.png
new file mode 100644
index 00000000000..01da19fc76e
Binary files /dev/null and b/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/dead.png differ
diff --git a/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/dried.png b/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/dried.png
new file mode 100644
index 00000000000..fddcc7192c3
Binary files /dev/null and b/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/dried.png differ
diff --git a/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/harvest.png b/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/harvest.png
new file mode 100644
index 00000000000..bc6806c83ac
Binary files /dev/null and b/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/harvest.png differ
diff --git a/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/meta.json b/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/meta.json
new file mode 100644
index 00000000000..8d16fde44a1
--- /dev/null
+++ b/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/meta.json
@@ -0,0 +1,35 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 1dbcf389b0ec6b2c51b002df5fef8dd1519f8068",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "dead"
+ },
+ {
+ "name": "harvest"
+ },
+ {
+ "name": "produce"
+ },
+ {
+ "name": "dried"
+ },
+ {
+ "name": "seed"
+ },
+ {
+ "name": "stage-1"
+ },
+ {
+ "name": "stage-2"
+ },
+ {
+ "name": "stage-3"
+ }
+ ]
+}
diff --git a/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/produce.png b/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/produce.png
new file mode 100644
index 00000000000..1ce86d3a7d6
Binary files /dev/null and b/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/produce.png differ
diff --git a/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/seed.png b/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/seed.png
new file mode 100644
index 00000000000..92389d95f1b
Binary files /dev/null and b/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/seed.png differ
diff --git a/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/stage-1.png b/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/stage-1.png
new file mode 100644
index 00000000000..626fc20039a
Binary files /dev/null and b/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/stage-1.png differ
diff --git a/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/stage-2.png b/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/stage-2.png
new file mode 100644
index 00000000000..10e326bd81f
Binary files /dev/null and b/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/stage-2.png differ
diff --git a/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/stage-3.png b/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/stage-3.png
new file mode 100644
index 00000000000..1547747ed16
Binary files /dev/null and b/Resources/Textures/_Omu/Objects/Specific/Hydroponics/coco.rsi/stage-3.png differ