mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-13 08:03:43 +01:00
Migrates restraints to the New Attack Chain (#31310)
* e * Update legcuffs.dm * Update umbrae_powers.dm * Update code/game/objects/items/weapons/legcuffs.dm Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com> --------- Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
/obj/item/restraints
|
||||
name = "bugged restraints" //This item existed before this pr, but had no name or such. Better warn people if it exists
|
||||
desc = "Should not exist. Report me to a(n) coder/admin!"
|
||||
name = "base type restraints"
|
||||
desc = ABSTRACT_TYPE_DESC
|
||||
icon = 'icons/obj/restraints.dmi'
|
||||
new_attack_chain = TRUE
|
||||
var/cuffed_state = "handcuff"
|
||||
///How long it will take to break out of restraints
|
||||
var/breakouttime
|
||||
@@ -59,24 +60,25 @@
|
||||
/// If set to TRUE, people with the TRAIT_CLUMSY won't cuff themselves when trying to cuff others.
|
||||
var/ignoresClumsy = FALSE
|
||||
|
||||
/obj/item/restraints/handcuffs/attack__legacy__attackchain(mob/living/carbon/C, mob/user)
|
||||
if(!user.IsAdvancedToolUser())
|
||||
to_chat(user, SPAN_WARNING("You don't have the dexterity to do this!"))
|
||||
return
|
||||
/obj/item/restraints/handcuffs/interact_with_atom(atom/target, mob/living/user, list/modifiers)
|
||||
if(!iscarbon(target))
|
||||
return NONE
|
||||
|
||||
if(!istype(C))
|
||||
return
|
||||
if(!user.IsAdvancedToolUser())
|
||||
to_chat(user, SPAN_WARNING("You don't have the dexterity to use [src]!"))
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
if(flags & NODROP)
|
||||
to_chat(user, SPAN_WARNING("[src] is stuck to your hand!"))
|
||||
return
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50) && (!ignoresClumsy))
|
||||
to_chat(user, SPAN_WARNING("Uh... how do those things work?!"))
|
||||
apply_cuffs(user, user)
|
||||
return
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
cuff(C, user)
|
||||
cuff(target, user)
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
/obj/item/restraints/handcuffs/proc/cuff(mob/living/carbon/C, mob/user, remove_src = TRUE)
|
||||
if(!istype(C)) // Shouldn't be able to cuff anything but carbons.
|
||||
@@ -223,8 +225,13 @@
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/obj/item/restraints/handcuffs/cable/zipties/used/attack__legacy__attackchain()
|
||||
return
|
||||
/obj/item/restraints/handcuffs/cable/zipties/used/interact_with_atom(atom/target, mob/living/user, list/modifiers)
|
||||
to_chat(user, SPAN_WARNING("[src] are broken and useless!"))
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
/obj/item/restraints/handcuffs/cable/zipties/used/item_interaction(mob/living/user, obj/item/used, list/modifiers)
|
||||
to_chat(user, SPAN_WARNING("[src] are broken and useless!"))
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
//////////////////////////////
|
||||
// MARK: TWIMSTS
|
||||
@@ -259,10 +266,10 @@
|
||||
//////////////////////////////
|
||||
// MARK: CRAFTING
|
||||
//////////////////////////////
|
||||
/obj/item/restraints/handcuffs/cable/attackby__legacy__attackchain(obj/item/I, mob/user, params)
|
||||
/obj/item/restraints/handcuffs/cable/item_interaction(mob/living/user, obj/item/used, list/modifiers)
|
||||
..()
|
||||
|
||||
handle_attack_construction(I, user)
|
||||
handle_attack_construction(used, user)
|
||||
|
||||
/obj/item/restraints/handcuffs/cable/proc/handle_attack_construction(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/stack/rods))
|
||||
@@ -300,9 +307,10 @@
|
||||
var/obj/item/toy/crayon/C = I
|
||||
cable_color(C.dye_color)
|
||||
|
||||
/obj/item/restraints/handcuffs/cable/zipties/cyborg/attack__legacy__attackchain(mob/living/carbon/C, mob/user)
|
||||
/obj/item/restraints/handcuffs/cable/zipties/cyborg/interact_with_atom(atom/target, mob/living/user, list/modifiers)
|
||||
if(isrobot(user))
|
||||
cuff(C, user, FALSE)
|
||||
cuff(target, user, FALSE)
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
/obj/item/restraints/handcuffs/cable/zipties/cyborg/handle_attack_construction(obj/item/I, mob/user)
|
||||
// Don't allow borgs to send their their ziptie module to the shadow realm.
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
/obj/item/restraints/legcuffs
|
||||
name = "leg cuffs"
|
||||
desc = "Use this to keep prisoners in line."
|
||||
name = "base type legcuffs"
|
||||
gender = PLURAL
|
||||
icon_state = "handcuff"
|
||||
cuffed_state = "legcuff"
|
||||
@@ -9,6 +8,7 @@
|
||||
slowdown = 7
|
||||
breakouttime = 30 SECONDS
|
||||
|
||||
// MARK: Beartrap
|
||||
/obj/item/restraints/legcuffs/beartrap
|
||||
name = "bear trap"
|
||||
throw_speed = 1
|
||||
@@ -44,49 +44,61 @@
|
||||
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, TRUE, -1)
|
||||
return BRUTELOSS
|
||||
|
||||
/obj/item/restraints/legcuffs/beartrap/attack_self__legacy__attackchain(mob/user)
|
||||
..()
|
||||
/obj/item/restraints/legcuffs/beartrap/activate_self(mob/user)
|
||||
if(..())
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
if(!ishuman(user) || user.restrained())
|
||||
return
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
if(do_after(user, 2 SECONDS, target = user))
|
||||
armed = !armed
|
||||
update_icon(UPDATE_ICON_STATE)
|
||||
to_chat(user, SPAN_NOTICE("[src] is now [armed ? "armed" : "disarmed"]"))
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
/obj/item/restraints/legcuffs/beartrap/attackby__legacy__attackchain(obj/item/I, mob/user) //Let's get explosive.
|
||||
if(istype(I, /obj/item/grenade/iedcasing))
|
||||
/obj/item/restraints/legcuffs/beartrap/item_interaction(mob/living/user, obj/item/used, list/modifiers)
|
||||
// Let's get explosive.
|
||||
if(istype(used, /obj/item/grenade/iedcasing))
|
||||
if(IED)
|
||||
to_chat(user, SPAN_WARNING("This beartrap already has an IED hooked up to it!"))
|
||||
return
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
if(sig)
|
||||
to_chat(user, SPAN_WARNING("This beartrap already has a signaler hooked up to it!"))
|
||||
return
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
user.drop_item()
|
||||
I.forceMove(src)
|
||||
IED = I
|
||||
used.forceMove(src)
|
||||
IED = used
|
||||
message_admins("[key_name_admin(user)] has rigged a beartrap with an IED.")
|
||||
log_game("[key_name(user)] has rigged a beartrap with an IED.")
|
||||
to_chat(user, SPAN_NOTICE("You sneak [IED] underneath the pressure plate and connect the trigger wire."))
|
||||
desc = "A trap used to catch bears and other legged creatures. [SPAN_WARNING("There is an IED hooked up to it.")]"
|
||||
if(istype(I, /obj/item/assembly/signaler))
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
if(istype(used, /obj/item/assembly/signaler))
|
||||
if(IED)
|
||||
to_chat(user, SPAN_WARNING("This beartrap already has an IED hooked up to it!"))
|
||||
return
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
if(sig)
|
||||
to_chat(user, SPAN_WARNING("This beartrap already has a signaler hooked up to it!"))
|
||||
return
|
||||
sig = I
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
sig = used
|
||||
if(sig.secured)
|
||||
to_chat(user, SPAN_WARNING("The signaler is secured."))
|
||||
sig = null
|
||||
return
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
user.drop_item()
|
||||
I.forceMove(src)
|
||||
used.forceMove(src)
|
||||
to_chat(user, SPAN_NOTICE("You sneak [sig] underneath the pressure plate and connect the trigger wire."))
|
||||
desc = "A trap used to catch bears and other legged creatures. [SPAN_WARNING("There is a remote signaler hooked up to it.")]"
|
||||
..()
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/item/restraints/legcuffs/beartrap/screwdriver_act(mob/living/user, obj/item/I)
|
||||
if(!IED && !sig)
|
||||
@@ -176,6 +188,7 @@
|
||||
/obj/item/restraints/legcuffs/beartrap/energy/cyborg
|
||||
breakouttime = 20 // Cyborgs shouldn't have a strong restraint
|
||||
|
||||
// MARK: Bola
|
||||
/obj/item/restraints/legcuffs/bola
|
||||
name = "bola"
|
||||
desc = "A restraining device designed to be thrown at the target. Upon connecting with said target, it will wrap around their legs, making it difficult for them to move quickly."
|
||||
|
||||
@@ -88,14 +88,16 @@
|
||||
to_chat(user, SPAN_USERDANGER("The snare sends a psychic backlash!"))
|
||||
C.EyeBlind(20 SECONDS)
|
||||
|
||||
/obj/item/restraints/legcuffs/beartrap/shadow_snare/attackby__legacy__attackchain(obj/item/I, mob/user)
|
||||
var/obj/item/flash/flash = I
|
||||
/obj/item/restraints/legcuffs/beartrap/shadow_snare/item_interaction(mob/living/user, obj/item/used, list/modifiers)
|
||||
var/obj/item/flash/flash = used
|
||||
if(!istype(flash) || !flash.try_use_flash(user))
|
||||
return ..()
|
||||
user.visible_message(SPAN_DANGER("[user] points [I] at [src]!"),
|
||||
SPAN_DANGER("You point [I] at [src]!"))
|
||||
|
||||
user.visible_message(SPAN_DANGER("[user] points [used] at [src]!"),
|
||||
SPAN_DANGER("You point [used] at [src]!"))
|
||||
visible_message(SPAN_NOTICE("[src] withers away."))
|
||||
qdel(src)
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
/obj/item/restraints/legcuffs/beartrap/shadow_snare/process()
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
Reference in New Issue
Block a user