Better Bodyscanners and Surgery Stuff (#17520)

* Better Bodyscanners and Surgery Stuff

* ope

* i can't believe that worked

* adv

* bodyscanner fixes
This commit is contained in:
Wowzewow (Wezzy)
2023-10-08 05:36:13 +08:00
committed by GitHub
parent a44d7a3b7f
commit ea1101ec5c
45 changed files with 1015 additions and 877 deletions
@@ -120,7 +120,7 @@
info = "<b><font size=\"4\">[src] analysis report #[report_num]</font></b><HR>"
info += "<b>Scanned item:</b> [bloodsamp.name]<br><br>" + data
P.set_content_unsafe(pname, info)
print(P)
print(P, user = usr)
scanning = 0
update_icon()
return
@@ -104,7 +104,7 @@
report.update_icon()
if(report.info)
to_chat(user, report.info)
print(report)
print(report, user)
/obj/machinery/microscope/proc/remove_sample(var/mob/living/remover)
if(!istype(remover) || remover.incapacitated() || !Adjacent(remover))
+6 -19
View File
@@ -66,11 +66,7 @@
for(var/obj/item/spacecash/S in src)
S.forceMove(src.loc)
if(prob(50))
playsound(loc, 'sound/items/polaroid1.ogg', 50, 1)
else
playsound(loc, 'sound/items/polaroid2.ogg', 50, 1)
break
playsound(loc, /singleton/sound_category/print_sound, 50, 1)
/obj/machinery/atm/emag_act(var/remaining_charges, var/mob/user)
if(emagged)
@@ -110,10 +106,7 @@
if(istype(I,/obj/item/spacecash))
//consume the money
authenticated_account.money += I:worth
if(prob(50))
playsound(loc, 'sound/items/polaroid1.ogg', 50, 1)
else
playsound(loc, 'sound/items/polaroid2.ogg', 50, 1)
playsound(loc, /singleton/sound_category/print_sound, 50, 1)
//create a transaction log entry
var/datum/transaction/T = new()
@@ -330,15 +323,12 @@
R.stamped += /obj/item/stamp
R.add_overlay(stampoverlay)
R.stamps += "<HR><i>This paper has been stamped by the Automatic Teller Machine.</i>"
print(R)
print(R, user = usr)
release_held_id(usr) // printing ends the ATM session similar to real life + prevents spam
. = TRUE
if(prob(50))
playsound(loc, 'sound/items/polaroid1.ogg', 50, 1)
else
playsound(loc, 'sound/items/polaroid2.ogg', 50, 1)
playsound(loc, /singleton/sound_category/print_sound, 50, 1)
if ("print_transaction")
if(authenticated_account)
var/obj/item/paper/R = new()
@@ -378,12 +368,9 @@
R.stamped += /obj/item/stamp
R.add_overlay(stampoverlay)
R.stamps += "<HR><i>This paper has been stamped by the Automatic Teller Machine.</i>"
print(R)
print(R, user = usr)
if(prob(50))
playsound(loc, 'sound/items/polaroid1.ogg', 50, 1)
else
playsound(loc, 'sound/items/polaroid2.ogg', 50, 1)
playsound(loc, /singleton/sound_category/print_sound, 50, 1)
release_held_id(usr) // printing ends the ATM session similar to real life + prevents spam
. = TRUE
@@ -299,13 +299,11 @@
to_chat(user, SPAN_NOTICE("You switch to \the [src]'s [HA.fullScan ? "full body" : "basic"] scan mode."))
/obj/item/device/healthanalyzer/mech/attack(mob/living/M, var/mob/living/heavy_vehicle/user)
sound_scan = FALSE
if(last_scan <= world.time - 20) //Spam limiter.
last_scan = world.time
sound_scan = TRUE
user.setClickCooldown(DEFAULT_QUICK_COOLDOWN)
user.do_attack_animation(src)
if(!fullScan)
for(var/mob/pilot in user.pilots)
health_scan_mob(M, pilot, TRUE, TRUE, sound_scan = sound_scan)
health_scan_mob(M, pilot, TRUE, TRUE, sound_scan = TRUE)
else
user.visible_message("<b>[user]</b> starts scanning \the [M] with \the [src].", SPAN_NOTICE("You start scanning \the [M] with \the [src]."))
if(do_after(user, 7 SECONDS))
+1 -1
View File
@@ -240,7 +240,7 @@
if(org.status & ORGAN_BROKEN)
status += "hurts when touched"
if(org.status & ORGAN_DEAD)
status += "is bruised and necrotic"
status += "is necrotic"
if(!org.is_usable())
status += "dangling uselessly"
if(org.status & ORGAN_BLEEDING)
@@ -67,9 +67,9 @@
)
has_limbs = list(
BP_HEAD = list("path" = /obj/item/organ/external/head/unbreakable/revenant),
BP_CHEST = list("path" = /obj/item/organ/external/chest),
BP_GROIN = list("path" = /obj/item/organ/external/groin),
BP_HEAD = list("path" = /obj/item/organ/external/head/unbreakable/revenant),
BP_L_ARM = list("path" = /obj/item/organ/external/arm),
BP_R_ARM = list("path" = /obj/item/organ/external/arm/right),
BP_L_LEG = list("path" = /obj/item/organ/external/leg),
@@ -181,9 +181,9 @@
BP_STOMACH = /obj/item/organ/internal/stomach
)
has_limbs = list(
BP_HEAD = list("path" = /obj/item/organ/external/head/zombie),
BP_CHEST = list("path" = /obj/item/organ/external/chest/zombie),
BP_GROIN = list("path" = /obj/item/organ/external/groin/zombie),
BP_HEAD = list("path" = /obj/item/organ/external/head/zombie),
BP_L_ARM = list("path" = /obj/item/organ/external/arm/zombie),
BP_R_ARM = list("path" = /obj/item/organ/external/arm/right/zombie),
BP_L_LEG = list("path" = /obj/item/organ/external/leg/zombie),
@@ -240,22 +240,22 @@
///Determines the organs that the species spawns with and
var/list/has_organ = list( // which required-organ checks are conducted.
BP_BRAIN = /obj/item/organ/internal/brain,
BP_EYES = /obj/item/organ/internal/eyes,
BP_HEART = /obj/item/organ/internal/heart,
BP_LUNGS = /obj/item/organ/internal/lungs,
BP_LIVER = /obj/item/organ/internal/liver,
BP_KIDNEYS = /obj/item/organ/internal/kidneys,
BP_STOMACH = /obj/item/organ/internal/stomach,
BP_BRAIN = /obj/item/organ/internal/brain,
BP_APPENDIX = /obj/item/organ/internal/appendix,
BP_EYES = /obj/item/organ/internal/eyes
BP_APPENDIX = /obj/item/organ/internal/appendix
)
var/vision_organ // If set, this organ is required for vision. Defaults to BP_EYES if the species has them.
var/breathing_organ // If set, this organ is required to breathe. Defaults to BP_LUNGS if the species has them.
var/list/has_limbs = list(
BP_HEAD = list("path" = /obj/item/organ/external/head),
BP_CHEST = list("path" = /obj/item/organ/external/chest),
BP_GROIN = list("path" = /obj/item/organ/external/groin),
BP_HEAD = list("path" = /obj/item/organ/external/head),
BP_L_ARM = list("path" = /obj/item/organ/external/arm),
BP_R_ARM = list("path" = /obj/item/organ/external/arm/right),
BP_L_LEG = list("path" = /obj/item/organ/external/leg),
@@ -68,12 +68,12 @@
grab_mod = 0.6 // Viney Tentacles and shit to cling onto
resist_mod = 1.5 // Reasonably stronk, not moreso than an Unathi or robot.
has_organ = list( BP_STOMACH = /obj/item/organ/internal/stomach/diona)
has_organ = list(BP_STOMACH = /obj/item/organ/internal/stomach/diona)
has_limbs = list(
BP_HEAD = list("path" = /obj/item/organ/external/head/diona),
BP_CHEST = list("path" = /obj/item/organ/external/chest/diona),
BP_GROIN = list("path" = /obj/item/organ/external/groin/diona),
BP_HEAD = list("path" = /obj/item/organ/external/head/diona),
BP_L_ARM = list("path" = /obj/item/organ/external/arm/diona),
BP_R_ARM = list("path" = /obj/item/organ/external/arm/right/diona),
BP_L_LEG = list("path" = /obj/item/organ/external/leg/diona),
@@ -69,9 +69,9 @@ var/global/list/golem_types = list(
)
has_limbs = list(
BP_HEAD = list("path" = /obj/item/organ/external/head/unbreakable),
BP_CHEST = list("path" = /obj/item/organ/external/chest/unbreakable),
BP_GROIN = list("path" = /obj/item/organ/external/groin/unbreakable),
BP_HEAD = list("path" = /obj/item/organ/external/head/unbreakable),
BP_L_ARM = list("path" = /obj/item/organ/external/arm/unbreakable),
BP_R_ARM = list("path" = /obj/item/organ/external/arm/right/unbreakable),
BP_L_LEG = list("path" = /obj/item/organ/external/leg/unbreakable),
@@ -97,9 +97,9 @@
vision_organ = BP_EYES
has_limbs = list(
BP_HEAD = list("path" = /obj/item/organ/external/head/ipc),
BP_CHEST = list("path" = /obj/item/organ/external/chest/ipc),
BP_GROIN = list("path" = /obj/item/organ/external/groin/ipc),
BP_HEAD = list("path" = /obj/item/organ/external/head/ipc),
BP_L_ARM = list("path" = /obj/item/organ/external/arm/ipc),
BP_R_ARM = list("path" = /obj/item/organ/external/arm/right/ipc),
BP_L_LEG = list("path" = /obj/item/organ/external/leg/ipc),
@@ -129,13 +129,13 @@
fall_mod = 0.25
has_organ = list(
BP_BRAIN = /obj/item/organ/internal/brain/skrell/neaera,
BP_EYES = /obj/item/organ/internal/eyes/skrell/neaera,
BP_HEART = /obj/item/organ/internal/heart/skrell/neaera,
BP_LUNGS = /obj/item/organ/internal/lungs/skrell/neaera,
BP_LIVER = /obj/item/organ/internal/liver/skrell/neaera,
BP_KIDNEYS = /obj/item/organ/internal/kidneys/skrell/neaera,
BP_BRAIN = /obj/item/organ/internal/brain/skrell/neaera,
BP_STOMACH = /obj/item/organ/internal/stomach,
BP_EYES = /obj/item/organ/internal/eyes/skrell/neaera
BP_STOMACH = /obj/item/organ/internal/stomach
)
/datum/species/monkey/unathi
@@ -46,9 +46,9 @@
possible_external_organs_modifications = list("Normal","Amputated","Prosthesis", "Diona Nymph")
has_limbs = list(
BP_HEAD = list("path" = /obj/item/organ/external/head/skrell),
BP_CHEST = list("path" = /obj/item/organ/external/chest),
BP_GROIN = list("path" = /obj/item/organ/external/groin),
BP_HEAD = list("path" = /obj/item/organ/external/head/skrell),
BP_L_ARM = list("path" = /obj/item/organ/external/arm),
BP_R_ARM = list("path" = /obj/item/organ/external/arm/right),
BP_L_LEG = list("path" = /obj/item/organ/external/leg),
@@ -60,13 +60,13 @@
)
has_organ = list(
BP_BRAIN = /obj/item/organ/internal/brain/skrell,
BP_EYES = /obj/item/organ/internal/eyes/skrell,
BP_HEART = /obj/item/organ/internal/heart/skrell,
BP_LUNGS = /obj/item/organ/internal/lungs/skrell,
BP_LIVER = /obj/item/organ/internal/liver/skrell,
BP_KIDNEYS = /obj/item/organ/internal/kidneys/skrell,
BP_BRAIN = /obj/item/organ/internal/brain/skrell,
BP_STOMACH = /obj/item/organ/internal/stomach,
BP_EYES = /obj/item/organ/internal/eyes/skrell
BP_STOMACH = /obj/item/organ/internal/stomach
)
pain_messages = list("I can't feel my headtails", "You really need some painkillers", "Stars above, the pain")
@@ -38,9 +38,9 @@
push_flags = MONKEY|SLIME|SIMPLE_ANIMAL
has_limbs = list(
BP_HEAD = list("path" = /obj/item/organ/external/head/unbreakable),
BP_CHEST = list("path" = /obj/item/organ/external/chest/unbreakable),
BP_GROIN = list("path" = /obj/item/organ/external/groin/unbreakable),
BP_HEAD = list("path" = /obj/item/organ/external/head/unbreakable),
BP_L_ARM = list("path" = /obj/item/organ/external/arm/unbreakable),
BP_R_ARM = list("path" = /obj/item/organ/external/arm/right/unbreakable),
BP_L_LEG = list("path" = /obj/item/organ/external/leg/unbreakable),
@@ -109,14 +109,14 @@
zombie_type = SPECIES_ZOMBIE_TAJARA
has_organ = list(
BP_BRAIN = /obj/item/organ/internal/brain/tajara,
BP_EYES = /obj/item/organ/internal/eyes/night,
BP_HEART = /obj/item/organ/internal/heart/tajara,
BP_LUNGS = /obj/item/organ/internal/lungs/tajara,
BP_LIVER = /obj/item/organ/internal/liver/tajara,
BP_KIDNEYS = /obj/item/organ/internal/kidneys/tajara,
BP_STOMACH = /obj/item/organ/internal/stomach/tajara,
BP_BRAIN = /obj/item/organ/internal/brain/tajara,
BP_APPENDIX = /obj/item/organ/internal/appendix/tajara,
BP_EYES = /obj/item/organ/internal/eyes/night
BP_APPENDIX = /obj/item/organ/internal/appendix/tajara
)
stomach_capacity = 6
@@ -160,21 +160,21 @@
bodyfall_sound = /singleton/sound_category/bodyfall_machine_sound
has_organ = list(
BP_BRAIN = /obj/item/organ/internal/brain/tajara,
BP_EYES = /obj/item/organ/internal/eyes/night,
BP_HEART = /obj/item/organ/internal/heart/tajara/tesla_body,
BP_LUNGS = /obj/item/organ/internal/lungs/tajara,
BP_LIVER = /obj/item/organ/internal/liver/tajara,
BP_KIDNEYS = /obj/item/organ/internal/kidneys/tajara,
BP_STOMACH = /obj/item/organ/internal/stomach/tajara,
BP_BRAIN = /obj/item/organ/internal/brain/tajara,
BP_APPENDIX = /obj/item/organ/internal/appendix/tajara,
BP_EYES = /obj/item/organ/internal/eyes/night,
BP_AUG_TESLA = /obj/item/organ/internal/augment/tesla/massive
)
has_limbs = list(
BP_HEAD = list("path" = /obj/item/organ/external/head),
BP_CHEST = list("path" = /obj/item/organ/external/chest/tesla_body),
BP_GROIN = list("path" = /obj/item/organ/external/groin/tesla_body),
BP_HEAD = list("path" = /obj/item/organ/external/head),
BP_L_ARM = list("path" = /obj/item/organ/external/arm/tesla_body),
BP_R_ARM = list("path" = /obj/item/organ/external/arm/right/tesla_body),
BP_L_LEG = list("path" = /obj/item/organ/external/leg/tesla_body),
@@ -105,14 +105,14 @@
)
has_organ = list(
BP_BRAIN = /obj/item/organ/internal/brain/unathi,
BP_HEART = /obj/item/organ/internal/heart/unathi,
BP_LIVER = /obj/item/organ/internal/liver/unathi,
BP_LUNGS = /obj/item/organ/internal/lungs/unathi,
BP_KIDNEYS = /obj/item/organ/internal/kidneys/unathi,
BP_STOMACH = /obj/item/organ/internal/stomach/unathi,
BP_EYES = /obj/item/organ/internal/eyes/unathi
)
BP_BRAIN = /obj/item/organ/internal/brain/unathi,
BP_EYES = /obj/item/organ/internal/eyes/unathi,
BP_HEART = /obj/item/organ/internal/heart/unathi,
BP_LIVER = /obj/item/organ/internal/liver/unathi,
BP_LUNGS = /obj/item/organ/internal/lungs/unathi,
BP_KIDNEYS = /obj/item/organ/internal/kidneys/unathi,
BP_STOMACH = /obj/item/organ/internal/stomach/unathi
)
alterable_internal_organs = list(BP_HEART, BP_EYES, BP_LUNGS, BP_LIVER, BP_KIDNEYS, BP_STOMACH)
@@ -101,6 +101,8 @@
stamina_recovery = 2 //slow recovery
has_organ = list(
BP_BRAIN = /obj/item/organ/internal/brain/vaurca,
BP_EYES = /obj/item/organ/internal/eyes/night/vaurca,
BP_NEURAL_SOCKET = /obj/item/organ/internal/vaurca/neuralsocket,
BP_LUNGS = /obj/item/organ/internal/lungs/vaurca,
BP_FILTRATION_BIT = /obj/item/organ/internal/vaurca/filtrationbit,
@@ -109,9 +111,7 @@
BP_LIVER = /obj/item/organ/internal/liver/vaurca,
BP_KIDNEYS = /obj/item/organ/internal/kidneys/vaurca,
BP_STOMACH = /obj/item/organ/internal/stomach/vaurca,
BP_APPENDIX = /obj/item/organ/internal/appendix/vaurca,
BP_BRAIN = /obj/item/organ/internal/brain/vaurca,
BP_EYES = /obj/item/organ/internal/eyes/night/vaurca
BP_APPENDIX = /obj/item/organ/internal/appendix/vaurca
)
has_limbs = list(
@@ -126,6 +126,8 @@
default_h_style = "Bald"
has_organ = list(
BP_BRAIN = /obj/item/organ/internal/brain/vaurca,
BP_EYES = /obj/item/organ/internal/eyes/night/vaurca,
BP_NEURAL_SOCKET = /obj/item/organ/internal/vaurca/neuralsocket/admin,
BP_LUNGS = /obj/item/organ/internal/lungs/vaurca,
BP_FILTRATION_BIT = /obj/item/organ/internal/vaurca/filtrationbit,
@@ -135,8 +137,6 @@
BP_KIDNEYS = /obj/item/organ/internal/kidneys/vaurca,
BP_STOMACH = /obj/item/organ/internal/stomach/vaurca,
BP_APPENDIX = /obj/item/organ/internal/appendix/vaurca,
BP_BRAIN = /obj/item/organ/internal/brain/vaurca,
BP_EYES = /obj/item/organ/internal/eyes/night/vaurca,
BP_HIVENET_SHIELD = /obj/item/organ/internal/augment/hiveshield
)
@@ -213,6 +213,8 @@
)
has_organ = list(
BP_BRAIN = /obj/item/organ/internal/brain/vaurca,
BP_EYES = /obj/item/organ/internal/eyes/night/vaurca,
BP_NEURAL_SOCKET = /obj/item/organ/internal/vaurca/neuralsocket,
BP_LUNGS = /obj/item/organ/internal/lungs/vaurca,
BP_HEART = /obj/item/organ/internal/heart/vaurca,
@@ -220,8 +222,6 @@
BP_VAURCA_LIVER = /obj/item/organ/internal/liver/vaurca/robo,
BP_VAURCA_KIDNEYS = /obj/item/organ/internal/kidneys/vaurca/robo,
BP_STOMACH = /obj/item/organ/internal/stomach,
BP_BRAIN = /obj/item/organ/internal/brain/vaurca,
BP_EYES = /obj/item/organ/internal/eyes/night/vaurca,
BP_FILTRATION_BIT = /obj/item/organ/internal/vaurca/filtrationbit,
BP_HIVENET_SHIELD = /obj/item/organ/internal/augment/hiveshield/advanced
)
+2 -2
View File
@@ -129,9 +129,9 @@
. = "damaged "
if(status & ORGAN_DEAD)
if(can_recover())
. = "decaying [.]"
. = "necrotic and debridable [.]"
else
. = "necrotic [.]"
. = "necrotic and dead [.]"
. = "[.][name]"
/obj/item/organ/internal/process()
+1
View File
@@ -5,6 +5,7 @@
/obj/item/organ/external/stump/Initialize(mapload, var/internal, var/obj/item/organ/external/limb)
if(istype(limb))
name = "[limb.name] stump"
limb_name = limb.limb_name
body_part = limb.body_part
amputation_point = limb.amputation_point
+1 -1
View File
@@ -219,7 +219,7 @@
var/obj/machinery/photocopier/T = target
flick(T.print_animation, target)
--T.toner
target.print(c, use_sound, 'sound/bureaucracy/print.ogg', delay)
target.print(c, use_sound, 'sound/bureaucracy/print.ogg', delay, , user = usr)
return c
/proc/photocopy(var/obj/machinery/target, var/obj/item/photo/photocopy, var/toner)
+1 -1
View File
@@ -209,7 +209,7 @@ var/global/photo_count = 0
if(!on || !pictures_left || ismob(target.loc)) return
captureimage(target, user, flag)
playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 75, 1, -3)
playsound(loc, /singleton/sound_category/print_sound, 75, 1, -3)
pictures_left--
to_chat(user, "<span class='notice'>[pictures_left] photos left.</span>")
+1 -1
View File
@@ -427,7 +427,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
info += GetResearchLevelsInfo()
PR.set_content_unsafe(pname, info)
print(PR)
print(PR, user = usr)
spawn(10)
screen = ((text2num(href_list["print"]) == 2) ? 5.0 : 1.1)
updateUsrDialog()
+1 -1
View File
@@ -282,7 +282,7 @@
var/obj/item/paper/R = new /obj/item/paper(get_turf(src))
R.color = "#fef8ff"
R.set_content_unsafe("Weapon Analysis ([item.name])", get_print_info(item))
print(R, message = "\The [src] beeps, printing \the [R] after a moment.")
print(R, message = "\The [src] beeps, printing \the [R] after a moment.", user = usr)
/obj/machinery/weapons_analyzer/proc/get_print_info(var/obj/item/device)
var/dat = "<span class='notice'><b>Analysis performed at [worldtime2text()]</b></span><br>"
@@ -84,7 +84,7 @@
P.stamped = list(/obj/item/stamp)
P.overlays = list("paper_stamped")
P.set_content_unsafe(pname, info)
print(P)
print(P, user = usr)
if(scanned_object && istype(scanned_object, /obj/machinery/artifact))
var/obj/machinery/artifact/A = scanned_object