diff --git a/baystation12.dme b/baystation12.dme index 3f1a0705b46..1224b024332 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -144,6 +144,7 @@ #define FILE_DIR "code/unused/pda2" #define FILE_DIR "code/unused/spacecraft" #define FILE_DIR "code/WorkInProgress" +#define FILE_DIR "code/WorkInProgress/Apples" #define FILE_DIR "code/WorkInProgress/Cael_Aislinn" #define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Tajara" #define FILE_DIR "code/WorkInProgress/mapload" @@ -517,7 +518,7 @@ #include "code\game\machinery\computer\id.dm" #include "code\game\machinery\computer\lockdown.dm" #include "code\game\machinery\computer\medical.dm" -#include "code\game\machinery\computer\Operating.dm" +#include "code\game\machinery\computer\operating.dm" #include "code\game\machinery\computer\power.dm" #include "code\game\machinery\computer\robot.dm" #include "code\game\machinery\computer\security.dm" @@ -637,7 +638,6 @@ #include "code\game\objects\devices\chameleonproj.dm" #include "code\game\objects\devices\flash.dm" #include "code\game\objects\devices\flashlight.dm" -#include "code\game\objects\devices\geneanalyzer.dm" #include "code\game\objects\devices\infra_sensor.dm" #include "code\game\objects\devices\multitool.dm" #include "code\game\objects\devices\paicard.dm" diff --git a/code/game/machinery/bots/cleanbot.dm b/code/game/machinery/bots/cleanbot.dm index fae286fc260..d559dc6ea47 100644 --- a/code/game/machinery/bots/cleanbot.dm +++ b/code/game/machinery/bots/cleanbot.dm @@ -307,6 +307,12 @@ text("[src.oddbutton ? "Yes" : "No" target_types += /obj/effect/decal/cleanable/vomit target_types += /obj/effect/decal/cleanable/robot_debris target_types += /obj/effect/decal/cleanable/crayon + target_types += /obj/effect/decal/cleanable/mucus + target_types += /obj/effect/decal/cleanable/robot_debris + target_types += /obj/effect/decal/cleanable/molten_item + target_types += /obj/effect/decal/cleanable/tomato_smudge + target_types += /obj/effect/decal/cleanable/egg_smudge + target_types += /obj/effect/decal/cleanable/pie_smudge if(src.blood) target_types += /obj/effect/decal/cleanable/xenoblood/ diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index c618fc3a5e9..62af9606a3c 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1496,6 +1496,8 @@ About the new airlock wires panel: return if (istype(C, /obj/item/device/hacktool)) return src.attack_ai(user, C) + if(ismob(C)) + return ..(C, user) src.add_fingerprint(user) switch(removal_step) if(0) diff --git a/code/game/objects/devices/scanners.dm b/code/game/objects/devices/scanners.dm index 7c192347898..61f8fafe890 100644 --- a/code/game/objects/devices/scanners.dm +++ b/code/game/objects/devices/scanners.dm @@ -62,9 +62,9 @@ MASS SPECTROMETER /obj/item/device/detective_scanner name = "Scanner" desc = "Used to scan objects for DNA and fingerprints." - icon_state = "forensic0" + icon_state = "forensic1" var/amount = 20.0 - var/printing = 0.0 +// var/printing = 0.0 var/list/stored = list() w_class = 3.0 item_state = "electronic" @@ -90,15 +90,15 @@ MASS SPECTROMETER W.add_fingerprint(user) return - attack_self(mob/user as mob) - src.printing = !( src.printing ) - if(src.printing) - user << "\blue Printing turned on" - else - user << "\blue Printing turned off" - src.icon_state = text("forensic[]", src.printing) - add_fingerprint(user) - return +// attack_self(mob/user as mob) +// src.printing = !( src.printing ) +// if(src.printing) +// user << "\blue Printing turned on" +// else +// user << "\blue Printing turned off" +// src.icon_state = text("forensic[]", src.printing) +// add_fingerprint(user) +// return attack(mob/living/carbon/human/M as mob, mob/user as mob) if (!ishuman(M)) @@ -108,11 +108,12 @@ MASS SPECTROMETER user << "\blue No fingerprints found on [M]" return 0 else - if ((src.amount < 1 && src.printing)) + if (src.amount < 1) user << text("\blue Fingerprints scanned on [M]. Need more cards to print.") - src.printing = 0 - src.icon_state = text("forensic[]", src.printing) - if (src.printing) +// src.printing = 0 +// src.icon_state = text("forensic[]", src.printing) +// if (src.printing) + else src.amount-- var/obj/item/weapon/f_card/F = new /obj/item/weapon/f_card( user.loc ) F.amount = 1 diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm index 8f918ca7f70..0960eb0abbb 100644 --- a/code/game/objects/items/weapons/surgery_tools.dm +++ b/code/game/objects/items/weapons/surgery_tools.dm @@ -43,7 +43,6 @@ CIRCULAR SAW for(var/datum/disease/alien_embryo in M.viruses) alien_embryo.cure() return - return if(user.zone_sel.selecting == "groin") if(istype(M, /mob/living/carbon/human)) @@ -55,7 +54,7 @@ CIRCULAR SAW M << "\red [user] begins to retract the flap in your abdomen with [src]!" user << "\red You retract the flap in [M]'s abdomen with [src]!" M:appendix_op_stage = 3.0 - return + return if (user.zone_sel.selecting == "eyes") @@ -101,11 +100,11 @@ CIRCULAR SAW M.take_organ_damage(15) M:eye_op_stage = 2.0 + return - else - // bone surgery doable? - if(!try_bone_surgery(M, user)) - return ..() + // bone surgery doable? + if(!try_bone_surgery(M, user)) + return ..() /obj/item/weapon/retractor/proc/try_bone_surgery(mob/living/carbon/human/H as mob, mob/living/user as mob) if(!istype(H)) @@ -194,6 +193,7 @@ CIRCULAR SAW M << "\red [user] begins to clamp bleeders in your abdomen with [src]!" user << "\red You clamp bleeders in [M]'s abdomen with [src]!" M:appendix_op_stage = 2.0 + return if(4.0) if(M != user) for(var/mob/O in (viewers(M) - user - M)) @@ -207,7 +207,7 @@ CIRCULAR SAW return new /obj/item/weapon/reagent_containers/food/snacks/appendix(get_turf(M)) M:appendix_op_stage = 5.0 - return + return if (user.zone_sel.selecting == "eyes") @@ -252,7 +252,8 @@ CIRCULAR SAW else M.take_organ_damage(15) M:eye_op_stage = 3.0 - else if(user.zone_sel.selecting == "head") + return + if(user.zone_sel.selecting == "head") if(istype(M, /mob/living/carbon/human) && M:brain_op_stage == 1) M:brain_op_stage = 0 var/datum/organ/external/S = M:organs["head"] @@ -264,10 +265,9 @@ CIRCULAR SAW return ..() else return ..() - else - // bone surgery doable? - if(!try_bone_surgery(M, user)) - return ..() + // bone surgery doable? + if(!try_bone_surgery(M, user)) + return ..() /obj/item/weapon/hemostat/proc/try_bone_surgery(mob/living/carbon/human/H as mob, mob/living/user as mob) @@ -357,7 +357,7 @@ CIRCULAR SAW /obj/item/weapon/autopsy_scanner/verb/print_data() set src in view(usr, 1) - if(usr.stat == 2) + if(usr.stat) src << "No." return @@ -411,7 +411,7 @@ CIRCULAR SAW n++ for(var/mob/O in viewers(usr)) - O.show_message("\red The [src] rattles and prints out a sheet of paper.", 1) + O.show_message("\red \the [src] rattles and prints out a sheet of paper.", 1) sleep(10) @@ -441,7 +441,7 @@ CIRCULAR SAW usr << "You have to cut the limb open first!" return for(var/mob/O in viewers(M)) - O.show_message("\red [user.name] scans the wounds on [M.name]'s [S.display_name] with the [src.name]", 1) + O.show_message("\red [user.name] scans the wounds on [M.name]'s [S.display_name] with \the [src.name]", 1) src.add_data(S) @@ -469,8 +469,6 @@ CIRCULAR SAW user << "\red You cauterize the incision in [M]'s torso with [src]!" M:embryo_op_stage = 0.0 return - else - try_bone_surgery(M, user) if(user.zone_sel.selecting == "groin") if(istype(M, /mob/living/carbon/human)) @@ -485,9 +483,7 @@ CIRCULAR SAW for(var/datum/disease/appendicitis in M.viruses) appendicitis.cure() M.resistances += appendicitis - else - try_bone_surgery(M, user) - return + return if (user.zone_sel.selecting == "eyes") @@ -533,12 +529,10 @@ CIRCULAR SAW M.take_organ_damage(15) M.disabilities &= ~128 M:eye_op_stage = 0.0 + return - else - // bone surgery doable? - try_bone_surgery(M, user) -// if(!try_bone_surgery(M, user)) -// return ..() + if(!try_bone_surgery(M, user)) + return ..() /obj/item/weapon/cautery/proc/try_bone_surgery(mob/living/carbon/human/H as mob, mob/living/user as mob) if(!istype(H)) @@ -562,7 +556,7 @@ CIRCULAR SAW "\red [user] begins to cauterize the incision in \his [S.display_name] with [src]!", \ "\red You begin to cauterize the incision in your [S.display_name] with [src]!") - if(do_mob(user, H, 100)) + if(do_mob(user, H, rand(70,100))) if(H != user) H.visible_message( \ "\red [user] cauterizes the incision in [H]'s [S.display_name] with [src]!", \ @@ -763,9 +757,9 @@ CIRCULAR SAW M:brain_op_stage = 3.0 else ..() - return + return - else if(user.zone_sel.selecting == "eyes") + if(user.zone_sel.selecting == "eyes") user << "\blue So far so good." var/mob/living/carbon/human/H = M @@ -812,10 +806,9 @@ CIRCULAR SAW M.updatehealth() M:eye_op_stage = 1.0 user << "\blue So far so good after." - else - // bone surgery doable? - if(!try_bone_surgery(M, user)) - return ..() + return + if(!try_bone_surgery(M, user)) + return ..() /* wat else if((!(user.zone_sel.selecting == "head")) || (!(user.zone_sel.selecting == "groin")) || (!(istype(M, /mob/living/carbon/human)))) diff --git a/code/modules/DetectiveWork/detective_work.dm b/code/modules/DetectiveWork/detective_work.dm index cf0eb2d6477..45813933580 100644 --- a/code/modules/DetectiveWork/detective_work.dm +++ b/code/modules/DetectiveWork/detective_work.dm @@ -92,13 +92,16 @@ obj/machinery/computer/forensic_scanning scan_data = "" scan_name = "" scan_process = 0 + booked = 0 req_access = list(access_forensics_lockers) New() ..() - new /obj/item/weapon/book/manual/detective(get_turf(src)) + if(!booked) + new /obj/item/weapon/book/manual/detective(get_turf(src)) + booked = 1 return diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index e58e97d1ae0..a856c59665f 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1419,6 +1419,7 @@ /obj/effect/equip_e/human/process() if (item) item.add_fingerprint(source) + var/item_loc = 0 if (!item) switch(place) if("mask") @@ -1481,9 +1482,65 @@ //SN src = null del(src) return + else + switch(place) + if("mask") + if(target.wear_mask) + item_loc = 1 + if("l_hand") + if(target.l_hand) + item_loc = 1 + if("r_hand") + if(target.r_hand) + item_loc = 1 + if("gloves") + if(target.gloves) + item_loc = 1 + if("eyes") + if(target.glasses) + item_loc = 1 + if("l_ear") + if(target.l_ear) + item_loc = 1 + if("r_ear") + if(target.r_ear) + item_loc = 1 + if("head") + if(target.head) + item_loc = 1 + if("shoes") + if(target.shoes) + item_loc = 1 + if("belt") + if(target.belt) + item_loc = 1 + if("suit") + if(target.wear_suit) + item_loc = 1 + if("back") + if(target.back) + item_loc = 1 + if("uniform") + if(target.w_uniform) + item_loc = 1 + if("s_store") + if(target.s_store) + item_loc = 1 + if("h_store") + if(target.h_store) + item_loc = 1 + if("id") + if(target.wear_id) + item_loc = 1 + if("internal") + if (target.internal) + item_loc = 1 + if("handcuff") + if (target.handcuffed) + item_loc = 1 var/list/L = list( "syringe", "pill", "drink", "dnainjector", "fuel") - if ((item && !( L.Find(place) ))) + if (item && !L.Find(place) && !item_loc) if(isrobot(source) && place != "handcuff") del(src) return diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 5d4bf4d1cbb..ad3649f9ead 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -13,6 +13,7 @@ isbreathing = 1 holdbreath = 0 lyingcheck = 0 + buckle_check = 0 /mob/living/carbon/human/Life() set invisibility = 0 @@ -24,7 +25,20 @@ if(!loc) // Fixing a null error that occurs when the mob isn't found in the world -- TLE return + //Being buckled to a chair or bed + check_if_buckled() + + // Update clothing +// update_clothing() + if((lyingcheck != lying) || (buckle_check != (buckled ? 1 : 0))) //This is a fix for falling down / standing up not updating icons. Instead of going through and changing every + spawn(5) + update_clothing() //instance in the code where lying is modified, I've just added a new variable "lyingcheck" which will be compared + lyingcheck = lying //to lying, so if lying ever changes, update_clothing() will run like normal. + if(stat == 2) + if((!lying || !lyingcheck) && !buckled) + lying = 1 + update_clothing() return life_tick++ @@ -88,18 +102,9 @@ // Some mobs heal slowly, others die slowly handle_health_updates() - // Update clothing -// update_clothing() - if(lyingcheck != lying) //This is a fix for falling down / standing up not updating icons. Instead of going through and changing every - update_clothing() //instance in the code where lying is modified, I've just added a new variable "lyingcheck" which will be compared - lyingcheck = lying //to lying, so if lying ever changes, update_clothing() will run like normal. - if(client) handle_regular_hud_updates() - //Being buckled to a chair or bed - check_if_buckled() - // Yup. update_canmove() @@ -1191,13 +1196,18 @@ check_if_buckled() - if (buckled) - lying = istype(buckled, /obj/structure/stool/bed) || istype(buckled, /obj/machinery/conveyor) - if(lying) + if(buckle_check != (buckled ? 1 : 0)) + buckle_check = (buckled ? 1 : 0) + if (buckled) + lying = istype(buckled, /obj/structure/stool/bed) || istype(buckled, /obj/machinery/conveyor) + if(lying) + drop_item() + density = 1 + else + density = !lying + if(buckle_check) + if(istype(buckled, /obj/structure/stool/bed) || istype(buckled, /obj/machinery/conveyor)) drop_item() - density = 1 - else - density = !lying handle_stomach() spawn(0)