From e510504596f992744cfe62cdf26aa12f38ff6aa2 Mon Sep 17 00:00:00 2001
From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
Date: Wed, 11 Sep 2024 09:52:27 -0400
Subject: [PATCH] Hivelord mob (#31322)
* Hivelord
* make it longah
---
.../Atmos/Rotting/PerishableComponent.cs | 6 +
.../Atmos/Rotting/SharedRottingSystem.cs | 4 +
.../Components/IgnoreSlowOnDamageComponent.cs | 9 +
.../Damage/Systems/SlowOnDamageSystem.cs | 19 +++
.../RechargeBasicEntityAmmoComponent.cs | 5 +-
.../Systems/RechargeBasicEntityAmmoSystem.cs | 3 +
Resources/Locale/en-US/alerts/alerts.ftl | 3 +
.../guidebook/chemistry/statuseffects.ftl | 1 +
.../Locale/en-US/reagents/meta/chemicals.ftl | 2 +
Resources/Prototypes/Alerts/alerts.yml | 8 +
.../Spawners/Random/Salvage/spawners.yml | 18 ++
.../Entities/Mobs/NPCs/asteroid.yml | 154 ++++++++++++++++++
.../Entities/Mobs/NPCs/simplemob.yml | 2 +
.../Entities/Mobs/Player/dragon.yml | 1 +
.../Prototypes/Entities/Mobs/Species/base.yml | 1 +
Resources/Prototypes/Procedural/vgroid.yml | 8 +-
Resources/Prototypes/Reagents/chemicals.yml | 20 +++
Resources/Prototypes/status_effects.yml | 4 +
.../Aliens/Asteroid/hivelord.rsi/hivelord.png | Bin 0 -> 928 bytes
.../Asteroid/hivelord.rsi/hivelord_alert.png | Bin 0 -> 713 bytes
.../hivelord.rsi/hivelord_alert_nocore.png | Bin 0 -> 675 bytes
.../Asteroid/hivelord.rsi/hivelord_dead.png | Bin 0 -> 293 bytes
.../hivelord.rsi/hivelord_dead_nocore.png | Bin 0 -> 274 bytes
.../Asteroid/hivelord.rsi/hivelord_nocore.png | Bin 0 -> 882 bytes
.../Asteroid/hivelord.rsi/hivelordbrood.png | Bin 0 -> 637 bytes
.../Aliens/Asteroid/hivelord.rsi/meta.json | 74 +++++++++
.../Consumable/Food/rorocore.rsi/boiled.png | Bin 0 -> 295 bytes
.../Consumable/Food/rorocore.rsi/icon.png | Bin 0 -> 331 bytes
.../Consumable/Food/rorocore.rsi/meta.json | 17 ++
29 files changed, 354 insertions(+), 5 deletions(-)
create mode 100644 Content.Shared/Damage/Components/IgnoreSlowOnDamageComponent.cs
create mode 100644 Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord.png
create mode 100644 Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_alert.png
create mode 100644 Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_alert_nocore.png
create mode 100644 Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_dead.png
create mode 100644 Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_dead_nocore.png
create mode 100644 Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_nocore.png
create mode 100644 Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelordbrood.png
create mode 100644 Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/meta.json
create mode 100644 Resources/Textures/Objects/Consumable/Food/rorocore.rsi/boiled.png
create mode 100644 Resources/Textures/Objects/Consumable/Food/rorocore.rsi/icon.png
create mode 100644 Resources/Textures/Objects/Consumable/Food/rorocore.rsi/meta.json
diff --git a/Content.Shared/Atmos/Rotting/PerishableComponent.cs b/Content.Shared/Atmos/Rotting/PerishableComponent.cs
index 6983b872b8..99b30fc906 100644
--- a/Content.Shared/Atmos/Rotting/PerishableComponent.cs
+++ b/Content.Shared/Atmos/Rotting/PerishableComponent.cs
@@ -45,6 +45,12 @@ public sealed partial class PerishableComponent : Component
[DataField, AutoNetworkedField]
public int Stage;
+
+ ///
+ /// If true, rot will always progress.
+ ///
+ [DataField, AutoNetworkedField]
+ public bool ForceRotProgression;
}
diff --git a/Content.Shared/Atmos/Rotting/SharedRottingSystem.cs b/Content.Shared/Atmos/Rotting/SharedRottingSystem.cs
index 840818dee5..60c89c012a 100644
--- a/Content.Shared/Atmos/Rotting/SharedRottingSystem.cs
+++ b/Content.Shared/Atmos/Rotting/SharedRottingSystem.cs
@@ -115,6 +115,10 @@ public abstract class SharedRottingSystem : EntitySystem
if (!Resolve(uid, ref perishable, false))
return false;
+ // Overrides all the other checks.
+ if (perishable.ForceRotProgression)
+ return true;
+
// only dead things or inanimate objects can rot
if (TryComp(uid, out var mobState) && !_mobState.IsDead(uid, mobState))
return false;
diff --git a/Content.Shared/Damage/Components/IgnoreSlowOnDamageComponent.cs b/Content.Shared/Damage/Components/IgnoreSlowOnDamageComponent.cs
new file mode 100644
index 0000000000..e933eb1a79
--- /dev/null
+++ b/Content.Shared/Damage/Components/IgnoreSlowOnDamageComponent.cs
@@ -0,0 +1,9 @@
+using Robust.Shared.GameStates;
+
+namespace Content.Shared.Damage.Components;
+
+///
+/// This is used for an effect that nullifies and adds an alert.
+///
+[RegisterComponent, NetworkedComponent, Access(typeof(SlowOnDamageSystem))]
+public sealed partial class IgnoreSlowOnDamageComponent : Component;
diff --git a/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs b/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs
index 3e50ee3557..6b5f57c595 100644
--- a/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs
+++ b/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs
@@ -22,6 +22,10 @@ namespace Content.Shared.Damage
SubscribeLocalEvent(OnExamined);
SubscribeLocalEvent(OnGotEquipped);
SubscribeLocalEvent(OnGotUnequipped);
+
+ SubscribeLocalEvent(OnIgnoreStartup);
+ SubscribeLocalEvent(OnIgnoreShutdown);
+ SubscribeLocalEvent(OnIgnoreModifySpeed);
}
private void OnRefreshMovespeed(EntityUid uid, SlowOnDamageComponent component, RefreshMovementSpeedModifiersEvent args)
@@ -84,6 +88,21 @@ namespace Content.Shared.Damage
{
_movementSpeedModifierSystem.RefreshMovementSpeedModifiers(args.Wearer);
}
+
+ private void OnIgnoreStartup(Entity ent, ref ComponentStartup args)
+ {
+ _movementSpeedModifierSystem.RefreshMovementSpeedModifiers(ent);
+ }
+
+ private void OnIgnoreShutdown(Entity ent, ref ComponentShutdown args)
+ {
+ _movementSpeedModifierSystem.RefreshMovementSpeedModifiers(ent);
+ }
+
+ private void OnIgnoreModifySpeed(Entity ent, ref ModifySlowOnDamageSpeedEvent args)
+ {
+ args.Speed = 1f;
+ }
}
[ByRefEvent]
diff --git a/Content.Shared/Weapons/Ranged/Components/RechargeBasicEntityAmmoComponent.cs b/Content.Shared/Weapons/Ranged/Components/RechargeBasicEntityAmmoComponent.cs
index f478405bec..25d0453b59 100644
--- a/Content.Shared/Weapons/Ranged/Components/RechargeBasicEntityAmmoComponent.cs
+++ b/Content.Shared/Weapons/Ranged/Components/RechargeBasicEntityAmmoComponent.cs
@@ -17,7 +17,7 @@ public sealed partial class RechargeBasicEntityAmmoComponent : Component
[DataField("rechargeSound")]
[AutoNetworkedField]
- public SoundSpecifier RechargeSound = new SoundPathSpecifier("/Audio/Magic/forcewall.ogg")
+ public SoundSpecifier? RechargeSound = new SoundPathSpecifier("/Audio/Magic/forcewall.ogg")
{
Params = AudioParams.Default.WithVolume(-5f)
};
@@ -27,4 +27,7 @@ public sealed partial class RechargeBasicEntityAmmoComponent : Component
AutoNetworkedField]
[AutoPausedField]
public TimeSpan? NextCharge;
+
+ [DataField, AutoNetworkedField]
+ public bool ShowExamineText = true;
}
diff --git a/Content.Shared/Weapons/Ranged/Systems/RechargeBasicEntityAmmoSystem.cs b/Content.Shared/Weapons/Ranged/Systems/RechargeBasicEntityAmmoSystem.cs
index 9d6d552400..3316df0b96 100644
--- a/Content.Shared/Weapons/Ranged/Systems/RechargeBasicEntityAmmoSystem.cs
+++ b/Content.Shared/Weapons/Ranged/Systems/RechargeBasicEntityAmmoSystem.cs
@@ -66,6 +66,9 @@ public sealed class RechargeBasicEntityAmmoSystem : EntitySystem
private void OnExamined(EntityUid uid, RechargeBasicEntityAmmoComponent component, ExaminedEvent args)
{
+ if (!component.ShowExamineText)
+ return;
+
if (!TryComp(uid, out var ammo)
|| ammo.Count == ammo.Capacity ||
component.NextCharge == null)
diff --git a/Resources/Locale/en-US/alerts/alerts.ftl b/Resources/Locale/en-US/alerts/alerts.ftl
index 319809da40..37af416c3a 100644
--- a/Resources/Locale/en-US/alerts/alerts.ftl
+++ b/Resources/Locale/en-US/alerts/alerts.ftl
@@ -96,6 +96,9 @@ alerts-bleed-desc = You're [color=red]bleeding[/color].
alerts-pacified-name = [color=green]Pacified[/color]
alerts-pacified-desc = You're pacified; you won't be able to harm living creatures.
+alerts-adrenaline-name = [color=red]Adrenaline[/color]
+alerts-adrenaline-desc = You're full of adrenaline: pain won't slow you down.
+
alerts-suit-power-name = Suit Power
alerts-suit-power-desc = How much power your space ninja suit has.
diff --git a/Resources/Locale/en-US/guidebook/chemistry/statuseffects.ftl b/Resources/Locale/en-US/guidebook/chemistry/statuseffects.ftl
index 9a8f2f6c8a..13d9ed5d6b 100644
--- a/Resources/Locale/en-US/guidebook/chemistry/statuseffects.ftl
+++ b/Resources/Locale/en-US/guidebook/chemistry/statuseffects.ftl
@@ -13,3 +13,4 @@ reagent-effect-status-effect-RatvarianLanguage = ratvarian language patterns
reagent-effect-status-effect-StaminaModifier = modified stamina
reagent-effect-status-effect-RadiationProtection = radiation protection
reagent-effect-status-effect-Drowsiness = drowsiness
+reagent-effect-status-effect-Adrenaline = adrenaline
diff --git a/Resources/Locale/en-US/reagents/meta/chemicals.ftl b/Resources/Locale/en-US/reagents/meta/chemicals.ftl
index 1d70ff65ff..ad9d12e26f 100644
--- a/Resources/Locale/en-US/reagents/meta/chemicals.ftl
+++ b/Resources/Locale/en-US/reagents/meta/chemicals.ftl
@@ -28,3 +28,5 @@ reagent-desc-sodium-polyacrylate = A super-absorbent polymer with assorted indus
reagent-name-cellulose = cellulose fibers
reagent-desc-cellulose = A crystaline polydextrose polymer, plants swear by this stuff.
+reagent-name-rororium = rororium
+reagent-desc-rororium = A strange substance which fills the cores of the hivelords that roam the mining asteroid. Thought to be the source of their regenerative powers.
diff --git a/Resources/Prototypes/Alerts/alerts.yml b/Resources/Prototypes/Alerts/alerts.yml
index 4ee4fdce0c..80fcc44a55 100644
--- a/Resources/Prototypes/Alerts/alerts.yml
+++ b/Resources/Prototypes/Alerts/alerts.yml
@@ -427,6 +427,14 @@
name: alerts-pacified-name
description: alerts-pacified-desc
+- type: alert
+ id: Adrenaline
+ icons:
+ - sprite: Mobs/Species/Human/organs.rsi
+ state: heart-on
+ name: alerts-adrenaline-name
+ description: alerts-adrenaline-desc
+
- type: alert
id: Debug1
icons:
diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/Salvage/spawners.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/Salvage/spawners.yml
index d16499aa76..7e147ba711 100644
--- a/Resources/Prototypes/Entities/Markers/Spawners/Random/Salvage/spawners.yml
+++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/Salvage/spawners.yml
@@ -476,3 +476,21 @@
amount: !type:ConstantNumberSelector
value: 3
+- type: entity
+ parent: MarkerBase
+ id: SalvageSpawnerMobMiningAsteroid
+ name: Mining Asteroid Mob Spawner
+ components:
+ - type: Sprite
+ layers:
+ - state: green
+ - sprite: Mobs/Aliens/Asteroid/goliath.rsi
+ state: goliath
+ - type: EntityTableSpawner
+ table: !type:GroupSelector
+ children:
+ - id: MobGoliath
+ weight: 65
+ - id: MobHivelord
+ weight: 35
+
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml b/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml
index 8cbd40b5cc..877dd40cc3 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml
@@ -26,6 +26,7 @@
- TemporaryBlindness
- RadiationProtection
- Drowsiness
+ - Adrenaline
- type: StandingState
- type: Tag
tags:
@@ -180,3 +181,156 @@
state: goliath_tentacle_retract
- type: EffectVisuals
- type: AnimationPlayer
+
+- type: entity
+ id: MobHivelord
+ parent: [ BaseMobAsteroid, FlyingMobBase ]
+ name: hivelord
+ description: A truly alien creature, it is a mass of unknown organic material, constantly fluctuating. When attacking, pieces of it split off and attack in tandem with the original.
+ components:
+ - type: Sprite
+ sprite: Mobs/Aliens/Asteroid/hivelord.rsi
+ layers:
+ - map: ["enum.DamageStateVisualLayers.Base"]
+ state: hivelord
+ - type: DamageStateVisuals
+ states:
+ Alive:
+ Base: hivelord
+ Dead:
+ Base: hivelord_dead
+ - type: MovementSpeedModifier
+ baseWalkSpeed : 3.5
+ baseSprintSpeed : 4.0
+ - type: MobThresholds
+ thresholds:
+ 0: Alive
+ 75: Dead
+ - type: MeleeWeapon
+ damage:
+ types:
+ Blunt: 0
+ - type: Gun
+ fireRate: 0.66
+ selectedMode: SemiAuto
+ showExamineText: false
+ availableModes:
+ - SemiAuto
+ soundGunshot: null
+ - type: RechargeBasicEntityAmmo
+ showExamineText: false
+ rechargeCooldown: 0
+ rechargeSound: null
+ - type: BasicEntityAmmoProvider
+ proto: MobHivelordBrood
+ capacity: 1
+ count: 1
+ - type: NpcFactionMember
+ factions:
+ - SimpleHostile
+ - type: HTN
+ rootTask:
+ task: SimpleRangedHostileCompound
+ blackboard:
+ VisionRadius: !type:Single
+ 4
+ AggroVisionRadius: !type:Single
+ 9
+ - type: Butcherable
+ spawned:
+ - id: FoodHivelordRemains
+
+- type: entity
+ id: MobHivelordBrood
+ parent: [ BaseMobAsteroid, FlyingMobBase ]
+ name: hivelord brood
+ description: A fragment of the original hivelord, rallying behind its original. One isn't much of a threat, but...
+ components:
+ - type: Sprite
+ sprite: Mobs/Aliens/Asteroid/hivelord.rsi
+ layers:
+ - state: hivelordbrood
+ - type: MovementSpeedModifier
+ baseWalkSpeed : 3.5
+ baseSprintSpeed : 4.0
+ - type: MobThresholds
+ thresholds:
+ 0: Alive
+ 5: Dead
+ - type: MeleeWeapon
+ soundHit:
+ path: /Audio/Weapons/bladeslice.ogg
+ angle: 0
+ attackRate: 1.0
+ range: 0.75
+ animation: WeaponArcPunch
+ damage:
+ types:
+ Slash: 7
+ - type: Ammo
+ muzzleFlash: null
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 5
+ behaviors:
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
+ - type: NpcFactionMember
+ factions:
+ - SimpleHostile
+ - type: HTN
+ rootTask:
+ task: SimpleHostileCompound
+ blackboard: # highly aggressive
+ VisionRadius: !type:Single
+ 15
+ AggroVisionRadius: !type:Single
+ 15
+ - type: TimedDespawn
+ lifetime: 100
+
+- type: entity
+ id: FoodHivelordRemains
+ parent: FoodBase
+ name: hivelord remains
+ description: All that remains of a hivelord, it seems to be what allows it to break pieces of itself off without being hurt... its healing properties will soon become inert if not used quickly. Try not to think about what you're eating.
+ components:
+ - type: SolutionContainerManager
+ solutions:
+ food:
+ maxVol: 5
+ reagents:
+ - ReagentId: Rororium
+ Quantity: 5
+ - type: Sprite
+ sprite: Objects/Consumable/Food/rorocore.rsi
+ state: boiled
+ - type: Item
+ size: Normal
+ - type: Perishable
+ rotAfter: 120 # rot after 2 minutes
+ molsPerSecondPerUnitMass: 0
+ forceRotProgression: true
+ - type: RotInto
+ entity: FoodHivelordRemainsInert
+ stage: 1
+ - type: StaticPrice
+ price: 5000
+
+- type: entity
+ id: FoodHivelordRemainsInert
+ parent: BaseItem
+ name: inert hivelord remains
+ description: All that remains of a hivelord... Now all is truly lost.
+ components:
+ - type: Sprite
+ sprite: Objects/Consumable/Food/rorocore.rsi
+ state: boiled
+ color: "#664444"
+ - type: SpaceGarbage
+ - type: Item
+ size: Normal
+ - type: StaticPrice
+ price: 500
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml b/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml
index 8deefe9b8e..f400680eb0 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml
@@ -29,6 +29,7 @@
- Flashed
- RadiationProtection
- Drowsiness
+ - Adrenaline
- type: Buckle
- type: StandingState
- type: Tag
@@ -106,6 +107,7 @@
- Flashed
- RadiationProtection
- Drowsiness
+ - Adrenaline
- type: Bloodstream
bloodMaxVolume: 150
- type: MobPrice
diff --git a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml
index fe2416510e..16e3038fcd 100644
--- a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml
+++ b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml
@@ -106,6 +106,7 @@
- Pacified
- RadiationProtection
- Drowsiness
+ - Adrenaline
- type: Temperature
heatDamageThreshold: 800
- type: Metabolizer
diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml
index cbe09c29ad..2349eddd3a 100644
--- a/Resources/Prototypes/Entities/Mobs/Species/base.yml
+++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml
@@ -135,6 +135,7 @@
- Flashed
- RadiationProtection
- Drowsiness
+ - Adrenaline
- type: Body
prototype: Human
requiredLegs: 2
diff --git a/Resources/Prototypes/Procedural/vgroid.yml b/Resources/Prototypes/Procedural/vgroid.yml
index 05ab652ece..0747a58b30 100644
--- a/Resources/Prototypes/Procedural/vgroid.yml
+++ b/Resources/Prototypes/Procedural/vgroid.yml
@@ -180,7 +180,7 @@
minCount: 8
maxCount: 15
groups:
- - id: MobGoliath
+ - id: SalvageSpawnerMobMiningAsteroid
amount: 1
#- type: dungeonConfig
@@ -207,10 +207,10 @@
# Mobs
# If you want exterior dungeon mobs add them under the prototype.
- !type:MobsDunGen
- minCount: 20
- maxCount: 30
+ minCount: 25
+ maxCount: 35
groups:
- - id: MobGoliath
+ - id: SalvageSpawnerMobMiningAsteroid
amount: 1
#- type: dungeonConfig
diff --git a/Resources/Prototypes/Reagents/chemicals.yml b/Resources/Prototypes/Reagents/chemicals.yml
index b2b4850c8f..769b7748f3 100644
--- a/Resources/Prototypes/Reagents/chemicals.yml
+++ b/Resources/Prototypes/Reagents/chemicals.yml
@@ -166,3 +166,23 @@
color: "#E6E6DA"
physicalDesc: reagent-physical-desc-crystalline
slippery: false
+
+- type: reagent
+ id: Rororium
+ name: reagent-name-rororium
+ desc: reagent-desc-rororium
+ group: Biological
+ flavor: tingly
+ physicalDesc: reagent-physical-desc-refreshing
+ color: "#bf1365"
+ metabolisms:
+ Medicine:
+ effects:
+ - !type:HealthChange
+ damage:
+ groups:
+ Brute: -4
+ - !type:GenericStatusEffect
+ key: Adrenaline
+ component: IgnoreSlowOnDamage
+ time: 120
diff --git a/Resources/Prototypes/status_effects.yml b/Resources/Prototypes/status_effects.yml
index 96379323fd..49e5ccc579 100644
--- a/Resources/Prototypes/status_effects.yml
+++ b/Resources/Prototypes/status_effects.yml
@@ -68,3 +68,7 @@
- type: statusEffect
id: Drowsiness #blurs your vision and makes you randomly fall asleep
+
+- type: statusEffect
+ id: Adrenaline
+ alert: Adrenaline
diff --git a/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord.png b/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord.png
new file mode 100644
index 0000000000000000000000000000000000000000..09d70265e64004c27edb41d9b67e706abf204c20
GIT binary patch
literal 928
zcmV;R17G}!P)X?OojQ++zmV@i1#$$tEt5i^f=rB63`1Sy{#94m1*V?NQJG>c?w(^
z2eg1I0ZxQ6pbDfrL1h)`R|_JVUsspSkX_c=;v}FK$Yz(mB%Pi_ti_n(@XXD
z#>-=pRpD8Pl)`*@OX3umx_J_G`?d3P0%q|Cnvj>bsurdRz~D)#uv
z3!^U}RdzJ2vhDF&q0t*eP+bS080(6TzJMpXR~J8#2NBpp0H?r+et%R3FTGi9I1B&*
zzx4*l(#KI!74~d#Z%uG4N$>vPwK0mzAD9SfL}lZH-3B{Jh!ti*0#M(}G*mU&r<}Ge
zE;UMRbTUDo(MPNL$0$P5h`_1YB6Xd#u{t^rBn}1ILx}ye_exy-adbe`WO+N$x(wri
zgw)g1?+G`tOFX+RX6cl_yL$$m(E9b(xD_(Q1Fb#x^9!#)q%kpq1kZxJ(TfN2xZ;vn
zb()Mowk7dMsv77Hij4stNm-at6Bu^^qF~1$dW?7`p7np~yIFZu&MxcTD)RgyH?k5v
z`PBB_SThDhCbCM*Ku@L{JAPhvQ)E#yIOX!+<6-5z*hq29=$0hSsH7zy=
zV=(0Hw$tb5KYw2v0=O#!;7-UbudqL4Ch#
z+JCG^|FRp~iT$}huSCG{A1>&e6i;8vy`r6d*)_#`++PfZP&;jtDJioi7cmz~$s+xX0AE
zgZa6yd$~{aT;_)o!0Cv002v7}*t`zgcOP_80yx9e8%B4&uETa~=MObZforagTNTpI
zhr2$WUy5ZgG}OEERDvwk0JM(+0JR1Y+gHvCz-d2M(5bh=^+xSNxP}1rQ3BeAgpc<4agb=o&O_m4fLUK(Q4gFhv%2+k^2Gw
zw8}+I3iF==;77~^0IZJCIHmS+H>%A7@$QzQZtG4yYwMP9l_4kdS2%y-~?$>9Sp_
z9ln}whttokFenH%Crb(d-U-C*Y~5BFLTbP33lb$Kkg9iR!21Dy6l^-qNnj=W@^eJs
zDlqFc7_EjkL`H~{aAk>dl6?Rr>1+4l>2rN|xd4Dz*yvjj09U+y!vX-pjz~wp>ndO=
vyQI4a06RSZ+~#@!xXtwdaGUD^;5OGEE`KP%@bK+800000NkvXXu0mjfcE~*s
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_alert_nocore.png b/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_alert_nocore.png
new file mode 100644
index 0000000000000000000000000000000000000000..dc61d81d2be0b1729d3e72db1793175213d1fbd3
GIT binary patch
literal 675
zcmV;U0$lxxP)k?0&{{)IN|m
z*!qq2>_@w~oxDHy&l?_ae)(*G>jktiJ5l|M|1VFB!7hLpbZs_!RBnp_fa?Y5buSsb
z9u(69A_TjRT;kcq(XhwT
zXn~PKPy)z1g7kzOtgVy)ayLZ}-cKD%AVQdBS2&fP`gr|PY=fyG@4-_6vX%qTeG~v_
zHHbLAa&`bt`=x|VeH3mta(yOAoLcRmlqW-?Y*1qi1p%#cd|*_BG=>lmEOqtmpudz#
znw=pb*ufNJgHojs(l)fg5&_}q(G>s|2a-{BLfSsFAfgo&(K$1Uf>vM76#(c`)aco-
z%jsrF1Hq@j>UcFqS7-0?yPXDgvLp=r+X(z
zZGD_=k^6>Wx){(3beupa$si%yAo`$Ej?#6zR6BeDZikV%I|ad}vZMguS>BRDaD5=*
zp()=7SQj}t0gS3NOWJ~Zz^vC`v^rjhj1VW_%Di*(7;sAZ>^`kNw@;S~0LX>)z6Akr
z#S7L807wTSoqg9`z*2TWcM$+~dI5yZ^#TZ+>je-t*9#zQu0PhQ74Sb`RuljL002ov
JPDHLkV1n@@CKmtz
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_dead.png b/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_dead.png
new file mode 100644
index 0000000000000000000000000000000000000000..4e09b49b40a3c3b16d8223aaf96ae5f2c28fc32f
GIT binary patch
literal 293
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D0tn|
z#WAE}&fBT6d`A>GS`0tB-TTim@1$>e@-(GG5wqXg8Tj|wpINSO_R9t)1qKNEC%C|5
z(JVP8i!=4yiVVA6G8VAA*iY!OXMMn3uDHXpznsmmYeW7m)9sHX89H{_ELEF#tx%SE
zMqoVS?2~I5weL?e3{w9kwL$RZ_4L_^=0_QRsp(JG{`6f#^Mc>&t4(J8jM|zGRSucG
zuYPL>E|it*JrU%axl=EJVSjC$x!mPxrNKuSSm*9-JO9H;e!`^eaH%WXZ+xyyc>cVZ
jp;uq~_2hDn?(a<7Cr0%ZrS6>u^df_&tDnm{r-UW|E2D1K
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_dead_nocore.png b/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_dead_nocore.png
new file mode 100644
index 0000000000000000000000000000000000000000..5f2a004190719a547da53ce37a0132ccda73b633
GIT binary patch
literal 274
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D0sxv
z#WAE}&fBShd<_a5ZMl!#?*8YPyYksAZb5;|TiE}(JOA@{Y}ydP_kaO{>RE1_7wF3s
zbTFCE?Z_}GlSP7YBA?6WZU&1D;!Lw2*I0I3YRL>OK}|aQVyT
z6SS3mOI7xgTe~DWM4fU}|WY
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_nocore.png b/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/hivelord_nocore.png
new file mode 100644
index 0000000000000000000000000000000000000000..7d38dbfe899cab6583acc76728ed90fdae3a5158
GIT binary patch
literal 882
zcmV-&1C9KNP)ljq0ndPOthV!0ZPsh>
z*kBCq{r1aIAmH=g`QPu6-)pTRGS?h
z{Dk}j-jw=heQ*&w@|VXemK%=VJ;PrcE>y&Mynf82=r{}8<4gtDTWbiYA
z%uF$}iRxiP5rEnhyB&>zBP1|8iFSs3pA#Rz%zQL>*(T$-kzop4|opO0v!ldAO%=wg3c_`TN5IlU3aI=
zm{oSw1tehR$aZgemP{lNyJAsRxPB_j$(8bF?d>+jtne;mQejx!QrHD{*?Z8~&knH>+OEPFmz7}N$Cbmsvi)|w(v
z7eKswck+|D5W!6Zu?wuI_he{sycaXeM~M$3<2Inh^S_`($>Ac
z&`Px5M{q&Hs_8}N1glECyDS#TwBOy4Mo)P4`l#Ir5#qpApZoI#+96YzSV00ZA>Ww!
z1G`;wN~}9fW?<`5xFppLb_M0y5SOGP?8phMI{-nb2FNy!LsClS`~
zjC`&0>vPfsI#O=u<5X=vX$A%+
zeNPw1kcv5P=iKINR^V~ieZ>CO|N5r;TUvEgcy>;UdiiwE8^`T8lQlVBF&-;qOpp<0
zKu~YbzCZu|b4_EA7E{s##=QsGxtK0JSlV#@ijRZbo++E<`!|<;dR1tWbwJbL>*Zv>
z)GNkMcDxI@7bvILR#$w^DB+EF(TUk^KmOS7Y*j1JTJvjVM?L2;HmB=6_Uokmul}v;
zJH#{NHCO+{xh9JZn6suFXX0Yrvg^|`2M^)LzL6^%3S$@~jN{xADoowI$j8RCs^2QcLK-VAVPS$-f-t)bqu%Bf+S>ty-Kk_QwU%X1nt
zm{zi!Ds4&M)V+Z1M4ZpfH5{LsMJ8Nl+8McF24lI1Yuro^#&U6;eIFSdc{?H%HcJXz
zZ8*`@aw-3weyJhzBgSXR%_sgzIz}*Or5of)H`ediYoHot716~|_5IJqO%|$QyVkb7
z(&^eIqvtt+G0r`%-@KFT+-Q
z+k5v}rT_dX-s4{o%sZiY=N*BDxgRGMK2v5kO?Y-7l~w+Qja_{7XKCM$#lIijJlPO(
zh{u}6?ppKR8{9U$ul_PhWnMRY%JeI8L5#zKzflYanKJHGC`UN(50M9)z4*}
HQ$iB}Ce97i
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/meta.json
new file mode 100644
index 0000000000..b11726cf73
--- /dev/null
+++ b/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/meta.json
@@ -0,0 +1,74 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from vgstation13 at https://github.com/vgstation-coders/vgstation13/blob/9bd459b27c73575fd5e3bf2efea13b816d0ac7c8/icons/mob/animal.dmi",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "hivelord",
+ "delays": [
+ [
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5
+ ]
+ ]
+ },
+ {
+ "name": "hivelord_nocore",
+ "delays": [
+ [
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5
+ ]
+ ]
+ },
+ {
+ "name": "hivelord_alert",
+ "delays": [
+ [
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5
+ ]
+ ]
+ },
+ {
+ "name": "hivelord_alert_nocore",
+ "delays": [
+ [
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5
+ ]
+ ]
+ },
+ {
+ "name": "hivelord_dead"
+ },
+ {
+ "name": "hivelord_dead_nocore"
+ },
+ {
+ "name": "hivelordbrood",
+ "delays": [
+ [
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5,
+ 0.5
+ ]
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Resources/Textures/Objects/Consumable/Food/rorocore.rsi/boiled.png b/Resources/Textures/Objects/Consumable/Food/rorocore.rsi/boiled.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a1d0c92dc187279c1c577eabde66e18fa7b51d2
GIT binary patch
literal 295
zcmV+?0oeYDP)Px#;Ymb6R9J=Wle=mHK@^6+CCP*(hA2z0FbGbS)Px$1xZ9fR9J=Wle+;M$yQk`nZtKEm5=IlK&4Z9AOL#n+psE=U
zjU1=4$n>j8IRKVS1!)kHOfy!NE#mi#_00_cuFE0!YVvad=G_C7O7W6Elgy^vjQVW3
z9-g&I+>VStqR|tiK}a|pU^_OqYD}&R@?y++dI`;6+5+3L0myYh+>U^+8P72ie#hPm
df*=Tgjt`G$aP*MDxu5_5002ovPDHLkV1nF5md^kH
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Objects/Consumable/Food/rorocore.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/rorocore.rsi/meta.json
new file mode 100644
index 0000000000..84b5983a1c
--- /dev/null
+++ b/Resources/Textures/Objects/Consumable/Food/rorocore.rsi/meta.json
@@ -0,0 +1,17 @@
+{
+ "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": "icon"
+ },
+ {
+ "name": "boiled"
+ }
+ ]
+}