From c9dc35fd9ae3b163885f0263dc1632074d50cda9 Mon Sep 17 00:00:00 2001 From: Artur Date: Thu, 6 Feb 2020 18:42:23 +0100 Subject: [PATCH] Updates the debug outfit --- code/__HELPERS/unsorted.dm | 7 +- code/datums/components/uplink.dm | 5 +- code/game/objects/items/cards_ids.dm | 12 ++- code/game/objects/items/debug_items.dm | 102 +++++++++++++++++++ code/game/objects/items/storage/boxes.dm | 59 +++++++++++ code/modules/clothing/glasses/_glasses.dm | 45 +++++++- code/modules/clothing/masks/gasmask.dm | 6 ++ code/modules/clothing/outfits/standard.dm | 31 ++++-- code/modules/clothing/shoes/magboots.dm | 10 +- code/modules/clothing/spacesuits/hardsuit.dm | 11 +- code/modules/projectiles/guns/magic/wand.dm | 6 ++ code/modules/research/stock_parts.dm | 4 + code/modules/uplink/uplink_devices.dm | 19 ++++ icons/obj/device.dmi | Bin 52431 -> 52967 bytes tgstation.dme | 1 + 15 files changed, 301 insertions(+), 17 deletions(-) create mode 100644 code/game/objects/items/debug_items.dm diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 86dde3d6a6..9cced1fdc7 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1537,4 +1537,9 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) if(190) return "." if(189) - return "-" \ No newline at end of file + return "-" + +/proc/generate_items_inside(list/items_list, where_to) + for(var/each_item in items_list) + for(var/i in 1 to items_list[each_item]) + new each_item(where_to) diff --git a/code/datums/components/uplink.dm b/code/datums/components/uplink.dm index 5057253522..d467f66b6a 100644 --- a/code/datums/components/uplink.dm +++ b/code/datums/components/uplink.dm @@ -25,6 +25,7 @@ GLOBAL_LIST_EMPTY(uplinks) var/unlock_code var/failsafe_code var/datum/ui_state/checkstate + var/debug = FALSE /datum/component/uplink/Initialize(_owner, _lockable = TRUE, _enabled = FALSE, datum/game_mode/_gamemode, starting_tc = 20, datum/ui_state/_checkstate) if(!isitem(parent)) @@ -152,7 +153,7 @@ GLOBAL_LIST_EMPTY(uplinks) if(I.restricted_roles.len) var/is_inaccessible = 1 for(var/R in I.restricted_roles) - if(R == user.mind.assigned_role) + if(R == user.mind.assigned_role || debug) is_inaccessible = 0 if(is_inaccessible) continue @@ -294,4 +295,4 @@ GLOBAL_LIST_EMPTY(uplinks) if(!T) return explosion(T,1,2,3) - qdel(parent) //Alternatively could brick the uplink. \ No newline at end of file + qdel(parent) //Alternatively could brick the uplink. diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 5e5ced2269..c851a23505 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -538,4 +538,14 @@ update_label("John Doe", "Clowny") id_color = "#0000FF" /obj/item/card/id/knight/captain - id_color = "#FFD700" \ No newline at end of file + id_color = "#FFD700" + +/obj/item/card/id/debug + name = "\improper Debug ID" + desc = "A debug ID card. Has ALL the all access, you really shouldn't have this." + icon_state = "ert_janitor" + assignment = "Jannie" + +/obj/item/card/id/debug/Initialize() + access = get_all_accesses()+get_all_centcom_access()+get_all_syndicate_access() + . = ..() diff --git a/code/game/objects/items/debug_items.dm b/code/game/objects/items/debug_items.dm new file mode 100644 index 0000000000..c7aaab6a26 --- /dev/null +++ b/code/game/objects/items/debug_items.dm @@ -0,0 +1,102 @@ +/* This file contains standalone items for debug purposes. */ + +/obj/item/debug/human_spawner + name = "human spawner" + desc = "Spawn a human by aiming at a turf and clicking. Use in hand to change type." + icon = 'icons/obj/guns/magic.dmi' + icon_state = "nothingwand" + item_state = "wand" + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items_righthand.dmi' + w_class = WEIGHT_CLASS_SMALL + var/datum/species/selected_species + var/valid_species = list() + +/obj/item/debug/human_spawner/afterattack(atom/target, mob/user, proximity) + ..() + if(isturf(target)) + var/mob/living/carbon/human/H = new /mob/living/carbon/human(target) + if(selected_species) + H.set_species(selected_species) + +/obj/item/debug/human_spawner/attack_self(mob/user) + ..() + var/choice = input("Select a species", "Human Spawner", null) in GLOB.species_list + selected_species = GLOB.species_list[choice] + +/* Revive this once we purge all the istype checks for tools for tool_behaviour +/obj/item/debug/omnitool + name = "omnitool" + desc = "The original hypertool, born before them all. Use it in hand to unleash it's true power." + icon = 'icons/obj/device.dmi' + icon_state = "hypertool" + item_state = "hypertool" + toolspeed = 0.1 + tool_behaviour = null + +/obj/item/debug/omnitool/examine() + . = ..() + . += " The mode is: [tool_behaviour]" + +/obj/item/debug/omnitool/proc/check_menu(mob/user) + if(!istype(user)) + return FALSE + if(user.incapacitated() || !user.Adjacent(src)) + return FALSE + return TRUE + +/obj/item/debug/omnitool/attack_self(mob/user) + if(!user) + return + var/list/tool_list = list( + "Crowbar" = image(icon = 'icons/obj/tools.dmi', icon_state = "crowbar"), + "Multitool" = image(icon = 'icons/obj/device.dmi', icon_state = "multitool"), + "Screwdriver" = image(icon = 'icons/obj/tools.dmi', icon_state = "screwdriver_map"), + "Wirecutters" = image(icon = 'icons/obj/tools.dmi', icon_state = "cutters_map"), + "Wrench" = image(icon = 'icons/obj/tools.dmi', icon_state = "wrench"), + "Welding Tool" = image(icon = 'icons/obj/tools.dmi', icon_state = "miniwelder"), + "Analyzer" = image(icon = 'icons/obj/device.dmi', icon_state = "analyzer"), + "Mining Tool" = image(icon = 'icons/obj/mining.dmi', icon_state = "minipick"), + "Shovel" = image(icon = 'icons/obj/mining.dmi', icon_state = "spade"), + "Retractor" = image(icon = 'icons/obj/surgery.dmi', icon_state = "retractor"), + "Hemostat" = image(icon = 'icons/obj/surgery.dmi', icon_state = "hemostat"), + "Cautery" = image(icon = 'icons/obj/surgery.dmi', icon_state = "cautery"), + "Drill" = image(icon = 'icons/obj/surgery.dmi', icon_state = "drill"), + "Scalpel" = image(icon = 'icons/obj/surgery.dmi', icon_state = "scalpel"), + "Saw" = image(icon = 'icons/obj/surgery.dmi', icon_state = "saw") + ) + var/tool_result = show_radial_menu(user, src, tool_list, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE) + if(!check_menu(user)) + return + switch(tool_result) + if("Crowbar") + tool_behaviour = TOOL_CROWBAR + if("Multitool") + tool_behaviour = TOOL_MULTITOOL + if("Screwdriver") + tool_behaviour = TOOL_SCREWDRIVER + if("Wirecutters") + tool_behaviour = TOOL_WIRECUTTER + if("Wrench") + tool_behaviour = TOOL_WRENCH + if("Welding Tool") + tool_behaviour = TOOL_WELDER + if("Analyzer") + tool_behaviour = TOOL_ANALYZER + if("Mining Tool") + tool_behaviour = TOOL_MINING + if("Shovel") + tool_behaviour = TOOL_SHOVEL + if("Retractor") + tool_behaviour = TOOL_RETRACTOR + if("Hemostat") + tool_behaviour = TOOL_HEMOSTAT + if("Cautery") + tool_behaviour = TOOL_CAUTERY + if("Drill") + tool_behaviour = TOOL_DRILL + if("Scalpel") + tool_behaviour = TOOL_SCALPEL + if("Saw") + tool_behaviour = TOOL_SAW +*/ diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index daddc403b2..c4e6c57318 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -1288,3 +1288,62 @@ /obj/item/storage/box/marshmallow/PopulateContents() for (var/i in 1 to 5) new /obj/item/reagent_containers/food/snacks/marshmallow(src) + +/obj/item/storage/box/material/PopulateContents() //less uranium because radioactive + var/static/items_inside = list( + /obj/item/stack/sheet/metal/fifty=1,\ + /obj/item/stack/sheet/glass/fifty=1,\ + /obj/item/stack/sheet/rglass=50,\ + /obj/item/stack/sheet/plasmaglass=50,\ + /obj/item/stack/sheet/titaniumglass=50,\ + /obj/item/stack/sheet/plastitaniumglass=50,\ + /obj/item/stack/sheet/plasteel=50,\ + /obj/item/stack/sheet/mineral/plastitanium=50,\ + /obj/item/stack/sheet/mineral/titanium=50,\ + /obj/item/stack/sheet/mineral/gold=50,\ + /obj/item/stack/sheet/mineral/silver=50,\ + /obj/item/stack/sheet/mineral/plasma=50,\ + /obj/item/stack/sheet/mineral/uranium=50,\ + /obj/item/stack/sheet/mineral/diamond=50,\ + /obj/item/stack/sheet/bluespace_crystal=50,\ + /obj/item/stack/sheet/mineral/bananium=50,\ + /obj/item/stack/sheet/mineral/wood=50,\ + /obj/item/stack/sheet/plastic/fifty=1,\ + /obj/item/stack/sheet/runed_metal/fifty=1 + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/box/debugtools + name = "box of debug tools" + icon_state = "syndiebox" + +/obj/item/storage/box/debugtools/PopulateContents() + var/static/items_inside = list( + /obj/item/flashlight/emp/debug=1,\ + /obj/item/pda=1,\ + /obj/item/modular_computer/tablet/preset/advanced=1,\ + /obj/item/geiger_counter=1,\ + /obj/item/construction/rcd/combat/admin=1,\ + /obj/item/pipe_dispenser=1,\ + /obj/item/card/emag=1,\ + /obj/item/healthanalyzer/advanced=1,\ + /obj/item/disk/tech_disk/debug=1,\ + /obj/item/uplink/debug=1,\ + /obj/item/uplink/nuclear/debug=1,\ + /obj/item/storage/box/beakers/bluespace=1,\ + /obj/item/storage/box/beakers/variety=1,\ + /obj/item/storage/box/material=1,\ + /obj/item/storage/belt/medical/surgery_belt_adv + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/box/beakers/variety + name = "beaker variety box" + +/obj/item/storage/box/beakers/variety/PopulateContents() + new /obj/item/reagent_containers/glass/beaker(src) + new /obj/item/reagent_containers/glass/beaker/large(src) + new /obj/item/reagent_containers/glass/beaker/plastic(src) + new /obj/item/reagent_containers/glass/beaker/meta(src) + new /obj/item/reagent_containers/glass/beaker/noreact(src) + new /obj/item/reagent_containers/glass/beaker/bluespace(src) diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index 7df10b56f7..b60856001e 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -488,4 +488,47 @@ if(client && client.prefs.uses_glasses_colour && glasses_equipped) add_client_colour(G.glass_colour_type) else - remove_client_colour(G.glass_colour_type) \ No newline at end of file + remove_client_colour(G.glass_colour_type) + +/obj/item/clothing/glasses/debug + name = "debug glasses" + desc = "Medical, security and diagnostic hud. Alt click to toggle xray." + icon_state = "nvgmeson" + item_state = "nvgmeson" + flags_cover = GLASSESCOVERSEYES + darkness_view = 8 + flash_protect = 2 + lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE + glass_colour_type = FALSE + clothing_flags = SCAN_REAGENTS + vision_flags = SEE_TURFS + var/list/hudlist = list(DATA_HUD_MEDICAL_ADVANCED, DATA_HUD_DIAGNOSTIC_ADVANCED, DATA_HUD_SECURITY_ADVANCED) + var/xray = FALSE + +/obj/item/clothing/glasses/debug/equipped(mob/user, slot) + . = ..() + if(slot != ITEM_SLOT_EYES) + return + if(ishuman(user)) + for(var/hud in hudlist) + var/datum/atom_hud/H = GLOB.huds[hud] + H.add_hud_to(user) + +/obj/item/clothing/glasses/debug/dropped(mob/user) + . = ..() + if(ishuman(user)) + for(var/hud in hudlist) + var/datum/atom_hud/H = GLOB.huds[hud] + H.remove_hud_from(user) + +/obj/item/clothing/glasses/debug/AltClick(mob/user) + . = ..() + if(ishuman(user)) + if(xray) + vision_flags -= SEE_MOBS|SEE_OBJS + else + vision_flags += SEE_MOBS|SEE_OBJS + xray = !xray + var/mob/living/carbon/human/H = user + H.update_sight() + diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 1e8f26e7fe..e6c68f2662 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -39,6 +39,12 @@ /obj/item/clothing/mask/gas/welding/attack_self(mob/user) weldingvisortoggle(user) +/obj/item/clothing/mask/gas/welding/up + +/obj/item/clothing/mask/gas/welding/up/Initialize() + ..() + visor_toggling() + // ******************************************************************** diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 4c8f9bdab2..7c1121d137 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -427,14 +427,27 @@ /datum/outfit/debug //Debug objs plus hardsuit name = "Debug outfit" uniform = /obj/item/clothing/under/patriotsuit - suit = /obj/item/clothing/suit/space/hardsuit/syndi/elite - shoes = /obj/item/clothing/shoes/magboots/advance - suit_store = /obj/item/tank/internals/oxygen - mask = /obj/item/clothing/mask/gas/welding - belt = /obj/item/storage/belt/utility/chief/full - gloves = /obj/item/clothing/gloves/combat - id = /obj/item/card/id/ert - glasses = /obj/item/clothing/glasses/meson/night + suit = /obj/item/clothing/suit/space/hardsuit/syndi/elite/debug + glasses = /obj/item/clothing/glasses/debug ears = /obj/item/radio/headset/headset_cent/commander + mask = /obj/item/clothing/mask/gas/welding/up + gloves = /obj/item/clothing/gloves/combat + belt = /obj/item/storage/belt/utility/chief/full + l_pocket = /obj/item/gun/magic/wand/resurrection/debug + r_pocket = /obj/item/gun/magic/wand/death/debug + shoes = /obj/item/clothing/shoes/magboots/advance/debug + id = /obj/item/card/id/debug + suit_store = /obj/item/tank/internals/oxygen back = /obj/item/storage/backpack/holding - backpack_contents = list(/obj/item/card/emag=1, /obj/item/flashlight/emp/debug=1, /obj/item/construction/rcd/combat=1, /obj/item/gun/magic/wand/resurrection/debug=1, /obj/item/melee/transforming/energy/axe=1) + box = /obj/item/storage/box/debugtools + internals_slot = ITEM_SLOT_SUITSTORE + backpack_contents = list( + /obj/item/melee/transforming/energy/axe=1,\ + /obj/item/storage/part_replacer/bluespace/tier4=1,\ + /obj/item/debug/human_spawner=1,\ + ) + +/datum/outfit/debug/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + var/obj/item/card/id/W = H.wear_id + W.registered_name = H.real_name + W.update_label() diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index 8864add0d8..1acb7628a3 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -30,8 +30,9 @@ magpulse = !magpulse icon_state = "[magboot_state][magpulse]" to_chat(user, "You [magpulse ? "enable" : "disable"] the mag-pulse traction system.") - user.update_inv_shoes() //so our mob-overlays update - user.update_gravity(user.has_gravity()) + if(user) + user.update_inv_shoes() //so our mob-overlays update + user.update_gravity(user.has_gravity()) for(var/X in actions) var/datum/action/A = X A.UpdateButtonIcon() @@ -52,6 +53,11 @@ slowdown_active = SHOES_SLOWDOWN resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF +/obj/item/clothing/shoes/magboots/advance/debug + +/obj/item/clothing/shoes/magboots/advance/debug/Initialize() + attack_self(src) + /obj/item/clothing/shoes/magboots/syndie desc = "Reverse-engineered magnetic boots that have a heavy magnetic pull. Property of Gorlex Marauders." name = "blood-red magboots" diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 703fe26287..fab41c9876 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -269,7 +269,7 @@ item_state = "syndie_helm" item_color = "syndi" armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 15, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 90) - on = TRUE + on = FALSE var/obj/item/clothing/suit/space/hardsuit/syndi/linkedsuit = null actions_types = list(/datum/action/item_action/toggle_helmet_mode) visor_flags_inv = HIDEMASK|HIDEEYES|HIDEFACE|HIDEFACIALHAIR @@ -367,6 +367,12 @@ on = FALSE resistance_flags = FIRE_PROOF | ACID_PROOF +/obj/item/clothing/head/helmet/space/hardsuit/syndi/elite/debug + +/obj/item/clothing/head/helmet/space/hardsuit/syndi/elite/debug/Initialize() + . = ..() + soundloop.volume = 0 + /obj/item/clothing/suit/space/hardsuit/syndi/elite name = "elite syndicate hardsuit" desc = "An elite version of the syndicate hardsuit, with improved armour and fireproofing. It is in travel mode." @@ -380,6 +386,9 @@ resistance_flags = FIRE_PROOF | ACID_PROOF mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC +/obj/item/clothing/suit/space/hardsuit/syndi/elite/debug + helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite/debug + slowdown = 0 //The Owl Hardsuit /obj/item/clothing/head/helmet/space/hardsuit/syndi/owl diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index 52236ab695..57bbd13cf7 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -73,6 +73,12 @@ user.adjustOxyLoss(500) charges-- +/obj/item/gun/magic/wand/death/debug + desc = "In some obscure circles, this is known as the 'cloning tester's friend'." + max_charges = 500 + variable_charges = FALSE + can_charge = TRUE + recharge_rate = 1 ///////////////////////////////////// //WAND OF HEALING diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm index e29cf28f34..5037f23cd1 100644 --- a/code/modules/research/stock_parts.dm +++ b/code/modules/research/stock_parts.dm @@ -60,6 +60,7 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi new /obj/item/stock_parts/manipulator(src) new /obj/item/stock_parts/micro_laser(src) new /obj/item/stock_parts/matter_bin(src) + new /obj/item/stock_parts/cell/high(src) /obj/item/storage/part_replacer/bluespace/tier2 @@ -70,6 +71,7 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi new /obj/item/stock_parts/manipulator/nano(src) new /obj/item/stock_parts/micro_laser/high(src) new /obj/item/stock_parts/matter_bin/adv(src) + new /obj/item/stock_parts/cell/super(src) /obj/item/storage/part_replacer/bluespace/tier3 @@ -80,6 +82,7 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi new /obj/item/stock_parts/manipulator/pico(src) new /obj/item/stock_parts/micro_laser/ultra(src) new /obj/item/stock_parts/matter_bin/super(src) + new /obj/item/stock_parts/cell/hyper(src) /obj/item/storage/part_replacer/bluespace/tier4 @@ -90,6 +93,7 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi new /obj/item/stock_parts/manipulator/femto(src) new /obj/item/stock_parts/micro_laser/quadultra(src) new /obj/item/stock_parts/matter_bin/bluespace(src) + new /obj/item/stock_parts/cell/bluespace(src) /obj/item/storage/part_replacer/cargo //used in a cargo crate diff --git a/code/modules/uplink/uplink_devices.dm b/code/modules/uplink/uplink_devices.dm index 2bcfb40c45..9c09a7334a 100644 --- a/code/modules/uplink/uplink_devices.dm +++ b/code/modules/uplink/uplink_devices.dm @@ -57,3 +57,22 @@ /obj/item/pen/uplink/Initialize(mapload, owner, tc_amount = 20) . = ..() AddComponent(/datum/component/uplink, owner, TRUE, FALSE, null, tc_amount) + +/obj/item/uplink/debug + name = "debug uplink" + +/obj/item/uplink/debug/Initialize(mapload, owner, tc_amount = 9000) + . = ..() + var/datum/component/uplink/hidden_uplink = GetComponent(/datum/component/uplink) + hidden_uplink.name = "debug uplink" + hidden_uplink.debug = TRUE + +/obj/item/uplink/nuclear/debug + name = "debug nuclear uplink" + +/obj/item/uplink/nuclear/debug/Initialize(mapload, owner, tc_amount = 9000) + . = ..() + var/datum/component/uplink/hidden_uplink = GetComponent(/datum/component/uplink) + hidden_uplink.set_gamemode(/datum/game_mode/nuclear) + hidden_uplink.name = "debug nuclear uplink" + hidden_uplink.debug = TRUE diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 8c2abcd3b9ce91c9e3cb922bac3743b1aaf1ec94..28fc29cd714eaa59bac7cde307e201f8698b0639 100644 GIT binary patch delta 11293 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 delta 10753 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 diff --git a/tgstation.dme b/tgstation.dme index 8c578e70f0..1da937ac60 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -865,6 +865,7 @@ #include "code\game\objects\items\cosmetics.dm" #include "code\game\objects\items\courtroom.dm" #include "code\game\objects\items\crayons.dm" +#include "code\game\objects\items\debug_items.dm" #include "code\game\objects\items\defib.dm" #include "code\game\objects\items\dehy_carp.dm" #include "code\game\objects\items\dice.dm"