diff --git a/code/game/dna/genes/goon_disabilities.dm b/code/game/dna/genes/goon_disabilities.dm index 32617d456be..c0973e2206d 100644 --- a/code/game/dna/genes/goon_disabilities.dm +++ b/code/game/dna/genes/goon_disabilities.dm @@ -333,6 +333,10 @@ */ var/mob/living/carbon/L = usr + if(L) + usr.attack_log += text("\[[time_stamp()]\] [usr.real_name] ([usr.ckey]) cast the spell [name] on [L.real_name] ([L.ckey]).") + msg_admin_attack("[usr.real_name] ([usr.ckey]) has cast the spell [name] on [L.real_name] ([L.ckey]) ()") + L.adjust_fire_stacks(0.5) L.visible_message("\red [L.name] suddenly bursts into flames!") L.on_fire = 1 diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm index 29cebeac06f..e421a9594f8 100644 --- a/code/game/dna/genes/goon_powers.dm +++ b/code/game/dna/genes/goon_powers.dm @@ -159,11 +159,15 @@ if(istype(H.wear_suit, /obj/item/clothing/suit/space)) handle_suit = 1 if(H.internal) - H.visible_message("\red A cloud of fine ice crystals engulfs [H]!", - "A cloud of fine ice crystals cover your [H.head]'s visor.") + H.visible_message("\red [usr] sprays a cloud of fine ice crystals, engulfing [H]!", + "[usr] sprays a cloud of fine ice crystals over your [H.head]'s visor.") + log_admin("[ckey(usr.key)] has used cryokinesis on [ckey(C.key)], internals yes, suit yes") + msg_admin_attack("[usr.real_name] ([usr.ckey]) has cast cryokinesis on [C.real_name] ([C.ckey]), ()") else - H.visible_message("\red A cloud of fine ice crystals engulfs [H]!", - "A cloud of fine ice crystals cover your [H.head]'s visor and make it into your air vents!.") + H.visible_message("\red [usr] sprays a cloud of fine ice crystals engulfing, [H]!", + "[usr] sprays a cloud of fine ice crystals cover your [H.head]'s visor and make it into your air vents!.") + log_admin("[usr.real_name] ([ckey(usr.key)]) has used cryokinesis on [C.real_name] ([ckey(C.key)]), ()") + msg_admin_attack("[usr.real_name] ([usr.ckey]) has cast cryokinesis on [C.real_name] ([C.ckey]), ()") H.bodytemperature = max(0, H.bodytemperature - 50) H.adjustFireLoss(5) if(!handle_suit) @@ -171,8 +175,9 @@ C.adjustFireLoss(10) C.ExtinguishMob() - C.visible_message("\red A cloud of fine ice crystals engulfs [C]!") - log_admin("[ckey(usr.key)] has used cryokinesis on [ckey(C.key)].") + C.visible_message("\red [usr] sprays a cloud of fine ice crystals, engulfing [C]!") + log_admin("[ckey(usr.key)] has used cryokinesis on [ckey(C.key)], internals no, suit no") + msg_admin_attack("[usr.real_name] ([usr.ckey]) has cast cryokinesis on [C.real_name] ([C.ckey]), ()") //playsound(usr.loc, 'bamf.ogg', 50, 0) diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 10359e84421..e991c569706 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -242,6 +242,8 @@ dir = 8 idle_power_usage = 250 active_power_usage = 500 + var/printing = null + var/printing_text = null /obj/machinery/body_scanconsole/power_change() if(stat & BROKEN) @@ -506,10 +508,31 @@ dat += text("Cataracts detected.
") if(occupant.sdisabilities & NEARSIGHTED) dat += text("Retinal misalignment detected.
") + src.printing_text = dat + dat += "

Print medical condition
" else dat += "\The [src] is empty." else dat = " Error: No Body Scanner connected." - dat += text("

Close", user) + dat += text("Close", user) user << browse(dat, "window=scanconsole;size=430x600") return + +/obj/machinery/body_scanconsole/Topic(href, href_list) + if(stat & (BROKEN|NOPOWER)) return + if(usr.stat || usr.restrained()) return + + if (href_list["print_p"]) + if (!(src.printing) && src.printing_text) + src.printing = 1 + for(var/mob/O in viewers(usr)) + O.show_message("\blue \the [src] rattles and prints out a sheet of paper.", 1) + sleep(20) + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc ) + P.info = "
Body Scan - [href_list["name"]]

" + P.info += "Time of scan: [worldtime2text(world.time)]

" + P.info += "[src.printing_text]" + P.info += "

Notes:
" + P.name = "Body Scan - [href_list["name"]]" + src.printing = null + src.printing_text = null \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index dcd10cfb5d8..7bc09593e5e 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -339,7 +339,7 @@ new /obj/item/ammo_box/c38(src) new /obj/item/weapon/gun/projectile/revolver/detective(src) new /obj/item/taperoll/police(src) - new /obj/item/weapon/storage/belt/holster(src) + new /obj/item/clothing/tie/holster/armpit(src) return /obj/structure/closet/secure_closet/detective/update_icon() diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index fe90597b4c3..fb8977de393 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -1,6 +1,7 @@ /obj/item/clothing name = "clothing" var/list/species_restricted = null //Only these species can wear this kit. + var/rig_restrict_helmet = 0 // Stops the user from equipping a rig helmet without attaching it to the suit first. /* Sprites used when the clothing item is refit. This is done by setting icon_override. diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm index 3f9ceacc2da..d1d9962393b 100644 --- a/code/modules/clothing/spacesuits/alien.dm +++ b/code/modules/clothing/spacesuits/alien.dm @@ -238,7 +238,7 @@ usr << "It would be hard to take these off without relaxing your grip first." //theoretically this message should only be seen by the wearer when the claws are equipped. /obj/item/clothing/suit/space/eva/vox - name = "Vox Space Suit" + name = "Vox EVA Suit" icon_state = "voxspace" item_state = "voxspace" species_restricted = list("Vox", "Vox Armalis") @@ -248,7 +248,7 @@ ) /obj/item/clothing/head/helmet/space/eva/vox - name = "Vox Space Suit" + name = "Vox EVA Suit" icon_state = "voxspace" item_state = "voxspace" species_restricted = list("Vox","Vox Armalis") diff --git a/code/modules/clothing/spacesuits/rig.dm b/code/modules/clothing/spacesuits/rig.dm index f3dc8d6b36e..04fc8365eaa 100644 --- a/code/modules/clothing/spacesuits/rig.dm +++ b/code/modules/clothing/spacesuits/rig.dm @@ -4,6 +4,7 @@ desc = "A special helmet designed for work in a hazardous, low-pressure environment." icon_state = "rig0-engineering" item_state = "eng_helm" + rig_restrict_helmet = 1 armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75) allowed = list(/obj/item/device/flashlight) var/brightness_on = 4 //luminosity when on @@ -436,16 +437,17 @@ //Medical Rig /obj/item/clothing/head/helmet/space/rig/medical name = "medical hardsuit helmet" - desc = "A special helmet designed for work in a hazardous, low pressure environment. Has minor radiation shielding." + desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra comfort, but does not protect the eyes from intense light." icon_state = "rig0-medical" item_state = "medical_helm" _color = "medical" + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50) /obj/item/clothing/suit/space/rig/medical icon_state = "rig-medical" name = "medical hardsuit" - desc = "A special suit that protects against hazardous, low pressure environments. Has minor radiation shielding." + desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra comfort." item_state = "medical_hardsuit" slowdown = 1 allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical) diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index b1b72376e8c..316cf98f2ff 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -7,6 +7,8 @@ desc = "A hazard vest used in the recovery of bodies." icon_state = "paramedic-vest" item_state = "paramedic-vest" + allowed = list(/obj/item/stack/medical, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/hypospray, /obj/item/weapon/reagent_containers/syringe, \ + /obj/item/device/healthanalyzer, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen) armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 10) species_fit = list("Vox") sprite_sheets = list( diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm index 7b847a09faa..5bf9e1cb75f 100644 --- a/code/modules/clothing/under/ties.dm +++ b/code/modules/clothing/under/ties.dm @@ -176,11 +176,12 @@ _color = "medgreen" /obj/item/clothing/tie/holster - name = "shoulder holster" + name = "large shoulder holster" desc = "A handgun holster." icon_state = "holster" _color = "holster" var/obj/item/weapon/gun/holstered = null + var/holster_allow = /obj/item/weapon/gun icon_action_button = "action_holster" /obj/item/clothing/tie/holster/attack_self() @@ -191,27 +192,27 @@ if(usr.stat) return if(!holstered) - if(!istype(usr.get_active_hand(), /obj/item/weapon/gun)) - usr << "\blue You need your gun equiped to holster it." + if(!istype(usr.get_active_hand(), holster_allow)) + usr << "You can't fit that in the holster." return var/obj/item/weapon/gun/W = usr.get_active_hand() if (!W.isHandgun()) - usr << "\red This gun won't fit in \the [src]!" + usr << "This gun won't fit in \the [src]!" return holstered = usr.get_active_hand() usr.drop_item() holstered.loc = src - usr.visible_message("\blue \The [usr] holsters \the [holstered].", "You holster \the [holstered].") + usr.visible_message("\The [usr] holsters \the [holstered].", "You holster \the [holstered].") else if(istype(usr.get_active_hand(),/obj) && istype(usr.get_inactive_hand(),/obj)) - usr << "\red You need an empty hand to draw the gun!" + usr << "You need an empty hand to draw the gun!" else if(usr.a_intent == "harm") - usr.visible_message("\red \The [usr] draws \the [holstered], ready to shoot!", \ - "\red You draw \the [holstered], ready to shoot!") + usr.visible_message("\The [usr] draws \the [holstered], ready to shoot!", \ + "You draw \the [holstered], ready to shoot!") else - usr.visible_message("\blue \The [usr] draws \the [holstered], pointing it at the ground.", \ - "\blue You draw \the [holstered], pointing it at the ground.") + usr.visible_message("\The [usr] draws \the [holstered], pointing it at the ground.", \ + "You draw \the [holstered], pointing it at the ground.") usr.put_in_hands(holstered) holstered = null @@ -220,6 +221,7 @@ desc = "A worn-out handgun holster. Perfect for concealed carry" icon_state = "holster" _color = "holster" + holster_allow = /obj/item/weapon/gun/projectile /obj/item/clothing/tie/storage name = "load bearing equipment" diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index b6df7d94c3b..8441b36dcd4 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -150,7 +150,7 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meaty Ores", /datum/event/dust/meaty, 0, list(ASSIGNMENT_ENGINEER = 20)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 500, list(ASSIGNMENT_AI = 150, ASSIGNMENT_SECURITY = 120)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Prison Break", /datum/event/prison_break, 0, list(ASSIGNMENT_SECURITY = 100)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 200, list(ASSIGNMENT_ENGINEER = 60)), +// new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 200, list(ASSIGNMENT_ENGINEER = 60)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Electrical Storm", /datum/event/electrical_storm, 250, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_JANITOR = 150)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 0, list(ASSIGNMENT_MEDICAL = 50), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Viral Infection", /datum/event/viral_infection, 0, list(ASSIGNMENT_MEDICAL = 150)), @@ -159,15 +159,15 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT new /datum/event_meta/alien(EVENT_LEVEL_MODERATE, "Alien Infestation", /datum/event/alien_infestation, 2.5, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5), new /datum/event_meta/ninja(EVENT_LEVEL_MODERATE, "Space Ninja", /datum/event/space_ninja, 0, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5), // NON-BAY EVENTS - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Dust", /datum/event/dust, 50, list(ASSIGNMENT_ENGINEER = 50)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Dust", /datum/event/dust, 50, list(ASSIGNMENT_ENGINEER = 50)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Dimensional Tear", /datum/event/tear, 0, list(ASSIGNMENT_SECURITY = 25)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Wormholes", /datum/event/wormholes, 150), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Wormholes", /datum/event/wormholes, 150), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Pyro Anomaly", /datum/event/anomaly/anomaly_pyro, 100, list(ASSIGNMENT_ENGINEER = 60)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Vortex Anomaly", /datum/event/anomaly/anomaly_vortex, 50, list(ASSIGNMENT_ENGINEER = 25)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Bluespace Anomaly", /datum/event/anomaly/anomaly_bluespace, 50, list(ASSIGNMENT_ENGINEER = 25)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Flux Anomaly", /datum/event/anomaly/anomaly_flux, 50, list(ASSIGNMENT_ENGINEER = 50)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gravitational Anomaly", /datum/event/anomaly/anomaly_grav, 200), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Pyro Anomaly", /datum/event/anomaly/anomaly_pyro, 100, list(ASSIGNMENT_ENGINEER = 60)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Vortex Anomaly", /datum/event/anomaly/anomaly_vortex, 50, list(ASSIGNMENT_ENGINEER = 25)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Bluespace Anomaly", /datum/event/anomaly/anomaly_bluespace, 50, list(ASSIGNMENT_ENGINEER = 25)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Flux Anomaly", /datum/event/anomaly/anomaly_flux, 50, list(ASSIGNMENT_ENGINEER = 50)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gravitational Anomaly", /datum/event/anomaly/anomaly_grav, 200), ) /datum/event_container/major diff --git a/code/modules/events/event_dynamic.dm b/code/modules/events/event_dynamic.dm index d94c5f3ea3a..df494ddc245 100644 --- a/code/modules/events/event_dynamic.dm +++ b/code/modules/events/event_dynamic.dm @@ -47,7 +47,7 @@ var/global/list/possibleEvents = list() possibleEvents[/datum/event/economic_event] = 300 possibleEvents[/datum/event/trivial_news] = 400 - possibleEvents[/datum/event/mundane_news] = 300 + possibleEvents[/datum/event/mundane_news] = 300 possibleEvents[/datum/event/cargo_bonus] = 150 @@ -59,7 +59,7 @@ var/global/list/possibleEvents = list() possibleEvents[/datum/event/mass_hallucination] = 200 possibleEvents[/datum/event/vent_clog] = 300 possibleEvents[/datum/event/anomaly/anomaly_grav] = 200 - + possibleEvents[/datum/event/wormholes] = 150 possibleEvents[/datum/event/carp_migration] = 20 + 10 * active_with_role["Engineer"] @@ -72,7 +72,7 @@ var/global/list/possibleEvents = list() possibleEvents[/datum/event/communications_blackout] = 50 + 25 * active_with_role["AI"] + active_with_role["Scientist"] * 25 possibleEvents[/datum/event/ionstorm] = active_with_role["AI"] * 25 + active_with_role["Cyborg"] * 25 + active_with_role["Engineer"] * 10 + active_with_role["Scientist"] * 5 - possibleEvents[/datum/event/grid_check] = 25 + 10 * active_with_role["Engineer"] +// possibleEvents[/datum/event/grid_check] = 25 + 10 * active_with_role["Engineer"] possibleEvents[/datum/event/electrical_storm] = 15 * active_with_role["Janitor"] + 5 * active_with_role["Engineer"] possibleEvents[/datum/event/wallrot] = 30 * active_with_role["Engineer"] + 50 * active_with_role["Botanist"] @@ -82,8 +82,8 @@ var/global/list/possibleEvents = list() possibleEvents[/datum/event/anomaly/anomaly_pyro] = 100 + 60 * active_with_role["Engineer"] possibleEvents[/datum/event/anomaly/anomaly_vortex] = 50 + 25 * active_with_role["Engineer"] possibleEvents[/datum/event/anomaly/anomaly_bluespace] = 50 + 25 * active_with_role["Engineer"] - possibleEvents[/datum/event/anomaly/anomaly_flux] = 50 + 50 * active_with_role["Engineer"] - + possibleEvents[/datum/event/anomaly/anomaly_flux] = 50 + 50 * active_with_role["Engineer"] + possibleEvents[/datum/event/meteor_wave] = 10 * active_with_role["Engineer"] possibleEvents[/datum/event/meteor_shower] = 20 * active_with_role["Engineer"] possibleEvents[/datum/event/blob] = 10 * active_with_role["Engineer"] diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 53c834cb371..1c0feaaef05 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1016,6 +1016,8 @@ number += 2 if(istype(src.head, /obj/item/clothing/head/helmet/space/eva)) number -= 2 + if(istype(src.head, /obj/item/clothing/head/helmet/space/rig/medical)) + number -= 2 if(istype(src.glasses, /obj/item/clothing/glasses/thermal)) number -= 1 if(istype(src.glasses, /obj/item/clothing/glasses/sunglasses)) @@ -1412,7 +1414,6 @@ if(H) H.brained=1 h_style = "Bald" - drop_from_inventory(head) update_hair() update_body() diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 171de58faab..2520b2d1982 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -10,6 +10,10 @@ H << "You are not holding anything to equip." return + if(istype(I, /obj/item/clothing/head/helmet/space/rig)) // If the item to be equipped is a rigid suit helmet + src << "\red You must fasten the helmet to a hardsuit first. (Target the head and use on a hardsuit)" // Stop eva helms equipping. + return 0 + if(H.equip_to_appropriate_slot(I)) if(hand) update_inv_l_hand(0) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 54188426075..0f008d9f81a 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -106,7 +106,14 @@ var/obj/item/W = get_active_hand() if(istype(W)) - equip_to_slot_if_possible(W, slot) + if (istype(W, /obj/item/clothing)) + var/obj/item/clothing/C = W + if(C.rig_restrict_helmet) + src << "\red You must fasten the helmet to a hardsuit first. (Target the head and use on a hardsuit)" // Stop eva helms equipping. + else + equip_to_slot_if_possible(C, slot) + else + equip_to_slot_if_possible(W, slot) if(ishuman(src) && W == src:head) src:update_hair() diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 78f31a5d177..1f7da7049b2 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -1005,7 +1005,7 @@ Note that amputating the affected organ does in fact remove the infection from t if (burn_dam > 40) disfigure("burn") if(!brained) - if(brute_dam > 25) + if(brute_dam > 40) if(prob(10)) breakskull() diff --git a/code/modules/power/singularity/generator.dm b/code/modules/power/singularity/generator.dm index 69c3b611e39..bcd8403b54c 100644 --- a/code/modules/power/singularity/generator.dm +++ b/code/modules/power/singularity/generator.dm @@ -13,7 +13,6 @@ var/turf/T = get_turf(src) if(src.energy >= 200) var/admin_message = "New singularity made" - world << "lengthy = [length(fingerprintshidden)]" if(fingerprintshidden && length(fingerprintshidden)) admin_message += "touched by: " if(islist(fingerprintshidden)) diff --git a/code/modules/projectiles/guns/projectile/launchers.dm b/code/modules/projectiles/guns/projectile/launchers.dm index 5e53c71efa9..d1d7e471f1b 100644 --- a/code/modules/projectiles/guns/projectile/launchers.dm +++ b/code/modules/projectiles/guns/projectile/launchers.dm @@ -9,6 +9,8 @@ fire_sound = 'sound/effects/Explosion1.ogg' origin_tech = "combat=3" mag_type = "/obj/item/ammo_box/magazine/m75" + isHandgun() + return 1 /obj/item/weapon/gun/projectile/automatic/gyropistol/New() ..() diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index 26555a3b040..108e6977e11 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -6,6 +6,8 @@ origin_tech = "combat=2;materials=2;syndicate=2" mag_type = "/obj/item/ammo_box/magazine/m10mm" can_suppress = 1 + isHandgun() + return 1 /obj/item/weapon/gun/projectile/automatic/pistol/update_icon() ..() @@ -19,6 +21,8 @@ w_class = 3.0 origin_tech = "combat=3;materials=2" mag_type = "/obj/item/ammo_box/magazine/m45" + isHandgun() + return 1 /obj/item/weapon/gun/projectile/automatic/m2411/update_icon() @@ -32,6 +36,8 @@ icon_state = "deagle" force = 14.0 mag_type = "/obj/item/ammo_box/magazine/m50" + isHandgun() + return 1 /obj/item/weapon/gun/projectile/automatic/deagle/update_icon() ..() diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 369ccb1ec08..7bf99cec11e 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -363,6 +363,7 @@ var/bottlesprite = "1" //yes, strings var/pillsprite = "1" var/client/has_sprites = list() + var/printing = null /obj/machinery/chem_master/New() var/datum/reagents/R = new/datum/reagents(100) @@ -439,7 +440,33 @@ usr << browse(null, "window=chemmaster") usr.unset_machine() return - + + if (href_list["print_p"]) + if (!(src.printing)) + src.printing = 1 + for(var/mob/O in viewers(usr)) + O.show_message("\blue \the [src] rattles and prints out a sheet of paper.", 1) + sleep(25) + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc ) + P.info = "
Chemical Analysis

" + P.info += "Time of analysis: [worldtime2text(world.time)]

" + P.info += "Chemical name: [href_list["name"]]
" + if(href_list["name"] == "Blood") + var/datum/reagents/R = beaker:reagents + var/datum/reagent/blood/G + for(var/datum/reagent/F in R.reagent_list) + if(F.name == href_list["name"]) + G = F + break + var/B = G.data["blood_type"] + var/C = G.data["blood_DNA"] + P.info += "Description:
Blood Type: [B]
DNA: [C]" + else + P.info += "Description: [href_list["desc"]]" + P.info += "

Notes:
" + P.name = "Chemical Analysis - [href_list["name"]]" + src.printing = null + if(beaker) var/datum/reagents/R = beaker:reagents if (href_list["analyze"]) @@ -454,9 +481,11 @@ var/A = G.name var/B = G.data["blood_type"] var/C = G.data["blood_DNA"] - dat += "Chemmaster 3000Chemical infos:

Name:
[A]

Description:
Blood Type: [B]
DNA: [C]


(Back)" + dat += "Chemmaster 3000Chemical infos:

Name:
[A]

Description:
Blood Type: [B]
DNA: [C]" else - dat += "Chemmaster 3000Chemical infos:

Name:
[href_list["name"]]

Description:
[href_list["desc"]]


(Back)" + dat += "Chemmaster 3000Chemical infos:

Name:
[href_list["name"]]

Description:
[href_list["desc"]]" + dat += "

(Print Analysis)
" + dat += "(Back)" else dat += "Condimaster 3000Condiment infos:

Name:
[href_list["name"]]

Description:
[href_list["desc"]]


(Back)" usr << browse(dat, "window=chem_master;size=575x400") diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 69759b63b69..541518016b9 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -311,7 +311,7 @@ id = "retractor" build_type = AUTOLATHE materials = list("$metal" = 6000, "$glass" = 3000) - build_path = /obj/item/weapon/ + build_path = /obj/item/weapon/retractor category = list("initial", "Medical") /datum/design/scalpel diff --git a/code/modules/surgery/braincore.dm b/code/modules/surgery/braincore.dm index 7445fc2233e..3ce95d81553 100644 --- a/code/modules/surgery/braincore.dm +++ b/code/modules/surgery/braincore.dm @@ -30,7 +30,6 @@ user.visible_message("\blue [user] has cut through [target]'s skull open with \the [tool].", \ "\blue You have cut through [target]'s skull open with \the [tool].") target.brain_op_stage = 2 - target.expose_brain() fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("\red [user]'s hand slips, cracking [target]'s skull with \the [tool]!" , \ diff --git a/code/modules/vehicles/ambulance.dm b/code/modules/vehicles/ambulance.dm index 8212e93b085..581b8ca8efd 100644 --- a/code/modules/vehicles/ambulance.dm +++ b/code/modules/vehicles/ambulance.dm @@ -16,8 +16,8 @@ var/obj/item/weapon/key/ambulance_train/key /obj/item/weapon/key/ambulance_train - name = "key" - desc = "A keyring with a small steel key, and a yellow fob reading \"Choo Choo!\"." + name = "ambulance key" + desc = "A keyring with a small steel key, and tag with a red cross on it." icon = 'icons/obj/vehicles.dmi' icon_state = "keydoc" w_class = 1 diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm index 502d469d089..29484e720b4 100644 --- a/maps/cyberiad.dmm +++ b/maps/cyberiad.dmm @@ -2121,6 +2121,7 @@ "aOO" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor,/area/gateway) "aOP" = (/obj/machinery/light{dir = 4},/obj/effect/decal/warning_stripes/southwest,/obj/structure/closet/secure_closet/exile,/turf/simulated/floor,/area/gateway) "aOQ" = (/obj/structure/rack,/obj/item/weapon/storage/belt/archaeology,/obj/item/clothing/suit/space/eva/anomaly,/obj/item/clothing/head/helmet/space/eva/anomaly,/obj/item/clothing/mask/breath,/obj/machinery/light_switch{pixel_x = 0; pixel_y = 23},/turf/simulated/floor,/area/research_outpost/gearstore) +"aOR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/closet/paramedic,/obj/item/weapon/key/ambulance_train{name = "spare ambulance key"},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic) "aOS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aOT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/ai_monitored/storage/eva) "aOU" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) @@ -5032,7 +5033,6 @@ "bSO" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor,/area/janitor) "bSP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint) "bSQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint) -"bSR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/closet/paramedic,/obj/item/key/ambulance,/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic) "bSS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic) "bST" = (/obj/machinery/light,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 2; name = "Paramedic APC"; pixel_y = -24},/obj/machinery/camera{c_tag = "Paramedic Bay"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic) "bSU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic) @@ -12686,7 +12686,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyZbyZbyZbyZbyZbyZbyZbyZby aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyZbyZbyZbyZbyZbyZbyZbyZbyZaaaaaaaaaaaaaaaaaabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNVbNWbNXbNYbNVbNZbOabObbIybOcbOdbOebsYbOgbOhbOibOjbOjbOkbwdbOlbOmbOnaaqaaqbOobOpbOqaaqaaqaaqbOrbOsbOtaaqaaqbOubKcbKcbOvaaqaaqaaqaosbOwaaqaaqaaqbOxaaqaaqbOyaaqbOzaosaaqbOAbOBbOCaaqbODbOEbLIbOFaaibOGbOHbOIbOJaaibCQbLQbwKaaqbwLbwMbwObyAbzZbAcabJbORbOSbOTbOUbOVbOWbOXaaiaaiaaiaaiaaiaaiaaiaaiaaiaaibOYbOZbPabPaaaqbPbbPcbPdaaiaaiaaiaaiaaiaaiaaiaaibIhaaibPebPfbPgbPhbPhbPiaJmaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbPjbCfbCfbCgaaqaaqaaiaaiaaiaaibPkaabaabaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyZbyZbyZbyZbyZbyZbyZbyZbyZaaaaaaaaaaaaaaaaaabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMzbPlbPmbPlbMzbPnbAdbPpbPqbPrbPsbPtbPubPvbIAbPwbPxbPybPzbIAbOmbOmbPAaaqbPBbPCbPDbPEbPFaaqbPGbPHbPIbPJbPKaaqbPLbPMbPNaaqbPObEabPQbPRbPSbPTbPUbPVbPWabZbPXbPYbPZbQabQbbQcbQdbQebQfbQgbQhbQibQjbLJbQkbQlbQmbQnbQobQpbCYbDabBrbBxbAebwObFXbFXbEEbFTaaqbQybQzbQAbQBbQCbQDbQEaaibQFbQGbQHbQIbQHbQHbQJacFacFbQKbQLbQMbQNaaqbQObQPbJmaaibsfbQQbQRbQSbQSbQRbQSbQTaaibQUbQVbPgbPhbQWbQXaJmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQYbQZbRabQZaaqaaiaaibRbbRcbRbbRdaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyZbyZbyZbyZbyZbyZbyZbyZbyZaaaaaaaaaaaaaaaaaaaaabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNVbPlbPlbPlbRebRfbMCbRgbRhbRibMCbPtbRjbRkbIAbIAbIAbIAbIAbIAbRlbOmbEOabZbRnbRobRobRobRpaaqbRqbRrbRrbRrbRsaRkbRtbRubRvabZbRwbRxbRybRzbRAbRBaaqaaqbRCaaqbRDbREbRFbRGbRHaaqbLEbKlbLFbLGbRIbRJbRKbRLacFbRMbRNbRObRPaaibRQbLSbLUabZbTfbLVbKBbKCbKDbLTaaqaaqaaqaaqaaqaaJazraugaaibSabQHbQHbSbbQHbScbSdaaiaaibSebKRbSfbSfaaqbJkbSgbJmaaiaaibShaaiaaiaaiaaiaaiaaiaaibSibSjaJmbSkbSlbSmaJmaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacbSnbQZbQZbSoaaiaaibRbbRbbSpbRbbRbaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyZbyZbyZbyZbyZbyZbyZbyZbyZaaaaaaaaaaaaaaaaaaaaaaaabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMzbPmbPmbPmbMzbSqbLXbSsbStbLWbMCbSvbSwbSxbSybSzbSzbSzbSAbOmbOmbOmbPAaaqbRpbRobSBbRobSCaaqbSDbRrbSEbRrbSFaaqbSGbSHbSIaaqbSJbSKbSLbSMbSNbSOabJbSPbSQabJbSRbSSbSTbSUbSVaaqbNjbKlbKlbSWbRIbRJbSXbSYbSZbQlbTabTbbTcbTdbTebNubHGbOKbNvbNwbNtbNtbFXbLYaaqbTmbTnbTobTpbTqbTrbTsaaibSabTtbQHbQHbQHbTubTvaaiaaibTwbKRbSfbSfaaqbTxbTybJmaaibTzbTAbTBaaibTCbTDbTEbTFbTGbTHbTIaJmbTJbTKbTLaJmaaiaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabTMaaibSnaaiaaibRbbRbbRbbRbbRbbRbbRbaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyZbyZbyZbyZbyZbyZbyZbyZbyZaaaaaaaaaaaaaaaaaaaaaaaabzabzabzabzabzabzabzabzabzabzabzabzabzabzabzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMzbPmbPmbPmbMzbSqbLXbSsbStbLWbMCbSvbSwbSxbSybSzbSzbSzbSAbOmbOmbOmbPAaaqbRpbRobSBbRobSCaaqbSDbRrbSEbRrbSFaaqbSGbSHbSIaaqbSJbSKbSLbSMbSNbSOabJbSPbSQabJaORbSSbSTbSUbSVaaqbNjbKlbKlbSWbRIbRJbSXbSYbSZbQlbTabTbbTcbTdbTebNubHGbOKbNvbNwbNtbNtbFXbLYaaqbTmbTnbTobTpbTqbTrbTsaaibSabTtbQHbQHbQHbTubTvaaiaaibTwbKRbSfbSfaaqbTxbTybJmaaibTzbTAbTBaaibTCbTDbTEbTFbTGbTHbTIaJmbTJbTKbTLaJmaaiaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabTMaaibSnaaiaaibRbbRbbRbbRbbRbbRbbRbaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyZbyZbyZbyZbyZbyZbyZbyZbyZaaaaaaaaaaaaaaaaaaaaaaaaaaabzabzabzabzabzabzabzabzabzabzabzabzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaabNVbTNbTObTPbNVbTQbOabObbIybIybTRbTRbTRbIybIybOmbTSbTSbTTbTUbOmbTVbTWaaqbRpbRobRobRobTXaaqbSDbRrbRrbTYbTZabJbIRbUbbUcaaqaaqaaqaaqaaqbUdaaqaaqbUebUfaaqaaqbUgaaqaosaaqaaqbUhbUibUiaaqaaqbUjbUkbUlbUmbUnbUobUpbUqbUraaqbIWbHGbHIbIUbIVbGebGfbKFbHFaaqbUvbUwbUxbUybUzbUAbUBaaibUCaaibUDbUEbUFaaiafaaaiaaibUGbUHbSfbSfaaqbUIbSgbJmbUJbUKbULbUMbUNbUObUPbUPbUQbURbUSbUTbUUbUVbUWbUXbUYbUZbVabVbachbVcbVdbVebVfaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaqaaibVgbVhbVhbRbbRbbRbbRbbRbbRbbRbbRbaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyZbyZbyZbyZbyZbyZbyZbyZbyZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVibMybVjbMybVkbVlaabaaaaaabIybVmbVnbVobIyaaabOmbVpbVqbVrbVsbVtbVubVvaaqbVwbVxbVybRobRpaMhbVzbVAbVBbVCbVDaaqbVEbVFbVGbVHbVIbVIbVIbVIbVJbVKbVLbVMbVMbVNbVNbVObVPbVQaaqaaqbVRbIZbIXbVUbVVbRJbVWbUlbVXbVYaEmbVZbLObWaaEmbKAbKzaoaaoabJbaoaaoaaoabJaaaqbWjbWkbWlbWmbWnbWobWpaaibWqbWrbWsbWtbWubWrbWvbWwaaqbWxbWybKSaaqaaqbWzbWAbWBacFbWCbWDbWEacFbWFbWGbWHbWIbWJbWKbWLbWMbWNbWObWNbWPbWObWObWObWQbWRbWSbWTbWUaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaiaaibWVbRbbRbbRbbRbbRbbRbbRbbRbbRbbRbbRbaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabbWWbOmbOmbOmbtqbOmbOmbWYaaqbWZbXabXbbXcbXdaaJbXebXfbXgbXhbXiaMhbXjbXkbXlabJachachachachbnbbXmbowabZbXnabZabZbXobXpbXqbXrbXsbrCbrBbrDbXwbXxbXybXzbXAbXBbXCbrEbXEbXFbXGbXHbXIcagcagcagbrFbtnbtocdLbtpaaqaaqbXLaaqamfbXMbXNbXOaaibXPbXQbXRbXSbXRbXTbXUbXVaaqaaqbXWaaqaaqbXXbXYbSgbvwaaiaaibXZaaiaaibYabYbbYcbYdbYebWObYfbYgbYhbWHbYhbWHbYibWHbWHaaibYjbYkbYlbYmaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaibRbbRbbRbbRbbRbbRbbYnbRbbYobRbbRbbRbbRbbRbaaiaaiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/nano/templates/chem_dispenser.tmpl b/nano/templates/chem_dispenser.tmpl index 1dd960f9c8a..3de1d02984d 100644 --- a/nano/templates/chem_dispenser.tmpl +++ b/nano/templates/chem_dispenser.tmpl @@ -64,9 +64,9 @@ Used In File(s): \code\modules\reagents\Chemistry-Machinery.dm {{empty}} {{if data.glass}} - Glass + Glass {{else}} - Beaker + Beaker {{/if}} is empty @@ -75,10 +75,10 @@ Used In File(s): \code\modules\reagents\Chemistry-Machinery.dm No {{if data.glass}} - Glass + Glass {{else}} - Beaker - {{/if}} + Beaker + {{/if}} loaded {{/if}}