mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-29 11:31:38 +00:00
292 lines
8.5 KiB
Plaintext
292 lines
8.5 KiB
Plaintext
/* Surgery Tools
|
|
* Contains:
|
|
* Retractor
|
|
* Hemostat
|
|
* Cautery
|
|
* Surgical Drill
|
|
* Scalpel
|
|
* Circular Saw
|
|
* Tray
|
|
*/
|
|
/obj/item/surgery
|
|
name = "surgery tool"
|
|
desc = "hey, you aren't supposed to have this"
|
|
icon = 'icons/obj/surgery.dmi'
|
|
w_class = ITEMSIZE_SMALL
|
|
drop_sound = 'sound/items/drop/weldingtool.ogg'
|
|
pickup_sound = 'sound/items/pickup/weldingtool.ogg'
|
|
item_icons = list(
|
|
slot_l_hand_str = 'icons/mob/items/lefthand_medical.dmi',
|
|
slot_r_hand_str = 'icons/mob/items/righthand_medical.dmi',
|
|
)
|
|
recyclable = TRUE
|
|
|
|
/*
|
|
* Retractor
|
|
*/
|
|
/obj/item/surgery/retractor
|
|
name = "retractor"
|
|
desc = "Retracts stuff."
|
|
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 = "You think you have seen this before."
|
|
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 = "This stops bleeding."
|
|
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 = "You can drill using this item. You dig?"
|
|
icon_state = "drill"
|
|
item_state = "drill"
|
|
hitsound = /decl/sound_category/drillhit_sound
|
|
matter = list(DEFAULT_WALL_MATERIAL = 15000, MATERIAL_GLASS = 10000)
|
|
flags = CONDUCT
|
|
force = 15.0
|
|
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 = "Cut, cut, and once more cut."
|
|
icon_state = "scalpel"
|
|
item_state = "scalpel"
|
|
flags = CONDUCT
|
|
force = 10.0
|
|
sharp = 1
|
|
edge = TRUE
|
|
w_class = ITEMSIZE_TINY
|
|
slot_flags = SLOT_EARS
|
|
throwforce = 5.0
|
|
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.0
|
|
|
|
/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.0
|
|
|
|
/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 = "circular saw"
|
|
desc = "For heavy duty cutting."
|
|
icon_state = "saw"
|
|
item_state = "saw"
|
|
hitsound = 'sound/weapons/saw/circsawhit.ogg'
|
|
flags = CONDUCT
|
|
force = 15.0
|
|
w_class = ITEMSIZE_NORMAL
|
|
throwforce = 9.0
|
|
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 = 1
|
|
edge = TRUE
|
|
drop_sound = 'sound/items/drop/accessory.ogg'
|
|
pickup_sound = 'sound/items/pickup/accessory.ogg'
|
|
|
|
//misc, formerly from code/defines/weapons.dm
|
|
/obj/item/surgery/bonegel
|
|
name = "bone gel"
|
|
icon_state = "bone-gel"
|
|
item_state = "bone-gel"
|
|
force = 0
|
|
throwforce = 1.0
|
|
drop_sound = 'sound/items/drop/bottle.ogg'
|
|
pickup_sound = 'sound/items/pickup/bottle.ogg'
|
|
|
|
/obj/item/surgery/FixOVein
|
|
name = "FixOVein"
|
|
icon_state = "fixovein"
|
|
item_state = "fixovein"
|
|
force = 0
|
|
throwforce = 1.0
|
|
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"
|
|
icon_state = "bonesetter"
|
|
item_state = "bonesetter"
|
|
force = 8.0
|
|
throwforce = 9.0
|
|
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/bonegel,
|
|
/obj/item/surgery/FixOVein,
|
|
/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/bonegel = 1,
|
|
/obj/item/surgery/FixOVein = 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/bonegel = "tray_bone-gel",
|
|
/obj/item/surgery/FixOVein = "tray_fixovein",
|
|
/obj/item/stack/medical/advanced/bruise_pack = "tray_bruise_pack"
|
|
)
|
|
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, /decl/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)
|