Files
Aurora.3/code/game/objects/items/weapons/surgery_tools.dm
Wowzewow (Wezzy) 89eb38177a The awesome fancy box update which looks super epic, immersive and cool (#9331)
rscadd: "The cookie snack now contains cookies, like the mint and gum packs. They've also been added to the rations box selection."
    rscadd: "Gum packs, mint packs and the cookie snack from the vending machines visibly open when clicked on."
    rscadd: "Gum packs, mint packs and the cookie snack can be crumpled up when empty. If you really wanted to, you still can crumple it with things inside, so long as you're in harm intent."
    rscadd: "Odd boxes, such as candle boxes, donut boxes, crayon boxes and egg boxes can be folded and unfolded from cardboard sheets."
    rscadd: "Donut boxes, egg cartons and cigarette packets visibly open when clicked on. Alt-click to close."
    rscadd: "Mints actually have a proper taste description now."
2020-07-18 00:10:53 +03:00

291 lines
8.4 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 = 2.0
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',
)
/*
* 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 = 'sound/weapons/saw/circsawhit.ogg'
matter = list(DEFAULT_WALL_MATERIAL = 15000, MATERIAL_GLASS = 10000)
flags = CONDUCT
force = 15.0
w_class = 3
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 = 1
w_class = 1
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 = "scalpel"
hitsound = 'sound/weapons/saw/circsawhit.ogg'
flags = CONDUCT
force = 15.0
w_class = 3
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 = 1
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 = 5.0
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, 'sound/items/trayhit2.ogg', 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)