diff --git a/code/game/objects/items/weapons/material/kitchen.dm b/code/game/objects/items/weapons/material/kitchen.dm index 71a03b982ce..59ca1960d52 100644 --- a/code/game/objects/items/weapons/material/kitchen.dm +++ b/code/game/objects/items/weapons/material/kitchen.dm @@ -78,6 +78,17 @@ icon_state = "knife" force_divisor = 0.1 // 6 when wielded with hardness 60 (steel) +// Identical to the tactical knife but nowhere near as stabby. +// Kind of like the toy esword compared to the real thing. +/obj/item/weapon/material/kitchen/utensil/knife/boot + name = "boot knife" + desc = "A small fixed-blade knife for putting inside a boot." + icon = 'icons/obj/weapons.dmi' + icon_state = "tacknife" + item_state = "knife" + applies_material_colour = 0 + unbreakable = 1 + /obj/item/weapon/material/kitchen/utensil/knife/attack(target as mob, mob/living/user as mob) if ((CLUMSY in user.mutations) && prob(50)) user << "You accidentally cut yourself with the [src]." diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm index 897d95f02f1..2bb84ef8c49 100644 --- a/code/modules/client/preferences_gear.dm +++ b/code/modules/client/preferences_gear.dm @@ -1104,6 +1104,12 @@ var/global/list/gear_datums = list() sort_category = "misc" cost = 1 +/datum/gear/boot_knife + display_name = "boot knife" + path = /obj/item/weapon/material/kitchen/utensil/knife/boot + sort_category = "misc" + cost = 3 + /datum/gear/cane display_name = "cane" path = /obj/item/weapon/cane diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 593908f4cd2..681b33d6892 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -395,6 +395,9 @@ BLIND // can't see anything body_parts_covered = FEET slot_flags = SLOT_FEET + var/can_hold_knife + var/obj/item/holding + permeability_coefficient = 0.50 slowdown = SHOES_SLOWDOWN force = 2 @@ -405,6 +408,54 @@ BLIND // can't see anything "Resomi" = 'icons/mob/species/resomi/shoes.dmi', ) +/obj/item/clothing/shoes/proc/draw_knife() + set name = "Draw Boot Knife" + set desc = "Pull out your boot knife." + set category = "IC" + set src in usr + + if(usr.stat || usr.restrained() || usr.incapacitated()) + return + + holding.forceMove(get_turf(usr)) + + if(usr.put_in_hands(holding)) + usr.visible_message("\The [usr] pulls a knife out of their boot!") + holding = null + else + usr << "Your need an empty, unbroken hand to do that." + holding.forceMove(src) + + if(!holding) + verbs -= /obj/item/clothing/shoes/proc/draw_knife + + update_icon() + return + + +/obj/item/clothing/shoes/attackby(var/obj/item/I, var/mob/user) + if(can_hold_knife && istype(I, /obj/item/weapon/material/shard) || \ + istype(I, /obj/item/weapon/material/butterfly) || \ + istype(I, /obj/item/weapon/material/kitchen/utensil) || \ + istype(I, /obj/item/weapon/material/hatchet/tacknife)) + if(holding) + user << "\The [src] is already holding \a [holding]." + return + user.unEquip(I) + I.forceMove(src) + holding = I + user.visible_message("\The [user] shoves \the [I] into \the [src].") + verbs |= /obj/item/clothing/shoes/proc/draw_knife + update_icon() + else + return ..() + +/obj/item/clothing/shoes/update_icon() + overlays.Cut() + if(holding) + overlays += image(icon, "[icon_state]_knife") + return ..() + /obj/item/clothing/shoes/proc/handle_movement(var/turf/walking, var/running) return diff --git a/code/modules/clothing/shoes/jobs.dm b/code/modules/clothing/shoes/jobs.dm index 9610337906c..9e3bc0e2cfc 100644 --- a/code/modules/clothing/shoes/jobs.dm +++ b/code/modules/clothing/shoes/jobs.dm @@ -15,6 +15,7 @@ force = 3 armor = list(melee = 30, bullet = 10, laser = 10, energy = 15, bomb = 20, bio = 0, rad = 0) siemens_coefficient = 0.7 + can_hold_knife = 1 /obj/item/clothing/shoes/jackboots/unathi name = "toe-less jackboots" @@ -30,3 +31,4 @@ item_state = "workboots" armor = list(melee = 40, bullet = 0, laser = 0, energy = 15, bomb = 20, bio = 0, rad = 20) siemens_coefficient = 0.7 + can_hold_knife = 1 \ No newline at end of file diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi index df58a782ed6..dbbaacbe4b6 100644 Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ