mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-20 12:29:23 +01:00
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:
@@ -2,46 +2,55 @@
|
||||
gender = MALE
|
||||
accent = ACCENT_CETI
|
||||
blocks_emissive = EMISSIVE_BLOCK_UNIQUE
|
||||
var/datum/species/species //Contains icon generation and language information, set during New().
|
||||
//stomach contents redefined at mob/living level, removed from here
|
||||
|
||||
var/analgesic = 0 // when this is set, the mob isn't affected by shock or pain
|
||||
// life should decrease this by 1 every tick
|
||||
// total amount of wounds on mob, used to spread out healing and the like over all wounds
|
||||
/// Contains icon generation and language information, set during New().
|
||||
var/datum/species/species
|
||||
/// When this is set, the mob isn't affected by shock or pain.
|
||||
var/analgesic = 0
|
||||
/// life should decrease this by 1 every tick (??? -batra)
|
||||
/// total amount of wounds on mob, used to spread out healing and the like over all wounds (??? -batra)
|
||||
var/number_wounds = 0
|
||||
var/obj/item/handcuffed = null //Whether or not the mob is handcuffed
|
||||
var/obj/item/legcuffed = null //Same as handcuffs but for legs. Bear traps use this.
|
||||
//Surgery info
|
||||
/// Whether or not the mob is handcuffed.
|
||||
var/obj/item/handcuffed = null
|
||||
/// Same as handcuffs but for legs. Bear traps use this.
|
||||
var/obj/item/legcuffed = null
|
||||
/// Surgery info
|
||||
var/datum/surgery_status/op_stage = new/datum/surgery_status
|
||||
//Active emote/pose
|
||||
/// Active emote/pose
|
||||
var/pose = null
|
||||
var/list/chem_effects = list()
|
||||
var/list/chem_doses = list()
|
||||
/// For keeping count of misc values (amount of damage, number of ticks, etc)
|
||||
/// For keeping count of misc values (amount of damage, number of ticks, etc).
|
||||
var/list/chem_tracking = list()
|
||||
var/intoxication = 0//Units of alcohol in their system
|
||||
var/datum/reagents/metabolism/bloodstr = null
|
||||
var/datum/reagents/metabolism/touching = null
|
||||
var/datum/reagents/metabolism/breathing = null
|
||||
|
||||
//these two help govern taste. The first is the last time a taste message was shown to the plaer.
|
||||
//the second is the message in question.
|
||||
/// These two help govern taste. The first is the last time a taste message was shown to the player.
|
||||
/// The second is the message in question.
|
||||
var/last_taste_time = 0
|
||||
var/last_taste_text = ""
|
||||
|
||||
var/last_smell_time = 0
|
||||
var/last_smell_text = ""
|
||||
|
||||
var/coughedtime = null // should only be useful for carbons as the only thing using it has a carbon arg.
|
||||
/// Should only be useful for carbons as the only thing using it has a carbon arg.
|
||||
var/coughedtime = null
|
||||
|
||||
var/willfully_sleeping = FALSE
|
||||
var/consume_nutrition_from_air = FALSE // used by Diona
|
||||
/// Used by Diona.
|
||||
var/consume_nutrition_from_air = FALSE
|
||||
|
||||
var/help_up_offer = 0 //if they have their hand out to offer someone up from the ground.
|
||||
/// If they have their hand out to offer someone up from the ground.
|
||||
var/help_up_offer = 0
|
||||
|
||||
var/list/organs_by_name = list() // map organ names to organs
|
||||
var/list/internal_organs_by_name = list() // so internal organs have less ickiness too
|
||||
/// Map organ names to organs.
|
||||
var/list/organs_by_name = list()
|
||||
/// So internal organs have less ickiness too.
|
||||
var/list/internal_organs_by_name = list()
|
||||
|
||||
var/list/stasis_sources = list()
|
||||
var/stasis_value
|
||||
var/pain_immune = FALSE //for special cases where something permanently removes a mob's ability to feel pain
|
||||
/// For special cases where something permanently removes a mob's ability to feel pain.
|
||||
var/pain_immune = FALSE
|
||||
|
||||
|
||||
@@ -172,7 +172,7 @@
|
||||
|
||||
spark(src, 5)
|
||||
|
||||
//Handles chem traces
|
||||
/// Handles chem traces
|
||||
/mob/living/carbon/human/proc/handle_trace_chems()
|
||||
//New are added for reagents to random organs.
|
||||
for(var/_A in reagents.reagent_volumes)
|
||||
|
||||
@@ -64,9 +64,9 @@
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 10
|
||||
armor_penetration = 20
|
||||
venom_per_bite = 10
|
||||
venom_per_bite = 4
|
||||
var/atom/cocoon_target
|
||||
venom_type = /singleton/reagent/soporific
|
||||
venom_type = /singleton/reagent/toxin/greimorian_eggs
|
||||
var/fed = 0
|
||||
sample_data = list("Genetic markers identified as being linked with stem cell differentiaton", "Cellular structures indicative of high offspring production")
|
||||
|
||||
@@ -82,9 +82,9 @@
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 20
|
||||
armor_penetration = 30
|
||||
venom_per_bite = 10
|
||||
venom_per_bite = 1
|
||||
speed = -2
|
||||
venom_type = /singleton/reagent/soporific
|
||||
venom_type = /singleton/reagent/toxin/greimorian_eggs
|
||||
fed = 1
|
||||
var/playable = TRUE
|
||||
sample_data = list("Genetic markers identified as being linked with stem cell differentiaton", "Cellular structures indicative of high offspring production", "Tissue sample contains high neural cell content")
|
||||
@@ -190,16 +190,17 @@
|
||||
for(var/armor in armors)
|
||||
var/datum/component/armor/armor_datum = armor
|
||||
inject_probability -= armor_datum.armor_values[MELEE] * 1.8
|
||||
if(prob(inject_probability))
|
||||
if(prob(inject_probability) && !BP_IS_ROBOTIC(limb))
|
||||
to_chat(target, SPAN_WARNING("You feel a tiny prick."))
|
||||
target.reagents.add_reagent(venom_type, venom_per_bite)
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/nurse/on_attack_mob(var/mob/hit_mob, var/obj/item/organ/external/limb)
|
||||
/mob/living/simple_animal/hostile/giant_spider/nurse/on_attack_mob(var/mob/living/carbon/human/hit_mob, var/obj/item/organ/external/limb)
|
||||
. = ..()
|
||||
if(ishuman(hit_mob) && istype(limb) && !BP_IS_ROBOTIC(limb) && prob(venom_per_bite))
|
||||
var/eggs = new /obj/effect/spider/eggcluster(limb, src)
|
||||
limb.implants += eggs
|
||||
to_chat(hit_mob, SPAN_WARNING("\The [src] injects something into your [limb.name]!"))
|
||||
if(istype(limb))
|
||||
if(BP_IS_ROBOTIC(limb))
|
||||
to_chat(hit_mob, SPAN_WARNING("\The [src] tries to inject something into your [limb.name], but fortunately it finds no living flesh!"))
|
||||
else
|
||||
to_chat(hit_mob, SPAN_WARNING("\The [src] injects something into your [limb.name]!"))
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/emp/on_attack_mob(var/mob/hit_mob, var/obj/item/organ/external/limb)
|
||||
. = ..()
|
||||
|
||||
@@ -854,11 +854,11 @@
|
||||
if(transforming) return 0
|
||||
return 1
|
||||
|
||||
// Not sure what to call this. Used to check if humans are wearing an AI-controlled exosuit and hence don't need to fall over yet.
|
||||
/// Not sure what to call this. Used to check if humans are wearing an AI-controlled exosuit and hence don't need to fall over yet.
|
||||
/mob/proc/can_stand_overridden()
|
||||
return 0
|
||||
|
||||
//Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it.
|
||||
/// Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it.
|
||||
/mob/proc/update_canmove()
|
||||
if(in_neck_grab())
|
||||
lying = FALSE
|
||||
@@ -976,7 +976,7 @@
|
||||
return facedir(client.client_dir(SOUTH))
|
||||
|
||||
|
||||
//This might need a rename but it should replace the can this mob use things check
|
||||
/// This might need a rename but it should replace the can this mob use things check
|
||||
/mob/proc/IsAdvancedToolUser()
|
||||
return 0
|
||||
|
||||
|
||||
Reference in New Issue
Block a user