/*****************Pickaxes & Drills & Shovels****************/ /obj/item/pickaxe name = "pickaxe" icon = 'icons/obj/mining.dmi' icon_state = "pickaxe" inhand_icon_state = "pickaxe" flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK force = 15 throwforce = 10 demolition_mod = 1.15 lefthand_file = 'icons/mob/inhands/equipment/mining_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi' w_class = WEIGHT_CLASS_BULKY custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT) tool_behaviour = TOOL_MINING toolspeed = 1 usesound = list('sound/effects/picaxe1.ogg', 'sound/effects/picaxe2.ogg', 'sound/effects/picaxe3.ogg') attack_verb_continuous = list("hits", "pierces", "slices", "attacks") attack_verb_simple = list("hit", "pierce", "slice", "attack") /obj/item/pickaxe/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins digging into [user.p_their()] chest! It looks like [user.p_theyre()] trying to commit suicide!")) if(use_tool(user, user, 30, volume=50)) return BRUTELOSS user.visible_message(span_suicide("[user] couldn't do it!")) return SHAME /obj/item/pickaxe/rusted name = "rusty pickaxe" desc = "A pickaxe that's been left to rust." attack_verb_continuous = list("ineffectively hits") attack_verb_simple = list("ineffectively hit") force = 1 throwforce = 1 /obj/item/pickaxe/mini name = "compact pickaxe" desc = "A smaller, compact version of the standard pickaxe." icon_state = "minipick" worn_icon_state = "pickaxe" force = 10 throwforce = 7 slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_NORMAL custom_materials = list(/datum/material/iron=HALF_SHEET_MATERIAL_AMOUNT) /obj/item/pickaxe/silver name = "silver-plated pickaxe" icon_state = "spickaxe" inhand_icon_state = "spickaxe" toolspeed = 0.5 //mines faster than a normal pickaxe, bought from mining vendor desc = "A silver-plated pickaxe that mines slightly faster than standard-issue." force = 17 /obj/item/pickaxe/diamond name = "diamond-tipped pickaxe" icon_state = "dpickaxe" inhand_icon_state = "dpickaxe" toolspeed = 0.3 desc = "A pickaxe with a diamond pick head. Extremely robust at cracking rock walls and digging up dirt." force = 19 /obj/item/pickaxe/drill name = "mining drill" icon_state = "handdrill" inhand_icon_state = "handdrill" slot_flags = ITEM_SLOT_BELT toolspeed = 0.6 //available from roundstart, faster than a pickaxe. usesound = 'sound/weapons/drill.ogg' hitsound = 'sound/weapons/drill.ogg' desc = "An electric mining drill for the especially scrawny." /obj/item/pickaxe/drill/cyborg name = "cyborg mining drill" desc = "An integrated electric mining drill." flags_1 = NONE /obj/item/pickaxe/drill/cyborg/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_NODROP, CYBORG_ITEM_TRAIT) /obj/item/pickaxe/drill/diamonddrill name = "diamond-tipped mining drill" icon_state = "diamonddrill" inhand_icon_state = "diamonddrill" toolspeed = 0.2 desc = "Yours is the drill that will pierce the heavens!" /obj/item/pickaxe/drill/cyborg/diamond //This is the BORG version! name = "diamond-tipped cyborg mining drill" //To inherit the NODROP_1 flag, and easier to change borg specific drill mechanics. icon_state = "diamonddrill" inhand_icon_state = "diamonddrill" toolspeed = 0.2 /obj/item/pickaxe/drill/jackhammer name = "sonic jackhammer" icon_state = "jackhammer" inhand_icon_state = "jackhammer" toolspeed = 0.1 //the epitome of powertools. extremely fast mining usesound = 'sound/weapons/sonic_jackhammer.ogg' hitsound = 'sound/weapons/sonic_jackhammer.ogg' desc = "Cracks rocks with sonic blasts." /obj/item/pickaxe/improvised name = "improvised pickaxe" desc = "A pickaxe made with a knife and crowbar taped together, how does it not break?" icon_state = "ipickaxe" inhand_icon_state = "ipickaxe" worn_icon_state = "pickaxe" force = 10 throwforce = 7 toolspeed = 3 //3 times slower than a normal pickaxe slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_NORMAL custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*6) //This number used to be insane and I'm just going to save your sanity and not tell you what it was. /obj/item/shovel name = "shovel" desc = "A large tool for digging and moving dirt." icon = 'icons/obj/mining.dmi' icon_state = "shovel" inhand_icon_state = "shovel" lefthand_file = 'icons/mob/inhands/equipment/mining_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi' flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BELT force = 8 throwforce = 4 tool_behaviour = TOOL_SHOVEL toolspeed = 1 usesound = 'sound/effects/shovel_dig.ogg' w_class = WEIGHT_CLASS_NORMAL custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.5) attack_verb_continuous = list("bashes", "bludgeons", "thrashes", "whacks") attack_verb_simple = list("bash", "bludgeon", "thrash", "whack") sharpness = SHARP_EDGED /obj/item/shovel/Initialize(mapload) . = ..() AddComponent(/datum/component/butchering, \ speed = 15 SECONDS, \ effectiveness = 40, \ ) //it's sharp, so it works, but barely. /obj/item/shovel/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] begins digging their own grave! It looks like [user.p_theyre()] trying to commit suicide!")) if(use_tool(user, user, 30, volume=50)) return BRUTELOSS user.visible_message(span_suicide("[user] couldn't do it!")) return SHAME /obj/item/shovel/spade name = "spade" desc = "A small tool for digging and moving dirt." icon_state = "spade" inhand_icon_state = "spade" lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' force = 5 throwforce = 7 w_class = WEIGHT_CLASS_SMALL /obj/item/shovel/serrated name = "serrated bone shovel" desc = "A wicked tool that cleaves through dirt just as easily as it does flesh. The design was styled after ancient lavaland tribal designs. \ It seems less capable of harming inorganic creatures. Who knows why." icon_state = "shovel_bone" worn_icon_state = "shovel_serr" lefthand_file = 'icons/mob/inhands/equipment/mining_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi' force = 10 throwforce = 12 w_class = WEIGHT_CLASS_NORMAL tool_behaviour = TOOL_SHOVEL // hey, it's serrated. toolspeed = 0.3 attack_verb_continuous = list("slashes", "impales", "stabs", "slices") attack_verb_simple = list("slash", "impale", "stab", "slice") sharpness = SHARP_EDGED item_flags = CRUEL_IMPLEMENT /obj/item/shovel/serrated/Initialize(mapload) . = ..() AddElement(/datum/element/bane, mob_biotypes = MOB_ORGANIC, damage_multiplier = 1) //You may be horridly cursed now, but at least you kill the living a whole lot more easily! /obj/item/shovel/serrated/examine(mob/user) . = ..() if( !(user.mind && HAS_TRAIT(user.mind, TRAIT_MORBID)) ) return . += span_deadsay("You feel an intense, strange craving to 'dig' straight through living flesh with this shovel. Why else would it be serrated? The thought is mesmerizing...") // Coroner mail version /obj/item/shovel/serrated/dull name = "dull bone shovel" desc = "An ancient, dull bone shovel with a strange design and markings. Visually, it seems pretty weak, but you get the feeling there's more to it than meets the eye..." force = 8 throwforce = 10 toolspeed = 0.8 /obj/item/trench_tool name = "entrenching tool" desc = "The multi-purpose tool you always needed." icon = 'icons/obj/mining.dmi' icon_state = "trench_tool" inhand_icon_state = "trench_tool" lefthand_file = 'icons/mob/inhands/equipment/mining_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi' flags_1 = CONDUCT_1 force = 15 throwforce = 6 w_class = WEIGHT_CLASS_SMALL tool_behaviour = TOOL_WRENCH toolspeed = 0.75 usesound = 'sound/items/ratchet.ogg' attack_verb_continuous = list("bashes", "bludgeons", "thrashes", "whacks") attack_verb_simple = list("bash", "bludgeon", "thrash", "whack") wound_bonus = 10 /obj/item/trench_tool/Initialize(mapload) . = ..() AddElement(/datum/element/update_icon_updates_onmob) /obj/item/trench_tool/examine(mob/user) . = ..() . += span_notice("Use in hand to switch configuration.") . += span_notice("It functions as a [tool_behaviour] tool.") . += span_danger("This weapon has no random critical hits.") /obj/item/trench_tool/update_icon_state() . = ..() switch(tool_behaviour) if(TOOL_WRENCH) icon_state = inhand_icon_state = initial(icon_state) if(TOOL_SHOVEL) icon_state = inhand_icon_state = "[initial(icon_state)]_shovel" if(TOOL_MINING) icon_state = inhand_icon_state = "[initial(icon_state)]_pick" /obj/item/trench_tool/attack_self(mob/user, modifiers) . = ..() if(!user) return var/list/tool_list = list( "Wrench" = image(icon = icon, icon_state = "trench_tool"), "Shovel" = image(icon = icon, icon_state = "trench_tool_shovel"), "Pick" = image(icon = icon, icon_state = "trench_tool_pick"), ) var/tool_result = show_radial_menu(user, src, tool_list, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) if(!check_menu(user) || !tool_result) return switch(tool_result) if("Wrench") tool_behaviour = TOOL_WRENCH sharpness = NONE toolspeed = 0.75 w_class = WEIGHT_CLASS_SMALL usesound = 'sound/items/ratchet.ogg' attack_verb_continuous = list("bashes", "bludgeons", "thrashes", "whacks") attack_verb_simple = list("bash", "bludgeon", "thrash", "whack") if("Shovel") tool_behaviour = TOOL_SHOVEL sharpness = SHARP_EDGED toolspeed = 0.25 w_class = WEIGHT_CLASS_NORMAL usesound = 'sound/effects/shovel_dig.ogg' attack_verb_continuous = list("slashes", "impales", "stabs", "slices") attack_verb_simple = list("slash", "impale", "stab", "slice") if("Pick") tool_behaviour = TOOL_MINING sharpness = SHARP_POINTY toolspeed = 0.5 w_class = WEIGHT_CLASS_NORMAL usesound = 'sound/effects/picaxe1.ogg' attack_verb_continuous = list("hits", "pierces", "slices", "attacks") attack_verb_simple = list("hit", "pierce", "slice", "attack") playsound(src, 'sound/items/ratchet.ogg', 50, vary = TRUE) update_appearance(UPDATE_ICON) /obj/item/trench_tool/proc/check_menu(mob/user) if(!istype(user)) return FALSE if(user.incapacitated() || !user.Adjacent(src)) return FALSE return TRUE