/obj/item/storage/toolbox name = "toolbox" desc = "Danger. Very robust." icon_state = "toolbox_default" inhand_icon_state = "toolbox_default" lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi' flags_1 = CONDUCT_1 force = 12 throwforce = 12 throw_speed = 2 throw_range = 7 w_class = WEIGHT_CLASS_BULKY custom_materials = list(/datum/material/iron = 500) attack_verb_continuous = list("robusts") attack_verb_simple = list("robust") hitsound = 'sound/weapons/smash.ogg' drop_sound = 'sound/items/handling/toolbox_drop.ogg' pickup_sound = 'sound/items/handling/toolbox_pickup.ogg' material_flags = MATERIAL_EFFECTS | MATERIAL_COLOR var/latches = "single_latch" var/has_latches = TRUE wound_bonus = 5 /obj/item/storage/toolbox/Initialize(mapload) . = ..() if(has_latches) if(prob(10)) latches = "double_latch" if(prob(1)) latches = "triple_latch" update_appearance() /obj/item/storage/toolbox/update_overlays() . = ..() if(has_latches) . += latches /obj/item/storage/toolbox/suicide_act(mob/user) user.visible_message(span_suicide("[user] robusts [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return (BRUTELOSS) /obj/item/storage/toolbox/emergency name = "emergency toolbox" icon_state = "red" inhand_icon_state = "toolbox_red" material_flags = NONE /obj/item/storage/toolbox/emergency/PopulateContents() new /obj/item/crowbar/red(src) new /obj/item/weldingtool/mini(src) new /obj/item/extinguisher/mini(src) switch(rand(1,3)) if(1) new /obj/item/flashlight(src) if(2) new /obj/item/flashlight/glowstick(src) if(3) new /obj/item/flashlight/flare(src) new /obj/item/radio/off(src) /obj/item/storage/toolbox/emergency/old name = "rusty red toolbox" icon_state = "toolbox_red_old" has_latches = FALSE material_flags = NONE /obj/item/storage/toolbox/mechanical name = "mechanical toolbox" icon_state = "blue" inhand_icon_state = "toolbox_blue" material_flags = NONE /// If FALSE, someone with a ensouled soulstone can sacrifice a spirit to change the sprite of this toolbox. var/has_soul = FALSE /obj/item/storage/toolbox/mechanical/PopulateContents() new /obj/item/screwdriver(src) new /obj/item/wrench(src) new /obj/item/weldingtool(src) new /obj/item/crowbar(src) new /obj/item/analyzer(src) new /obj/item/wirecutters(src) /obj/item/storage/toolbox/mechanical/old name = "rusty blue toolbox" icon_state = "toolbox_blue_old" has_latches = FALSE has_soul = TRUE /obj/item/storage/toolbox/mechanical/old/heirloom name = "toolbox" //this will be named "X family toolbox" desc = "It's seen better days." force = 5 w_class = WEIGHT_CLASS_NORMAL /obj/item/storage/toolbox/mechanical/old/heirloom/PopulateContents() return /obj/item/storage/toolbox/mechanical/old/clean // the assistant traitor toolbox, damage scales with TC inside name = "toolbox" desc = "An old, blue toolbox, it looks robust." icon_state = "oldtoolboxclean" inhand_icon_state = "toolbox_blue" has_latches = FALSE force = 19 throwforce = 22 /obj/item/storage/toolbox/mechanical/old/clean/proc/calc_damage() var/power = 0 for (var/obj/item/stack/telecrystal/TC in get_all_contents()) power += TC.amount force = 19 + power throwforce = 22 + power /obj/item/storage/toolbox/mechanical/old/clean/attack(mob/target, mob/living/user) calc_damage() ..() /obj/item/storage/toolbox/mechanical/old/clean/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) calc_damage() ..() /obj/item/storage/toolbox/mechanical/old/clean/PopulateContents() new /obj/item/screwdriver(src) new /obj/item/wrench(src) new /obj/item/weldingtool(src) new /obj/item/crowbar(src) new /obj/item/wirecutters(src) new /obj/item/multitool(src) new /obj/item/clothing/gloves/color/yellow(src) /obj/item/storage/toolbox/electrical name = "electrical toolbox" icon_state = "yellow" inhand_icon_state = "toolbox_yellow" material_flags = NONE /obj/item/storage/toolbox/electrical/PopulateContents() var/pickedcolor = pick("red","yellow","green","blue","pink","orange","cyan","white") new /obj/item/screwdriver(src) new /obj/item/wirecutters(src) new /obj/item/t_scanner(src) new /obj/item/crowbar(src) new /obj/item/stack/cable_coil(src,MAXCOIL,pickedcolor) new /obj/item/stack/cable_coil(src,MAXCOIL,pickedcolor) if(prob(5)) new /obj/item/clothing/gloves/color/yellow(src) else new /obj/item/stack/cable_coil(src,MAXCOIL,pickedcolor) /obj/item/storage/toolbox/syndicate name = "tactical toolbox" //SKYRAT EDIT icon_state = "syndicate" inhand_icon_state = "toolbox_syndi" force = 15 throwforce = 18 material_flags = NONE special_desc_requirement = EXAMINE_CHECK_SYNDICATE // Skyrat edit special_desc = "A toolbox manufactured by the Syndicate containing extra tactical tools. Made of more robust materials than the average toolbox." // Skyrat edit /obj/item/storage/toolbox/syndicate/ComponentInitialize() . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.silent = TRUE /obj/item/storage/toolbox/syndicate/PopulateContents() new /obj/item/screwdriver/nuke(src) new /obj/item/wrench(src) new /obj/item/weldingtool/largetank(src) new /obj/item/crowbar/red(src) new /obj/item/wirecutters(src, "red") new /obj/item/multitool(src) new /obj/item/clothing/gloves/combat(src) /obj/item/storage/toolbox/drone name = "mechanical toolbox" icon_state = "blue" inhand_icon_state = "toolbox_blue" material_flags = NONE /obj/item/storage/toolbox/drone/PopulateContents() var/pickedcolor = pick("red","yellow","green","blue","pink","orange","cyan","white") new /obj/item/screwdriver(src) new /obj/item/wrench(src) new /obj/item/weldingtool(src) new /obj/item/crowbar(src) new /obj/item/stack/cable_coil(src,MAXCOIL,pickedcolor) new /obj/item/wirecutters(src) new /obj/item/multitool(src) /obj/item/storage/toolbox/artistic name = "artistic toolbox" desc = "A toolbox painted bright green. Why anyone would store art supplies in a toolbox is beyond you, but it has plenty of extra space." icon_state = "green" inhand_icon_state = "artistic_toolbox" w_class = WEIGHT_CLASS_GIGANTIC //Holds more than a regular toolbox! material_flags = NONE /obj/item/storage/toolbox/artistic/ComponentInitialize() . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 20 STR.max_items = 10 /obj/item/storage/toolbox/artistic/PopulateContents() new /obj/item/storage/crayons(src) new /obj/item/crowbar(src) new /obj/item/stack/pipe_cleaner_coil/red(src) new /obj/item/stack/pipe_cleaner_coil/yellow(src) new /obj/item/stack/pipe_cleaner_coil/blue(src) new /obj/item/stack/pipe_cleaner_coil/green(src) new /obj/item/stack/pipe_cleaner_coil/pink(src) new /obj/item/stack/pipe_cleaner_coil/orange(src) new /obj/item/stack/pipe_cleaner_coil/cyan(src) new /obj/item/stack/pipe_cleaner_coil/white(src) /obj/item/storage/toolbox/ammo name = "ammo box" desc = "It contains a few clips." icon_state = "ammobox" inhand_icon_state = "ammobox" drop_sound = 'sound/items/handling/ammobox_drop.ogg' pickup_sound = 'sound/items/handling/ammobox_pickup.ogg' /obj/item/storage/toolbox/ammo/PopulateContents() new /obj/item/ammo_box/a762(src) new /obj/item/ammo_box/a762(src) new /obj/item/ammo_box/a762(src) new /obj/item/ammo_box/a762(src) new /obj/item/ammo_box/a762(src) new /obj/item/ammo_box/a762(src) new /obj/item/ammo_box/a762(src) /obj/item/storage/toolbox/maint_kit name = "gun maintenance kit" desc = "It contains some gun maintenance supplies" icon_state = "maint_kit" inhand_icon_state = "ammobox" drop_sound = 'sound/items/handling/ammobox_drop.ogg' pickup_sound = 'sound/items/handling/ammobox_pickup.ogg' /obj/item/storage/toolbox/maint_kit/PopulateContents() new /obj/item/gun_maintenance_supplies(src) new /obj/item/gun_maintenance_supplies(src) new /obj/item/gun_maintenance_supplies(src) /obj/item/storage/toolbox/infiltrator name = "insidious case" desc = "Bearing the emblem of the Syndicate, this case contains a full infiltrator stealth suit, and has enough room to fit weaponry if necessary." icon_state = "infiltrator_case" inhand_icon_state = "infiltrator_case" force = 15 throwforce = 18 w_class = WEIGHT_CLASS_NORMAL has_latches = FALSE /obj/item/storage/toolbox/infiltrator/ComponentInitialize() . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 10 STR.max_w_class = WEIGHT_CLASS_NORMAL STR.set_holdable(list( /obj/item/clothing/head/helmet/infiltrator, /obj/item/clothing/suit/armor/vest/infiltrator, /obj/item/clothing/under/syndicate/bloodred, /obj/item/clothing/gloves/color/infiltrator, /obj/item/clothing/mask/infiltrator, /obj/item/clothing/shoes/combat/sneakboots, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/ammo_box )) /obj/item/storage/toolbox/infiltrator/PopulateContents() new /obj/item/clothing/head/helmet/infiltrator(src) new /obj/item/clothing/suit/armor/vest/infiltrator(src) new /obj/item/clothing/under/syndicate/bloodred(src) new /obj/item/clothing/gloves/color/infiltrator(src) new /obj/item/clothing/mask/infiltrator(src) new /obj/item/clothing/shoes/combat/sneakboots(src) //floorbot assembly /obj/item/storage/toolbox/attackby(obj/item/stack/tile/iron/T, mob/user, params) var/list/allowed_toolbox = list(/obj/item/storage/toolbox/emergency, //which toolboxes can be made into floorbots /obj/item/storage/toolbox/electrical, /obj/item/storage/toolbox/mechanical, /obj/item/storage/toolbox/artistic, /obj/item/storage/toolbox/syndicate) if(!istype(T, /obj/item/stack/tile/iron)) ..() return if(!is_type_in_list(src, allowed_toolbox) && (type != /obj/item/storage/toolbox)) return if(contents.len >= 1) to_chat(user, span_warning("They won't fit in, as there is already stuff inside!")) return if(T.use(10)) var/obj/item/bot_assembly/floorbot/B = new B.toolbox = type switch(B.toolbox) if(/obj/item/storage/toolbox) B.toolbox_color = "r" if(/obj/item/storage/toolbox/emergency) B.toolbox_color = "r" if(/obj/item/storage/toolbox/electrical) B.toolbox_color = "y" if(/obj/item/storage/toolbox/artistic) B.toolbox_color = "g" if(/obj/item/storage/toolbox/syndicate) B.toolbox_color = "s" user.put_in_hands(B) B.update_appearance() to_chat(user, span_notice("You add the tiles into the empty [name]. They protrude from the top.")) qdel(src) else to_chat(user, span_warning("You need 10 floor tiles to start building a floorbot!")) return /obj/item/storage/toolbox/haunted name = "old toolbox" custom_materials = list(/datum/material/hauntium = 500)