Files
CRUNCH 7e09585464 Gives Most High-Risk Items Extended Descriptions (#25630)
* LORE!

* MORE LORE!

* Update code/modules/hydroponics/gene_modder.dm

Co-authored-by: 1080pCat <96908085+1080pCat@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* Update krav_maga.dm

* Update code/game/objects/items/weapons/cards_ids.dm

Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* Update nuclearbomb.dm

* Apply suggestions from code review

Co-authored-by: Sheep <46016730+Scribble-Sheep@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* NAD

* Update teleportation.dm

* Update armor_suits.dm

* Fixing some minor typos for cyborg upgrade flavour text

Throws in some missing apostrophes, capitalisation, and the letter "s."

* Briefcase Full of Cash buff

Increases the amount of cash in the Syndicate Briefcase Full of Cash from 600 Cr to 1000 Cr

* Reverts double-feature PR

* Reverts a broken revert

* Reverting again because Ebba told me to

* And reverting yet again

* Update robot_upgrades.dm

* Apply suggestions from code review

Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* Update documents.dm

* Update magboots.dm

* very minor edits.

* Apply suggestions from code review

Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* update

* Update armor_suits.dm

* Apply suggestions from code review

Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* format

* Update code/modules/hydroponics/gene_modder.dm

Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* Update defib.dm

* Update armor_suits.dm

* Apply suggestions from code review

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

---------

Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>
Co-authored-by: 1080pCat <96908085+1080pCat@users.noreply.github.com>
Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
Co-authored-by: Sheep <46016730+Scribble-Sheep@users.noreply.github.com>
Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>
Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
2024-08-04 08:05:38 +00:00

303 lines
14 KiB
Plaintext

//////////////////////////////
/// MARK: HYPOSPRAY
//////////////////////////////
/obj/item/reagent_containers/hypospray
name = "hypospray"
desc = "The DeForest Medical Corporation hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients."
icon = 'icons/obj/hypo.dmi'
item_state = "hypo"
icon_state = "hypo"
belt_icon = "hypospray"
amount_per_transfer_from_this = 5
volume = 30
possible_transfer_amounts = list(1,2,3,4,5,10,15,20,25,30)
resistance_flags = ACID_PROOF
container_type = OPENCONTAINER
slot_flags = SLOT_FLAG_BELT
/// If TRUE, the hypospray can inject through most hardsuits/modsuits.
var/can_pierce_hardsuits = FALSE
/// If TRUE, the hypospray isn't blocked by suits with TRAIT_HYPOSPRAY_IMMUNE.
var/ignore_hypospray_immunity = FALSE
/// If TRUE, the hypospray will reject any chemicals not on the safe_chem_list.
var/safety_hypo = FALSE
// List of SOSHA-approved medicines.
/// List of reagents that are allowed to go into a hypospray with active safeties.
var/static/list/safe_chem_list = list("antihol", "charcoal", "epinephrine", "insulin", "teporone", "salbutamol", "omnizine",
"weak_omnizine", "godblood", "potass_iodide", "oculine", "mannitol", "spaceacillin", "salglu_solution",
"sal_acid", "cryoxadone", "sugar", "hydrocodone", "mitocholide", "rezadone", "menthol",
"mutadone", "sanguine_reagent", "iron", "ephedrine", "heparin", "corazone", "sodiumchloride",
"lavaland_extract", "synaptizine", "bicaridine", "kelotane")
/obj/item/reagent_containers/hypospray/proc/apply(mob/living/M, mob/user)
if(!reagents.total_volume)
to_chat(user, "<span class='warning'>[src] is empty!</span>")
return
if(!iscarbon(M))
return
var/mob/living/carbon/human/H = M
if(H.wear_suit)
if(HAS_TRAIT(H.wear_suit, TRAIT_HYPOSPRAY_IMMUNE) && !ignore_hypospray_immunity) // This check is here entirely to stop goobers injecting nukies with meme chems
to_chat(user, "<span class='warning'>[src] is unable to penetrate the armour of [M] or interface with any injection ports.</span>")
return
if(reagents.total_volume && (can_pierce_hardsuits || M.can_inject(user, TRUE))) // can_pierce_hardsuits should be checked first or there will be an error message.
to_chat(M, "<span class='warning'>You feel a tiny prick!</span>")
to_chat(user, "<span class='notice'>You inject [M] with [src].</span>")
if(M.reagents)
var/list/injected = list()
for(var/datum/reagent/R in reagents.reagent_list)
injected += R.name
var/primary_reagent_name = reagents.get_master_reagent_name()
var/trans = reagents.trans_to(M, amount_per_transfer_from_this)
if(safety_hypo)
visible_message("<span class='warning'>[user] injects [M] with [trans] units of [primary_reagent_name].</span>")
playsound(loc, 'sound/goonstation/items/hypo.ogg', 80, 0)
to_chat(user, "<span class='notice'>[trans] unit\s injected. [reagents.total_volume] unit\s remaining in [src].</span>")
var/contained = english_list(injected)
add_attack_logs(user, M, "Injected with [src] containing ([contained])", reagents.harmless_helper() ? ATKLOG_ALMOSTALL : null)
reagents.reaction(M, REAGENT_INGEST, 0.1)
return TRUE
/obj/item/reagent_containers/hypospray/attack(mob/living/M, mob/user)
return apply(M, user)
/obj/item/reagent_containers/hypospray/attack_self(mob/user)
return apply(user, user)
/obj/item/reagent_containers/hypospray/attackby(obj/item/I, mob/user, params)
if(is_pen(I))
rename_interactive(user, I, use_prefix = TRUE, prompt = "Give [src] a title.")
return TRUE
return ..()
/obj/item/reagent_containers/hypospray/examine(mob/user)
. = ..()
if(Adjacent(user))
. += "<span class='notice'>You can use a pen to add a label to [src].</span>"
/obj/item/reagent_containers/hypospray/on_reagent_change()
if(safety_hypo && !emagged)
var/found_forbidden_reagent = FALSE
for(var/datum/reagent/R in reagents.reagent_list)
if(!safe_chem_list.Find(R.id))
reagents.del_reagent(R.id)
found_forbidden_reagent = TRUE
if(found_forbidden_reagent)
if(ismob(loc))
to_chat(loc, "<span class='warning'>[src] identifies and removes a harmful substance.</span>")
else
visible_message("<span class='warning'>[src] identifies and removes a harmful substance.</span>")
/obj/item/reagent_containers/hypospray/emag_act(mob/user)
if(safety_hypo && !emagged)
emagged = TRUE
can_pierce_hardsuits = TRUE
to_chat(user, "<span class='warning'>You short out the safeties on [src].</span>")
return TRUE
//////////////////////////////
// MARK: HYPO VARIANTS
//////////////////////////////
/obj/item/reagent_containers/hypospray/safety
name = "medical hypospray"
desc = "A general use medical hypospray for quick injection of chemicals. There is a safety button by the trigger."
icon_state = "medivend_hypo"
safety_hypo = TRUE
/obj/item/reagent_containers/hypospray/safety/ert
name = "medical hypospray (Omnizine)"
icon_state = "ert_hypo"
list_reagents = list("omnizine" = 30)
/obj/item/reagent_containers/hypospray/combat
name = "combat stimulant injector"
desc = "A modified air-needle autoinjector, used by support operatives to quickly heal injuries in combat. It has a proprietary adapter allowing it to inject through the ports of Syndicate-made hardsuits."
amount_per_transfer_from_this = 15
possible_transfer_amounts = list(5, 10, 15, 20, 25, 30)
icon_state = "combat_hypo"
volume = 90
can_pierce_hardsuits = TRUE // So they can heal their comrades.
ignore_hypospray_immunity = TRUE
list_reagents = list("epinephrine" = 30, "weak_omnizine" = 30, "salglu_solution" = 30)
/obj/item/reagent_containers/hypospray/combat/nanites
desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with a cocktail of experimental combat drugs and <b>extremely</b> expensive medical nanomachines. Capable of healing almost any injury in just a few seconds. It can interface with the injection ports on any type of hardsuit."
icon_state = "nanites_hypo"
volume = 100
list_reagents = list("nanites" = 100)
/obj/item/reagent_containers/hypospray/combat/syndicate_nanites
name = "medical nanite injector"
desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with expensive medical nanomachines for rapid field stabilization."
volume = 100
list_reagents = list("syndicate_nanites" = 100)
//////////////////////////////
// MARK: CMO HYPO
//////////////////////////////
/obj/item/reagent_containers/hypospray/CMO
name = "advanced hypospray"
desc = "Nanotrasen's own, reverse-engineered and improved version of DeForest's hypospray."
list_reagents = list("omnizine" = 30)
volume = 100
can_pierce_hardsuits = TRUE
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
/obj/item/reagent_containers/hypospray/CMO/Initialize(mapload)
. = ..()
RegisterSignal(src, COMSIG_PARENT_QDELETING, PROC_REF(alert_admins_on_destroy))
/obj/item/reagent_containers/hypospray/CMO/examine_more(mob/user)
. = ..()
. += "The DeForest Medical Corporation's hypospray is a highly successful medical device currently under patent protection. Naturally, this has not stopped Nanotrasen from taking the design and tinkering with it."
. += ""
. += "Nanotrasen's version sports a chemical reserviour over 3 times the size. The injector head is able to produce such a fine high-pressure stream that it can pierce through most armour, this \
pressurised jet is automatically adjusted to ensure no harm comes to patients with thinner or absent clothing. \
It is also able to interface with the autoinjector ports found on mordern hardsuits. As this is a prototype, it currently lacks safety features to prevent harmful chemicals being added."
. += ""
. += "These hyposprays are mostly kept under lock and key (with some being distributed to NT's CMOs on some stations), waiting for the exact moment that the patent protection on DeForest's design expires."
//////////////////////////////
// MARK: AUTOINJECTOR
//////////////////////////////
/obj/item/reagent_containers/hypospray/autoinjector
name = "empty autoinjector"
desc = "A rapid and safe way to inject chemicals into humanoids. This one is empty."
icon_state = "autoinjector"
item_state = "autoinjector"
belt_icon = "autoinjector"
amount_per_transfer_from_this = 10
possible_transfer_amounts = null
volume = 10
can_pierce_hardsuits = TRUE //so you can medipen through hardsuits
ignore_hypospray_immunity = TRUE
container_type = DRAWABLE
flags = null
/obj/item/reagent_containers/hypospray/autoinjector/attack(mob/M, mob/user)
if(!reagents.total_volume)
to_chat(user, "<span class='warning'>[src] is empty!</span>")
return
..()
update_icon(UPDATE_ICON_STATE)
return TRUE
/obj/item/reagent_containers/hypospray/autoinjector/attack_self(mob/user)
..()
update_icon(UPDATE_ICON_STATE)
return TRUE
/obj/item/reagent_containers/hypospray/autoinjector/update_icon_state()
if(reagents.total_volume > 0)
icon_state = initial(icon_state)
else
icon_state = "[initial(icon_state)]0"
/obj/item/reagent_containers/hypospray/autoinjector/examine()
. = ..()
if(reagents && length(reagents.reagent_list))
. += "<span class='notice'>It is currently loaded.</span>"
else
. += "<span class='notice'>It is spent.</span>"
/obj/item/reagent_containers/hypospray/autoinjector/epinephrine
name = "emergency autoinjector"
desc = "A rapid and safe way to stabilize patients in critical condition for personnel without advanced medical knowledge."
list_reagents = list("epinephrine" = 10)
/// basilisks
/obj/item/reagent_containers/hypospray/autoinjector/teporone
name = "teporone autoinjector"
desc = "A rapid way to regulate your body's temperature in the event of a hardsuit malfunction."
icon_state = "lepopen"
list_reagents = list("teporone" = 10)
/// goliath kiting
/obj/item/reagent_containers/hypospray/autoinjector/stimpack
name = "stimpack autoinjector"
desc = "A rapid way to stimulate your body's adrenaline, allowing for freer movement in restrictive armor."
icon_state = "stimpen"
volume = 20
amount_per_transfer_from_this = 20
list_reagents = list("methamphetamine" = 10, "coffee" = 10)
/obj/item/reagent_containers/hypospray/autoinjector/stimulants
name = "Stimulants autoinjector"
desc = "Rapidly stimulates and regenerates the body's organ system."
icon_state = "stimulantspen"
amount_per_transfer_from_this = 50
volume = 50
list_reagents = list("stimulants" = 50)
/obj/item/reagent_containers/hypospray/autoinjector/survival
name = "survival medipen"
desc = "A medipen for surviving in the harshest of environments, heals and protects from environmental hazards. <br><span class='boldwarning'>WARNING: Do not inject more than one pen in quick succession.</span>"
icon_state = "survpen"
volume = 42
amount_per_transfer_from_this = 42
list_reagents = list("salbutamol" = 10, "teporone" = 15, "epinephrine" = 10, "lavaland_extract" = 2, "weak_omnizine" = 5)
/obj/item/reagent_containers/hypospray/autoinjector/emergency_nuclear
name = "emergency stabilization medipen"
desc = "A fast acting life-saving emergency autoinjector. Effective in combat situations, made by the syndicate for the syndicate."
icon_state = "stimpen"
volume = 12
amount_per_transfer_from_this = 12
list_reagents = list("perfluorodecalin" = 3, "teporone" = 3, "atropine" = 3, "mannitol" = 3)
/obj/item/reagent_containers/hypospray/autoinjector/nanocalcium
name = "protoype nanite autoinjector"
desc = "A highly experimental prototype chemical designed to fully mend limbs and organs of soldiers in the field, shuts down body systems whilst aiding in repair.<br><span class='boldwarning'>WARNING: Side effects can cause temporary paralysis, loss of co-ordination and sickness. Do not use with any kind of stimulant or drugs. Serious damage can occur!</span>"
icon_state = "bonepen"
amount_per_transfer_from_this = 40
volume = 40
list_reagents = list("nanocalcium" = 30, "epinephrine" = 10)
/obj/item/reagent_containers/hypospray/autoinjector/nanocalcium/attack(mob/living/M, mob/user)
if(..())
playsound(loc, 'sound/weapons/smg_empty_alarm.ogg', 20, 1)
/obj/item/reagent_containers/hypospray/autoinjector/zombiecure
name = "\improper Anti-Plague Sequence Alpha autoinjector"
desc = "A small autoinjector containing 15 units of Anti-Plague Sequence Alpha. Prevents infection, cures level 1 infection."
icon_state = "zombiepen"
amount_per_transfer_from_this = 15
volume = 15
container_type = null //No sucking out the reagent
list_reagents = list("zombiecure1" = 15)
/obj/item/reagent_containers/hypospray/autoinjector/zombiecure/attack(mob/living/M, mob/user)
if(..())
playsound(loc, 'sound/weapons/smg_empty_alarm.ogg', 20, TRUE) //Sucker for sounds, also gets zombies attention.
/obj/item/reagent_containers/hypospray/autoinjector/zombiecure/zombiecure2
name = "\improper Anti-Plague Sequence Beta autoinjector"
desc = "A small autoinjector containing 15 units of Anti-Plague Sequence Beta. Weakens zombies, heals low infections."
list_reagents = list("zombiecure2" = 15)
/obj/item/reagent_containers/hypospray/autoinjector/zombiecure/zombiecure3
name = "\improper Anti-Plague Sequence Gamma autoinjector"
desc = "A small autoinjector containing 15 units of Anti-Plague Sequence Gamma. Lowers zombies healing. Heals stage 5 and slows stage 6 infections."
list_reagents = list("zombiecure3" = 15)
/obj/item/reagent_containers/hypospray/autoinjector/zombiecure/zombiecure4
name = "\improper Anti-Plague Sequence Omega autoinjector"
desc = "A small autoinjector containing 15 units of Anti-Plague Sequence Omega. Cures all cases of the Necrotizing Plague. Also heals dead limbs."
list_reagents = list("zombiecure4" = 15)
/obj/item/reagent_containers/hypospray/autoinjector/hyper_medipen
name = "suspicious medipen"
desc = "A cheap-looking medipen containing what seems to be a mix of nearly every medicine stored in the recently raided Nanotrasen warehouse."
icon_state = "hyperpen"
amount_per_transfer_from_this = 37
volume = 37
list_reagents = list("salglu_solution" = 3, "synthflesh" = 4, "omnizine" = 3, "weak_omnizine" = 3, "perfluorodecalin" = 2, "sal_acid" = 1, "bicaridine" = 4, "kelotane" = 4, "epinephrine" = 5, "lavaland_extract" = 2, "rezadone" = 1, "teporone" = 2, "menthol" = 1, "vitamin" = 2)