Greimorian Egg Cluster Implantation Refactor (#21554)

Fixes https://github.com/Aurorastation/Aurora.3/issues/21509

**Summary:**
Cleans up a lot of old Greimorian egg implantation code- rewrote the
actual worker injection behavior to use the organ/internal/parasite code
we have, instead of creating effects with their loc set to the organ
itself.

This largely means that not only is Greimorian implantation able to be
treated pharmaceutically (as you'd expect, with them being parasitic and
medicine including antiparasitics), but it also means that 'greimorian
eggs' also get the same treatment as nerve flukes, etc. That is to say,
antags can now purchase Greimorian Clade Kits from the uplink and inject
people or monkeys with them to cause Unhappy Tidings.

This code is also fairly easy to modify, if one wanted to create more
implantable parasites that burst out of people, unrelated to
Greimorians.

**Changes:**
- refactor: "Refactors the egg injection of Greimorian Workers to use
parasite code; it can now be treated with anti-parasitic medicines in
addition to amputation of the affected limb. Works on all playable
species, and monkeys."
- rscadd: "New reagent 'Greimorian Eggs' creates an egg cluster parasite
in a random organ when metabolized in the bloodstream. It also has very
mild soporific effects."
- balance: "Greimorian Workers and playable Greimorian Servants/Queen
now inject Greimorian Eggs instead of Soporific."
- rscadd: "Greimorian Clade Kit now available in Uplink under Bioweapons
section (Greimorians now able to be introduced to ship by egg cluster or
injectable reagent)."
- balance: "All parasite kit bioweapons have had their vial reagent
count increased from 2 -> 5."
- balance: "Helmizole no longer treats K'ois Mycosis, Black K'ois
Mycosis, Zombification, or Tumors (Benign or Malignant)."
  - code_imp: "Updates a lot of code documentation to dmdocs."
This commit is contained in:
Batrachophreno
2025-12-02 05:53:54 -05:00
committed by GitHub
parent a2237973f2
commit db452842bf
20 changed files with 376 additions and 176 deletions
+16 -9
View File
@@ -2,23 +2,29 @@
INTERNAL ORGANS DEFINES
****************************************************/
/obj/item/organ/internal
var/dead_icon // Icon to use when the organ has died.
var/damage_reduction = 0.5 //modifier for internal organ injury
var/unknown_pain_location = TRUE // if TRUE, pain messages will point to the parent organ, otherwise it will print the organ name
/// Icon to use when the organ has died.
var/dead_icon
/// Modifier for internal organ injury.
var/damage_reduction = 0.5
/// If TRUE, pain messages will point to the parent organ, otherwise it will print the organ name.
var/unknown_pain_location = TRUE
var/toxin_type = "undefined"
var/relative_size = 25 //Used for size calcs
/// The icon state to overlay on the mob
/// Used for size calcs.
var/relative_size = 25
/// The icon state to overlay on the mob.
var/on_mob_icon
/// If the icon state has an active overlay
/// If the icon state has an active overlay.
var/active_overlay = FALSE
/// If the icon state has an active emissive overlay
/// If the icon state has an active emissive overlay.
var/active_emissive = FALSE
var/list/possible_modifications = list("Normal","Assisted","Mechanical") //this is used in the character setup
/// Used in character setup.
var/list/possible_modifications = list("Normal","Assisted","Mechanical")
/// The amount all organs heal themselves by per second when not being affected by chems.
var/organ_self_heal_per_second = 0.2
min_broken_damage = 10 //Internal organs are frail, man.
/// Internal organs are frail, man.
min_broken_damage = 10
/obj/item/organ/internal/Destroy()
if(owner)
@@ -31,6 +37,7 @@
if(istype(E)) E.internal_organs -= src
return ..()
/// Sets the internal organ as belonging to the targeted external organ, and matches the target's species/robotness. Also updates all organ lists belonging to the owner.
/obj/item/organ/internal/replaced(var/mob/living/carbon/human/target, var/obj/item/organ/external/affected)
if(!istype(target))
return 0