From 1132879810277c4321ee834c57d94379e5bfdfec Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Tue, 17 Jun 2014 10:26:04 -0400 Subject: [PATCH] Fixed up the stupid handcuff shit that's been bugging me forever. --- code/game/objects/items/weapons/handcuffs.dm | 106 +++++------------- .../mob/living/carbon/human/update_icons.dm | 8 +- 2 files changed, 34 insertions(+), 80 deletions(-) diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index df1364cefd0..07b506d4d50 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -15,88 +15,42 @@ var/dispenser = 0 var/breakouttime = 1200 //Deciseconds = 120s = 2 minutes -/obj/item/weapon/handcuffs/attack(mob/living/carbon/C as mob, mob/user as mob) - if(istype(src, /obj/item/weapon/handcuffs/cyborg) && isrobot(user)) +/obj/item/weapon/handcuffs/attack(mob/living/carbon/C, mob/user) + if(M_CLUMSY in user.mutations && prob(50)) + user << "Uh... how do those things work?!" if(!C.handcuffed) - var/turf/p_loc = user.loc - var/turf/p_loc_m = C.loc - playsound(src.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -2) - for(var/mob/O in viewers(user, null)) - O.show_message("\red [user] is trying to put handcuffs on [C]!", 1) - spawn(30) - if(!C) return - if(p_loc == user.loc && p_loc_m == C.loc) - C.handcuffed = new /obj/item/weapon/handcuffs(C) - C.update_inv_handcuffed() - - else - if ((M_CLUMSY in usr.mutations) && prob(50)) - usr << "\red Uh ... how do those things work?!" - if (istype(C, /mob/living/carbon/human)) - if(!C.handcuffed) - var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( ) - O.source = user - O.target = user - O.item = user.get_active_hand() - O.s_loc = user.loc - O.t_loc = user.loc - O.place = "handcuff" - C.requests += O - spawn( 0 ) - O.process() - return + user.drop_item() + loc = C + C.handcuffed = src + C.update_inv_handcuffed() return - if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") - usr << "\red You don't have the dexterity to do this!" - return - if (istype(C, /mob/living/carbon/human)) - if(!C.handcuffed) - C.attack_log += text("\[[time_stamp()]\] Has been handcuffed (attempt) by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Attempted to handcuff [C.name] ([C.ckey])") - log_attack("[user.name] ([user.ckey]) Attempted to handcuff [C.name] ([C.ckey])") + var/cable = 0 + if(istype(src, /obj/item/weapon/handcuffs/cable)) + cable = 1 - if(!iscarbon(user)) - C.LAssailant = null - else - C.LAssailant = user + if(!C.handcuffed) + C.visible_message("[user] is trying to put handcuffs on [C]!", \ + "[user] is trying to put handcuffs on [C]!") - - var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( ) - O.source = user - O.target = C - O.item = user.get_active_hand() - O.s_loc = user.loc - O.t_loc = C.loc - O.place = "handcuff" - C.requests += O - spawn( 0 ) - if(istype(src, /obj/item/weapon/handcuffs/cable)) - feedback_add_details("handcuffs","C") - playsound(src.loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) - else - feedback_add_details("handcuffs","H") - playsound(src.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -2) - O.process() - return + if(cable) + playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) else - if(!C.handcuffed) - var/obj/effect/equip_e/monkey/O = new /obj/effect/equip_e/monkey( ) - O.source = user - O.target = C - O.item = user.get_active_hand() - O.s_loc = user.loc - O.t_loc = C.loc - O.place = "handcuff" - C.requests += O - spawn( 0 ) - if(istype(src, /obj/item/weapon/handcuffs/cable)) - playsound(src.loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) - else - playsound(src.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -2) - O.process() - return - return + playsound(loc, 'sound/weapons/handcuffs.ogg', 30, 1, -2) + + if(do_mob(user, C, 30)) + if(C.handcuffed) + return + user.drop_item() + loc = C + C.handcuffed = src + C.update_inv_handcuffed() + if(cable) + feedback_add_details("handcuffs","C") + else + feedback_add_details("handcuffs","H") + + add_logs(user, C, "handcuffed") var/last_chew = 0 /mob/living/carbon/human/RestrainedClickOn(var/atom/A) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 126d8f89ea4..4019f65c7ca 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -908,8 +908,8 @@ proc/get_damage_icon_part(damage_state, body_part) drop_l_hand() stop_pulling() //TODO: should be handled elsewhere if(hud_used) //hud handcuff icons - var/obj/screen/inventory/R = hud_used.adding[3] - var/obj/screen/inventory/L = hud_used.adding[4] + var/obj/screen/inventory/R = hud_used.adding[7] + var/obj/screen/inventory/L = hud_used.adding[8] R.overlays += image("icon"='icons/mob/screen_gen.dmi', "icon_state"="markus") L.overlays += image("icon"='icons/mob/screen_gen.dmi', "icon_state"="gabrielle") if(istype(handcuffed, /obj/item/weapon/handcuffs/pinkcuffs)) @@ -919,8 +919,8 @@ proc/get_damage_icon_part(damage_state, body_part) else overlays_standing[HANDCUFF_LAYER] = null if(hud_used) - var/obj/screen/inventory/R = hud_used.adding[3] - var/obj/screen/inventory/L = hud_used.adding[4] + var/obj/screen/inventory/R = hud_used.adding[7] + var/obj/screen/inventory/L = hud_used.adding[8] R.overlays = null L.overlays = null if(update_icons) update_icons()