mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-06-06 22:59:15 +01:00
285c7acf24
Refactors snipping cuffs into a bespoke cuffsnapping element, adding support for delayed cuffsnipping. Adds this element to box cutters! Effectively speaking everything is the same as usual. It's cool, it's based and elementized and modularized and not hardcodeized on the jaws of life anymore. Plus it could be used in the future for things (it won't)
58 lines
2.0 KiB
Plaintext
58 lines
2.0 KiB
Plaintext
/obj/item/boxcutter
|
|
name = "boxcutter"
|
|
desc = "A tool for cutting boxes, or throats."
|
|
icon = 'icons/obj/boxcutter.dmi'
|
|
icon_state = "boxcutter"
|
|
inhand_icon_state = "boxcutter"
|
|
base_icon_state = "boxcutter"
|
|
lefthand_file = 'icons/mob/inhands/equipment/boxcutter_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/equipment/boxcutter_righthand.dmi'
|
|
inhand_icon_state = null
|
|
attack_verb_continuous = list("prods", "pokes")
|
|
attack_verb_simple = list("prod", "poke")
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
resistance_flags = FIRE_PROOF
|
|
force = 0
|
|
var/start_extended = FALSE
|
|
/// Whether or not the boxcutter has been readied
|
|
var/on = FALSE
|
|
var/on_sound = 'sound/items/boxcutter_activate.ogg'
|
|
/// Used on Initialize, how much time to cut cable restraints and zipties.
|
|
var/snap_time_weak_handcuffs = 0 SECONDS
|
|
/// Used on Initialize, how much time to cut real handcuffs. Null means it can't.
|
|
var/snap_time_strong_handcuffs = null
|
|
|
|
/obj/item/boxcutter/Initialize(mapload)
|
|
. = ..()
|
|
AddElement(/datum/element/update_icon_updates_onmob)
|
|
AddComponent(/datum/component/butchering, \
|
|
speed = 7 SECONDS, \
|
|
effectiveness = 100, \
|
|
)
|
|
|
|
AddComponent(/datum/component/transforming, \
|
|
start_transformed = start_extended, \
|
|
force_on = 10, \
|
|
throwforce_on = 4, \
|
|
throw_speed_on = throw_speed, \
|
|
sharpness_on = SHARP_EDGED, \
|
|
hitsound_on = 'sound/weapons/bladeslice.ogg', \
|
|
w_class_on = WEIGHT_CLASS_NORMAL, \
|
|
attack_verb_continuous_on = list("cuts", "stabs", "slashes"), \
|
|
attack_verb_simple_on = list("cut", "stab", "slash"), \
|
|
)
|
|
|
|
RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform))
|
|
|
|
/obj/item/boxcutter/proc/on_transform(obj/item/source, mob/user, active)
|
|
SIGNAL_HANDLER
|
|
|
|
on = active
|
|
playsound(src, on_sound, 50)
|
|
tool_behaviour = (active ? TOOL_KNIFE : NONE)
|
|
if(active)
|
|
AddElement(/datum/element/cuffsnapping, snap_time_weak_handcuffs, snap_time_strong_handcuffs)
|
|
else
|
|
RemoveElement(/datum/element/cuffsnapping, snap_time_weak_handcuffs, snap_time_strong_handcuffs)
|
|
return COMPONENT_NO_DEFAULT_MESSAGE
|