Files
Aurora.3/code/game/objects/items/weapons/surgery_tools.dm
Wowzewow (Wezzy) cc8eab09ef Reagent Containers : The 3/4thening & Contained Spritening (and other related food things) (#17231)
* food and drink

* sabrage

* kanpai and blasted on grain alcohol

* beakers

* Update code/modules/reagents/reagent_containers/food/cans.dm

Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>

* Update code/modules/reagents/reagent_containers/food/cans.dm

Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>

* Update code/modules/reagents/reagent_containers/food/cans.dm

Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>

* Update code/modules/reagents/reagent_containers/food/cans.dm

Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>

* Update code/modules/reagents/reagent_containers/food/cans.dm

Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>

* Update code/modules/reagents/reagent_containers/food/drinks/bottle.dm

Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>

* Update code/modules/reagents/reagent_containers/food/drinks/bottle.dm

Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>

* changelog

* the contained sprite-ening....

* deletes old file

* teapot

* aaaaahhhh

* AAAGH INHANDS

* volume = 30

* fixes invalid icon state

* is this really that fucking esoteric

* Revert "is this really that fucking esoteric"

This reverts commit 5b238c7821.

* this should fix it maybe

* fixes 2

* the simple solution

* skibidi toilet

* god dammit

* jyalra

* redundancy

---------

Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>
2023-09-06 18:54:20 +00:00

346 lines
11 KiB
Plaintext

/* Surgery Tools
* Contains:
* Retractor
* Hemostat
* Cautery
* Surgical Drill
* Scalpel
* Circular Saw
* Tray
*/
/obj/item/surgery
name = "surgery tool parent item"
desc = DESC_PARENT
icon = 'icons/obj/surgery.dmi'
contained_sprite = TRUE
w_class = ITEMSIZE_SMALL
drop_sound = 'sound/items/drop/weldingtool.ogg'
pickup_sound = 'sound/items/pickup/weldingtool.ogg'
recyclable = TRUE
/*
* Retractor
*/
/obj/item/surgery/retractor
name = "retractor"
desc = "A pair of retractor forceps. Allows careful opening of incisions to reach inside someone."
icon_state = "retractor"
item_state = "retractor"
matter = list(DEFAULT_WALL_MATERIAL = 10000, MATERIAL_GLASS = 5000)
flags = CONDUCT
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
/*
* Hemostat
*/
/obj/item/surgery/hemostat
name = "hemostat"
desc = "A pair of hemostatic forceps, able to clamp blood vessels shut to stop bleeding during surgery. Its narrow tip also lets it double as a tool for removing things from surgical sites."
icon_state = "hemostat"
item_state = "hemostat"
matter = list(DEFAULT_WALL_MATERIAL = 5000, MATERIAL_GLASS = 2500)
flags = CONDUCT
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
attack_verb = list("attacked", "pinched")
/*
* Cautery
*/
/obj/item/surgery/cautery
name = "cautery"
desc = "An electrocautery pen. Uses electrical currents to burn tissue closed, useful for quickly sealing wounds or incisions."
icon_state = "cautery"
item_state = "cautery"
matter = list(DEFAULT_WALL_MATERIAL = 5000, MATERIAL_GLASS = 2500)
flags = CONDUCT
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
attack_verb = list("burnt")
/*
* Surgical Drill
*/
/obj/item/surgery/surgicaldrill
name = "surgical drill"
desc = "A drill specialized for surgical use. Capable of creating surgical cavities and safely breaching through Vaurcae carapace for initial incisions."
icon_state = "drill"
item_state = "drill"
hitsound = /singleton/sound_category/drillhit_sound
matter = list(DEFAULT_WALL_MATERIAL = 15000, MATERIAL_GLASS = 10000)
flags = CONDUCT
force = 15
w_class = ITEMSIZE_NORMAL
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
attack_verb = list("drilled")
drop_sound = 'sound/items/drop/accessory.ogg'
pickup_sound = 'sound/items/pickup/accessory.ogg'
/*
* Scalpel
*/
/obj/item/surgery/scalpel
name = "scalpel"
desc = "A surgical-grade scalpel with an incredibly sharp blade that keeps its edge. Used in a variety of surgical situations from incisions, to transplants, to debridements."
icon_state = "scalpel"
item_state = "scalpel"
flags = CONDUCT
force = 10
sharp = 1
edge = TRUE
w_class = ITEMSIZE_TINY
slot_flags = SLOT_EARS
throwforce = 5
throw_speed = 3
throw_range = 5
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
matter = list(DEFAULT_WALL_MATERIAL = 10000, MATERIAL_GLASS = 5000)
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
drop_sound = 'sound/items/drop/knife.ogg'
pickup_sound = 'sound/items/pickup/knife.ogg'
/*
* Researchable Scalpels
*/
/obj/item/surgery/scalpel/laser1
name = "laser scalpel"
desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks basic and could be improved."
icon_state = "scalpel_laser1"
damtype = "fire"
/obj/item/surgery/scalpel/laser2
name = "laser scalpel"
desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks somewhat advanced."
icon_state = "scalpel_laser2"
damtype = "fire"
force = 12
/obj/item/surgery/scalpel/laser3
name = "laser scalpel"
desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks to be the pinnacle of precision energy cutlery!"
icon_state = "scalpel_laser3"
damtype = "fire"
force = 15
/obj/item/surgery/scalpel/manager
name = "incision management system"
desc = "A true extension of the surgeon's body, this marvel instantly and completely prepares an incision allowing for the immediate commencement of therapeutic steps."
icon_state = "scalpel_manager"
force = 7.5
/*
* Circular Saw
*/
/obj/item/surgery/circular_saw
name = "surgical saw"
desc = "A reciprocating electric bonesaw. While designed to cut through bone, it's powerful enough to cut limbs and even hardsuits if necessary. Watch your fingers."
icon_state = "saw"
item_state = "saw"
hitsound = 'sound/weapons/saw/circsawhit.ogg'
flags = CONDUCT
force = 15
w_class = ITEMSIZE_NORMAL
throwforce = 9
throw_speed = 3
throw_range = 5
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
matter = list(DEFAULT_WALL_MATERIAL = 20000, MATERIAL_GLASS = 10000)
attack_verb = list("attacked", "slashed", "sawed", "cut")
sharp = TRUE
edge = TRUE
drop_sound = 'sound/items/drop/accessory.ogg'
pickup_sound = 'sound/items/pickup/accessory.ogg'
// Miscellanous
/obj/item/surgery/bone_gel
name = "bone gel"
desc = "A bottle-and-nozzle applicator containing a specialized gel. When applied to bone tissue, it can reinforce and repair breakages and act as a glue to keep bones in place while they heal."
icon_state = "bone-gel"
item_state = "bone-gel"
force = 2
throwforce = 5
drop_sound = 'sound/items/drop/bottle.ogg'
pickup_sound = 'sound/items/pickup/bottle.ogg'
/obj/item/surgery/fix_o_vein
name = "vascular recoupler"
desc = "An advanced automatic surgical instrument that operates with extreme finesse. It can quickly and safely repair and recouple ruptured blood vessels and ligaments using highly elaborate, biodegradable microsutures. It can also be used for transplantations to attach organs to the body."
icon_state = "fixovein"
item_state = "fixovein"
force = 2
throwforce = 5
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 3)
var/usage_amount = 10
drop_sound = 'sound/items/drop/accessory.ogg'
pickup_sound = 'sound/items/pickup/accessory.ogg'
/obj/item/surgery/bonesetter
name = "bone setter"
desc = "A pair of forceps with a screw. It's designed to manipulate bones and hold them together, and is best paired with a bottle of bone gel for mending fractures."
icon_state = "bonesetter"
item_state = "bonesetter"
force = 8
throwforce = 9
throw_speed = 3
throw_range = 5
attack_verb = list("attacked", "hit", "bludgeoned")
/obj/item/storage/box/fancy/tray
name = "surgery tray"
desc = "A tray of surgical tools."
icon = 'icons/obj/surgery.dmi'
icon_state = "surgerytray"
use_sound = null
drop_sound = 'sound/items/drop/axe.ogg'
pickup_sound = 'sound/items/pickup/axe.ogg'
force = 2
w_class = ITEMSIZE_HUGE
storage_slots = 10
attack_verb = list("slammed")
icon_type = "surgery tool"
storage_type = "tray"
can_hold = list(
/obj/item/surgery/bonesetter,
/obj/item/surgery/cautery,
/obj/item/surgery/circular_saw,
/obj/item/surgery/hemostat,
/obj/item/surgery/retractor,
/obj/item/surgery/scalpel,
/obj/item/surgery/surgicaldrill,
/obj/item/surgery/bone_gel,
/obj/item/surgery/fix_o_vein,
/obj/item/stack/medical/advanced/bruise_pack,
/obj/item/stack/nanopaste
)
starts_with = list(
/obj/item/surgery/bonesetter = 1,
/obj/item/surgery/cautery = 1,
/obj/item/surgery/circular_saw = 1,
/obj/item/surgery/hemostat = 1,
/obj/item/surgery/retractor = 1,
/obj/item/surgery/scalpel = 1,
/obj/item/surgery/surgicaldrill = 1,
/obj/item/surgery/bone_gel = 1,
/obj/item/surgery/fix_o_vein = 1,
/obj/item/stack/medical/advanced/bruise_pack = 1
)
/obj/item/storage/box/fancy/tray/update_icon()
cut_overlays()
var/list/types_and_overlays = list(
/obj/item/surgery/bonesetter = "tray_bonesetter",
/obj/item/surgery/cautery = "tray_cautery",
/obj/item/surgery/circular_saw = "tray_saw",
/obj/item/surgery/hemostat = "tray_hemostat",
/obj/item/surgery/retractor = "tray_retractor",
/obj/item/surgery/scalpel = "tray_scalpel",
/obj/item/surgery/scalpel/laser1 = "tray_scalpel_laser1",
/obj/item/surgery/scalpel/laser2 = "tray_scalpel_laser2",
/obj/item/surgery/scalpel/laser3 = "tray_scalpel_laser3",
/obj/item/surgery/scalpel/manager = "tray_scalpel_manager",
/obj/item/surgery/surgicaldrill = "tray_drill",
/obj/item/surgery/bone_gel = "tray_bone-gel",
/obj/item/surgery/fix_o_vein = "tray_fixovein",
/obj/item/stack/medical/advanced/bruise_pack = "tray_bruise_pack",
/obj/item/autopsy_scanner = "tray_autopsy_scanner",
/obj/item/device/mass_spectrometer = "tray_mass_spectrometer",
/obj/item/reagent_containers/glass/beaker/vial = "tray_vial",
/obj/item/reagent_containers/syringe = "tray_syringe"
)
for (var/obj/item/W in contents)
if (types_and_overlays[W.type])
add_overlay(types_and_overlays[W.type])
types_and_overlays -= W.type
/obj/item/storage/box/fancy/tray/fill()
. = ..()
update_icon()
/obj/item/storage/box/fancy/tray/attackby(obj/item/W as obj, mob/user as mob)
..()
update_icon()
/obj/item/storage/box/fancy/tray/attack_hand(mob/user as mob)
if(ishuman(user))
src.open(user)
/obj/item/storage/box/fancy/tray/MouseDrop(mob/user as mob)
if((user && (!use_check(user))) && (user.contents.Find(src) || in_range(src, user)))
if(ishuman(user) && !user.get_active_hand())
var/mob/living/carbon/human/H = user
var/obj/item/organ/external/temp = H.organs_by_name[BP_R_HAND]
if (H.hand)
temp = H.organs_by_name[BP_L_HAND]
if(temp && !temp.is_usable())
to_chat(user, "<span class='notice'>You try to move your [temp.name], but cannot!</span>")
return
to_chat(user, "<span class='notice'>You pick up the [src].</span>")
pixel_x = 0
pixel_y = 0
forceMove(get_turf(user))
user.put_in_hands(src)
return
/obj/item/storage/box/fancy/tray/attack(mob/living/M as mob, mob/user as mob, var/target_zone)
if(..() && contents.len)
spill(3, get_turf(M))
playsound(M, /singleton/sound_category/tray_hit_sound, 50, 1) //sound playin' again
user.visible_message(SPAN_DANGER("[user] smashes \the [src] into [M], causing it to spill its contents across the area!"))
/obj/item/storage/box/fancy/tray/throw_impact(atom/hit_atom)
..()
spill(3, src.loc)
/obj/item/storage/box/fancy/tray/autopsy
name = "autopsy tray"
starts_with = list(
/obj/item/surgery/circular_saw = 1,
/obj/item/surgery/hemostat = 1,
/obj/item/surgery/retractor = 1,
/obj/item/surgery/scalpel = 1,
/obj/item/surgery/surgicaldrill = 1,
/obj/item/surgery/cautery = 1,
/obj/item/autopsy_scanner = 1,
/obj/item/device/mass_spectrometer = 1,
/obj/item/reagent_containers/glass/beaker/vial = 1,
/obj/item/reagent_containers/syringe = 1
)
can_hold = list(
/obj/item/surgery/circular_saw,
/obj/item/surgery/hemostat,
/obj/item/surgery/retractor,
/obj/item/surgery/scalpel,
/obj/item/surgery/surgicaldrill,
/obj/item/surgery/cautery,
/obj/item/autopsy_scanner,
/obj/item/device/mass_spectrometer,
/obj/item/reagent_containers/glass/beaker/vial,
/obj/item/reagent_containers/syringe
)
/obj/item/storage/box/fancy/tray/machinist
name = "machinist operation tray"
desc = "A tray of various tools for use by machinists in repairing robots."
can_hold = list(
/obj/item/surgery/cautery,
/obj/item/surgery/circular_saw,
/obj/item/surgery/hemostat,
/obj/item/surgery/retractor,
/obj/item/surgery/scalpel,
/obj/item/surgery/bone_gel,
/obj/item/stack/nanopaste
)
starts_with = list(
/obj/item/surgery/cautery = 1,
/obj/item/surgery/circular_saw = 1,
/obj/item/surgery/hemostat = 1,
/obj/item/surgery/retractor = 1,
/obj/item/surgery/scalpel = 1,
/obj/item/surgery/bone_gel = 1
)