From cabe2676e9b5165e12ef1c3a8dea1fdb5ca6fed4 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Sun, 18 Feb 2018 13:03:05 -0600 Subject: [PATCH 1/6] POLARIS: Moves most boxes to use starts_with --- .../objects/items/weapons/storage/backpack.dm | 28 +- .../objects/items/weapons/storage/bags.dm | 187 +++++---- .../objects/items/weapons/storage/belt.dm | 103 +++-- .../objects/items/weapons/storage/bible.dm | 13 +- .../objects/items/weapons/storage/boxes.dm | 385 ++++-------------- .../objects/items/weapons/storage/fancy.dm | 102 ++--- .../objects/items/weapons/storage/firstaid.dm | 335 +++++---------- .../objects/items/weapons/storage/lockbox.dm | 36 +- .../objects/items/weapons/storage/misc.dm | 11 +- .../objects/items/weapons/storage/secure.dm | 17 +- .../objects/items/weapons/storage/storage.dm | 4 +- .../objects/items/weapons/storage/toolbox.dm | 93 +++-- .../items/weapons/storage/uplink_kits.dm | 339 +++++++-------- .../objects/items/weapons/storage/wallets.dm | 2 +- code/modules/power/cable.dm | 6 + icons/mob/items/lefthand_storage.dmi | Bin 23274 -> 23374 bytes icons/mob/items/righthand_storage.dmi | Bin 23341 -> 23540 bytes 17 files changed, 623 insertions(+), 1038 deletions(-) diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index c564ebe4662..10072cd4cc2 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -47,22 +47,18 @@ max_storage_space = ITEMSIZE_COST_NORMAL * 14 // 56 storage_cost = INVENTORY_STANDARD_SPACE + 1 - New() - ..() +/obj/item/weapon/storage/backpack/holding/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/weapon/storage/backpack/holding)) + user << "The Bluespace interfaces of the two devices conflict and malfunction." + qdel(W) return + . = ..() - attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/storage/backpack/holding)) - user << "The Bluespace interfaces of the two devices conflict and malfunction." - qdel(W) - return - ..() - - //Please don't clutter the parent storage item with stupid hacks. - can_be_inserted(obj/item/W as obj, stop_messages = 0) - if(istype(W, /obj/item/weapon/storage/backpack/holding)) - return 1 - return ..() +//Please don't clutter the parent storage item with stupid hacks. +/obj/item/weapon/storage/backpack/holding/can_be_inserted(obj/item/W as obj, stop_messages = 0) + if(istype(W, /obj/item/weapon/storage/backpack/holding)) + return 1 + return ..() /obj/item/weapon/storage/backpack/santabag name = "\improper Santa's gift bag" @@ -197,9 +193,7 @@ item_state_slots = list(slot_r_hand_str = "briefcase", slot_l_hand_str = "briefcase") /obj/item/weapon/storage/backpack/satchel/withwallet - New() - ..() - new /obj/item/weapon/storage/wallet/random( src ) + starts_with = list(/obj/item/weapon/storage/wallet/random) /obj/item/weapon/storage/backpack/satchel/norm name = "satchel" diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 01ca1c77966..165855e50ef 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -112,121 +112,116 @@ storage_slots = 7 allow_quick_empty = 1 // this function is superceded - New() - ..() - //verbs -= /obj/item/weapon/storage/verb/quick_empty - //verbs += /obj/item/weapon/storage/bag/sheetsnatcher/quick_empty - can_be_inserted(obj/item/W as obj, stop_messages = 0) - if(!istype(W,/obj/item/stack/material)) - if(!stop_messages) - usr << "The snatcher does not accept [W]." - return 0 - var/current = 0 - for(var/obj/item/stack/material/S in contents) - current += S.amount - if(capacity == current)//If it's full, you're done - if(!stop_messages) - usr << "The snatcher is full." - return 0 - return 1 +/obj/item/weapon/storage/bag/sheetsnatcher/can_be_inserted(obj/item/W as obj, stop_messages = 0) + if(!istype(W,/obj/item/stack/material)) + if(!stop_messages) + usr << "The snatcher does not accept [W]." + return 0 + var/current = 0 + for(var/obj/item/stack/material/S in contents) + current += S.amount + if(capacity == current)//If it's full, you're done + if(!stop_messages) + usr << "The snatcher is full." + return 0 + return 1 // Modified handle_item_insertion. Would prefer not to, but... - handle_item_insertion(obj/item/W as obj, prevent_warning = 0) - var/obj/item/stack/material/S = W - if(!istype(S)) return 0 +/obj/item/weapon/storage/bag/sheetsnatcher/handle_item_insertion(obj/item/W as obj, prevent_warning = 0) + var/obj/item/stack/material/S = W + if(!istype(S)) return 0 - var/amount - var/inserted = 0 - var/current = 0 - for(var/obj/item/stack/material/S2 in contents) - current += S2.amount - if(capacity < current + S.amount)//If the stack will fill it up - amount = capacity - current + var/amount + var/inserted = 0 + var/current = 0 + for(var/obj/item/stack/material/S2 in contents) + current += S2.amount + if(capacity < current + S.amount)//If the stack will fill it up + amount = capacity - current + else + amount = S.amount + + for(var/obj/item/stack/material/sheet in contents) + if(S.type == sheet.type) // we are violating the amount limitation because these are not sane objects + sheet.amount += amount // they should only be removed through procs in this file, which split them up. + S.amount -= amount + inserted = 1 + break + + if(!inserted || !S.amount) + usr.remove_from_mob(S) + usr.update_icons() //update our overlays + if (usr.client && usr.s_active != src) + usr.client.screen -= S + S.dropped(usr) + if(!S.amount) + qdel(S) else - amount = S.amount + S.loc = src - for(var/obj/item/stack/material/sheet in contents) - if(S.type == sheet.type) // we are violating the amount limitation because these are not sane objects - sheet.amount += amount // they should only be removed through procs in this file, which split them up. - S.amount -= amount - inserted = 1 - break - - if(!inserted || !S.amount) - usr.remove_from_mob(S) - usr.update_icons() //update our overlays - if (usr.client && usr.s_active != src) - usr.client.screen -= S - S.dropped(usr) - if(!S.amount) - qdel(S) - else - S.loc = src - - orient2hud(usr) - if(usr.s_active) - usr.s_active.show_to(usr) - update_icon() - return 1 + orient2hud(usr) + if(usr.s_active) + usr.s_active.show_to(usr) + update_icon() + return 1 // Sets up numbered display to show the stack size of each stored mineral // NOTE: numbered display is turned off currently because it's broken - orient2hud(mob/user as mob) - var/adjusted_contents = contents.len +/obj/item/weapon/storage/bag/sheetsnatcher/orient2hud(mob/user as mob) + var/adjusted_contents = contents.len - //Numbered contents display - var/list/datum/numbered_display/numbered_contents - if(display_contents_with_number) - numbered_contents = list() - adjusted_contents = 0 - for(var/obj/item/stack/material/I in contents) - adjusted_contents++ - var/datum/numbered_display/D = new/datum/numbered_display(I) - D.number = I.amount - numbered_contents.Add( D ) - - var/row_num = 0 - var/col_count = min(7,storage_slots) -1 - if (adjusted_contents > 7) - row_num = round((adjusted_contents-1) / 7) // 7 is the maximum allowed width. - src.slot_orient_objs(row_num, col_count, numbered_contents) - return + //Numbered contents display + var/list/datum/numbered_display/numbered_contents + if(display_contents_with_number) + numbered_contents = list() + adjusted_contents = 0 + for(var/obj/item/stack/material/I in contents) + adjusted_contents++ + var/datum/numbered_display/D = new/datum/numbered_display(I) + D.number = I.amount + numbered_contents.Add( D ) + var/row_num = 0 + var/col_count = min(7,storage_slots) -1 + if (adjusted_contents > 7) + row_num = round((adjusted_contents-1) / 7) // 7 is the maximum allowed width. + src.slot_orient_objs(row_num, col_count, numbered_contents) + return // Modified quick_empty verb drops appropriate sized stacks - quick_empty() - var/location = get_turf(src) - for(var/obj/item/stack/material/S in contents) - while(S.amount) - var/obj/item/stack/material/N = new S.type(location) - var/stacksize = min(S.amount,N.max_amount) - N.amount = stacksize - S.amount -= stacksize - if(!S.amount) - qdel(S) // todo: there's probably something missing here - orient2hud(usr) - if(usr.s_active) - usr.s_active.show_to(usr) - update_icon() +/obj/item/weapon/storage/bag/sheetsnatcher/quick_empty() + var/location = get_turf(src) + for(var/obj/item/stack/material/S in contents) + while(S.amount) + var/obj/item/stack/material/N = new S.type(location) + var/stacksize = min(S.amount,N.max_amount) + N.amount = stacksize + S.amount -= stacksize + if(!S.amount) + qdel(S) // todo: there's probably something missing here + orient2hud(usr) + if(usr.s_active) + usr.s_active.show_to(usr) + update_icon() // Instead of removing - remove_from_storage(obj/item/W as obj, atom/new_location) - var/obj/item/stack/material/S = W - if(!istype(S)) return 0 +/obj/item/weapon/storage/bag/sheetsnatcher/remove_from_storage(obj/item/W as obj, atom/new_location) + var/obj/item/stack/material/S = W + if(!istype(S)) return 0 - //I would prefer to drop a new stack, but the item/attack_hand code - // that calls this can't recieve a different object than you clicked on. - //Therefore, make a new stack internally that has the remainder. - // -Sayu + //I would prefer to drop a new stack, but the item/attack_hand code + // that calls this can't recieve a different object than you clicked on. + //Therefore, make a new stack internally that has the remainder. + // -Sayu - if(S.amount > S.max_amount) - var/obj/item/stack/material/temp = new S.type(src) - temp.amount = S.amount - S.max_amount - S.amount = S.max_amount + if(S.amount > S.max_amount) + var/obj/item/stack/material/temp = new S.type(src) + temp.amount = S.amount - S.max_amount + S.amount = S.max_amount - return ..(S,new_location) + return ..(S,new_location) // ----------------------------- // Sheet Snatcher (Cyborg) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 9e98fe58eca..23fccf51ac8 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -59,23 +59,25 @@ /obj/item/device/integrated_electronics/wirer, ) -/obj/item/weapon/storage/belt/utility/full/New() - ..() - new /obj/item/weapon/screwdriver(src) - new /obj/item/weapon/wrench(src) - new /obj/item/weapon/weldingtool(src) - new /obj/item/weapon/crowbar(src) - new /obj/item/weapon/wirecutters(src) - new /obj/item/stack/cable_coil(src,30,pick("red","yellow","orange")) +/obj/item/weapon/storage/belt/utility/full + starts_with = list( + /obj/item/weapon/screwdriver, + /obj/item/weapon/wrench, + /obj/item/weapon/weldingtool, + /obj/item/weapon/crowbar, + /obj/item/weapon/wirecutters, + /obj/item/stack/cable_coil/random_belt + ) -/obj/item/weapon/storage/belt/utility/atmostech/New() - ..() - new /obj/item/weapon/screwdriver(src) - new /obj/item/weapon/wrench(src) - new /obj/item/weapon/weldingtool(src) - new /obj/item/weapon/crowbar(src) - new /obj/item/weapon/wirecutters(src) - new /obj/item/device/t_scanner(src) +/obj/item/weapon/storage/belt/utility/atmostech + starts_with = list( + /obj/item/weapon/screwdriver, + /obj/item/weapon/wrench, + /obj/item/weapon/weldingtool, + /obj/item/weapon/crowbar, + /obj/item/weapon/wirecutters, + /obj/item/device/t_scanner + ) /obj/item/weapon/storage/belt/utility/chief name = "chief engineer's toolbelt" @@ -83,15 +85,16 @@ icon_state = "utilitybelt_ce" item_state = "utility_ce" -/obj/item/weapon/storage/belt/utility/chief/full/New() - ..() - new /obj/item/weapon/screwdriver/power(src) - new /obj/item/weapon/crowbar/power(src) - new /obj/item/weapon/weldingtool/experimental(src) - new /obj/item/device/multitool(src) - new /obj/item/stack/cable_coil(src,30,pick("red","yellow","orange")) - new /obj/item/weapon/extinguisher/mini(src) - new /obj/item/device/analyzer(src) +/obj/item/weapon/storage/belt/utility/chief/full + starts_with = list( + /obj/item/weapon/screwdriver/power, + /obj/item/weapon/crowbar/power, + /obj/item/weapon/weldingtool/experimental, + /obj/item/device/multitool, + /obj/item/stack/cable_coil/random_belt, + /obj/item/weapon/extinguisher/mini, + /obj/item/device/analyzer + ) /obj/item/weapon/storage/belt/medical name = "medical belt" @@ -216,14 +219,8 @@ /obj/item/device/soulstone ) -/obj/item/weapon/storage/belt/soulstone/full/New() - ..() - new /obj/item/device/soulstone(src) - new /obj/item/device/soulstone(src) - new /obj/item/device/soulstone(src) - new /obj/item/device/soulstone(src) - new /obj/item/device/soulstone(src) - new /obj/item/device/soulstone(src) +/obj/item/weapon/storage/belt/soulstone/full + starts_with = list(/obj/item/device/soulstone = 6) /obj/item/weapon/storage/belt/utility/alien name = "alien belt" @@ -232,15 +229,16 @@ icon_state = "belt" item_state = "security" -/obj/item/weapon/storage/belt/utility/alien/full/New() - ..() - new /obj/item/weapon/screwdriver/alien(src) - new /obj/item/weapon/wrench/alien(src) - new /obj/item/weapon/weldingtool/alien(src) - new /obj/item/weapon/crowbar/alien(src) - new /obj/item/weapon/wirecutters/alien(src) - new /obj/item/device/multitool/alien(src) - new /obj/item/stack/cable_coil/alien(src) +/obj/item/weapon/storage/belt/utility/alien/full + starts_with = list( + /obj/item/weapon/screwdriver/alien, + /obj/item/weapon/wrench/alien, + /obj/item/weapon/weldingtool/alien, + /obj/item/weapon/crowbar/alien, + /obj/item/weapon/wirecutters/alien, + /obj/item/device/multitool/alien, + /obj/item/stack/cable_coil/alien + ) /obj/item/weapon/storage/belt/medical/alien name = "alien belt" @@ -277,16 +275,17 @@ /obj/item/weapon/surgical ) -/obj/item/weapon/storage/belt/medical/alien/New() - ..() - new /obj/item/weapon/surgical/scalpel/alien(src) - new /obj/item/weapon/surgical/hemostat/alien(src) - new /obj/item/weapon/surgical/retractor/alien(src) - new /obj/item/weapon/surgical/circular_saw/alien(src) - new /obj/item/weapon/surgical/FixOVein/alien(src) - new /obj/item/weapon/surgical/bone_clamp/alien(src) - new /obj/item/weapon/surgical/cautery/alien(src) - new /obj/item/weapon/surgical/surgicaldrill/alien(src) +/obj/item/weapon/storage/belt/medical/alien + starts_with = list( + /obj/item/weapon/surgical/scalpel/alien, + /obj/item/weapon/surgical/hemostat/alien, + /obj/item/weapon/surgical/retractor/alien, + /obj/item/weapon/surgical/circular_saw/alien, + /obj/item/weapon/surgical/FixOVein/alien, + /obj/item/weapon/surgical/bone_clamp/alien, + /obj/item/weapon/surgical/cautery/alien, + /obj/item/weapon/surgical/surgicaldrill/alien + ) /obj/item/weapon/storage/belt/champion name = "championship belt" diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm index 933970b335b..783d8cd74ae 100644 --- a/code/game/objects/items/weapons/storage/bible.dm +++ b/code/game/objects/items/weapons/storage/bible.dm @@ -14,12 +14,13 @@ icon_state ="bible" /obj/item/weapon/storage/bible/booze/New() - ..() - new /obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer(src) - new /obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer(src) - new /obj/item/weapon/spacecash/c100(src) - new /obj/item/weapon/spacecash/c100(src) - new /obj/item/weapon/spacecash/c100(src) + starts_with = list( + /obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer, + /obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer, + /obj/item/weapon/spacecash/c100, + /obj/item/weapon/spacecash/c100, + /obj/item/weapon/spacecash/c100 + ) /obj/item/weapon/storage/bible/afterattack(atom/A, mob/user as mob, proximity) if(!proximity) return diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 3cbce393f31..f09a6110950 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -76,393 +76,250 @@ name = "box of latex gloves" desc = "Contains white gloves." icon_state = "latex" - -/obj/item/weapon/storage/box/gloves/New() - ..() - for(var/i = 1 to 7) - new /obj/item/clothing/gloves/sterile/latex(src) + starts_with = list(/obj/item/clothing/gloves/sterile/latex = 7) /obj/item/weapon/storage/box/masks name = "box of sterile masks" desc = "This box contains masks of sterility." icon_state = "sterile" - -/obj/item/weapon/storage/box/masks/New() - ..() - for(var/i = 1 to 7) - new /obj/item/clothing/mask/surgical(src) + starts_with = list(/obj/item/clothing/mask/surgical = 7) /obj/item/weapon/storage/box/syringes name = "box of syringes" desc = "A box full of syringes." icon_state = "syringe" - -/obj/item/weapon/storage/box/syringes/New() - ..() - for(var/i = 1 to 7) - new /obj/item/weapon/reagent_containers/syringe(src) + starts_with = list(/obj/item/weapon/reagent_containers/syringe = 7) /obj/item/weapon/storage/box/syringegun name = "box of syringe gun cartridges" desc = "A box full of compressed gas cartridges." icon_state = "syringe" - -/obj/item/weapon/storage/box/syringegun/New() - ..() - for(var/i = 1 to 7) - new /obj/item/weapon/syringe_cartridge(src) + starts_with = list(/obj/item/weapon/syringe_cartridge = 7) /obj/item/weapon/storage/box/beakers name = "box of beakers" icon_state = "beaker" - -/obj/item/weapon/storage/box/beakers/New() - ..() - for(var/i = 1 to 7) - new /obj/item/weapon/reagent_containers/glass/beaker(src) + starts_with = list(/obj/item/weapon/reagent_containers/glass/beaker = 7) /obj/item/weapon/storage/box/injectors name = "box of DNA injectors" desc = "This box contains injectors it seems." - -/obj/item/weapon/storage/box/injectors/New() - ..() - for(var/i = 1 to 3) - new /obj/item/weapon/dnainjector/h2m(src) - for(var/i = 1 to 3) - new /obj/item/weapon/dnainjector/m2h(src) + starts_with = list( + /obj/item/weapon/dnainjector/h2m = 3, + /obj/item/weapon/dnainjector/m2h = 3 + ) /obj/item/weapon/storage/box/blanks name = "box of blank shells" desc = "It has a picture of a gun and several warning symbols on the front." icon_state = "blankshot_box" item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") + starts_with = list(/obj/item/ammo_casing/a12g/blank = 8) -/obj/item/weapon/storage/box/blanks/New() - ..() - for(var/i = 1 to 8) - new /obj/item/ammo_casing/a12g/blank(src) - -/obj/item/weapon/storage/box/blanks/large/New() - ..() - for(var/i = 1 to 8) - new /obj/item/ammo_casing/a12g/blank(src) +/obj/item/weapon/storage/box/blanks/large + starts_with = list(/obj/item/ammo_casing/a12g/blank = 16) /obj/item/weapon/storage/box/beanbags name = "box of beanbag shells" desc = "It has a picture of a gun and several warning symbols on the front.
WARNING: Live ammunition. Misuse may result in serious injury or death." icon_state = "beanshot_box" item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") - -/obj/item/weapon/storage/box/beanbags/New() - ..() - for(var/i = 1 to 8) - new /obj/item/ammo_casing/a12g/beanbag(src) + starts_with = list(/obj/item/ammo_casing/a12g/beanbag = 8) /obj/item/weapon/storage/box/beanbags/large/New() - ..() - for(var/i = 1 to 8) - new /obj/item/ammo_casing/a12g/beanbag(src) + starts_with = list(/obj/item/ammo_casing/a12g/beanbag = 16) /obj/item/weapon/storage/box/shotgunammo name = "box of shotgun slugs" desc = "It has a picture of a gun and several warning symbols on the front.
WARNING: Live ammunition. Misuse may result in serious injury or death." icon_state = "lethalshellshot_box" item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") + starts_with = list(/obj/item/ammo_casing/a12g = 8) -/obj/item/weapon/storage/box/shotgunammo/New() - ..() - for(var/i = 1 to 8) - new /obj/item/ammo_casing/a12g(src) - -/obj/item/weapon/storage/box/shotgunammo/large/New() - ..() - for(var/i = 1 to 8) - new /obj/item/ammo_casing/a12g(src) +/obj/item/weapon/storage/box/shotgunammo/large + starts_with = list(/obj/item/ammo_casing/a12g = 16) /obj/item/weapon/storage/box/shotgunshells name = "box of shotgun shells" desc = "It has a picture of a gun and several warning symbols on the front.
WARNING: Live ammunition. Misuse may result in serious injury or death." icon_state = "lethalslug_box" item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") + starts_with = list(/obj/item/ammo_casing/a12g/pellet = 8) -/obj/item/weapon/storage/box/shotgunshells/New() - ..() - for(var/i = 1 to 8) - new /obj/item/ammo_casing/a12g/pellet(src) - -/obj/item/weapon/storage/box/shotgunshells/large/New() - ..() - for(var/i = 1 to 8) - new /obj/item/ammo_casing/a12g/pellet(src) +/obj/item/weapon/storage/box/shotgunshells/large + starts_with = list(/obj/item/ammo_casing/a12g/pellet = 16) /obj/item/weapon/storage/box/flashshells name = "box of illumination shells" desc = "It has a picture of a gun and several warning symbols on the front.
WARNING: Live ammunition. Misuse may result in serious injury or death." icon_state = "illumshot_box" item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") + starts_with = list(/obj/item/ammo_casing/a12g/flash = 8) -/obj/item/weapon/storage/box/flashshells/New() - ..() - for(var/i = 1 to 8) - new /obj/item/ammo_casing/a12g/flash(src) - -/obj/item/weapon/storage/box/flashshells/large/New() - ..() - for(var/i = 1 to 8) - new /obj/item/ammo_casing/a12g/flash(src) +/obj/item/weapon/storage/box/flashshells/large + starts_with = list(/obj/item/ammo_casing/a12g/flash = 16) /obj/item/weapon/storage/box/stunshells name = "box of stun shells" desc = "It has a picture of a gun and several warning symbols on the front.
WARNING: Live ammunition. Misuse may result in serious injury or death." icon_state = "stunshot_box" item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") + starts_with = list(/obj/item/ammo_casing/a12g/stunshell = 8) -/obj/item/weapon/storage/box/stunshells/New() - ..() - for(var/i = 1 to 8) - new /obj/item/ammo_casing/a12g/stunshell(src) - -/obj/item/weapon/storage/box/stunshells/large/New() - ..() - for(var/i = 1 to 8) - new /obj/item/ammo_casing/a12g/stunshell(src) +/obj/item/weapon/storage/box/stunshells/large + starts_with = list(/obj/item/ammo_casing/a12g/stunshell = 16) /obj/item/weapon/storage/box/practiceshells name = "box of practice shells" desc = "It has a picture of a gun and several warning symbols on the front.
WARNING: Live ammunition. Misuse may result in serious injury or death." icon_state = "blankshot_box" item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") + starts_with = list(/obj/item/ammo_casing/a12g/practice = 8) -/obj/item/weapon/storage/box/practiceshells/New() - ..() - for(var/i = 1 to 8) - new /obj/item/ammo_casing/a12g/practice(src) - -/obj/item/weapon/storage/box/practiceshells/large/New() - ..() - for(var/i = 1 to 8) - new /obj/item/ammo_casing/a12g/practice(src) +/obj/item/weapon/storage/box/practiceshells/large + starts_with = list(/obj/item/ammo_casing/a12g/practice = 16) /obj/item/weapon/storage/box/empshells name = "box of emp shells" desc = "It has a picture of a gun and several warning symbols on the front." icon_state = "empshot_box" item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") + starts_with = list(/obj/item/ammo_casing/a12g/emp = 8) -/obj/item/weapon/storage/box/empshells/New() - ..() - for(var/i = 1 to 8) - new /obj/item/ammo_casing/a12g/emp(src) - -/obj/item/weapon/storage/box/empshells/large/New() - ..() - for(var/i = 1 to 8) - new /obj/item/ammo_casing/a12g/emp(src) +/obj/item/weapon/storage/box/empshells/large + starts_with = list(/obj/item/ammo_casing/a12g/emp = 16) /obj/item/weapon/storage/box/sniperammo name = "box of 14.5mm shells" desc = "It has a picture of a gun and several warning symbols on the front.
WARNING: Live ammunition. Misuse may result in serious injury or death." - -/obj/item/weapon/storage/box/sniperammo/New() - ..() - for(var/i = 1 to 7) - new /obj/item/ammo_casing/a145(src) + starts_with = list(/obj/item/ammo_casing/a145 = 7) /obj/item/weapon/storage/box/flashbangs name = "box of flashbangs (WARNING)" desc = "WARNING: These devices are extremely dangerous and can cause blindness or deafness in repeated use." icon_state = "flashbang" - -/obj/item/weapon/storage/box/flashbangs/New() - ..() - for(var/i = 1 to 7) - new /obj/item/weapon/grenade/flashbang(src) + starts_with = list(/obj/item/weapon/grenade/flashbang = 7) /obj/item/weapon/storage/box/emps name = "box of emp grenades" desc = "A box containing 5 military grade EMP grenades.
WARNING: Do not use near unshielded electronics or biomechanical augmentations, death or permanent paralysis may occur." icon_state = "emp" - -/obj/item/weapon/storage/box/emps/New() - ..() - for(var/i = 1 to 7) - new /obj/item/weapon/grenade/empgrenade(src) + starts_with = list(/obj/item/weapon/grenade/empgrenade = 7) /obj/item/weapon/storage/box/empslite name = "box of low yield emp grenades" desc = "A box containing 5 low yield EMP grenades.
WARNING: Do not use near unshielded electronics or biomechanical augmentations, death or permanent paralysis may occur." icon_state = "emp" - -/obj/item/weapon/storage/box/empslite/New() - ..() - for(var/i = 1 to 7) - new /obj/item/weapon/grenade/empgrenade/low_yield(src) + starts_with = list(/obj/item/weapon/grenade/empgrenade/low_yield = 7) /obj/item/weapon/storage/box/smokes name = "box of smoke bombs" desc = "A box containing 7 smoke bombs." icon_state = "flashbang" - -/obj/item/weapon/storage/box/smokes/New() - ..() - for(var/i = 1 to 7) - new /obj/item/weapon/grenade/smokebomb(src) + starts_with = list(/obj/item/weapon/grenade/smokebomb = 7) /obj/item/weapon/storage/box/anti_photons name = "box of anti-photon grenades" desc = "A box containing 7 experimental photon disruption grenades." icon_state = "flashbang" - -/obj/item/weapon/storage/box/anti_photons/New() - ..() - for(var/i = 1 to 7) - new /obj/item/weapon/grenade/anti_photon(src) + starts_with = list(/obj/item/weapon/grenade/anti_photon = 7) /obj/item/weapon/storage/box/frags name = "box of fragmentation grenades (WARNING)" desc = "A box containing 7 military grade fragmentation grenades.
WARNING: These devices are extremely dangerous and can cause limb loss or death in repeated use." icon_state = "frag" - -/obj/item/weapon/storage/box/frags/New() - ..() - for(var/i = 1 to 7) - new /obj/item/weapon/grenade/explosive(src) + starts_with = list(/obj/item/weapon/grenade/explosive = 7) /obj/item/weapon/storage/box/frags_half_box name = "box of fragmentation grenades (WARNING)" desc = "A box containing 4 military grade fragmentation grenades.
WARNING: These devices are extremely dangerous and can cause limb loss or death in repeated use." icon_state = "frag" - -/obj/item/weapon/storage/box/frags_half_box/New() - ..() - for(var/i = 1 to 4) - new /obj/item/weapon/grenade/explosive(src) + starts_with = list(/obj/item/weapon/grenade/explosive = 4) /obj/item/weapon/storage/box/metalfoam name = "box of metal foam grenades." desc = "A box containing 7 metal foam grenades." icon_state = "flashbang" - -/obj/item/weapon/storage/box/metalfoam/New() - ..() - for(var/i = 1 to 7) - new /obj/item/weapon/grenade/chem_grenade/metalfoam(src) + starts_with = list(/obj/item/weapon/grenade/chem_grenade/metalfoam = 7) /obj/item/weapon/storage/box/teargas name = "box of teargas grenades" desc = "A box containing 7 teargas grenades." icon_state = "flashbang" - -/obj/item/weapon/storage/box/teargas/New() - ..() - for(var/i = 1 to 7) - new /obj/item/weapon/grenade/chem_grenade/teargas(src) + starts_with = list(/obj/item/weapon/grenade/chem_grenade/teargas = 7) /obj/item/weapon/storage/box/flare name = "box of flares" desc = "A box containing 4 flares." - -/obj/item/weapon/storage/box/flare/New() - ..() - for(var/i = 1 to 4) - new /obj/item/device/flashlight/flare(src) + starts_with = list(/obj/item/device/flashlight/flare = 4) /obj/item/weapon/storage/box/trackimp name = "boxed tracking implant kit" desc = "Box full of scum-bag tracking utensils." icon_state = "implant" - -/obj/item/weapon/storage/box/trackimp/New() - ..() - for(var/i = 1 to 4) - new /obj/item/weapon/implantcase/tracking(src) - new /obj/item/weapon/implanter(src) - new /obj/item/weapon/implantpad(src) - new /obj/item/weapon/locator(src) + starts_with = list( + /obj/item/weapon/implantcase/tracking = 4, + /obj/item/weapon/implanter, + /obj/item/weapon/implantpad, + /obj/item/weapon/locator + ) /obj/item/weapon/storage/box/chemimp name = "boxed chemical implant kit" desc = "Box of stuff used to implant chemicals." icon_state = "implant" - -/obj/item/weapon/storage/box/chemimp/New() - ..() - for(var/i = 1 to 5) - new /obj/item/weapon/implantcase/chem(src) - new /obj/item/weapon/implanter(src) - new /obj/item/weapon/implantpad(src) + starts_with = list( + /obj/item/weapon/implantcase/chem = 5, + /obj/item/weapon/implanter, + /obj/item/weapon/implantpad + ) /obj/item/weapon/storage/box/camerabug name = "mobile camera pod box" desc = "A box containing some mobile camera pods." icon_state = "pda" - -/obj/item/weapon/storage/box/camerabug/New() - ..() - for(var/i = 1 to 6) - new /obj/item/device/camerabug(src) - new /obj/item/device/bug_monitor(src) + starts_with = list( + /obj/item/device/camerabug = 6, + /obj/item/device/bug_monitor + ) /obj/item/weapon/storage/box/rxglasses name = "box of prescription glasses" desc = "This box contains nerd glasses." icon_state = "glasses" - -/obj/item/weapon/storage/box/rxglasses/New() - ..() - for(var/i = 1 to 7) - new /obj/item/clothing/glasses/regular(src) + starts_with = list(/obj/item/clothing/glasses/regular = 7) /obj/item/weapon/storage/box/cdeathalarm_kit name = "death alarm kit" desc = "Box of stuff used to implant death alarms." icon_state = "implant" item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") - -/obj/item/weapon/storage/box/cdeathalarm_kit/New() - ..() - for(var/i = 1 to 7) - new /obj/item/weapon/implantcase/death_alarm(src) - new /obj/item/weapon/implanter(src) + starts_with = list( + /obj/item/weapon/implantcase/death_alarm = 7, + /obj/item/weapon/implanter + ) /obj/item/weapon/storage/box/condimentbottles name = "box of condiment bottles" desc = "It has a large ketchup smear on it." - -/obj/item/weapon/storage/box/condimentbottles/New() - ..() - for(var/i = 1 to 7) - new /obj/item/weapon/reagent_containers/food/condiment(src) + starts_with = list(/obj/item/weapon/reagent_containers/food/condiment = 7) /obj/item/weapon/storage/box/cups name = "box of paper cups" desc = "It has pictures of paper cups on the front." - -/obj/item/weapon/storage/box/cups/New() - ..() - for(var/i = 1 to 7) - new /obj/item/weapon/reagent_containers/food/drinks/sillycup(src) + starts_with = list(/obj/item/weapon/reagent_containers/food/drinks/sillycup = 7) /obj/item/weapon/storage/box/donkpockets name = "box of donk-pockets" desc = "Instructions: Heat in microwave. Product will cool if not eaten within seven minutes." icon_state = "donk_kit" - -/obj/item/weapon/storage/box/donkpockets/New() - ..() - for(var/i = 1 to 7) - new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src) + starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/donkpocket = 7) /obj/item/weapon/storage/box/sinpockets name = "box of sin-pockets" desc = "Instructions: Crush bottom of package to initiate chemical heating. Wait for 20 seconds before consumption. Product will cool if not eaten within seven minutes." icon_state = "donk_kit" - -/obj/item/weapon/storage/box/sinpockets/New() - ..() - for(var/i = 1 to 7) - new /obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket(src) + starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket = 7) /obj/item/weapon/storage/box/monkeycubes name = "monkey cube box" @@ -470,88 +327,51 @@ icon = 'icons/obj/food.dmi' icon_state = "monkeycubebox" can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/monkeycube) - -/obj/item/weapon/storage/box/monkeycubes/New() - ..() - if(type == /obj/item/weapon/storage/box/monkeycubes) - for(var/i = 1 to 4) - new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped(src) + starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped = 4) /obj/item/weapon/storage/box/monkeycubes/farwacubes name = "farwa cube box" desc = "Drymate brand farwa cubes, shipped from Meralar. Just add water!" - -/obj/item/weapon/storage/box/monkeycubes/farwacubes/New() - ..() - for(var/i = 1 to 4) - new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/farwacube(src) + starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/farwacube = 4) /obj/item/weapon/storage/box/monkeycubes/stokcubes name = "stok cube box" desc = "Drymate brand stok cubes, shipped from Moghes. Just add water!" - -/obj/item/weapon/storage/box/monkeycubes/stokcubes/New() - ..() - for(var/i = 1 to 4) - new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/stokcube(src) + starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/stokcube = 4) /obj/item/weapon/storage/box/monkeycubes/neaeracubes name = "neaera cube box" desc = "Drymate brand neaera cubes, shipped from Jargon 4. Just add water!" - -/obj/item/weapon/storage/box/monkeycubes/neaeracubes/New() - ..() - for(var/i = 1 to 4) - new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube(src) + starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube = 4) /obj/item/weapon/storage/box/ids name = "box of spare IDs" desc = "Has so many empty IDs." icon_state = "id" - -/obj/item/weapon/storage/box/ids/New() - ..() - for(var/i = 1 to 7) - new /obj/item/weapon/card/id(src) + starts_with = list(/obj/item/weapon/card/id = 7) /obj/item/weapon/storage/box/seccarts name = "box of spare R.O.B.U.S.T. Cartridges" desc = "A box full of R.O.B.U.S.T. Cartridges, used by Security." icon_state = "pda" - -/obj/item/weapon/storage/box/seccarts/New() - ..() - for(var/i = 1 to 7) - new /obj/item/weapon/cartridge/security(src) + starts_with = list(/obj/item/weapon/cartridge/security = 7) /obj/item/weapon/storage/box/handcuffs name = "box of spare handcuffs" desc = "A box full of handcuffs." icon_state = "handcuff" - -/obj/item/weapon/storage/box/handcuffs/New() - ..() - for(var/i = 1 to 7) - new /obj/item/weapon/handcuffs(src) + starts_with = list(/obj/item/weapon/handcuffs = 7) /obj/item/weapon/storage/box/mousetraps name = "box of Pest-B-Gon mousetraps" desc = "WARNING: Keep out of reach of children." icon_state = "mousetraps" - -/obj/item/weapon/storage/box/mousetraps/New() - ..() - for(var/i = 1 to 7) - new /obj/item/device/assembly/mousetrap(src) + starts_with = list(/obj/item/device/assembly/mousetrap = 7) /obj/item/weapon/storage/box/pillbottles name = "box of pill bottles" desc = "It has pictures of pill bottles on its front." - -/obj/item/weapon/storage/box/pillbottles/New() - ..() - for(var/i = 1 to 7) - new /obj/item/weapon/storage/pill_bottle(src) + starts_with = list(/obj/item/weapon/storage/pill_bottle = 7) /obj/item/weapon/storage/box/snappops name = "snap pop box" @@ -559,11 +379,7 @@ icon = 'icons/obj/toy.dmi' icon_state = "spbox" can_hold = list(/obj/item/toy/snappop) - -/obj/item/weapon/storage/box/snappops/New() - ..() - for(var/i = 1 to 8) - new /obj/item/toy/snappop(src) + starts_with = list(/obj/item/toy/snappop = 8) /obj/item/weapon/storage/box/matches name = "matchbox" @@ -573,11 +389,7 @@ w_class = ITEMSIZE_TINY slot_flags = SLOT_BELT can_hold = list(/obj/item/weapon/flame/match) - -/obj/item/weapon/storage/box/matches/New() - ..() - for(var/i=1 to 10) - new /obj/item/weapon/flame/match(src) + starts_with = list(/obj/item/weapon/flame/match = 10) /obj/item/weapon/storage/box/matches/attackby(obj/item/weapon/flame/match/W as obj, mob/user as mob) if(istype(W) && !W.lit && !W.burnt) @@ -592,11 +404,7 @@ name = "box of injectors" desc = "Contains autoinjectors." icon_state = "syringe" - -/obj/item/weapon/storage/box/autoinjectors/New() - ..() - for (var/i = 1 to 7) - new /obj/item/weapon/reagent_containers/hypospray/autoinjector(src) + starts_with = list(/obj/item/weapon/reagent_containers/hypospray/autoinjector = 7) /obj/item/weapon/storage/box/lights name = "box of replacement bulbs" @@ -609,30 +417,21 @@ max_storage_space = ITEMSIZE_COST_SMALL * 24 //holds 24 items of w_class 2 use_to_pickup = 1 // for picking up broken bulbs, not that most people will try -/obj/item/weapon/storage/box/lights/bulbs/New() - ..() - for(var/i = 1 to 24) - new /obj/item/weapon/light/bulb(src) +/obj/item/weapon/storage/box/lights/bulbs + starts_with = list(/obj/item/weapon/light/bulb = 24) /obj/item/weapon/storage/box/lights/tubes name = "box of replacement tubes" icon_state = "lighttube" - -/obj/item/weapon/storage/box/lights/tubes/New() - ..() - for(var/i = 1 to 24) - new /obj/item/weapon/light/tube(src) + starts_with = list(/obj/item/weapon/light/tube = 24) /obj/item/weapon/storage/box/lights/mixed name = "box of replacement lights" icon_state = "lightmixed" - -/obj/item/weapon/storage/box/lights/mixed/New() - ..() - for(var/i = 1 to 16) - new /obj/item/weapon/light/tube(src) - for(var/i = 1 to 8) - new /obj/item/weapon/light/bulb(src) + starts_with = list( + /obj/item/weapon/light/tube = 16, + /obj/item/weapon/light/bulb = 8 + ) /obj/item/weapon/storage/box/freezer name = "portable freezer" @@ -665,17 +464,9 @@ /obj/item/weapon/storage/box/ambrosia name = "ambrosia seeds box" desc = "Contains the seeds you need to get a little high." - -/obj/item/weapon/storage/box/ambrosia/New() - ..() - for(var/i = 1 to 7) - new /obj/item/seeds/ambrosiavulgarisseed(src) + starts_with = list(/obj/item/seeds/ambrosiavulgarisseed = 7) /obj/item/weapon/storage/box/ambrosiadeus name = "ambrosia deus seeds box" desc = "Contains the seeds you need to get a proper healthy high." - -/obj/item/weapon/storage/box/ambrosiadeus/New() - ..() - for(var/i = 1 to 7) - new /obj/item/seeds/ambrosiadeusseed(src) + starts_with = list(/obj/item/seeds/ambrosiadeusseed = 7) diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 8cc10444ef8..251e5483e19 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -52,12 +52,7 @@ /obj/item/weapon/reagent_containers/food/snacks/egg, /obj/item/weapon/reagent_containers/food/snacks/boiledegg ) - -/obj/item/weapon/storage/fancy/egg_box/New() - ..() - for(var/i=1 to storage_slots) - new /obj/item/weapon/reagent_containers/food/snacks/egg(src) - return + starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/egg = 12) /* * Candle Box @@ -72,12 +67,7 @@ item_state = "candlebox5" throwforce = 2 slot_flags = SLOT_BELT - -/obj/item/weapon/storage/fancy/candle_box/New() - ..() - for(var/i=1 to 5) - new /obj/item/weapon/flame/candle(src) - return + starts_with = list(/obj/item/weapon/flame/candle = 5) /* * Crayon Box @@ -93,31 +83,36 @@ can_hold = list( /obj/item/weapon/pen/crayon ) + starts_with = list( + /obj/item/weapon/pen/crayon/red, + /obj/item/weapon/pen/crayon/orange, + /obj/item/weapon/pen/crayon/yellow, + /obj/item/weapon/pen/crayon/green, + /obj/item/weapon/pen/crayon/blue, + /obj/item/weapon/pen/crayon/purple + ) -/obj/item/weapon/storage/fancy/crayons/New() - ..() - new /obj/item/weapon/pen/crayon/red(src) - new /obj/item/weapon/pen/crayon/orange(src) - new /obj/item/weapon/pen/crayon/yellow(src) - new /obj/item/weapon/pen/crayon/green(src) - new /obj/item/weapon/pen/crayon/blue(src) - new /obj/item/weapon/pen/crayon/purple(src) +/obj/item/weapon/storage/fancy/crayons/initialize() + . = ..() update_icon() /obj/item/weapon/storage/fancy/crayons/update_icon() - overlays = list() //resets list - overlays += image('icons/obj/crayons.dmi',"crayonbox") + var/mutable_appearance/ma = new(src) + ma.plane = plane + ma.layer = layer + ma.overlays = list() for(var/obj/item/weapon/pen/crayon/crayon in contents) - overlays += image('icons/obj/crayons.dmi',crayon.colourName) + ma.overlays += image('icons/obj/crayons.dmi',crayon.colourName) + appearance = ma /obj/item/weapon/storage/fancy/crayons/attackby(obj/item/W as obj, mob/user as mob) if(istype(W,/obj/item/weapon/pen/crayon)) switch(W:colourName) if("mime") - usr << "This crayon is too sad to be contained in this box." + to_chat(usr,"This crayon is too sad to be contained in this box.") return if("rainbow") - usr << "This crayon is too powerful to be contained in this box." + to_chat(usr,"This crayon is too powerful to be contained in this box.") return ..() @@ -136,13 +131,12 @@ storage_slots = 6 can_hold = list(/obj/item/clothing/mask/smokable/cigarette, /obj/item/weapon/flame/lighter) icon_type = "cigarette" + starts_with = list(/obj/item/clothing/mask/smokable/cigarette = 6) var/brand = "\improper Trans-Stellar Duty-free" -/obj/item/weapon/storage/fancy/cigarettes/New() - ..() +/obj/item/weapon/storage/fancy/cigarettes/initialize() + . = ..() flags |= NOREACT - for(var/i = 1 to storage_slots) - new /obj/item/clothing/mask/smokable/cigarette(src) create_reagents(15 * storage_slots)//so people can inject cigarettes without opening a packet, now with being able to inject the whole one flags |= OPENCONTAINER if(brand) @@ -201,10 +195,6 @@ icon_state = "Bpacket" brand = "\improper Acme Co. cigarette" -// New() -// ..() -// fill_cigarre_package(src,list("fuel" = 15)) - // New exciting ways to kill your lungs! - Earthcrusher // /obj/item/weapon/storage/fancy/cigarettes/luckystars @@ -248,12 +238,11 @@ storage_slots = 7 can_hold = list(/obj/item/clothing/mask/smokable/cigarette/cigar) icon_type = "cigar" + starts_with = list(/obj/item/clothing/mask/smokable/cigarette/cigar = 7) -/obj/item/weapon/storage/fancy/cigar/New() - ..() +/obj/item/weapon/storage/fancy/cigar/initialize() + . = ..() flags |= NOREACT - for(var/i = 1 to storage_slots) - new /obj/item/clothing/mask/smokable/cigarette/cigar(src) create_reagents(15 * storage_slots) /obj/item/weapon/storage/fancy/cigar/update_icon() @@ -261,10 +250,10 @@ return /obj/item/weapon/storage/fancy/cigar/remove_from_storage(obj/item/W as obj, atom/new_location) - var/obj/item/clothing/mask/smokable/cigarette/cigar/C = W - if(!istype(C)) return - reagents.trans_to_obj(C, (reagents.total_volume/contents.len)) - ..() + var/obj/item/clothing/mask/smokable/cigarette/cigar/C = W + if(!istype(C)) return + reagents.trans_to_obj(C, (reagents.total_volume/contents.len)) + ..() /* * Vial Box @@ -277,12 +266,7 @@ name = "vial storage box" storage_slots = 6 can_hold = list(/obj/item/weapon/reagent_containers/glass/beaker/vial) - -/obj/item/weapon/storage/fancy/vials/New() - ..() - for(var/i=1 to 6) - new /obj/item/weapon/reagent_containers/glass/beaker/vial(src) - return + starts_with = list(/obj/item/weapon/reagent_containers/glass/beaker/vial = 6) /obj/item/weapon/storage/lockbox/vials name = "secure vial storage box" @@ -296,8 +280,8 @@ storage_slots = 6 req_access = list(access_virology) -/obj/item/weapon/storage/lockbox/vials/New() - ..() +/obj/item/weapon/storage/lockbox/vials/initialize() + . = ..() update_icon() /obj/item/weapon/storage/lockbox/vials/update_icon(var/itemremoved = 0) @@ -330,19 +314,19 @@ /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/white, /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/truffle ) + starts_with = list( + /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece, + /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece, + /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece, + /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/white, + /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/white, + /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/truffle + ) -/obj/item/weapon/storage/fancy/heartbox/New() - ..() - new /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece(src) - new /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece(src) - new /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece(src) - new /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/white(src) - new /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/white(src) - new /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/truffle(src) +/obj/item/weapon/storage/fancy/heartbox/initialize() + . = ..() update_icon() - return /obj/item/weapon/storage/fancy/heartbox/update_icon(var/itemremoved = 0) if (contents.len == 0) icon_state = "heartbox_empty" - return \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index 43b7c9e22b9..929c55e5616 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -13,158 +13,147 @@ icon_state = "firstaid" throw_speed = 2 throw_range = 8 - var/empty = 0 max_storage_space = ITEMSIZE_COST_SMALL * 7 // 14 + var/list/icon_variety +/obj/item/weapon/storage/firstaid/initialize() + . = ..() + if(icon_variety) + icon_state = pick(icon_variety) + icon_variety = null /obj/item/weapon/storage/firstaid/fire name = "fire first aid kit" desc = "It's an emergency medical kit for when the toxins lab spontaneously burns down." icon_state = "ointment" item_state_slots = list(slot_r_hand_str = "firstaid-ointment", slot_l_hand_str = "firstaid-ointment") - - New() - ..() - if (empty) return - - icon_state = pick("ointment","firefirstaid") - - new /obj/item/device/healthanalyzer( src ) - new /obj/item/weapon/reagent_containers/hypospray/autoinjector( src ) - new /obj/item/stack/medical/ointment( src ) - new /obj/item/stack/medical/ointment( src ) - new /obj/item/weapon/reagent_containers/pill/kelotane( src ) - new /obj/item/weapon/reagent_containers/pill/kelotane( src ) - new /obj/item/weapon/reagent_containers/pill/kelotane( src ) //Replaced ointment with these since they actually work --Errorage - return - + icon_variety = list("ointment","firefirstaid") + starts_with = list( + /obj/item/device/healthanalyzer, + /obj/item/weapon/reagent_containers/hypospray/autoinjector, + /obj/item/stack/medical/ointment, + /obj/item/stack/medical/ointment, + /obj/item/weapon/reagent_containers/pill/kelotane, + /obj/item/weapon/reagent_containers/pill/kelotane, + /obj/item/weapon/reagent_containers/pill/kelotane + ) /obj/item/weapon/storage/firstaid/regular icon_state = "firstaid" - - New() - ..() - if (empty) return - new /obj/item/stack/medical/bruise_pack(src) - new /obj/item/stack/medical/bruise_pack(src) - new /obj/item/stack/medical/bruise_pack(src) - new /obj/item/stack/medical/ointment(src) - new /obj/item/stack/medical/ointment(src) - new /obj/item/device/healthanalyzer(src) - new /obj/item/weapon/reagent_containers/hypospray/autoinjector( src ) - return + starts_with = list( + /obj/item/stack/medical/bruise_pack, + /obj/item/stack/medical/bruise_pack, + /obj/item/stack/medical/bruise_pack, + /obj/item/stack/medical/ointment, + /obj/item/stack/medical/ointment, + /obj/item/device/healthanalyzer, + /obj/item/weapon/reagent_containers/hypospray/autoinjector + ) /obj/item/weapon/storage/firstaid/toxin name = "poison first aid kit" //IRL the term used would be poison first aid kit. desc = "Used to treat when one has a high amount of toxins in their body." icon_state = "antitoxin" item_state_slots = list(slot_r_hand_str = "firstaid-toxin", slot_l_hand_str = "firstaid-toxin") - - New() - ..() - if (empty) return - - icon_state = pick("antitoxin","antitoxfirstaid","antitoxfirstaid2","antitoxfirstaid3") - - new /obj/item/weapon/reagent_containers/syringe/antitoxin( src ) - new /obj/item/weapon/reagent_containers/syringe/antitoxin( src ) - new /obj/item/weapon/reagent_containers/syringe/antitoxin( src ) - new /obj/item/weapon/reagent_containers/pill/antitox( src ) - new /obj/item/weapon/reagent_containers/pill/antitox( src ) - new /obj/item/weapon/reagent_containers/pill/antitox( src ) - new /obj/item/device/healthanalyzer( src ) - return + icon_variety = list("antitoxin","antitoxfirstaid","antitoxfirstaid2","antitoxfirstaid3") + starts_with = list( + /obj/item/weapon/reagent_containers/syringe/antitoxin, + /obj/item/weapon/reagent_containers/syringe/antitoxin, + /obj/item/weapon/reagent_containers/syringe/antitoxin, + /obj/item/weapon/reagent_containers/pill/antitox, + /obj/item/weapon/reagent_containers/pill/antitox, + /obj/item/weapon/reagent_containers/pill/antitox, + /obj/item/device/healthanalyzer + ) /obj/item/weapon/storage/firstaid/o2 name = "oxygen deprivation first aid kit" desc = "A box full of oxygen goodies." icon_state = "o2" item_state_slots = list(slot_r_hand_str = "firstaid-o2", slot_l_hand_str = "firstaid-o2") - - New() - ..() - if (empty) return - new /obj/item/weapon/reagent_containers/pill/dexalin( src ) - new /obj/item/weapon/reagent_containers/pill/dexalin( src ) - new /obj/item/weapon/reagent_containers/pill/dexalin( src ) - new /obj/item/weapon/reagent_containers/pill/dexalin( src ) - new /obj/item/weapon/reagent_containers/hypospray/autoinjector( src ) - new /obj/item/weapon/reagent_containers/syringe/inaprovaline( src ) - new /obj/item/device/healthanalyzer( src ) - return + starts_with = list( + /obj/item/weapon/reagent_containers/pill/dexalin, + /obj/item/weapon/reagent_containers/pill/dexalin, + /obj/item/weapon/reagent_containers/pill/dexalin, + /obj/item/weapon/reagent_containers/pill/dexalin, + /obj/item/weapon/reagent_containers/hypospray/autoinjector, + /obj/item/weapon/reagent_containers/syringe/inaprovaline, + /obj/item/device/healthanalyzer + ) /obj/item/weapon/storage/firstaid/adv name = "advanced first aid kit" desc = "Contains advanced medical treatments, for serious boo-boos." icon_state = "advfirstaid" item_state_slots = list(slot_r_hand_str = "firstaid-advanced", slot_l_hand_str = "firstaid-advanced") - -/obj/item/weapon/storage/firstaid/adv/New() - ..() - if (empty) return - new /obj/item/weapon/reagent_containers/hypospray/autoinjector( src ) - new /obj/item/stack/medical/advanced/bruise_pack(src) - new /obj/item/stack/medical/advanced/bruise_pack(src) - new /obj/item/stack/medical/advanced/bruise_pack(src) - new /obj/item/stack/medical/advanced/ointment(src) - new /obj/item/stack/medical/advanced/ointment(src) - new /obj/item/stack/medical/splint(src) - return + starts_with = list( + /obj/item/weapon/reagent_containers/hypospray/autoinjector, + /obj/item/stack/medical/advanced/bruise_pack, + /obj/item/stack/medical/advanced/bruise_pack, + /obj/item/stack/medical/advanced/bruise_pack, + /obj/item/stack/medical/advanced/ointment, + /obj/item/stack/medical/advanced/ointment, + /obj/item/stack/medical/splint + ) /obj/item/weapon/storage/firstaid/combat name = "combat medical kit" desc = "Contains advanced medical treatments." icon_state = "bezerk" item_state_slots = list(slot_r_hand_str = "firstaid-advanced", slot_l_hand_str = "firstaid-advanced") - -/obj/item/weapon/storage/firstaid/combat/New() - ..() - if (empty) return - new /obj/item/weapon/storage/pill_bottle/bicaridine(src) - new /obj/item/weapon/storage/pill_bottle/dermaline(src) - new /obj/item/weapon/storage/pill_bottle/dexalin_plus(src) - new /obj/item/weapon/storage/pill_bottle/dylovene(src) - new /obj/item/weapon/storage/pill_bottle/tramadol(src) - new /obj/item/weapon/storage/pill_bottle/spaceacillin(src) - new /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting(src) - new /obj/item/stack/medical/splint(src) - new /obj/item/device/healthanalyzer/advanced(src) - return + starts_with = list( + /obj/item/weapon/storage/pill_bottle/bicaridine, + /obj/item/weapon/storage/pill_bottle/dermaline, + /obj/item/weapon/storage/pill_bottle/dexalin_plus, + /obj/item/weapon/storage/pill_bottle/dylovene, + /obj/item/weapon/storage/pill_bottle/tramadol, + /obj/item/weapon/storage/pill_bottle/spaceacillin, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting, + /obj/item/stack/medical/splint, + /obj/item/device/healthanalyzer/advanced + ) /obj/item/weapon/storage/firstaid/surgery name = "surgery kit" - desc = "Contains tools for surgery." - max_storage_space = ITEMSIZE_COST_NORMAL * 6 // Formally 21. Odd numbers should be avoided for a system based on exponents of 2. + desc = "Contains tools for surgery. Has precise foam fitting for safe transport and automatically sterilizes the content between uses." + icon_state = "surgerykit" + item_state = "firstaid-surgery" max_w_class = ITEMSIZE_NORMAL -/obj/item/weapon/storage/firstaid/surgery/New() - ..() - if (empty) return - new /obj/item/weapon/surgical/bonesetter(src) - new /obj/item/weapon/surgical/cautery(src) - new /obj/item/weapon/surgical/circular_saw(src) - new /obj/item/weapon/surgical/hemostat(src) - new /obj/item/weapon/surgical/retractor(src) - new /obj/item/weapon/surgical/scalpel(src) - new /obj/item/weapon/surgical/surgicaldrill(src) - new /obj/item/weapon/surgical/bonegel(src) - new /obj/item/weapon/surgical/FixOVein(src) - new /obj/item/stack/medical/advanced/bruise_pack(src) - new /obj/item/device/healthanalyzer/enhanced(src) - return + can_hold = list( + /obj/item/weapon/surgical/bonesetter, + /obj/item/weapon/surgical/cautery, + /obj/item/weapon/surgical/circular_saw, + /obj/item/weapon/surgical/hemostat, + /obj/item/weapon/surgical/retractor, + /obj/item/weapon/surgical/scalpel, + /obj/item/weapon/surgical/surgicaldrill, + /obj/item/weapon/surgical/bonegel, + /obj/item/weapon/surgical/FixOVein, + /obj/item/stack/medical/advanced/bruise_pack, + /obj/item/stack/nanopaste, + /obj/item/device/healthanalyzer/enhanced + ) + + starts_with = list( + /obj/item/weapon/surgical/bonesetter, + /obj/item/weapon/surgical/cautery, + /obj/item/weapon/surgical/circular_saw, + /obj/item/weapon/surgical/hemostat, + /obj/item/weapon/surgical/retractor, + /obj/item/weapon/surgical/scalpel, + /obj/item/weapon/surgical/surgicaldrill, + /obj/item/weapon/surgical/bonegel, + /obj/item/weapon/surgical/FixOVein, + /obj/item/stack/medical/advanced/bruise_pack, + /obj/item/device/healthanalyzer/enhanced + ) /obj/item/weapon/storage/firstaid/clotting name = "clotting kit" desc = "Contains chemicals to stop bleeding." max_storage_space = ITEMSIZE_COST_SMALL * 7 - -/obj/item/weapon/storage/firstaid/clotting/New() - ..() - if (empty) - return - for(var/i = 1 to 8) - new /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting(src) - return + starts_with = list(/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting = 8) /* * Pill Bottles @@ -187,167 +176,59 @@ /obj/item/weapon/storage/pill_bottle/antitox name = "bottle of Dylovene pills" desc = "Contains pills used to counter toxins." - -/obj/item/weapon/storage/pill_bottle/antitox/New() //25u each - ..() - new /obj/item/weapon/reagent_containers/pill/antitox(src) - new /obj/item/weapon/reagent_containers/pill/antitox(src) - new /obj/item/weapon/reagent_containers/pill/antitox(src) - new /obj/item/weapon/reagent_containers/pill/antitox(src) - new /obj/item/weapon/reagent_containers/pill/antitox(src) - new /obj/item/weapon/reagent_containers/pill/antitox(src) - new /obj/item/weapon/reagent_containers/pill/antitox(src) + starts_with = list(/obj/item/weapon/reagent_containers/pill/antitox = 7) /obj/item/weapon/storage/pill_bottle/bicaridine name = "bottle of Bicaridine pills" desc = "Contains pills used to stabilize the severely injured." - -/obj/item/weapon/storage/pill_bottle/bicaridine/New() - ..() - new /obj/item/weapon/reagent_containers/pill/bicaridine(src) - new /obj/item/weapon/reagent_containers/pill/bicaridine(src) - new /obj/item/weapon/reagent_containers/pill/bicaridine(src) - new /obj/item/weapon/reagent_containers/pill/bicaridine(src) - new /obj/item/weapon/reagent_containers/pill/bicaridine(src) - new /obj/item/weapon/reagent_containers/pill/bicaridine(src) - new /obj/item/weapon/reagent_containers/pill/bicaridine(src) + starts_with = list(/obj/item/weapon/reagent_containers/pill/bicaridine = 7) /obj/item/weapon/storage/pill_bottle/dexalin_plus name = "bottle of Dexalin Plus pills" desc = "Contains pills used to treat extreme cases of oxygen deprivation." - -/obj/item/weapon/storage/pill_bottle/dexalin_plus/New() - ..() - new /obj/item/weapon/reagent_containers/pill/dexalin_plus(src) - new /obj/item/weapon/reagent_containers/pill/dexalin_plus(src) - new /obj/item/weapon/reagent_containers/pill/dexalin_plus(src) - new /obj/item/weapon/reagent_containers/pill/dexalin_plus(src) - new /obj/item/weapon/reagent_containers/pill/dexalin_plus(src) - new /obj/item/weapon/reagent_containers/pill/dexalin_plus(src) - new /obj/item/weapon/reagent_containers/pill/dexalin_plus(src) + starts_with = list(/obj/item/weapon/reagent_containers/pill/dexalin_plus = 7) /obj/item/weapon/storage/pill_bottle/dermaline name = "bottle of Dermaline pills" desc = "Contains pills used to treat burn wounds." - -/obj/item/weapon/storage/pill_bottle/dermaline/New() - ..() - new /obj/item/weapon/reagent_containers/pill/dermaline(src) - new /obj/item/weapon/reagent_containers/pill/dermaline(src) - new /obj/item/weapon/reagent_containers/pill/dermaline(src) - new /obj/item/weapon/reagent_containers/pill/dermaline(src) - new /obj/item/weapon/reagent_containers/pill/dermaline(src) - new /obj/item/weapon/reagent_containers/pill/dermaline(src) - new /obj/item/weapon/reagent_containers/pill/dermaline(src) + starts_with = list(/obj/item/weapon/reagent_containers/pill/dermaline = 7) /obj/item/weapon/storage/pill_bottle/dylovene name = "bottle of Dylovene pills" desc = "Contains pills used to treat toxic substances in the blood." - -/obj/item/weapon/storage/pill_bottle/dylovene/New() //15u each - ..() - new /obj/item/weapon/reagent_containers/pill/dylovene(src) - new /obj/item/weapon/reagent_containers/pill/dylovene(src) - new /obj/item/weapon/reagent_containers/pill/dylovene(src) - new /obj/item/weapon/reagent_containers/pill/dylovene(src) - new /obj/item/weapon/reagent_containers/pill/dylovene(src) - new /obj/item/weapon/reagent_containers/pill/dylovene(src) - new /obj/item/weapon/reagent_containers/pill/dylovene(src) + starts_with = list(/obj/item/weapon/reagent_containers/pill/dylovene = 7) /obj/item/weapon/storage/pill_bottle/inaprovaline name = "bottle of Inaprovaline pills" desc = "Contains pills used to stabilize patients." - -/obj/item/weapon/storage/pill_bottle/inaprovaline/New() - ..() - new /obj/item/weapon/reagent_containers/pill/inaprovaline(src) - new /obj/item/weapon/reagent_containers/pill/inaprovaline(src) - new /obj/item/weapon/reagent_containers/pill/inaprovaline(src) - new /obj/item/weapon/reagent_containers/pill/inaprovaline(src) - new /obj/item/weapon/reagent_containers/pill/inaprovaline(src) - new /obj/item/weapon/reagent_containers/pill/inaprovaline(src) - new /obj/item/weapon/reagent_containers/pill/inaprovaline(src) + starts_with = list(/obj/item/weapon/reagent_containers/pill/inaprovaline = 7) /obj/item/weapon/storage/pill_bottle/kelotane name = "bottle of kelotane pills" desc = "Contains pills used to treat burns." - -/obj/item/weapon/storage/pill_bottle/kelotane/New() - ..() - new /obj/item/weapon/reagent_containers/pill/kelotane(src) - new /obj/item/weapon/reagent_containers/pill/kelotane(src) - new /obj/item/weapon/reagent_containers/pill/kelotane(src) - new /obj/item/weapon/reagent_containers/pill/kelotane(src) - new /obj/item/weapon/reagent_containers/pill/kelotane(src) - new /obj/item/weapon/reagent_containers/pill/kelotane(src) - new /obj/item/weapon/reagent_containers/pill/kelotane(src) + starts_with = list(/obj/item/weapon/reagent_containers/pill/kelotane = 7) /obj/item/weapon/storage/pill_bottle/spaceacillin name = "bottle of Spaceacillin pills" desc = "A theta-lactam antibiotic. Effective against many diseases likely to be encountered in space." - -/obj/item/weapon/storage/pill_bottle/spaceacillin/New() - ..() - new /obj/item/weapon/reagent_containers/pill/spaceacillin(src) - new /obj/item/weapon/reagent_containers/pill/spaceacillin(src) - new /obj/item/weapon/reagent_containers/pill/spaceacillin(src) - new /obj/item/weapon/reagent_containers/pill/spaceacillin(src) - new /obj/item/weapon/reagent_containers/pill/spaceacillin(src) - new /obj/item/weapon/reagent_containers/pill/spaceacillin(src) - new /obj/item/weapon/reagent_containers/pill/spaceacillin(src) + starts_with = list(/obj/item/weapon/reagent_containers/pill/spaceacillin = 7) /obj/item/weapon/storage/pill_bottle/tramadol name = "bottle of Tramadol pills" desc = "Contains pills used to relieve pain." - -/obj/item/weapon/storage/pill_bottle/tramadol/New() - ..() - new /obj/item/weapon/reagent_containers/pill/tramadol(src) - new /obj/item/weapon/reagent_containers/pill/tramadol(src) - new /obj/item/weapon/reagent_containers/pill/tramadol(src) - new /obj/item/weapon/reagent_containers/pill/tramadol(src) - new /obj/item/weapon/reagent_containers/pill/tramadol(src) - new /obj/item/weapon/reagent_containers/pill/tramadol(src) - new /obj/item/weapon/reagent_containers/pill/tramadol(src) + starts_with = list(/obj/item/weapon/reagent_containers/pill/tramadol = 7) /obj/item/weapon/storage/pill_bottle/citalopram name = "bottle of Citalopram pills" desc = "Contains pills used to stabilize a patient's mood." - -/obj/item/weapon/storage/pill_bottle/citalopram/New() - ..() - new /obj/item/weapon/reagent_containers/pill/citalopram(src) - new /obj/item/weapon/reagent_containers/pill/citalopram(src) - new /obj/item/weapon/reagent_containers/pill/citalopram(src) - new /obj/item/weapon/reagent_containers/pill/citalopram(src) - new /obj/item/weapon/reagent_containers/pill/citalopram(src) - new /obj/item/weapon/reagent_containers/pill/citalopram(src) - new /obj/item/weapon/reagent_containers/pill/citalopram(src) + starts_with = list(/obj/item/weapon/reagent_containers/pill/citalopram = 7) /obj/item/weapon/storage/pill_bottle/carbon name = "bottle of Carbon pills" desc = "Contains pills used to neutralise chemicals in the stomach." - -/obj/item/weapon/storage/pill_bottle/carbon/New() - ..() - new /obj/item/weapon/reagent_containers/pill/carbon(src) - new /obj/item/weapon/reagent_containers/pill/carbon(src) - new /obj/item/weapon/reagent_containers/pill/carbon(src) - new /obj/item/weapon/reagent_containers/pill/carbon(src) - new /obj/item/weapon/reagent_containers/pill/carbon(src) - new /obj/item/weapon/reagent_containers/pill/carbon(src) - new /obj/item/weapon/reagent_containers/pill/carbon(src) + starts_with = list(/obj/item/weapon/reagent_containers/pill/carbon = 7) /obj/item/weapon/storage/pill_bottle/iron name = "bottle of Iron pills" desc = "Contains pills used to aid in blood regeneration." - -/obj/item/weapon/storage/pill_bottle/iron/New() - ..() - new /obj/item/weapon/reagent_containers/pill/iron(src) - new /obj/item/weapon/reagent_containers/pill/iron(src) - new /obj/item/weapon/reagent_containers/pill/iron(src) - new /obj/item/weapon/reagent_containers/pill/iron(src) - new /obj/item/weapon/reagent_containers/pill/iron(src) - new /obj/item/weapon/reagent_containers/pill/iron(src) - new /obj/item/weapon/reagent_containers/pill/iron(src) \ No newline at end of file + starts_with = list(/obj/item/weapon/reagent_containers/pill/iron = 7) diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm index e52ad4d8121..e9527b23134 100644 --- a/code/game/objects/items/weapons/storage/lockbox.dm +++ b/code/game/objects/items/weapons/storage/lockbox.dm @@ -77,36 +77,28 @@ /obj/item/weapon/storage/lockbox/loyalty name = "lockbox of loyalty implants" req_access = list(access_security) - - New() - ..() - new /obj/item/weapon/implantcase/loyalty(src) - new /obj/item/weapon/implantcase/loyalty(src) - new /obj/item/weapon/implantcase/loyalty(src) - new /obj/item/weapon/implanter/loyalty(src) - + starts_with = list( + /obj/item/weapon/implantcase/loyalty = 3, + /obj/item/weapon/implanter/loyalty + ) /obj/item/weapon/storage/lockbox/clusterbang name = "lockbox of clusterbangs" desc = "You have a bad feeling about opening this." req_access = list(access_security) - - New() - ..() - new /obj/item/weapon/grenade/flashbang/clusterbang(src) + starts_with = list(/obj/item/weapon/grenade/flashbang/clusterbang) /obj/item/weapon/storage/lockbox/medal name = "lockbox of medals" desc = "A lockbox filled with commemorative medals, it has the NanoTrasen logo stamped on it." req_access = list(access_heads) storage_slots = 7 - - New() - ..() - new /obj/item/clothing/accessory/medal/conduct(src) - new /obj/item/clothing/accessory/medal/bronze_heart(src) - new /obj/item/clothing/accessory/medal/nobel_science(src) - new /obj/item/clothing/accessory/medal/silver/valor(src) - new /obj/item/clothing/accessory/medal/silver/security(src) - new /obj/item/clothing/accessory/medal/gold/captain(src) - new /obj/item/clothing/accessory/medal/gold/heroism(src) \ No newline at end of file + starts_with = list( + /obj/item/clothing/accessory/medal/conduct, + /obj/item/clothing/accessory/medal/bronze_heart, + /obj/item/clothing/accessory/medal/nobel_science, + /obj/item/clothing/accessory/medal/silver/valor, + /obj/item/clothing/accessory/medal/silver/security, + /obj/item/clothing/accessory/medal/gold/captain, + /obj/item/clothing/accessory/medal/gold/heroism + ) diff --git a/code/game/objects/items/weapons/storage/misc.dm b/code/game/objects/items/weapons/storage/misc.dm index 64952046a56..d103fbc6ef2 100644 --- a/code/game/objects/items/weapons/storage/misc.dm +++ b/code/game/objects/items/weapons/storage/misc.dm @@ -6,17 +6,14 @@ icon = 'icons/obj/food.dmi' icon_state = "donutbox" name = "donut box" - var/startswith = 6 max_storage_space = ITEMSIZE_COST_SMALL * 6 can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/donut) foldable = /obj/item/stack/material/cardboard + starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/donut/normal = 6) -/obj/item/weapon/storage/box/donut/New() - ..() - for(var/i=1 to startswith) - new /obj/item/weapon/reagent_containers/food/snacks/donut/normal(src) +/obj/item/weapon/storage/box/donut/initialize() + . = ..() update_icon() - return /obj/item/weapon/storage/box/donut/update_icon() overlays.Cut() @@ -26,4 +23,4 @@ i++ /obj/item/weapon/storage/box/donut/empty - startswith = 0 + empty = TRUE diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index 4d9be129f73..78a2d940ad8 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -184,15 +184,10 @@ anchored = 1.0 density = 0 cant_hold = list(/obj/item/weapon/storage/secure/briefcase) + starts_with = list( + /obj/item/weapon/paper, + /obj/item/weapon/pen + ) - New() - ..() - new /obj/item/weapon/paper(src) - new /obj/item/weapon/pen(src) - - attack_hand(mob/user as mob) - return attack_self(user) - -/obj/item/weapon/storage/secure/safe/HoS/New() - ..() - //new /obj/item/weapon/storage/lockbox/clusterbang(src) This item is currently broken... and probably shouldnt exist to begin with (even though it's cool) +/obj/item/weapon/storage/secure/safe/attack_hand(mob/user as mob) + return attack_self(user) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 6309a0a3f3d..2dd5116546c 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -36,6 +36,7 @@ var/collection_mode = 1; //0 = pick one at a time, 1 = pick all on tile var/use_sound = "rustle" //sound played when used. null for no sound. var/list/starts_with //Things to spawn on the box on spawn + var/empty //Mapper override to spawn an empty version of a container that usually has stuff /obj/item/weapon/storage/Destroy() close_all() @@ -576,12 +577,13 @@ src.closer.hud_layerise() orient2hud() - if(LAZYLEN(starts_with)) + if(LAZYLEN(starts_with) && !empty) for(var/newtype in starts_with) var/count = starts_with[newtype] || 1 //Could have left it blank. while(count) count-- new newtype(src) + starts_with = null //Reduce list count. calibrate_size() diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index 21bebfa399a..c4174eb4c09 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -19,48 +19,50 @@ name = "emergency toolbox" icon_state = "red" item_state_slots = list(slot_r_hand_str = "toolbox_red", slot_l_hand_str = "toolbox_red") - -/obj/item/weapon/storage/toolbox/emergency/New() - ..() - new /obj/item/weapon/crowbar/red(src) - new /obj/item/weapon/extinguisher/mini(src) + starts_with = list( + /obj/item/weapon/crowbar/red, + /obj/item/weapon/extinguisher/mini, + /obj/item/device/radio + ) +/obj/item/weapon/storage/toolbox/emergency/initialize() if(prob(50)) new /obj/item/device/flashlight(src) else new /obj/item/device/flashlight/flare(src) - new /obj/item/device/radio(src) + . = ..() /obj/item/weapon/storage/toolbox/mechanical name = "mechanical toolbox" icon_state = "blue" item_state_slots = list(slot_r_hand_str = "toolbox_blue", slot_l_hand_str = "toolbox_blue") - -/obj/item/weapon/storage/toolbox/mechanical/New() - ..() - new /obj/item/weapon/screwdriver(src) - new /obj/item/weapon/wrench(src) - new /obj/item/weapon/weldingtool(src) - new /obj/item/weapon/crowbar(src) - new /obj/item/device/analyzer(src) - new /obj/item/weapon/wirecutters(src) + starts_with = list( + /obj/item/weapon/screwdriver, + /obj/item/weapon/wrench, + /obj/item/weapon/weldingtool, + /obj/item/weapon/crowbar, + /obj/item/device/analyzer, + /obj/item/weapon/wirecutters + ) /obj/item/weapon/storage/toolbox/electrical name = "electrical toolbox" icon_state = "yellow" item_state_slots = list(slot_r_hand_str = "toolbox_yellow", slot_l_hand_str = "toolbox_yellow") - -/obj/item/weapon/storage/toolbox/electrical/New() - ..() - new /obj/item/weapon/screwdriver(src) - new /obj/item/weapon/wirecutters(src) - new /obj/item/device/t_scanner(src) - new /obj/item/weapon/crowbar(src) - new /obj/item/stack/cable_coil/random(src,30) - new /obj/item/stack/cable_coil/random(src,30) + starts_with = list( + /obj/item/weapon/screwdriver, + /obj/item/weapon/wirecutters, + /obj/item/device/t_scanner, + /obj/item/weapon/crowbar, + /obj/item/stack/cable_coil/random_belt, + /obj/item/stack/cable_coil/random_belt + ) +/obj/item/weapon/storage/toolbox/electrical/initialize() + . = ..() if(prob(5)) new /obj/item/clothing/gloves/yellow(src) else new /obj/item/stack/cable_coil/random(src,30) + calibrate_size() /obj/item/weapon/storage/toolbox/syndicate name = "black and red toolbox" @@ -68,29 +70,26 @@ item_state_slots = list(slot_r_hand_str = "toolbox_syndi", slot_l_hand_str = "toolbox_syndi") origin_tech = list(TECH_COMBAT = 1, TECH_ILLEGAL = 1) force = 14 - var/powertools = FALSE + starts_with = list( + /obj/item/clothing/gloves/yellow, + /obj/item/weapon/screwdriver, + /obj/item/weapon/wrench, + /obj/item/weapon/weldingtool, + /obj/item/weapon/crowbar, + /obj/item/weapon/wirecutters, + /obj/item/device/multitool + ) /obj/item/weapon/storage/toolbox/syndicate/powertools - powertools = TRUE - -/obj/item/weapon/storage/toolbox/syndicate/New() // This is found in maint, so it should have the basics, plus some gloves. - ..() //all storage items need this to work properly! - if(powertools) - new /obj/item/clothing/gloves/yellow(src) - new /obj/item/weapon/screwdriver/power(src) - new /obj/item/weapon/weldingtool/experimental(src) - new /obj/item/weapon/crowbar/power(src) - new /obj/item/device/multitool(src) - new /obj/item/stack/cable_coil/random(src,30) - new /obj/item/device/analyzer(src) - else - new /obj/item/clothing/gloves/yellow(src) - new /obj/item/weapon/screwdriver(src) - new /obj/item/weapon/wrench(src) - new /obj/item/weapon/weldingtool(src) - new /obj/item/weapon/crowbar(src) - new /obj/item/weapon/wirecutters(src) - new /obj/item/device/multitool(src) + starts_with = list( + /obj/item/clothing/gloves/yellow, + /obj/item/weapon/screwdriver/power, + /obj/item/weapon/weldingtool/experimental, + /obj/item/weapon/crowbar/power, + /obj/item/device/multitool, + /obj/item/stack/cable_coil/random_belt, + /obj/item/device/analyzer + ) /obj/item/weapon/storage/toolbox/lunchbox max_storage_space = ITEMSIZE_COST_SMALL * 4 //slightly smaller than a toolbox @@ -103,8 +102,7 @@ var/filled = FALSE attack_verb = list("lunched") -/obj/item/weapon/storage/toolbox/lunchbox/New() - ..() +/obj/item/weapon/storage/toolbox/lunchbox/initialize() if(filled) var/list/lunches = lunchables_lunches() var/lunch = lunches[pick(lunches)] @@ -117,6 +115,7 @@ var/list/drinks = lunchables_drinks() var/drink = drinks[pick(drinks)] new drink(src) + . = ..() /obj/item/weapon/storage/toolbox/lunchbox/filled filled = TRUE diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index f82feb91dd1..5c0f8373400 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -1,76 +1,66 @@ -/obj/item/weapon/storage/box/syndicate/ - New() - ..() - switch (pickweight(list("bloodyspai" = 1, "stealth" = 1, "screwed" = 1, "guns" = 1, "murder" = 1, "freedom" = 1, "hacker" = 1, "lordsingulo" = 1, "smoothoperator" = 1))) - if("bloodyspai") - new /obj/item/clothing/under/chameleon(src) - new /obj/item/clothing/mask/gas/voice(src) - new /obj/item/weapon/card/id/syndicate(src) - new /obj/item/clothing/shoes/syndigaloshes(src) - return +/obj/item/weapon/storage/box/syndicate/initialize() + switch (pickweight(list("bloodyspai" = 1, "stealth" = 1, "screwed" = 1, "guns" = 1, "murder" = 1, "freedom" = 1, "hacker" = 1, "lordsingulo" = 1, "smoothoperator" = 1))) + if("bloodyspai") + new /obj/item/clothing/under/chameleon(src) + new /obj/item/clothing/mask/gas/voice(src) + new /obj/item/weapon/card/id/syndicate(src) + new /obj/item/clothing/shoes/syndigaloshes(src) - if("stealth") - new /obj/item/weapon/gun/energy/crossbow(src) - new /obj/item/weapon/pen/reagent/paralysis(src) - new /obj/item/device/chameleon(src) - return + if("stealth") + new /obj/item/weapon/gun/energy/crossbow(src) + new /obj/item/weapon/pen/reagent/paralysis(src) + new /obj/item/device/chameleon(src) - if("screwed") - new /obj/effect/spawner/newbomb/timer/syndicate(src) - new /obj/effect/spawner/newbomb/timer/syndicate(src) - new /obj/item/device/powersink(src) - new /obj/item/clothing/suit/space/syndicate(src) - new /obj/item/clothing/head/helmet/space/syndicate(src) - new /obj/item/clothing/mask/gas/syndicate(src) - new /obj/item/weapon/tank/emergency/oxygen/double(src) - return + if("screwed") + new /obj/effect/spawner/newbomb/timer/syndicate(src) + new /obj/effect/spawner/newbomb/timer/syndicate(src) + new /obj/item/device/powersink(src) + new /obj/item/clothing/suit/space/syndicate(src) + new /obj/item/clothing/head/helmet/space/syndicate(src) + new /obj/item/clothing/mask/gas/syndicate(src) + new /obj/item/weapon/tank/emergency/oxygen/double(src) - if("guns") - new /obj/item/weapon/gun/projectile/revolver(src) - new /obj/item/ammo_magazine/s357(src) - new /obj/item/weapon/card/emag(src) - new /obj/item/weapon/plastique(src) - new /obj/item/weapon/plastique(src) - return + if("guns") + new /obj/item/weapon/gun/projectile/revolver(src) + new /obj/item/ammo_magazine/s357(src) + new /obj/item/weapon/card/emag(src) + new /obj/item/weapon/plastique(src) + new /obj/item/weapon/plastique(src) - if("murder") - new /obj/item/weapon/melee/energy/sword(src) - new /obj/item/clothing/glasses/thermal/syndi(src) - new /obj/item/weapon/card/emag(src) - new /obj/item/clothing/shoes/syndigaloshes(src) - return + if("murder") + new /obj/item/weapon/melee/energy/sword(src) + new /obj/item/clothing/glasses/thermal/syndi(src) + new /obj/item/weapon/card/emag(src) + new /obj/item/clothing/shoes/syndigaloshes(src) - if("freedom") - var/obj/item/weapon/implanter/O = new /obj/item/weapon/implanter(src) - O.imp = new /obj/item/weapon/implant/freedom(O) - var/obj/item/weapon/implanter/U = new /obj/item/weapon/implanter(src) - U.imp = new /obj/item/weapon/implant/uplink(U) - return + if("freedom") + var/obj/item/weapon/implanter/O = new /obj/item/weapon/implanter(src) + O.imp = new /obj/item/weapon/implant/freedom(O) + var/obj/item/weapon/implanter/U = new /obj/item/weapon/implanter(src) + U.imp = new /obj/item/weapon/implant/uplink(U) - if("hacker") - new /obj/item/device/encryptionkey/syndicate(src) - new /obj/item/weapon/aiModule/syndicate(src) - new /obj/item/weapon/card/emag(src) - new /obj/item/device/encryptionkey/binary(src) - return + if("hacker") + new /obj/item/device/encryptionkey/syndicate(src) + new /obj/item/weapon/aiModule/syndicate(src) + new /obj/item/weapon/card/emag(src) + new /obj/item/device/encryptionkey/binary(src) - if("lordsingulo") - new /obj/item/device/radio/beacon/syndicate(src) - new /obj/item/clothing/suit/space/syndicate(src) - new /obj/item/clothing/head/helmet/space/syndicate(src) - new /obj/item/clothing/mask/gas/syndicate(src) - new /obj/item/weapon/tank/emergency/oxygen/double(src) - new /obj/item/weapon/card/emag(src) - return + if("lordsingulo") + new /obj/item/device/radio/beacon/syndicate(src) + new /obj/item/clothing/suit/space/syndicate(src) + new /obj/item/clothing/head/helmet/space/syndicate(src) + new /obj/item/clothing/mask/gas/syndicate(src) + new /obj/item/weapon/tank/emergency/oxygen/double(src) + new /obj/item/weapon/card/emag(src) - if("smoothoperator") - new /obj/item/weapon/storage/box/syndie_kit/g9mm(src) - new /obj/item/weapon/storage/bag/trash(src) - new /obj/item/weapon/soap/syndie(src) - new /obj/item/bodybag(src) - new /obj/item/clothing/under/suit_jacket(src) - new /obj/item/clothing/shoes/laceup(src) - return + if("smoothoperator") + new /obj/item/weapon/storage/box/syndie_kit/g9mm(src) + new /obj/item/weapon/storage/bag/trash(src) + new /obj/item/weapon/soap/syndie(src) + new /obj/item/bodybag(src) + new /obj/item/clothing/under/suit_jacket(src) + new /obj/item/clothing/shoes/laceup(src) + . = ..() /obj/item/weapon/storage/box/syndie_kit name = "box" @@ -80,118 +70,97 @@ /obj/item/weapon/storage/box/syndie_kit/imp_freedom name = "boxed freedom implant (with injector)" -/obj/item/weapon/storage/box/syndie_kit/imp_freedom/New() - ..() +/obj/item/weapon/storage/box/syndie_kit/imp_freedom/initialize() var/obj/item/weapon/implanter/O = new(src) O.imp = new /obj/item/weapon/implant/freedom(O) O.update() - return + . = ..() /obj/item/weapon/storage/box/syndie_kit/imp_compress name = "box (C)" - -/obj/item/weapon/storage/box/syndie_kit/imp_compress/New() - new /obj/item/weapon/implanter/compressed(src) - ..() - return + starts_with = list(/obj/item/weapon/implanter/compressed) /obj/item/weapon/storage/box/syndie_kit/imp_explosive name = "box (E)" - -/obj/item/weapon/storage/box/syndie_kit/imp_explosive/New() - new /obj/item/weapon/implanter/explosive(src) - ..() - return + starts_with = list(/obj/item/weapon/implanter/explosive) /obj/item/weapon/storage/box/syndie_kit/imp_uplink name = "boxed uplink implant (with injector)" -/obj/item/weapon/storage/box/syndie_kit/imp_uplink/New() - ..() +/obj/item/weapon/storage/box/syndie_kit/imp_uplink/initialize() var/obj/item/weapon/implanter/O = new(src) O.imp = new /obj/item/weapon/implant/uplink(O) O.update() - return + . = ..() /obj/item/weapon/storage/box/syndie_kit/space name = "boxed space suit and helmet" - -/obj/item/weapon/storage/box/syndie_kit/space/New() - ..() - new /obj/item/clothing/suit/space/syndicate(src) - new /obj/item/clothing/head/helmet/space/syndicate(src) - new /obj/item/clothing/mask/gas/syndicate(src) - new /obj/item/weapon/tank/emergency/oxygen/double(src) - return + starts_with = list( + /obj/item/clothing/suit/space/syndicate, + /obj/item/clothing/head/helmet/space/syndicate, + /obj/item/clothing/mask/gas/syndicate, + /obj/item/weapon/tank/emergency/oxygen/double + ) /obj/item/weapon/storage/box/syndie_kit/chameleon name = "chameleon kit" desc = "Comes with all the clothes you need to impersonate most people. Acting lessons sold seperately." - -/obj/item/weapon/storage/box/syndie_kit/chameleon/New() - ..() - new /obj/item/clothing/under/chameleon(src) - new /obj/item/clothing/head/chameleon(src) - new /obj/item/clothing/suit/chameleon(src) - new /obj/item/clothing/shoes/chameleon(src) - new /obj/item/weapon/storage/backpack/chameleon(src) - new /obj/item/clothing/gloves/chameleon(src) - new /obj/item/clothing/mask/chameleon(src) - new /obj/item/clothing/glasses/chameleon(src) - new /obj/item/clothing/accessory/chameleon(src) - new /obj/item/weapon/gun/energy/chameleon(src) + starts_with = list( + /obj/item/clothing/under/chameleon, + /obj/item/clothing/head/chameleon, + /obj/item/clothing/suit/chameleon, + /obj/item/clothing/shoes/chameleon, + /obj/item/weapon/storage/backpack/chameleon, + /obj/item/clothing/gloves/chameleon, + /obj/item/clothing/mask/chameleon, + /obj/item/clothing/glasses/chameleon, + /obj/item/clothing/accessory/chameleon, + /obj/item/weapon/gun/energy/chameleon + ) /obj/item/weapon/storage/box/syndie_kit/clerical name = "clerical kit" desc = "Comes with all you need to fake paperwork. Assumes you have passed basic writing lessons." - -/obj/item/weapon/storage/box/syndie_kit/clerical/New() - ..() - new /obj/item/weapon/stamp/chameleon(src) - new /obj/item/weapon/pen/chameleon(src) - new /obj/item/device/destTagger(src) - new /obj/item/weapon/packageWrap(src) - new /obj/item/weapon/hand_labeler(src) + starts_with = list( + /obj/item/weapon/stamp/chameleon, + /obj/item/weapon/pen/chameleon, + /obj/item/device/destTagger, + /obj/item/weapon/packageWrap, + /obj/item/weapon/hand_labeler + ) /obj/item/weapon/storage/box/syndie_kit/spy name = "spy kit" desc = "For when you want to conduct voyeurism from afar." - -/obj/item/weapon/storage/box/syndie_kit/spy/New() - ..() - new /obj/item/device/camerabug/spy(src) - new /obj/item/device/camerabug/spy(src) - new /obj/item/device/camerabug/spy(src) - new /obj/item/device/camerabug/spy(src) - new /obj/item/device/camerabug/spy(src) - new /obj/item/device/camerabug/spy(src) - new /obj/item/device/bug_monitor/spy(src) + starts_with = list( + /obj/item/device/camerabug/spy = 6, + /obj/item/device/bug_monitor/spy + ) /obj/item/weapon/storage/box/syndie_kit/g9mm name = "\improper Smooth operator" desc = "Compact 9mm with silencer kit." - -/obj/item/weapon/storage/box/syndie_kit/g9mm/New() - ..() - new /obj/item/weapon/gun/projectile/pistol(src) - new /obj/item/weapon/silencer(src) + starts_with = list( + /obj/item/weapon/gun/projectile/pistol, + /obj/item/weapon/silencer + ) /obj/item/weapon/storage/box/syndie_kit/toxin name = "toxin kit" desc = "An apple will not be enough to keep the doctor away after this." - -/obj/item/weapon/storage/box/syndie_kit/toxin/New() - ..() - new /obj/item/weapon/reagent_containers/glass/beaker/vial/random/toxin(src) - new /obj/item/weapon/reagent_containers/syringe(src) + starts_with = list( + /obj/item/weapon/reagent_containers/glass/beaker/vial/random/toxin, + /obj/item/weapon/reagent_containers/syringe + ) /obj/item/weapon/storage/box/syndie_kit/cigarette name = "\improper Tricky smokes" desc = "Comes with the following brands of cigarettes, in this order: 2xFlash, 2xSmoke, 1xMindBreaker, 1xTricordrazine. Avoid mixing them up." -/obj/item/weapon/storage/box/syndie_kit/cigarette/New() - ..() +/obj/item/weapon/storage/box/syndie_kit/cigarette/initialize() + . = ..() var/obj/item/weapon/storage/fancy/cigarettes/pack + pack = new /obj/item/weapon/storage/fancy/cigarettes(src) fill_cigarre_package(pack, list("aluminum" = 5, "potassium" = 5, "sulfur" = 5)) pack.desc += " 'F' has been scribbled on it." @@ -222,6 +191,8 @@ new /obj/item/weapon/flame/lighter/zippo(src) + calibrate_size() + /proc/fill_cigarre_package(var/obj/item/weapon/storage/fancy/cigarettes/C, var/list/reagents) for(var/reagent in reagents) C.reagents.add_reagent(reagent, reagents[reagent] * C.storage_slots) @@ -229,72 +200,52 @@ /obj/item/weapon/storage/box/syndie_kit/ewar_voice name = "Electrowarfare and Voice Synthesiser kit" desc = "Kit for confounding organic and synthetic entities alike." - -/obj/item/weapon/storage/box/syndie_kit/ewar_voice/New() - ..() - new /obj/item/rig_module/electrowarfare_suite(src) - new /obj/item/rig_module/voice(src) - + starts_with = list( + /obj/item/rig_module/electrowarfare_suite, + /obj/item/rig_module/voice + ) /obj/item/weapon/storage/secure/briefcase/money name = "suspicious briefcase" desc = "An ominous briefcase that has the unmistakeable smell of old, stale, cigarette smoke, and gives those who look at it a bad feeling." - - - - -/obj/item/weapon/storage/secure/briefcase/money/New() - ..() - new /obj/item/weapon/spacecash/c1000(src) - new /obj/item/weapon/spacecash/c1000(src) - new /obj/item/weapon/spacecash/c1000(src) - new /obj/item/weapon/spacecash/c1000(src) - new /obj/item/weapon/spacecash/c1000(src) - new /obj/item/weapon/spacecash/c1000(src) - new /obj/item/weapon/spacecash/c1000(src) - new /obj/item/weapon/spacecash/c1000(src) - new /obj/item/weapon/spacecash/c1000(src) - new /obj/item/weapon/spacecash/c1000(src) + starts_with = list(/obj/item/weapon/spacecash/c1000 = 10) /obj/item/weapon/storage/box/syndie_kit/combat_armor name = "combat armor kit" desc = "Contains a full set of combat armor." + starts_with = list( + /obj/item/clothing/head/helmet/combat, + /obj/item/clothing/suit/armor/combat, + /obj/item/clothing/gloves/arm_guard/combat, + /obj/item/clothing/shoes/leg_guard/combat + ) -/obj/item/weapon/storage/box/syndie_kit/combat_armor/New() - ..() - new /obj/item/clothing/head/helmet/combat(src) - new /obj/item/clothing/suit/armor/combat(src) - new /obj/item/clothing/gloves/arm_guard/combat(src) - new /obj/item/clothing/shoes/leg_guard/combat(src) - return +/obj/item/weapon/storage/box/syndie_kit/demolitions + starts_with = list( + /obj/item/weapon/syndie/c4explosive, + /obj/item/weapon/screwdriver + ) -/obj/item/weapon/storage/box/syndie_kit/demolitions/New() - ..() - new /obj/item/weapon/syndie/c4explosive(src) - new /obj/item/weapon/screwdriver(src) - -/obj/item/weapon/storage/box/syndie_kit/demolitions_heavy/New() - ..() - new /obj/item/weapon/syndie/c4explosive/heavy(src) - new /obj/item/weapon/screwdriver(src) - -/obj/item/weapon/storage/box/syndie_kit/demolitions_super_heavy/New() - ..() - new /obj/item/weapon/syndie/c4explosive/heavy/super_heavy(src) - new /obj/item/weapon/screwdriver(src) +/obj/item/weapon/storage/box/syndie_kit/demolitions_heavy + starts_with = list( + /obj/item/weapon/syndie/c4explosive/heavy, + /obj/item/weapon/screwdriver + ) +/obj/item/weapon/storage/box/syndie_kit/demolitions_super_heavy + starts_with = list( + /obj/item/weapon/syndie/c4explosive/heavy/super_heavy, + /obj/item/weapon/screwdriver + ) /obj/item/weapon/storage/secure/briefcase/rifle name = "secure briefcase" - -/obj/item/weapon/storage/secure/briefcase/rifle/New() - ..() - new /obj/item/sniper_rifle_part/barrel(src) - new /obj/item/sniper_rifle_part/stock(src) - new /obj/item/sniper_rifle_part/trigger_group(src) - - for(var/i = 1 to 4) - new /obj/item/ammo_casing/a145(src) + starts_with = list( + /obj/item/sniper_rifle_part/barrel, + /obj/item/sniper_rifle_part/stock, + /obj/item/sniper_rifle_part/trigger_group, + /obj/item/ammo_casing/a145 = 4 + ) /obj/item/weapon/storage/secure/briefcase/fuelrod name = "heavy briefcase" @@ -303,14 +254,12 @@ description_antag = "This case will likely contain a charged fuel rod gun, and a few fuel rods to go with it. It can only hold the fuel rod gun, fuel rods, batteries, a screwdriver, and stock machine parts." force = 12 //Anti-rad lined i.e. Lead, probably gonna hurt a bit if you get bashed with it. can_hold = list(/obj/item/weapon/gun/magnetic/fuelrod, /obj/item/weapon/fuel_assembly, /obj/item/weapon/cell, /obj/item/weapon/stock_parts, /obj/item/weapon/screwdriver) - - -/obj/item/weapon/storage/secure/briefcase/fuelrod/New() - ..() - new /obj/item/weapon/gun/magnetic/fuelrod(src) - new /obj/item/weapon/fuel_assembly/deuterium(src) - new /obj/item/weapon/fuel_assembly/deuterium(src) - new /obj/item/weapon/fuel_assembly/tritium(src) - new /obj/item/weapon/fuel_assembly/tritium(src) - new /obj/item/weapon/fuel_assembly/phoron(src) - new /obj/item/weapon/screwdriver(src) + starts_with = list( + /obj/item/weapon/gun/magnetic/fuelrod, + /obj/item/weapon/fuel_assembly/deuterium, + /obj/item/weapon/fuel_assembly/deuterium, + /obj/item/weapon/fuel_assembly/tritium, + /obj/item/weapon/fuel_assembly/tritium, + /obj/item/weapon/fuel_assembly/phoron, + /obj/item/weapon/screwdriver + ) diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm index 30d81e1ba96..02be9fdfaf6 100644 --- a/code/game/objects/items/weapons/storage/wallets.dm +++ b/code/game/objects/items/weapons/storage/wallets.dm @@ -118,4 +118,4 @@ name = "women's wallet" desc = "A stylish wallet typically used by women." icon_state = "girl_wallet" - item_state_slots = list(slot_r_hand_str = "wowallet", slot_l_hand_str = "wowallet") \ No newline at end of file + item_state_slots = list(slot_r_hand_str = "wowallet", slot_l_hand_str = "wowallet") diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index fadd699c845..853705abed6 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -882,6 +882,12 @@ obj/structure/cable/proc/cableColor(var/colorC) color = pick(COLOR_RED, COLOR_BLUE, COLOR_LIME, COLOR_WHITE, COLOR_PINK, COLOR_YELLOW, COLOR_CYAN, COLOR_SILVER, COLOR_GRAY, COLOR_BLACK, COLOR_MAROON, COLOR_OLIVE, COLOR_LIME, COLOR_TEAL, COLOR_NAVY, COLOR_PURPLE, COLOR_BEIGE, COLOR_BROWN) ..() +/obj/item/stack/cable_coil/random_belt/New() + stacktype = /obj/item/stack/cable_coil + color = pick(COLOR_RED, COLOR_YELLOW, COLOR_ORANGE) + amount = 30 + ..() + //Endless alien cable coil /obj/item/stack/cable_coil/alien diff --git a/icons/mob/items/lefthand_storage.dmi b/icons/mob/items/lefthand_storage.dmi index c4518a59ecf5f32e0be1debd3ecd262ed948c880..530823eb77a5d75d0932bc64529d14ee834932d4 100644 GIT binary patch literal 23374 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

#R`oBrW%tcF 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 literal 23341 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 Date: Sun, 18 Feb 2018 13:03:41 -0600 Subject: [PATCH 2/6] POLARIS: Ports Bay oxygen/anesthetic pumps --- code/game/machinery/OpTable.dm | 1 + code/game/machinery/oxygen_pump.dm | 243 ++++++++++++++++++++++++++ code/modules/clothing/masks/breath.dm | 14 ++ icons/obj/walllocker.dmi | Bin 1514 -> 2947 bytes nano/templates/Oxygen_pump.tmpl | 42 +++++ vorestation.dme | 1 + 6 files changed, 301 insertions(+) create mode 100644 code/game/machinery/oxygen_pump.dm create mode 100644 nano/templates/Oxygen_pump.tmpl diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index 5696892ddc8..ccf3f69529e 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -9,6 +9,7 @@ idle_power_usage = 1 active_power_usage = 5 surgery_odds = 100 + throwpass = 1 var/mob/living/carbon/human/victim = null var/strapped = 0.0 var/obj/machinery/computer/operating/computer = null diff --git a/code/game/machinery/oxygen_pump.dm b/code/game/machinery/oxygen_pump.dm new file mode 100644 index 00000000000..7039f9445a5 --- /dev/null +++ b/code/game/machinery/oxygen_pump.dm @@ -0,0 +1,243 @@ +#define TANK_MAX_RELEASE_PRESSURE (3*ONE_ATMOSPHERE) +#define TANK_DEFAULT_RELEASE_PRESSURE ONE_ATMOSPHERE + +/obj/machinery/oxygen_pump + name = "emergency oxygen pump" + icon = 'icons/obj/walllocker.dmi' + desc = "A wall mounted oxygen pump with a retractable face mask that you can pull over your face in case of emergencies." + icon_state = "oxygen_tank" + + anchored = TRUE + + var/obj/item/weapon/tank/tank + var/mob/living/carbon/breather + var/obj/item/clothing/mask/breath/contained + + var/spawn_type = /obj/item/weapon/tank/emergency/oxygen/engi + var/mask_type = /obj/item/clothing/mask/breath/emergency + var/icon_state_open = "oxygen_tank_open" + var/icon_state_closed = "oxygen_tank" + + power_channel = ENVIRON + idle_power_usage = 10 + active_power_usage = 120 // No idea what the realistic amount would be. + +/obj/machinery/oxygen_pump/initialize() + . = ..() + tank = new spawn_type (src) + contained = new mask_type (src) + +/obj/machinery/oxygen_pump/Destroy() + if(breather) + breather.internal = null + if(breather.internals) + breather.internals.icon_state = "internal0" + if(tank) + qdel(tank) + if(breather) + breather.remove_from_mob(contained) + src.visible_message("The mask rapidly retracts just before /the [src] is destroyed!") + qdel(contained) + contained = null + breather = null + return ..() + +/obj/machinery/oxygen_pump/MouseDrop(var/mob/living/carbon/human/target, src_location, over_location) + ..() + if(istype(target) && CanMouseDrop(target)) + if(!can_apply_to_target(target, usr)) // There is no point in attempting to apply a mask if it's impossible. + return + usr.visible_message("\The [usr] begins placing the mask onto [target]..") + if(!do_mob(usr, target, 25) || !can_apply_to_target(target, usr)) + return + // place mask and add fingerprints + usr.visible_message("\The [usr] has placed \the mask on [target]'s mouth.") + attach_mask(target) + src.add_fingerprint(usr) + +/obj/machinery/oxygen_pump/attack_hand(mob/user as mob) + if((stat & MAINT) && tank) + user.visible_message("\The [user] removes \the [tank] from \the [src].", "You remove \the [tank] from \the [src].") + user.put_in_hands(tank) + src.add_fingerprint(user) + tank.add_fingerprint(user) + tank = null + return + if (!tank) + to_chat(user, "There is no tank in \the [src]!") + return + if(breather) + if(tank) + tank.forceMove(src) + breather.remove_from_mob(contained) + contained.forceMove(src) + src.visible_message("\The [user] makes \The [contained] rapidly retracts back into \the [src]!") + if(breather.internals) + breather.internals.icon_state = "internal0" + breather = null + use_power = 1 + +/obj/machinery/oxygen_pump/attack_ai(mob/user as mob) + ui_interact(user) + +/obj/machinery/oxygen_pump/proc/attach_mask(var/mob/living/carbon/C) + if(C && istype(C)) + contained.forceMove(get_turf(C)) + C.equip_to_slot(contained, slot_wear_mask) + if(tank) + tank.forceMove(C) + breather = C + spawn(1) + if(!breather.internal && tank) + breather.internal = tank + if(breather.internals) + breather.internals.icon_state = "internal1" + use_power = 2 + +/obj/machinery/oxygen_pump/proc/can_apply_to_target(var/mob/living/carbon/human/target, mob/user as mob) + if(!user) + user = target + // Check target validity + if(!target.organs_by_name[BP_HEAD]) + to_chat(user, "\The [target] doesn't have a head.") + return + if(!target.check_has_mouth()) + to_chat(user, "\The [target] doesn't have a mouth.") + return + if(target.wear_mask && target != breather) + to_chat(user, "\The [target] is already wearing a mask.") + return + if(target.head && (target.head.body_parts_covered & FACE)) + to_chat(user, "Remove their [target.head] first.") + return + if(!tank) + to_chat(user, "There is no tank in \the [src].") + return + if(stat & MAINT) + to_chat(user, "Please close \the maintenance hatch first.") + return + if(!Adjacent(target)) + to_chat(user, "Please stay close to \the [src].") + return + //when there is a breather: + if(breather && target != breather) + to_chat(user, "\The pump is already in use.") + return + //Checking if breather is still valid + if(target == breather && target.wear_mask != contained) + to_chat(user, "\The [target] is not using the supplied mask.") + return + return 1 + +/obj/machinery/oxygen_pump/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W,/obj/item/weapon/screwdriver)) + stat ^= MAINT + user.visible_message("\The [user] [stat & MAINT ? "opens" : "closes"] \the [src].", "You [stat & MAINT ? "open" : "close"] \the [src].") + if(stat & MAINT) + icon_state = icon_state_open + if(!stat) + icon_state = icon_state_closed + //TO-DO: Open icon + if(istype(W, /obj/item/weapon/tank) && (stat & MAINT)) + if(tank) + to_chat(user, "\The [src] already has a tank installed!") + else + user.drop_item() + W.forceMove(src) + tank = W + user.visible_message("\The [user] installs \the [tank] into \the [src].", "You install \the [tank] into \the [src].") + src.add_fingerprint(user) + if(istype(W, /obj/item/weapon/tank) && !stat) + to_chat(user, "Please open the maintenance hatch first.") + +/obj/machinery/oxygen_pump/examine(var/mob/user) + . = ..() + if(tank) + to_chat(user, "The meter shows [round(tank.air_contents.return_pressure())]") + else + to_chat(user, "It is missing a tank!") + + +/obj/machinery/oxygen_pump/process() + if(breather) + if(!can_apply_to_target(breather)) + if(tank) + tank.forceMove(src) + breather.remove_from_mob(contained) + contained.forceMove(src) + src.visible_message("\The [contained] rapidly retracts back into \the [src]!") + breather = null + use_power = 1 + else if(!breather.internal && tank) + breather.internal = tank + if(breather.internals) + breather.internals.icon_state = "internal0" + +//Create rightclick to view tank settings +/obj/machinery/oxygen_pump/verb/settings() + set src in oview(1) + set category = "Object" + set name = "Show Tank Settings" + ui_interact(usr) + +//GUI Tank Setup +/obj/machinery/oxygen_pump/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + var/data[0] + if(!tank) + to_chat(usr, "It is missing a tank!") + data["tankPressure"] = 0 + data["releasePressure"] = 0 + data["defaultReleasePressure"] = 0 + data["maxReleasePressure"] = 0 + data["maskConnected"] = 0 + data["tankInstalled"] = 0 + // this is the data which will be sent to the ui + if(tank) + data["tankPressure"] = round(tank.air_contents.return_pressure() ? tank.air_contents.return_pressure() : 0) + data["releasePressure"] = round(tank.distribute_pressure ? tank.distribute_pressure : 0) + data["defaultReleasePressure"] = round(TANK_DEFAULT_RELEASE_PRESSURE) + data["maxReleasePressure"] = round(TANK_MAX_RELEASE_PRESSURE) + data["maskConnected"] = 0 + data["tankInstalled"] = 1 + + if(!breather) + data["maskConnected"] = 0 + if(breather) + data["maskConnected"] = 1 + + + // update the ui if it exists, returns null if no ui is passed/found + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + // the ui does not exist, so we'll create a new() one + // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm + ui = new(user, src, ui_key, "Oxygen_pump.tmpl", "Tank", 500, 300) + // when the ui is first opened this is the data it will use + ui.set_initial_data(data) + // open the new ui window + ui.open() + // auto update every Master Controller tick + ui.set_auto_update(1) + +/obj/machinery/oxygen_pump/Topic(href, href_list) + if(..()) + return 1 + + if (href_list["dist_p"]) + if (href_list["dist_p"] == "reset") + tank.distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE + else if (href_list["dist_p"] == "max") + tank.distribute_pressure = TANK_MAX_RELEASE_PRESSURE + else + var/cp = text2num(href_list["dist_p"]) + tank.distribute_pressure += cp + tank.distribute_pressure = min(max(round(tank.distribute_pressure), 0), TANK_MAX_RELEASE_PRESSURE) + return 1 + +/obj/machinery/oxygen_pump/anesthetic + name = "anesthetic pump" + spawn_type = /obj/item/weapon/tank/anesthetic + icon_state = "anesthetic_tank" + icon_state_closed = "anesthetic_tank" + icon_state_open = "anesthetic_tank_open" + mask_type = /obj/item/clothing/mask/breath/anesthetic diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index 48d24bb8c29..ea3e6c7cf4e 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -45,3 +45,17 @@ icon_state = "medical" item_state_slots = list(slot_r_hand_str = "medical", slot_l_hand_str = "medical") permeability_coefficient = 0.01 + +/obj/item/clothing/mask/breath/emergency + desc = "A close-fitting mask that is used by the wallmounted emergency oxygen pump." + name = "emergency mask" + icon_state = "breath" + item_state = "breath" + permeability_coefficient = 0.50 + +/obj/item/clothing/mask/breath/anesthetic + desc = "A close-fitting sterile mask that is used by the anesthetic wallmounted pump." + name = "anesthetic mask" + icon_state = "medical" + item_state = "medical" + permeability_coefficient = 0.01 diff --git a/icons/obj/walllocker.dmi b/icons/obj/walllocker.dmi index 8d43670829d85819d38627c805052b606a974f75..d4d5ced3d253113d52945e4a9f1316fd415808a4 100644 GIT binary patch delta 2914 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 Yi;v?C5GDI+e*gdg07*qoM6N<$f^>YAjQ{`u diff --git a/nano/templates/Oxygen_pump.tmpl b/nano/templates/Oxygen_pump.tmpl new file mode 100644 index 00000000000..9fff202658d --- /dev/null +++ b/nano/templates/Oxygen_pump.tmpl @@ -0,0 +1,42 @@ +{{if data.maskConnected}} +

This pump is connected to a person.
+{{else}} +
This pump is NOT connected to a person.
+{{/if}} + +{{if data.tankInstalled}} +
+
+ Tank Pressure: +
+
+ {{:helper.displayBar(data.tankPressure, 0, 1013, (data.tankPressure > 200) ? 'good' : ((data.tankPressure > 100) ? 'average' : 'bad'))}} +
+ {{:data.tankPressure}} kPa +
+
+
+ +
 
+ +
+
+ Mask Release Pressure: +
+
+ {{:helper.displayBar(data.releasePressure, 0, data.maxReleasePressure, (data.releasePressure >= 23) ? null : ((data.releasePressure >= 17) ? 'average' : 'bad'))}} +
+ {{:helper.link('-', null, {'dist_p' : -10}, (data.releasePressure > 0) ? null : 'disabled')}} + {{:helper.link('-', null, {'dist_p' : -1}, (data.releasePressure > 0) ? null : 'disabled')}} +
 {{:data.releasePressure}} kPa 
+ {{:helper.link('+', null, {'dist_p' : 1}, (data.releasePressure < data.maxReleasePressure) ? null : 'disabled')}} + {{:helper.link('+', null, {'dist_p' : 10}, (data.releasePressure < data.maxReleasePressure) ? null : 'disabled')}} + {{:helper.link('Max', null, {'dist_p' : 'max'}, (data.releasePressure < data.maxReleasePressure) ? null : 'disabled')}} + {{:helper.link('Reset', null, {'dist_p' : 'reset'}, (data.releasePressure != data.defaultReleasePressure) ? null : 'disabled')}} +
+
+
+ +{{else}} +
This pump has no tank installed.
+{{/if}} \ No newline at end of file diff --git a/vorestation.dme b/vorestation.dme index 8502a5e34a0..b5602c1e5af 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -666,6 +666,7 @@ #include "code\game\machinery\nuclear_bomb.dm" #include "code\game\machinery\OpTable.dm" #include "code\game\machinery\overview.dm" +#include "code\game\machinery\oxygen_pump.dm" #include "code\game\machinery\partslathe_vr.dm" #include "code\game\machinery\pda_multicaster.dm" #include "code\game\machinery\portable_turret.dm" From 9782219cda27d2fd6994f47e7cadc8cdab455d80 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Sun, 18 Feb 2018 13:11:49 -0600 Subject: [PATCH 3/6] VS: Re-re-report Bay's intercoms --- icons/obj/radio_vr.dmi | Bin 19993 -> 23702 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/radio_vr.dmi b/icons/obj/radio_vr.dmi index 4358e233b8dc8bf9c393e524f4563ae4cc64cc7b..f26ff6c3f66cf9a8b6857f855a87535c7d89495b 100644 GIT binary patch literal 23702 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 MQopZOs$vuNUnppW^8f$< literal 19993 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 Date: Sun, 18 Feb 2018 19:38:01 -0500 Subject: [PATCH 4/6] VS: Specific changes for boxes and pumps --- .../objects/items/weapons/storage/firstaid.dm | 8 +- maps/tether/tether-07-station3.dmm | 889 ++++++++++++++---- 2 files changed, 700 insertions(+), 197 deletions(-) diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index 929c55e5616..62ae80937af 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -131,8 +131,8 @@ /obj/item/weapon/surgical/bonegel, /obj/item/weapon/surgical/FixOVein, /obj/item/stack/medical/advanced/bruise_pack, - /obj/item/stack/nanopaste, - /obj/item/device/healthanalyzer/enhanced + /obj/item/stack/nanopaste + ///obj/item/device/healthanalyzer/enhanced //VOREStation Removal ) starts_with = list( @@ -145,8 +145,8 @@ /obj/item/weapon/surgical/surgicaldrill, /obj/item/weapon/surgical/bonegel, /obj/item/weapon/surgical/FixOVein, - /obj/item/stack/medical/advanced/bruise_pack, - /obj/item/device/healthanalyzer/enhanced + /obj/item/stack/medical/advanced/bruise_pack + ///obj/item/device/healthanalyzer/enhanced //VOREStation Removal ) /obj/item/weapon/storage/firstaid/clotting diff --git a/maps/tether/tether-07-station3.dmm b/maps/tether/tether-07-station3.dmm index 8177dfffe60..084369b41e8 100644 --- a/maps/tether/tether-07-station3.dmm +++ b/maps/tether/tether-07-station3.dmm @@ -16358,17 +16358,16 @@ /turf/simulated/floor/plating, /area/medical/surgery) "Bt" = ( +/obj/machinery/iv_drip, /obj/effect/floor_decal/borderfloorwhite{ dir = 9 }, /obj/effect/floor_decal/corner/white/border{ dir = 9 }, -/obj/machinery/iv_drip, /turf/simulated/floor/tiled/white, /area/medical/surgery) "Bu" = ( -/obj/structure/closet/secure_closet/medical2, /obj/effect/floor_decal/borderfloorwhite{ dir = 1 }, @@ -16385,12 +16384,14 @@ pixel_x = 0; pixel_y = 28 }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, /turf/simulated/floor/tiled/white, /area/medical/surgery) "Bv" = ( /obj/structure/table/standard, -/obj/item/weapon/surgical/cautery, -/obj/item/weapon/surgical/FixOVein, /obj/effect/floor_decal/borderfloorwhite{ dir = 1 }, @@ -16403,27 +16404,33 @@ pixel_x = 0; pixel_y = 26 }, +/obj/item/weapon/reagent_containers/blood/OMinus, /turf/simulated/floor/tiled/white, /area/medical/surgery) "Bw" = ( /obj/structure/table/standard, -/obj/item/weapon/surgical/retractor, -/obj/item/weapon/surgical/bonesetter, +/obj/item/weapon/storage/firstaid/surgery, /obj/effect/floor_decal/borderfloorwhite{ dir = 1 }, /obj/effect/floor_decal/corner/white/border{ dir = 1 }, -/obj/machinery/alarm{ - pixel_y = 22 +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 }, /turf/simulated/floor/tiled/white, /area/medical/surgery) "Bx" = ( /obj/structure/table/standard, -/obj/item/weapon/surgical/scalpel, -/obj/item/weapon/surgical/hemostat, +/obj/item/weapon/reagent_containers/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner"; + pixel_x = 2; + pixel_y = 2 + }, /obj/effect/floor_decal/borderfloorwhite{ dir = 5 }, @@ -16960,20 +16967,36 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, /turf/simulated/floor/tiled/white, /area/medical/surgery) "Cp" = ( +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 6 + }, /turf/simulated/floor/tiled/white, /area/medical/surgery) "Cq" = ( /obj/structure/table/standard, -/obj/item/weapon/surgical/circular_saw, -/obj/item/weapon/surgical/surgicaldrill, +/obj/item/device/healthanalyzer, /obj/effect/floor_decal/borderfloorwhite{ - dir = 4 + dir = 6 }, /obj/effect/floor_decal/corner/white/border{ - dir = 4 + dir = 6 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2, +/obj/effect/floor_decal/corner/white/bordercorner2, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 25; + pixel_y = 0 }, /turf/simulated/floor/tiled/white, /area/medical/surgery) @@ -17310,38 +17333,36 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, /turf/simulated/floor/tiled/white, /area/medical/surgery) "CS" = ( /obj/machinery/computer/operating{ dir = 8 }, +/obj/effect/floor_decal/steeldecal/steel_decals9, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 4 + }, /turf/simulated/floor/tiled/white, /area/medical/surgery) "CT" = ( /obj/machinery/optable, +/obj/effect/floor_decal/industrial/hatch/yellow, /turf/simulated/floor/tiled/white, /area/medical/surgery) "CU" = ( -/obj/item/stack/medical/advanced/bruise_pack{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/stack/medical/advanced/bruise_pack, -/obj/structure/table/standard, -/obj/effect/floor_decal/borderfloorwhite{ - dir = 4 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 4 - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/obj/item/weapon/surgical/bonegel, -/obj/item/weapon/surgical/bonegel, -/turf/simulated/floor/tiled/white, +/obj/machinery/oxygen_pump/anesthetic, +/turf/simulated/wall, /area/medical/surgery) "CV" = ( /obj/machinery/power/breakerbox/activated{ @@ -17870,6 +17891,10 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, /turf/simulated/floor/tiled/white, /area/medical/surgery) "DH" = ( @@ -18231,10 +18256,42 @@ /obj/machinery/camera/network/medbay{ dir = 1 }, -/obj/item/device/radio/intercom{ - dir = 2; +/obj/structure/closet/secure_closet/medical2, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"Eq" = ( +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/white/border, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; pixel_y = -24 }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"Er" = ( +/obj/structure/table/standard, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/white/border, +/obj/machinery/button/windowtint{ + id = "surgeryobs"; + pixel_y = -26 + }, +/obj/item/stack/nanopaste, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"Es" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/firstaid/surgery, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/white/border, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"Et" = ( /obj/structure/table/standard, /obj/item/weapon/reagent_containers/spray/cleaner{ desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; @@ -18242,51 +18299,12 @@ pixel_x = 2; pixel_y = 2 }, -/obj/item/device/healthanalyzer, -/turf/simulated/floor/tiled/white, -/area/medical/surgery) -"Eq" = ( -/obj/structure/table/standard, -/obj/item/stack/nanopaste, -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/white/border, -/turf/simulated/floor/tiled/white, -/area/medical/surgery) -"Er" = ( -/obj/structure/table/standard, -/obj/item/weapon/surgical/cautery, -/obj/item/weapon/surgical/FixOVein, -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/white/border, -/obj/machinery/button/windowtint{ - id = "surgeryobs"; - pixel_y = -26 - }, -/turf/simulated/floor/tiled/white, -/area/medical/surgery) -"Es" = ( -/obj/structure/table/standard, -/obj/item/weapon/surgical/retractor, -/obj/item/weapon/surgical/bonesetter, -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/white/border, -/turf/simulated/floor/tiled/white, -/area/medical/surgery) -"Et" = ( -/obj/structure/table/standard, -/obj/item/weapon/surgical/scalpel, -/obj/item/weapon/surgical/hemostat, /obj/effect/floor_decal/borderfloorwhite{ dir = 6 }, /obj/effect/floor_decal/corner/white/border{ dir = 6 }, -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -24 - }, /turf/simulated/floor/tiled/white, /area/medical/surgery) "Eu" = ( @@ -18927,13 +18945,13 @@ /turf/simulated/floor/plating, /area/medical/surgery2) "Fx" = ( -/obj/machinery/iv_drip, /obj/effect/floor_decal/borderfloorwhite{ dir = 9 }, /obj/effect/floor_decal/corner/white/border{ dir = 9 }, +/obj/structure/closet/secure_closet/medical2, /turf/simulated/floor/tiled/white, /area/medical/surgery2) "Fy" = ( @@ -18957,8 +18975,6 @@ /area/medical/surgery2) "Fz" = ( /obj/structure/table/standard, -/obj/item/weapon/surgical/retractor, -/obj/item/weapon/surgical/bonesetter, /obj/effect/floor_decal/borderfloorwhite{ dir = 1 }, @@ -18975,23 +18991,28 @@ /area/medical/surgery2) "FA" = ( /obj/structure/table/standard, -/obj/item/weapon/surgical/scalpel, -/obj/item/weapon/surgical/hemostat, +/obj/item/weapon/storage/firstaid/surgery, /obj/effect/floor_decal/borderfloorwhite{ dir = 1 }, /obj/effect/floor_decal/corner/white/border{ dir = 1 }, -/obj/machinery/alarm{ - pixel_y = 22 +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 }, /turf/simulated/floor/tiled/white, /area/medical/surgery2) "FB" = ( /obj/structure/table/standard, -/obj/item/weapon/surgical/circular_saw, -/obj/item/weapon/surgical/surgicaldrill, +/obj/item/weapon/reagent_containers/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner"; + pixel_x = 2; + pixel_y = 2 + }, /obj/effect/floor_decal/borderfloorwhite{ dir = 5 }, @@ -19263,13 +19284,19 @@ /area/medical/surgery2) "Gb" = ( /obj/structure/table/standard, -/obj/item/weapon/surgical/cautery, -/obj/item/weapon/surgical/FixOVein, +/obj/item/device/healthanalyzer, /obj/effect/floor_decal/borderfloorwhite{ - dir = 4 + dir = 6 }, /obj/effect/floor_decal/corner/white/border{ - dir = 4 + dir = 6 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2, +/obj/effect/floor_decal/corner/white/bordercorner2, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 25; + pixel_y = 0 }, /turf/simulated/floor/tiled/white, /area/medical/surgery2) @@ -19527,34 +19554,19 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, +/obj/effect/floor_decal/steeldecal/steel_decals6, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 4 + }, /turf/simulated/floor/tiled/white, /area/medical/surgery2) "Gt" = ( /obj/machinery/optable, /turf/simulated/floor/tiled/white, /area/medical/surgery2) -"Gu" = ( -/obj/machinery/computer/operating{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/medical/surgery2) "Gv" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 4 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 4 - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/obj/structure/table/standard, -/obj/item/stack/medical/advanced/bruise_pack, -/obj/item/stack/medical/advanced/bruise_pack, -/obj/item/weapon/surgical/bonegel, -/turf/simulated/floor/tiled/white, +/obj/machinery/oxygen_pump/anesthetic, +/turf/simulated/wall, /area/medical/surgery2) "Gw" = ( /turf/simulated/open, @@ -19772,11 +19784,19 @@ /area/medical/surgery2) "GL" = ( /obj/effect/floor_decal/borderfloorwhite{ - dir = 4 + dir = 5 }, /obj/effect/floor_decal/corner/white/border{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ dir = 4 }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 4 + }, +/obj/machinery/iv_drip, /turf/simulated/floor/tiled/white, /area/medical/surgery2) "GM" = ( @@ -20294,9 +20314,6 @@ /turf/simulated/floor/tiled/white, /area/medical/surgery_hallway) "Hp" = ( -/obj/structure/bed/chair{ - dir = 1 - }, /obj/effect/floor_decal/borderfloorwhite{ dir = 10 }, @@ -20306,24 +20323,26 @@ /obj/machinery/camera/network/medbay{ dir = 1 }, -/obj/item/device/radio/intercom{ - dir = 2; - pixel_y = -24 +/obj/structure/bed/chair{ + dir = 1 }, /turf/simulated/floor/tiled/white, /area/medical/surgery2) "Hq" = ( +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/white/border, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, /obj/structure/bed/chair{ dir = 1 }, -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/white/border, /turf/simulated/floor/tiled/white, /area/medical/surgery2) "Hr" = ( /obj/structure/table/standard, -/obj/item/weapon/reagent_containers/blood/OMinus, -/obj/item/weapon/reagent_containers/blood/OMinus, /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/white/border, /obj/machinery/button/windowtint{ @@ -20334,30 +20353,20 @@ /area/medical/surgery2) "Hs" = ( /obj/structure/table/standard, -/obj/item/device/healthanalyzer, /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/white/border, -/obj/item/weapon/reagent_containers/spray/cleaner{ - desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; - name = "Surgery Cleaner"; - pixel_x = 2; - pixel_y = 2 - }, +/obj/item/weapon/reagent_containers/blood/OMinus, +/obj/item/weapon/reagent_containers/blood/OMinus, /turf/simulated/floor/tiled/white, /area/medical/surgery2) "Ht" = ( -/obj/structure/closet/secure_closet/medical2, +/obj/structure/table/standard, /obj/effect/floor_decal/borderfloorwhite{ dir = 6 }, /obj/effect/floor_decal/corner/white/border{ dir = 6 }, -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -24 - }, /turf/simulated/floor/tiled/white, /area/medical/surgery2) "Hu" = ( @@ -22802,6 +22811,500 @@ /obj/effect/landmark/map_data/virgo3b, /turf/space, /area/space) +"KV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"LG" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 10 + }, +/obj/structure/sink{ + dir = 8; + icon_state = "sink"; + pixel_x = -12; + pixel_y = 8 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"LL" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 10 + }, +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"LS" = ( +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/white/border, +/obj/structure/window/basic{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"Mo" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 8 + }, +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"MJ" = ( +/turf/simulated/wall, +/area/space) +"No" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 5 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/table/standard, +/obj/item/device/healthanalyzer, +/turf/simulated/floor/tiled/white, +/area/space) +"Nw" = ( +/obj/structure/table/standard, +/obj/item/device/healthanalyzer, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"NC" = ( +/obj/machinery/computer/operating{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) +"NK" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/white, +/area/space) +"NR" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 9 + }, +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"NY" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/obj/structure/window/basic{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"Ow" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 4 + }, +/obj/structure/table/standard, +/obj/item/weapon/storage/firstaid/surgery, +/turf/simulated/floor/tiled/white, +/area/space) +"Oy" = ( +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/white/border, +/obj/structure/table/standard, +/obj/item/weapon/reagent_containers/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner"; + pixel_x = 2; + pixel_y = 2 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"Ph" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/window/basic{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"Pr" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"Qx" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 8 + }, +/obj/structure/sink{ + dir = 8; + icon_state = "sink"; + pixel_x = -12; + pixel_y = 8 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"RB" = ( +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"RV" = ( +/obj/effect/floor_decal/industrial/loading{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"SL" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 10 + }, +/obj/machinery/camera/network/medbay{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + dir = 2; + pixel_y = -24 + }, +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"TJ" = ( +/obj/machinery/iv_drip, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"Uc" = ( +/obj/effect/floor_decal/industrial/loading, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"Ue" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 4 + }, +/obj/machinery/computer/operating{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"Uh" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 6 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/closet/secure_closet/medical2, +/turf/simulated/floor/tiled/white, +/area/space) +"Um" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/door/window/eastright{ + req_one_access = list(5) + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"Uy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"UM" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/structure/table/standard, +/obj/item/weapon/reagent_containers/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner"; + pixel_x = 2; + pixel_y = 2 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"UW" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 4 + }, +/obj/machinery/optable, +/obj/machinery/oxygen_pump/anesthetic{ + pixel_x = 32 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"Vi" = ( +/turf/simulated/floor/tiled/white, +/area/space) +"VK" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 6 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/table/standard, +/obj/item/device/healthanalyzer, +/turf/simulated/floor/tiled/white, +/area/space) +"Wk" = ( +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/white/border, +/turf/simulated/floor/tiled/white, +/area/space) +"WE" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/window/basic{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"WU" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 4 + }, +/obj/item/weapon/storage/firstaid/surgery, +/obj/structure/table/standard, +/turf/simulated/floor/tiled/white, +/area/space) +"XJ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"YM" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 10 + }, +/obj/machinery/camera/network/medbay{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + dir = 2; + pixel_y = -24 + }, +/obj/machinery/iv_drip, +/turf/simulated/floor/tiled/white, +/area/space) +"YU" = ( +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/white/border, +/obj/machinery/button/windowtint{ + id = "surgeryobs2"; + pixel_y = -26 + }, +/obj/structure/table/standard, +/turf/simulated/floor/tiled/white, +/area/space) +"Zm" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 0; + pixel_y = 26 + }, +/obj/structure/table/standard, +/turf/simulated/floor/tiled/white, +/area/space) +"Zq" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/space) +"Zw" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 5 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/closet/secure_closet/medical2, +/turf/simulated/floor/tiled/white, +/area/space) (1,1,1) = {" aa @@ -30440,12 +30943,12 @@ ua Bv Cp CS -Cp +RB Er EW Fz Ga -Gt +NC Ga Hr EW @@ -30560,14 +31063,14 @@ zl Ab ua Bw -Cp +Uc CT -Cp +RV Es EW FA Ga -Gu +Gt Ga Hs EW @@ -30684,7 +31187,7 @@ ua Bx Cq CU -Cq +Nw Et EW FB @@ -35793,17 +36296,17 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +NR +LL +XJ +Qx +YM +MJ +TJ +LG +XJ +Mo +SL aa aa aa @@ -35915,17 +36418,17 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +NY +WE +Um +Ph +LS +MJ +NY +WE +Um +Ph +LS aa aa aa @@ -36037,17 +36540,17 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Zm +Vi +Uy +Vi +YU +MJ +Zm +Vi +Uy +Vi +YU aa aa aa @@ -36159,17 +36662,17 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +UM +NK +KV +Zq +Wk +MJ +Pr +NK +KV +Zq +Oy aa aa aa @@ -36281,17 +36784,17 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +No +WU +UW +Ue +Uh +MJ +Zw +Ue +UW +Ow +VK aa aa aa From 1cddfa7ebcaca13222b3a70e7d0c270b963a1fa5 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Sun, 18 Feb 2018 20:12:55 -0500 Subject: [PATCH 5/6] Fix alienship turfs --- maps/tether/submaps/alienship/alienship.dmm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/maps/tether/submaps/alienship/alienship.dmm b/maps/tether/submaps/alienship/alienship.dmm index 50d0e34c306..6ee2a8af375 100644 --- a/maps/tether/submaps/alienship/alienship.dmm +++ b/maps/tether/submaps/alienship/alienship.dmm @@ -5639,12 +5639,12 @@ af af ae ac -ae -ae +ab +ab ac af ac -ae +ab ab ac ae @@ -10031,12 +10031,12 @@ af af ae ac -ae -ae +ab +ab ac af ac -ae +ab ab ac ae From c29202acdc13dd9ec1b2d468ca2b5bb7c7766ec5 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Sun, 18 Feb 2018 20:25:08 -0500 Subject: [PATCH 6/6] Remove misplaced turfs --- maps/tether/tether-07-station3.dmm | 551 +++-------------------------- 1 file changed, 55 insertions(+), 496 deletions(-) diff --git a/maps/tether/tether-07-station3.dmm b/maps/tether/tether-07-station3.dmm index 084369b41e8..a4d691cf237 100644 --- a/maps/tether/tether-07-station3.dmm +++ b/maps/tether/tether-07-station3.dmm @@ -22811,97 +22811,6 @@ /obj/effect/landmark/map_data/virgo3b, /turf/space, /area/space) -"KV" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/turf/simulated/floor/tiled/white, -/area/space) -"LG" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 8 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - dir = 10 - }, -/obj/effect/floor_decal/corner/white/bordercorner2{ - dir = 10 - }, -/obj/structure/sink{ - dir = 8; - icon_state = "sink"; - pixel_x = -12; - pixel_y = 8 - }, -/turf/simulated/floor/tiled/white, -/area/space) -"LL" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 8 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - dir = 10 - }, -/obj/effect/floor_decal/corner/white/bordercorner2{ - dir = 10 - }, -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/space) -"LS" = ( -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/white/border, -/obj/structure/window/basic{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/space) -"Mo" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 8 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - dir = 8 - }, -/obj/effect/floor_decal/corner/white/bordercorner2{ - dir = 8 - }, -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/space) -"MJ" = ( -/turf/simulated/wall, -/area/space) -"No" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 5 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 5 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/table/standard, -/obj/item/device/healthanalyzer, -/turf/simulated/floor/tiled/white, -/area/space) "Nw" = ( /obj/structure/table/standard, /obj/item/device/healthanalyzer, @@ -22936,109 +22845,6 @@ }, /turf/simulated/floor/tiled/white, /area/medical/surgery2) -"NK" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/turf/simulated/floor/tiled/white, -/area/space) -"NR" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 9 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 9 - }, -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/space) -"NY" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 1 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 1 - }, -/obj/structure/cable/green{ - d2 = 2; - icon_state = "0-2" - }, -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 28 - }, -/obj/structure/window/basic{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/space) -"Ow" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 4 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 4 - }, -/obj/structure/table/standard, -/obj/item/weapon/storage/firstaid/surgery, -/turf/simulated/floor/tiled/white, -/area/space) -"Oy" = ( -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/white/border, -/obj/structure/table/standard, -/obj/item/weapon/reagent_containers/spray/cleaner{ - desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; - name = "Surgery Cleaner"; - pixel_x = 2; - pixel_y = 2 - }, -/turf/simulated/floor/tiled/white, -/area/space) -"Ph" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/structure/window/basic{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/space) -"Pr" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 1 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 1 - }, -/obj/machinery/alarm{ - pixel_y = 22 - }, -/turf/simulated/floor/tiled/white, -/area/space) -"Qx" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 8 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - dir = 8 - }, -/obj/effect/floor_decal/corner/white/bordercorner2{ - dir = 8 - }, -/obj/structure/sink{ - dir = 8; - icon_state = "sink"; - pixel_x = -12; - pixel_y = 8 - }, -/turf/simulated/floor/tiled/white, -/area/space) "RB" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 10 @@ -23054,257 +22860,10 @@ }, /turf/simulated/floor/tiled/white, /area/medical/surgery) -"SL" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 10 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 10 - }, -/obj/machinery/camera/network/medbay{ - dir = 1 - }, -/obj/item/device/radio/intercom{ - dir = 2; - pixel_y = -24 - }, -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/space) -"TJ" = ( -/obj/machinery/iv_drip, -/obj/effect/floor_decal/borderfloorwhite{ - dir = 9 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 9 - }, -/turf/simulated/floor/tiled/white, -/area/space) "Uc" = ( /obj/effect/floor_decal/industrial/loading, /turf/simulated/floor/tiled/white, /area/medical/surgery) -"Ue" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 4 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 4 - }, -/obj/machinery/computer/operating{ - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/space) -"Uh" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 6 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 6 - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -24 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/closet/secure_closet/medical2, -/turf/simulated/floor/tiled/white, -/area/space) -"Um" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/machinery/door/window/eastright{ - req_one_access = list(5) - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/space) -"Uy" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/space) -"UM" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 1 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 1 - }, -/obj/machinery/alarm{ - pixel_y = 22 - }, -/obj/structure/table/standard, -/obj/item/weapon/reagent_containers/spray/cleaner{ - desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; - name = "Surgery Cleaner"; - pixel_x = 2; - pixel_y = 2 - }, -/turf/simulated/floor/tiled/white, -/area/space) -"UW" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 4 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 4 - }, -/obj/machinery/optable, -/obj/machinery/oxygen_pump/anesthetic{ - pixel_x = 32 - }, -/turf/simulated/floor/tiled/white, -/area/space) -"Vi" = ( -/turf/simulated/floor/tiled/white, -/area/space) -"VK" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 6 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 6 - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -24 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/table/standard, -/obj/item/device/healthanalyzer, -/turf/simulated/floor/tiled/white, -/area/space) -"Wk" = ( -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/white/border, -/turf/simulated/floor/tiled/white, -/area/space) -"WE" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/structure/window/basic{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/space) -"WU" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 4 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 4 - }, -/obj/item/weapon/storage/firstaid/surgery, -/obj/structure/table/standard, -/turf/simulated/floor/tiled/white, -/area/space) -"XJ" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 6 - }, -/turf/simulated/floor/tiled/white, -/area/space) -"YM" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 10 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 10 - }, -/obj/machinery/camera/network/medbay{ - dir = 1 - }, -/obj/item/device/radio/intercom{ - dir = 2; - pixel_y = -24 - }, -/obj/machinery/iv_drip, -/turf/simulated/floor/tiled/white, -/area/space) -"YU" = ( -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/white/border, -/obj/machinery/button/windowtint{ - id = "surgeryobs2"; - pixel_y = -26 - }, -/obj/structure/table/standard, -/turf/simulated/floor/tiled/white, -/area/space) -"Zm" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 1 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 1 - }, -/obj/machinery/light_switch{ - dir = 2; - name = "light switch "; - pixel_x = 0; - pixel_y = 26 - }, -/obj/structure/table/standard, -/turf/simulated/floor/tiled/white, -/area/space) -"Zq" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/space) -"Zw" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 5 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 5 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/closet/secure_closet/medical2, -/turf/simulated/floor/tiled/white, -/area/space) (1,1,1) = {" aa @@ -36296,17 +35855,17 @@ aa aa aa aa -NR -LL -XJ -Qx -YM -MJ -TJ -LG -XJ -Mo -SL +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -36418,17 +35977,17 @@ aa aa aa aa -NY -WE -Um -Ph -LS -MJ -NY -WE -Um -Ph -LS +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -36540,17 +36099,17 @@ aa aa aa aa -Zm -Vi -Uy -Vi -YU -MJ -Zm -Vi -Uy -Vi -YU +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -36662,17 +36221,17 @@ aa aa aa aa -UM -NK -KV -Zq -Wk -MJ -Pr -NK -KV -Zq -Oy +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -36784,17 +36343,17 @@ aa aa aa aa -No -WU -UW -Ue -Uh -MJ -Zw -Ue -UW -Ow -VK +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa