Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Aid resprite & heavy redpill dosage #27

Merged
merged 33 commits into from
Apr 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
8bd10cd
huds added
MrCastmer Feb 22, 2024
2e409e9
Merge branch 'master' into hud
MrCastmer Feb 22, 2024
362445a
huds edit
MrCastmer Feb 22, 2024
7214d0c
Update hud.dmi
MrCastmer Feb 22, 2024
e344c19
Merge pull request #2 from MrCastmer/hud
MrCastmer Feb 26, 2024
89e2820
medical aid resprite
MrCastmer Feb 26, 2024
72b9856
Merge branch 'master' into aid_resprite
MrCastmer Feb 26, 2024
14ae6bd
Update medical.dm
MrCastmer Feb 26, 2024
a1af5e2
Update medical.dm
MrCastmer Feb 26, 2024
eaf0bbc
Update medical.dm
MrCastmer Feb 26, 2024
6d59ef0
Merge branch 'aid_resprite' of https://github.com/MrCastmer/Dripstati…
MrCastmer Feb 26, 2024
e983cf4
Merge branch 'aid_resprite' of https://github.com/MrCastmer/Dripstati…
MrCastmer Feb 26, 2024
6c437fb
aid resprite
MrCastmer Feb 26, 2024
8b40b3e
Merge branch 'master' into aid_resprite
MrCastmer Feb 28, 2024
f1080ec
syringe resprite + new stim for nuke
MrCastmer Feb 28, 2024
78c771f
red pill
MrCastmer Feb 28, 2024
0097814
lint fix
MrCastmer Feb 28, 2024
1f2e15c
lint fix x2
MrCastmer Feb 28, 2024
5ca0ab8
red pilling code
MrCastmer Feb 28, 2024
82a0fa0
hypoboxes & sindieaid box sprites
MrCastmer Feb 29, 2024
76f8ab1
hypospray sprite update & minor tweak
MrCastmer Feb 29, 2024
996f140
Merge branch 'master' into aid_resprite
MrCastmer Feb 29, 2024
fc1bd8a
hypo
MrCastmer Feb 29, 2024
1cd3498
nanites update
MrCastmer Feb 29, 2024
3f348c0
the f
MrCastmer Feb 29, 2024
adeae4c
Revert "the f"
MrCastmer Feb 29, 2024
cba6a71
Merge branch 'master' into aid_resprite
MrCastmer Mar 10, 2024
863b7cb
Update storage.dmi
MrCastmer Mar 11, 2024
623e867
Update storage.dmi
MrCastmer Mar 30, 2024
fd62137
Merge branch 'master' into aid_resprite
MrCastmer Mar 30, 2024
7aee42a
Update storage.dmi
MrCastmer Mar 30, 2024
0e4ff9e
Update autoinjector.dm
MrCastmer Apr 5, 2024
1e03b08
Update autoinjector.dm
MrCastmer Apr 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion code/modules/mob/living/carbon/human/examine.dm
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@
SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "religious_comfort", /datum/mood_event/religiously_comforted)

if(stat == UNCONSCIOUS)
msg += "[t_He] [t_is]n't responding to anything around [t_him] and seem[p_s()] to be asleep.\n"
msg += "[t_He] [t_is]n't responding to anything around [t_him] and seem[p_s()] to be unconscious.\n" //dripstation edit
else
if(HAS_TRAIT(src, TRAIT_DUMB))
msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n"
Expand Down
2 changes: 2 additions & 0 deletions code/modules/reagents/reagent_containers/borghypo.dm
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,10 @@
#define HACKED_CLOWN_REAGENTS list(\
/datum/reagent/consumable/superlaughter\
)
//dripstation edit, new coagulant nanites to syndiborg
#define BASE_SYNDICATE_REAGENTS list(\
/datum/reagent/medicine/syndicate_nanites,\
/datum/reagent/medicine/coagulant/blood_restoring_nanites,\
/datum/reagent/medicine/potass_iodide,\
/datum/reagent/medicine/morphine\
)
Expand Down
118 changes: 118 additions & 0 deletions modular_dripstation/code/datums/reagent/restore_nanites.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
/datum/reagent/medicine/syndicate_nanites //Used exclusively by Syndicate medical cyborgs
name = "Restorative Nanite Serum"

/datum/reagent/medicine/coagulant/blood_restoring_nanites
name = "Blood Regeneration Nanite Serum"
description = "A serum of nanites capable of coagulant wounds and restore blood volume to safe levels."
taste_description = "a bunch of tiny robots"
can_synth = FALSE
clot_rate = 0.5
passive_bleed_modifier = 0.5
reagent_state = SOLID
color = "#555555"
overdose_threshold = 30

/datum/reagent/medicine/coagulant/blood_restoring_nanites/on_mob_life(mob/living/carbon/M)
if(M.blood_volume < BLOOD_VOLUME_SAFE(M))
M.blood_volume += 2

/datum/reagent/medicine/coagulant/blood_restoring_nanites/overdose_process(mob/living/carbon/M) //wtb flavortext messages that hint that you're vomitting up robots
if(prob(25))
M.reagents.remove_reagent(type, metabolization_rate*15) // ~5 units at a rate of 0.4 but i wanted a nice number in code
M.vomit(20) // nanite safety protocols make your body expel them to prevent harmies
..()
. = 1

/datum/reagent/medicine/bone_restoring_nanites
name = "Bone Restoration Nanite Serum"
description = "A serum of nanites capable of coagulant wounds and restore blood volume to safe levels."
taste_description = "a bunch of tiny robots"
can_synth = FALSE
reagent_state = SOLID
color = "#555555"
overdose_threshold = 30

/datum/reagent/medicine/bone_restoring_nanites/on_mob_life(mob/living/carbon/C)
for(var/X in C.bodyparts)
var/obj/item/bodypart/BP = X
if(BP.get_wound_type(/datum/wound/blunt) && prob(20))
var/datum/wound/blunt/W = BP.get_wound_type(/datum/wound/blunt)
C.emote("scream")
playsound(C, 'sound/surgery/bone3.ogg', 35)
if(W.severity >= WOUND_SEVERITY_SEVERE)
var/painkiller_bonus = 0
if(C.get_drunk_amount() > 10)
painkiller_bonus += 10
if(C.reagents?.has_reagent(/datum/reagent/medicine/morphine))
painkiller_bonus += 20
if((C.stat && C.stat == UNCONSCIOUS))
painkiller_bonus += 20
if(C.reagents?.has_reagent(/datum/reagent/determination))
painkiller_bonus += 10

if(prob(35 + (20 * (W.severity - 1)) - painkiller_bonus)) // 35%/55% chance to cause shock with severe and critical wounds, modded by painkillers
C.visible_message(span_danger("[C] passing out from the pain!"), span_notice("You black out from the pain while nanites restore your bone!"))
C.AdjustUnconscious(12 SECONDS)
W.remove_wound()

/datum/reagent/medicine/bone_restoring_nanites/overdose_process(mob/living/carbon/M) //wtb flavortext messages that hint that you're vomitting up robots
if(prob(25))
M.reagents.remove_reagent(type, metabolization_rate*15) // ~5 units at a rate of 0.4 but i wanted a nice number in code
M.vomit(20) // nanite safety protocols make your body expel them to prevent harmies
..()
. = 1

/datum/reagent/medicine/cellular_restoring_nanites
name = "Сellular Regenerator Nanite Serum"
description = "A serum of nanites capable of regenerate limbs, remove scars and treat wounds."
taste_description = "a bunch of tiny robots"
can_synth = FALSE
reagent_state = SOLID
color = "#555555"
overdose_threshold = 30

/datum/reagent/medicine/cellular_restoring_nanites/on_mob_life(mob/living/carbon/M)
M.adjustCloneLoss(-2)
M.heal_bodypart_damage(2,2)
M.set_eye_blur(0)
M.set_blindness(0)
for(var/organ in M.internal_organs)
var/obj/item/organ/O = organ
if(O.status == ORGAN_ROBOTIC)
continue
O.setOrganDamage(O.damage - (0.1 * O.maxHealth))
for(var/i in M.all_scars)
var/datum/scar/iter_scar = i
if(!iter_scar.fake)
qdel(iter_scar)
if(prob(10))
var/list/missing = M.get_missing_limbs()
if(missing.len)
playsound(M, 'sound/magic/demon_consume.ogg', 50, 1)
M.visible_message("<span class='warning'>[M]'s missing limbs \
reform, making a loud, grotesque sound!</span>",
"<span class='userdanger'>Your limbs regrow, making a \
loud, crunchy sound and giving you great pain!</span>",
"<span class='italics'>You hear organic matter ripping \
and tearing!</span>")
M.emote("scream")
M.adjust_dizzy(3 SECONDS)
M.adjust_jitter(3 SECONDS)
M.adjust_stutter(3 SECONDS)
M.regenerate_limbs(1)
if(prob(10))
for(var/i in M.all_wounds)
var/datum/wound/iter_wound = i
M.adjust_dizzy(3 SECONDS)
M.adjust_jitter(3 SECONDS)
M.adjust_stutter(3 SECONDS)
M.emote("scream")
iter_wound.remove_wound()
return TRUE

/datum/reagent/medicine/cellular_restoring_nanites/overdose_process(mob/living/carbon/M) //wtb flavortext messages that hint that you're vomitting up robots
if(prob(25))
M.reagents.remove_reagent(type, metabolization_rate*15) // ~5 units at a rate of 0.4 but i wanted a nice number in code
M.vomit(20) // nanite safety protocols make your body expel them to prevent harmies
..()
. = 1
8 changes: 8 additions & 0 deletions modular_dripstation/code/game/gamemodes/nuclear/nuclear.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
/datum/outfit/syndicate
id = /obj/item/card/id/syndicate/nuke
backpack_contents = list(/obj/item/storage/box/syndie/nuke=1,\
/obj/item/kitchen/knife/combat/survival)

/datum/outfit/syndicate/leader
gloves = /obj/item/clothing/gloves/combat
Expand All @@ -9,6 +11,12 @@
var/datum/martial_art/cqc/justanop = new
justanop.teach(H)

/datum/outfit/syndicate/full
backpack_contents = list(/obj/item/storage/box/syndie/nuke=1,\
/obj/item/tank/jetpack/oxygen/harness=1,\
/obj/item/gun/ballistic/automatic/pistol=1,\
/obj/item/kitchen/knife/combat/survival)

/datum/outfit/syndicate/no_crystals
var/faction = "The Syndicate"

Expand Down
46 changes: 46 additions & 0 deletions modular_dripstation/code/game/objects/items/stacks/medical.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/obj/item/stack/medical/gauze
icon = 'modular_dripstation/icons/obj/aid.dmi'
max_amount = 6
amount = 6

/obj/item/stack/medical/gauze/twelve
desc = "A roll of elastic cloth, perfect for stabilizing all kinds of wounds, from cuts and burns, to broken bones. Surprisingly there's a lot more packed than there should be."
max_amount = 12
amount = 12

/obj/item/stack/medical/gauze/improvised
icon_state = "improvised_gauze"

/obj/item/stack/medical/bruise_pack
icon = 'modular_dripstation/icons/obj/aid.dmi'

/obj/item/stack/medical/ointment
icon = 'modular_dripstation/icons/obj/aid.dmi'

/obj/item/reagent_containers/medspray
icon = 'modular_dripstation/icons/obj/aid.dmi'

/obj/item/reagent_containers/medspray/Initialize(mapload)
. = ..()
update_appearance(UPDATE_ICON)

/obj/item/reagent_containers/medspray/on_reagent_change(changetype) //When the reagents change, change the icon as well.
update_appearance(UPDATE_ICON)

/obj/item/reagent_containers/medspray/attack_self(mob/user)
. = ..()
update_appearance(UPDATE_ICON)

/obj/item/reagent_containers/medspray/attack(mob/M, mob/user, def_zone)
. = ..()
update_appearance(UPDATE_ICON)

/obj/item/reagent_containers/medspray/update_icon_state()
. = ..()
var/initial_icon = initial(icon_state)
if(!reagents || !reagents.total_volume)
icon_state = "[initial_icon]_empty"
else if(reagents.total_volume == volume)
icon_state = "[initial_icon]_full"
else
icon_state = "[initial_icon]"
7 changes: 7 additions & 0 deletions modular_dripstation/code/game/objects/items/storage/box.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// Syndie survival box
/obj/item/storage/box/syndie/nuke/PopulateContents()
new /obj/item/clothing/mask/gas/syndicate(src)
new /obj/item/reagent_containers/autoinjector/medipen/stimpack/traitor(src)
new /obj/item/reagent_containers/autoinjector/medipen/ekit/traitor(src)
new /obj/item/tank/internals/emergency_oxygen/engi(src)
new /obj/item/extinguisher/mini(src)
94 changes: 94 additions & 0 deletions modular_dripstation/code/modules/reagents/autoinjector.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
/obj/item/dnainjector
icon = 'modular_dripstation/icons/obj/syringe.dmi'
icon_state = "dnainjector"

/obj/item/reagent_containers/autoinjector/combat
icon = 'modular_dripstation/icons/obj/syringe.dmi'
icon_state = "hypo_nt_combat"

/obj/item/reagent_containers/autoinjector/combat/nanites
icon_state = "hypo_nt_quantum"

/obj/item/reagent_containers/autoinjector/combat/healermech
icon_state = "hypo_nt_combat"

/obj/item/reagent_containers/autoinjector/medipen/resurrector
icon = 'modular_dripstation/icons/obj/syringe.dmi'
icon_state = "hypo_nt_combat"

/obj/item/reagent_containers/autoinjector/magillitis
icon = 'modular_dripstation/icons/obj/syringe.dmi'
icon_state = "hypo_vahlen"

/obj/item/reagent_containers/autoinjector/mixi
icon = 'icons/obj/syringe.dmi'
icon_state = "hypo_syndie"

/obj/item/reagent_containers/autoinjector/derm
icon = 'icons/obj/syringe.dmi'
icon_state = "hypo_syndie"

/obj/item/reagent_containers/autoinjector/medipen/stimpack/large
icon = 'modular_dripstation/icons/obj/syringe.dmi'
icon_state = "stimpakpen"

/obj/item/reagent_containers/autoinjector/medipen/stimpack/large/update_icon_state()
. = ..()
if(reagents.total_volume > 50)
icon_state = initial(icon_state)
else if(reagents.total_volume)
icon_state = "[initial(icon_state)]50"
else
icon_state = "[initial(icon_state)]0"

/obj/item/reagent_containers/autoinjector/medipen/stimpack/large/redpill
icon = 'modular_dripstation/icons/obj/syringe.dmi'
icon_state = "hypo_redpill"

/obj/item/reagent_containers/autoinjector/medipen/stimpack/large/redpill/update_icon_state()
. = ..()
if(reagents.total_volume)
icon_state = initial(icon_state)
else
icon_state = "[initial(icon_state)]0"

/obj/item/reagent_containers/autoinjector/medipen/stimpack/large/redpill/attack(mob/living/M, mob/user)
. = ..()
if(reagents.total_volume && istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
var/enlightenment = pick(strings(REDPILL_FILE, "redpill_questions"))
H.forcesay(enlightenment)

/obj/item/reagent_containers/autoinjector/medipen/ekit/traitor
name = "syndicate emergency autoinjector"
desc = "An atropine autoinjector with extra mix of nanite-based coagulant and antibiotics to help stabilize bad cuts and burns and rapidly reverse severe bloodloss. Used when need to run or quickly get critical patients back on their feet."
icon_state = "medipenemergencysyndie"
icon = 'modular_dripstation/icons/obj/syringe.dmi'
volume = 40
amount_per_transfer_from_this = 40
list_reagents = list(/datum/reagent/drug/red_eye = 5, /datum/reagent/medicine/morphine = 5, /datum/reagent/medicine/oxandrolone = 4, /datum/reagent/medicine/sal_acid = 4, /datum/reagent/drug/methamphetamine = 3, /datum/reagent/medicine/atropine = 10, /datum/reagent/medicine/coagulant/blood_restoring_nanites = 2.5, /datum/reagent/medicine/spaceacillin = 0.5, /datum/reagent/iron = 3, /datum/reagent/medicine/salglu_solution = 3)

/obj/item/reagent_containers/autoinjector/medipen/stimpack/traitor
name = "syndicate combat autoinjector"
desc = "A superior stimulants autoinjector for use in combat situations. Has healing effect, can coagulate bleeding and rapidly reverse severe bloodloss."
volume = 40
amount_per_transfer_from_this = 40
list_reagents = list(/datum/reagent/medicine/stimulants = 5, /datum/reagent/medicine/morphine = 5, /datum/reagent/medicine/salbutamol = 5, /datum/reagent/medicine/tricordrazine = 5, /datum/reagent/medicine/omnizine = 10, /datum/reagent/medicine/coagulant/blood_restoring_nanites = 2.5, /datum/reagent/iron = 3.5, /datum/reagent/medicine/salglu_solution = 4)

/obj/item/reagent_containers/autoinjector/medipen/syndicate_trauma_repairer
name = "syndicate anti-trauma autoinjector"
desc = "A experimental autoinjector for use in combat situations. Helps to reform damaged neural connections, repair bones and coagulate bleeding and rapidly reverse severe bloodloss."
icon_state = "medipentraumasyndie"
icon = 'modular_dripstation/icons/obj/syringe.dmi'
volume = 30
amount_per_transfer_from_this = 30
list_reagents = list(/datum/reagent/medicine/neurine = 5, /datum/reagent/medicine/morphine = 5, /datum/reagent/medicine/bone_restoring_nanites = 10, /datum/reagent/medicine/coagulant/blood_restoring_nanites = 2.5, /datum/reagent/iron = 3.5, /datum/reagent/medicine/salglu_solution = 4)

/obj/item/reagent_containers/autoinjector/medipen/syndicate_cellular_repairer
name = "syndicate cellular restorer autoinjector"
desc = "A experimental autoinjector for use in combat situations. Helps to restore missing limbs, heal wounds and regenerate cellular damage. No changelings were harmed during the production process!"
icon_state = "medipencellularsyndie"
icon = 'modular_dripstation/icons/obj/syringe.dmi'
volume = 15
amount_per_transfer_from_this = 15
list_reagents = list(/datum/reagent/medicine/cellular_restoring_nanites = 15)
17 changes: 17 additions & 0 deletions modular_dripstation/code/modules/reagents/hypospray.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/obj/item/hypospray
icon = 'modular_dripstation/icons/obj/syringe.dmi'

/obj/item/hypospray/combat/nt
desc = "A highly advanced hypospray that uses bluespace tech to instantly inject people with reagents."
icon_state = "hypo_nt_combat"
possible_transfer_amounts = list(1, 5, 10)

/obj/item/hypospray/qmc
possible_transfer_amounts = list(1, 5)
inject_wait = 1 SECONDS
inject_self = 0.5 SECONDS
spray_wait = 1.5 SECONDS
spray_self = 0.5 SECONDS

/obj/item/hypospray/syringe
icon = 'icons/obj/syringe.dmi'
Binary file added modular_dripstation/icons/obj/aid.dmi
Binary file not shown.
Binary file modified modular_dripstation/icons/obj/storage.dmi
Binary file not shown.
Binary file added modular_dripstation/icons/obj/syringe.dmi
Binary file not shown.
5 changes: 5 additions & 0 deletions modular_dripstation/includes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "code\datums\reagent\chemoverride.dm"
#include "code\datums\component\mood.dm"
#include "code\datums\reagent\leadacetate.dm"
#include "code\datums\reagent\restore_nanites.dm"
#include "code\datums\strong_pull.dm"
#include "code\datums\keybinding\communication.dm"
#include "code\datums\traits\negative.dm"
Expand Down Expand Up @@ -72,6 +73,8 @@
#include "code\modules\assembly\assembly.dm"
#include "code\modules\assembly\holder.dm"
#include "code\modules\assembly\signaler.dm"
#include "code\modules\reagents\autoinjector.dm"
#include "code\modules\reagents\hypospray.dm"
#include "code\datums\mood_events\generic_negative_events.dm"
#include "code\datums\mood_events\generic_positive_events.dm"
#include "code\modules\surgery\surgery_step.dm"
Expand Down Expand Up @@ -168,6 +171,7 @@
#include "code\game\objects\items\devices\advpinpointer.dm"
#include "code\game\objects\items\devices\scanners.dm"
#include "code\game\objects\items\stacks\cash.dm"
#include "code\game\objects\items\stacks\medical.dm"
#include "code\game\objects\items\implants\implant.dm"
#include "code\game\objects\items\implants\implanter.dm"
#include "code\game\objects\items\implants\implant_misc.dm"
Expand All @@ -179,6 +183,7 @@
#include "code\game\objects\items\storage\lockbox.dm"
#include "code\game\objects\items\storage\fancy.dm"
#include "code\game\objects\items\storage\firstaid.dm"
#include "code\game\objects\items\storage\box.dm"
#include "code\game\objects\items\robot\robot_items.dm"
#include "code\game\machinery\airlock_control.dm"
#include "code\game\machinery\aug_manipulator.dm"
Expand Down
Loading
Loading