diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm
index 3cb13df7651..2ea581aa967 100644
--- a/code/_onclick/click.dm
+++ b/code/_onclick/click.dm
@@ -113,8 +113,6 @@
if(isturf(A) || isturf(A.loc) || (A.loc && isturf(A.loc.loc)))
if(A.Adjacent(src)) // see adjacent.dm
if(W)
- if(W.preattack(A,src,1,params)) //Weapon attack override,return 1 to exit
- return
// Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example)
var/resolved = A.attackby(W,src)
if(!resolved && A && W)
@@ -126,8 +124,6 @@
return
else // non-adjacent click
if(W)
- if(W.preattack(A,src,0,params)) //Weapon attack override,return 1 to exit
- return
W.afterattack(A,src,0,params) // 0: not Adjacent
else
RangedAttack(A, params)
diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm
index d42b1c311c8..16a8ffa7dbc 100644
--- a/code/_onclick/item_attack.dm
+++ b/code/_onclick/item_attack.dm
@@ -43,11 +43,6 @@
/obj/item/proc/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
return
-// Overrides the weapon attack so it can attack any atoms like when we want to have an effect on an object independent of attackby
-// It is a powerfull proc but it should be used wisely, if there is other alternatives instead use those
-// If it returns 1 it exits click code. Always . = 1 at start of the function if you delete src.
-/obj/item/proc/preattack(atom/target, mob/user, proximity_flag, click_parameters)
- return
obj/item/proc/get_clamped_volume()
if(src.force && src.w_class)
diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm
index 244c67a54fb..9ff6e7bfd03 100644
--- a/code/game/objects/items/weapons/explosives.dm
+++ b/code/game/objects/items/weapons/explosives.dm
@@ -56,8 +56,8 @@
timer = newtime
user << "Timer set for [timer] seconds."
-/obj/item/weapon/plastique/preattack(atom/target as obj|turf, mob/user as mob,proximity_flag)
- if (!proximity_flag)
+/obj/item/weapon/plastique/afterattack(atom/movable/target, mob/user, flag)
+ if (!flag)
return
if (istype(target, /turf/unsimulated) || istype(target, /turf/simulated/shuttle) || istype(target, /obj/item/weapon/storage/))
return
@@ -86,7 +86,6 @@
user << "Bomb has been planted. Timer counting down from [timer]."
spawn(timer*10)
explode(get_turf(target))
- return 1
/obj/item/weapon/plastique/proc/explode(var/location)
diff --git a/code/modules/detectivework/evidence.dm b/code/modules/detectivework/evidence.dm
index 8e75055e17b..c381d15bb7c 100644
--- a/code/modules/detectivework/evidence.dm
+++ b/code/modules/detectivework/evidence.dm
@@ -8,16 +8,22 @@
item_state = ""
w_class = 1
-/obj/item/weapon/evidencebag/afterattack(obj/item/I, mob/user as mob,proximity)
- if(!proximity)
+/obj/item/weapon/evidencebag/afterattack(obj/item/I, mob/user,proximity)
+ if(!proximity || loc == I)
return
+ evidencebagEquip(I, user)
+/obj/item/weapon/evidencebag/attackby(obj/item/I, mob/user)
+ if(evidencebagEquip(I, user))
+ return 1
+
+/obj/item/weapon/evidencebag/proc/evidencebagEquip(obj/item/I, mob/user)
if(!istype(I) || I.anchored == 1)
- return ..()
+ return
if(istype(I, /obj/item/weapon/evidencebag))
user << "You find putting an evidence bag in another evidence bag to be slightly absurd."
- return
+ return 1 //now this is podracing
if(I.w_class > 3)
user << "[I] won't fit in [src]."
@@ -25,7 +31,7 @@
if(contents.len)
user << "[src] already has something inside it."
- return ..()
+ return
if(!isturf(I.loc)) //If it isn't on the floor. Do some checks to see if it's in our hands or a box. Otherwise give up.
if(istype(I.loc,/obj/item/weapon/storage)) //in a container.
@@ -39,8 +45,8 @@
else
return
- user.visible_message("[user] puts [I] into [src]", "You put [I] inside [src].",\
- "You hear a rustle as someone puts something into a plastic bag.")
+ user.visible_message("[user] puts [I] into [src].", "You put [I] inside [src].",\
+ "You hear a rustle as someone puts something into a plastic bag.")
icon_state = "evidence"
@@ -57,14 +63,13 @@
desc = "An evidence bag containing [I]. [I.desc]"
I.loc = src
w_class = I.w_class
- return
-
+ return 1
/obj/item/weapon/evidencebag/attack_self(mob/user as mob)
if(contents.len)
var/obj/item/I = contents[1]
- user.visible_message("[user] takes [I] out of [src]", "You take [I] out of [src].",\
- "You hear someone rustle around in a plastic bag, and remove something.")
+ user.visible_message("[user] takes [I] out of [src].", "You take [I] out of [src].",\
+ "You hear someone rustle around in a plastic bag, and remove something.")
overlays.Cut() //remove the overlays
user.put_in_hands(I)
w_class = 1