diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm
index 42e9e5cbde6..7a740854635 100644
--- a/code/__DEFINES/components.dm
+++ b/code/__DEFINES/components.dm
@@ -127,6 +127,7 @@
#define COMPONENT_NO_ATTACK_OBJ 1
#define COMSIG_ITEM_PRE_ATTACK "item_pre_attack" //from base of obj/item/pre_attack(): (atom/target, mob/user, params)
#define COMPONENT_NO_ATTACK 1
+#define COMSIG_ITEM_AFTERATTACK "item_afterattack" //from base of obj/item/afterattack(): (atom/target, mob/user, params)
#define COMSIG_ITEM_EQUIPPED "item_equip" //from base of obj/item/equipped(): (/mob/equipper, slot)
#define COMSIG_ITEM_DROPPED "item_drop" //from base of obj/item/dropped(): (mob/user)
#define COMSIG_ITEM_PICKUP "item_pickup" //from base of obj/item/pickup(): (/mob/taker)
diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm
index 4265f064cc5..1bc72b1b34c 100644
--- a/code/_onclick/item_attack.dm
+++ b/code/_onclick/item_attack.dm
@@ -117,7 +117,7 @@
// Proximity_flag is 1 if this afterattack was called on something adjacent, in your square, or on your person.
// Click parameters is the params string from byond Click() code, see that documentation.
/obj/item/proc/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
- return
+ SEND_SIGNAL(src, COMSIG_ITEM_AFTERATTACK, target, user, proximity_flag, click_parameters)
/obj/item/proc/get_clamped_volume()
diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm
index 85e7958b531..12b1ca2784f 100644
--- a/code/_onclick/telekinesis.dm
+++ b/code/_onclick/telekinesis.dm
@@ -120,6 +120,7 @@
update_icon()
/obj/item/tk_grab/afterattack(atom/target, mob/living/carbon/user, proximity, params)//TODO: go over this
+ . = ..()
if(!target || !user)
return
diff --git a/code/datums/wires/explosive.dm b/code/datums/wires/explosive.dm
index d8b256d3625..b31ace5dc04 100644
--- a/code/datums/wires/explosive.dm
+++ b/code/datums/wires/explosive.dm
@@ -23,7 +23,7 @@
/datum/wires/explosive/c4/explode()
var/obj/item/grenade/plastic/c4/P = holder
- P.explode()
+ P.prime()
/datum/wires/explosive/pizza
diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm
index 03225102c26..627ce360f45 100644
--- a/code/game/objects/items/RCD.dm
+++ b/code/game/objects/items/RCD.dm
@@ -373,6 +373,7 @@ RLD
return FALSE
/obj/item/construction/rcd/afterattack(atom/A, mob/user, proximity)
+ . = ..()
if(!prox_check(proximity))
return
rcd_create(A, user)
@@ -479,6 +480,7 @@ RLD
has_ammobar = FALSE
/obj/item/construction/rcd/arcd/afterattack(atom/A, mob/user)
+ . = ..()
if(!range_check(A,user))
return
if(target_check(A,user))
@@ -549,6 +551,7 @@ RLD
/obj/item/construction/rld/afterattack(atom/A, mob/user)
+ . = ..()
if(!range_check(A,user))
return
var/turf/start = get_turf(src)
diff --git a/code/game/objects/items/RSF.dm b/code/game/objects/items/RSF.dm
index 95638ad5e2f..f0d15cc3a2c 100644
--- a/code/game/objects/items/RSF.dm
+++ b/code/game/objects/items/RSF.dm
@@ -62,6 +62,7 @@ RSF
// Change mode
/obj/item/rsf/afterattack(atom/A, mob/user, proximity)
+ . = ..()
if(!proximity)
return
if (!(istype(A, /obj/structure/table) || isfloorturf(A)))
@@ -159,6 +160,7 @@ RSF
matter++
/obj/item/cookiesynth/afterattack(atom/A, mob/user, proximity)
+ . = ..()
if(cooldown > world.time)
return
if(!proximity)
diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm
index 4e2b0baf75a..d0b732cf420 100644
--- a/code/game/objects/items/bodybag.dm
+++ b/code/game/objects/items/bodybag.dm
@@ -11,6 +11,7 @@
deploy_bodybag(user, user.loc)
/obj/item/bodybag/afterattack(atom/target, mob/user, proximity)
+ . = ..()
if(proximity)
if(isopenturf(target))
deploy_bodybag(user, target)
diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm
index 7f750855f10..2ff9d1e850f 100644
--- a/code/game/objects/items/cards_ids.dm
+++ b/code/game/objects/items/cards_ids.dm
@@ -91,6 +91,7 @@
return
/obj/item/card/emag/afterattack(atom/target, mob/user, proximity)
+ . = ..()
var/atom/A = target
if(!proximity && prox_check)
return
diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm
index e28d86e7e67..d8fef9ec6e1 100644
--- a/code/game/objects/items/cigs_lighters.dm
+++ b/code/game/objects/items/cigs_lighters.dm
@@ -144,6 +144,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
return ..()
/obj/item/clothing/mask/cigarette/afterattack(obj/item/reagent_containers/glass/glass, mob/user, proximity)
+ . = ..()
if(!proximity || lit) //can't dip if cigarette is lit (it will heat the reagents in the glass instead)
return
if(istype(glass)) //you can dip cigarettes into beakers
@@ -681,6 +682,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
w_class = WEIGHT_CLASS_TINY
/obj/item/rollingpaper/afterattack(atom/target, mob/user, proximity)
+ . = ..()
if(!proximity)
return
if(istype(target, /obj/item/reagent_containers/food/snacks/grown))
@@ -696,8 +698,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
R.desc = "Dried [target.name] rolled up in a thin piece of paper."
else
to_chat(user, "You need to dry this first!")
- else
- ..()
///////////////
//VAPE NATION//
diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm
index 70b0d933446..6ed265c403b 100644
--- a/code/game/objects/items/clown_items.dm
+++ b/code/game/objects/items/clown_items.dm
@@ -57,6 +57,7 @@
return (TOXLOSS)
/obj/item/soap/afterattack(atom/target, mob/user, proximity)
+ . = ..()
if(!proximity || !check_allowed_items(target))
return
//I couldn't feasibly fix the overlay bugs caused by cleaning items we are wearing.
diff --git a/code/game/objects/items/control_wand.dm b/code/game/objects/items/control_wand.dm
index d389679e2bf..c9dc8c6c167 100644
--- a/code/game/objects/items/control_wand.dm
+++ b/code/game/objects/items/control_wand.dm
@@ -32,6 +32,7 @@
// Airlock remote works by sending NTNet packets to whatever it's pointed at.
/obj/item/door_remote/afterattack(atom/A, mob/user)
+ . = ..()
GET_COMPONENT_FROM(target_interface, /datum/component/ntnet_interface, A)
if(!target_interface)
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index a9b5924a71c..69d5eeabb20 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -241,6 +241,7 @@
return jointext(out,"")
/obj/item/toy/crayon/afterattack(atom/target, mob/user, proximity, params)
+ . = ..()
if(!proximity || !check_allowed_items(target))
return
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index 389934b778d..f94cdc241ed 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -835,6 +835,7 @@ GLOBAL_LIST_EMPTY(PDAs)
user.show_message("No radiation detected.")
/obj/item/pda/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity)
+ . = ..()
if(!proximity)
return
switch(scanmode)
diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm
index 740f22edb47..5177cb2159d 100644
--- a/code/game/objects/items/devices/aicard.dm
+++ b/code/game/objects/items/devices/aicard.dm
@@ -17,7 +17,7 @@
return BRUTELOSS
/obj/item/aicard/afterattack(atom/target, mob/user, proximity)
- ..()
+ . = ..()
if(!proximity || !target)
return
if(AI) //AI is on the card, implies user wants to upload it.
diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm
index 6544a883f3c..eff75e224ea 100644
--- a/code/game/objects/items/devices/chameleonproj.dm
+++ b/code/game/objects/items/devices/chameleonproj.dm
@@ -36,6 +36,7 @@
to_chat(user, "You can't use [src] while inside something!")
/obj/item/chameleon/afterattack(atom/target, mob/user , proximity)
+ . = ..()
if(!proximity)
return
if(!check_sprite(target))
diff --git a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm
index 2341a78bbad..b909e7a1e81 100644
--- a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm
+++ b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm
@@ -47,6 +47,7 @@
return TRUE //The actual circuit magic itself is done on a per-object basis
/obj/item/electroadaptive_pseudocircuit/afterattack(atom/target, mob/living/user, proximity)
+ . = ..()
if(!proximity)
return
if(!is_type_in_typecache(target, recycleable_circuits))
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index fee24617603..0a6c3b4e421 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -168,6 +168,7 @@
var/holo_cooldown = 0
/obj/item/flashlight/pen/afterattack(atom/target, mob/user, proximity_flag)
+ . = ..()
if(!proximity_flag)
if(holo_cooldown > world.time)
to_chat(user, "[src] is not ready yet!")
@@ -177,7 +178,6 @@
new /obj/effect/temp_visual/medical_holosign(T,user) //produce a holographic glow
holo_cooldown = world.time + 100
return
- ..()
/obj/effect/temp_visual/medical_holosign
name = "medical holosign"
@@ -380,6 +380,7 @@
return
/obj/item/flashlight/emp/afterattack(atom/movable/A, mob/user, proximity)
+ . = ..()
if(!proximity)
return
diff --git a/code/game/objects/items/devices/forcefieldprojector.dm b/code/game/objects/items/devices/forcefieldprojector.dm
index d8dce7c4277..0792c7c193d 100644
--- a/code/game/objects/items/devices/forcefieldprojector.dm
+++ b/code/game/objects/items/devices/forcefieldprojector.dm
@@ -17,6 +17,7 @@
var/field_distance_limit = 7
/obj/item/forcefield/afterattack(atom/target, mob/user, proximity_flag)
+ . = ..()
if(!check_allowed_items(target, 1))
return
if(istype(target, /obj/structure/projected_forcefield))
diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm
index fb4f4f85664..439c8957890 100644
--- a/code/game/objects/items/devices/geiger_counter.dm
+++ b/code/game/objects/items/devices/geiger_counter.dm
@@ -132,6 +132,7 @@
to_chat(user, "[icon2html(src, user)] You switch [scanning ? "on" : "off"] [src].")
/obj/item/geiger_counter/afterattack(atom/target, mob/user)
+ . = ..()
if(user.a_intent == INTENT_HELP)
if(!(obj_flags & EMAGGED))
user.visible_message("[user] scans [target] with [src].", "You scan [target]'s radiation levels with [src]...")
@@ -141,7 +142,6 @@
target.rad_act(radiation_count)
radiation_count = 0
return TRUE
- return ..()
/obj/item/geiger_counter/proc/scan(atom/A, mob/user)
var/rad_strength = 0
diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm
index f9ea6a6be4a..b00cff95cb1 100644
--- a/code/game/objects/items/devices/laserpointer.dm
+++ b/code/game/objects/items/devices/laserpointer.dm
@@ -57,6 +57,7 @@
return ..()
/obj/item/laser_pointer/afterattack(atom/target, mob/living/user, flag, params)
+ . = ..()
laser_act(target, user, params)
/obj/item/laser_pointer/proc/laser_act(atom/target, mob/living/user, params)
diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm
index a59fa11fa6d..6615ebe8a87 100644
--- a/code/game/objects/items/devices/lightreplacer.dm
+++ b/code/game/objects/items/devices/lightreplacer.dm
@@ -239,6 +239,7 @@
return 0
/obj/item/lightreplacer/afterattack(atom/T, mob/U, proximity)
+ . = ..()
if(!proximity)
return
if(!isturf(T))
diff --git a/code/game/objects/items/devices/pipe_painter.dm b/code/game/objects/items/devices/pipe_painter.dm
index 6415b105b5d..567cb0c73d6 100644
--- a/code/game/objects/items/devices/pipe_painter.dm
+++ b/code/game/objects/items/devices/pipe_painter.dm
@@ -9,6 +9,7 @@
materials = list(MAT_METAL=5000, MAT_GLASS=2000)
/obj/item/pipe_painter/afterattack(atom/A, mob/user, proximity_flag)
+ . = ..()
//Make sure we only paint adjacent items
if(!proximity_flag)
return
diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm
index 6b8b96364ca..67fe9ba138f 100644
--- a/code/game/objects/items/extinguisher.dm
+++ b/code/game/objects/items/extinguisher.dm
@@ -120,6 +120,7 @@
return 0
/obj/item/extinguisher/afterattack(atom/target, mob/user , flag)
+ . = ..()
// Make it so the extinguisher doesn't spray yourself when you click your inventory items
if (target.loc == user)
return
@@ -201,9 +202,6 @@
break
sleep(2)
- else
- return ..()
-
/obj/item/extinguisher/AltClick(mob/user)
if(!user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
return
diff --git a/code/game/objects/items/flamethrower.dm b/code/game/objects/items/flamethrower.dm
index 375b6336b5e..116d0d34cae 100644
--- a/code/game/objects/items/flamethrower.dm
+++ b/code/game/objects/items/flamethrower.dm
@@ -66,6 +66,7 @@
return
/obj/item/flamethrower/afterattack(atom/target, mob/user, flag)
+ . = ..()
if(flag)
return // too close
if(ishuman(user))
diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm
index 37dc206099b..ffe61ee5fa0 100644
--- a/code/game/objects/items/grenades/plastic.dm
+++ b/code/game/objects/items/grenades/plastic.dm
@@ -99,6 +99,7 @@
to_chat(user, "Timer set for [det_time] seconds.")
/obj/item/grenade/plastic/afterattack(atom/movable/AM, mob/user, flag)
+ . = ..()
aim_dir = get_dir(user,AM)
if(!flag)
return
@@ -171,7 +172,6 @@
name = "C4"
desc = "Used to put holes in specific areas without too much extra hole. A saboteur's favorite."
gender = PLURAL
- var/timer = 10
var/open_panel = 0
can_attach_mob = TRUE
@@ -192,7 +192,7 @@
message_admins("[ADMIN_LOOKUPFLW(user)] suicided with [name] at [ADMIN_VERBOSEJMP(src)]")
log_game("[key_name(user)] suicided with [name] at [AREACOORD(user)]")
sleep(10)
- explode(get_turf(user))
+ prime()
user.gib(1, 1)
/obj/item/grenade/plastic/c4/attackby(obj/item/I, mob/user, params)
@@ -204,41 +204,7 @@
else
return ..()
-/obj/item/grenade/plastic/c4/attack_self(mob/user)
- var/newtime = input(usr, "Please set the timer.", "Timer", 10) as num
- if(user.get_active_held_item() == src)
- newtime = CLAMP(newtime, 10, 60000)
- timer = newtime
- to_chat(user, "Timer set for [timer] seconds.")
-
-/obj/item/grenade/plastic/c4/afterattack(atom/movable/AM, mob/user, flag)
- if (!flag)
- return
- if(ismob(AM) && !can_attach_mob)
- return
- if(loc == AM)
- return
- if(SEND_SIGNAL(AM, COMSIG_CONTAINS_STORAGE) && !SEND_SIGNAL(AM, COMSIG_IS_STORAGE_LOCKED))
- return
-
- to_chat(user, "You start planting the bomb...")
-
- if(do_after(user, 30, target = AM))
- if(!user.temporarilyRemoveItemFromInventory(src))
- return
- src.target = AM
- moveToNullspace()
-
- var/message = "[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_VERBOSEJMP(target)] with [timer] second fuse"
- GLOB.bombers += message
- message_admins(message,0,1)
- log_game("[key_name(user)] planted [name] on [target.name] at [AREACOORD(target)] with [timer] second fuse")
-
- target.add_overlay(plastic_overlay, TRUE)
- to_chat(user, "You plant the bomb. Timer counting down from [timer].")
- addtimer(CALLBACK(src, .proc/explode), timer * 10)
-
-/obj/item/grenade/plastic/c4/proc/explode()
+/obj/item/grenade/plastic/c4/prime()
if(QDELETED(src))
return
var/turf/location
diff --git a/code/game/objects/items/holosign_creator.dm b/code/game/objects/items/holosign_creator.dm
index 654afba29df..2549c85a7d7 100644
--- a/code/game/objects/items/holosign_creator.dm
+++ b/code/game/objects/items/holosign_creator.dm
@@ -19,6 +19,7 @@
var/holocreator_busy = FALSE //to prevent placing multiple holo barriers at once
/obj/item/holosign_creator/afterattack(atom/target, mob/user, flag)
+ . = ..()
if(flag)
if(!check_allowed_items(target, 1))
return
diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm
index 4c38752e283..07c566f44b2 100644
--- a/code/game/objects/items/holy_weapons.dm
+++ b/code/game/objects/items/holy_weapons.dm
@@ -503,6 +503,7 @@
hitsound = 'sound/weapons/blade1.ogg'
/obj/item/nullrod/pride_hammer/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity)
+ . = ..()
if(!proximity)
return
if(prob(30) && ishuman(A))
diff --git a/code/game/objects/items/hot_potato.dm b/code/game/objects/items/hot_potato.dm
index eefa302032f..c24a84a6236 100644
--- a/code/game/objects/items/hot_potato.dm
+++ b/code/game/objects/items/hot_potato.dm
@@ -91,8 +91,9 @@
to_chat(user, "You have a really bad feeling about [src]!")
/obj/item/hot_potato/afterattack(atom/target, mob/user, adjacent, params)
+ . = ..()
if(!adjacent || !ismob(target))
- return ..()
+ return
force_onto(target, user)
/obj/item/hot_potato/proc/force_onto(mob/living/victim, mob/user)
diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm
index c9e1e2811a2..39e7c95b99d 100644
--- a/code/game/objects/items/melee/misc.dm
+++ b/code/game/objects/items/melee/misc.dm
@@ -281,11 +281,11 @@
consume_turf(T)
/obj/item/melee/supermatter_sword/afterattack(target, mob/user, proximity_flag)
+ . = ..()
if(user && target == user)
user.dropItemToGround(src)
if(proximity_flag)
consume_everything(target)
- ..()
/obj/item/melee/supermatter_sword/throw_impact(target)
..()
@@ -355,11 +355,11 @@
hitsound = 'sound/weapons/chainhit.ogg'
/obj/item/melee/curator_whip/afterattack(target, mob/user, proximity_flag)
+ . = ..()
if(ishuman(target) && proximity_flag)
var/mob/living/carbon/human/H = target
H.drop_all_held_items()
H.visible_message("[user] disarms [H]!", "[user] disarmed you!")
- ..()
/obj/item/melee/roastingstick
name = "advanced roasting stick"
@@ -441,6 +441,7 @@
update_icon()
/obj/item/melee/roastingstick/afterattack(atom/target, mob/user, proximity)
+ . = ..()
if (!on)
return
if (is_type_in_typecache(target, ovens))
diff --git a/code/game/objects/items/mop.dm b/code/game/objects/items/mop.dm
index 3601c43651f..c5e92c47062 100644
--- a/code/game/objects/items/mop.dm
+++ b/code/game/objects/items/mop.dm
@@ -35,6 +35,7 @@
/obj/item/mop/afterattack(atom/A, mob/user, proximity)
+ . = ..()
if(!proximity)
return
diff --git a/code/game/objects/items/paint.dm b/code/game/objects/items/paint.dm
index dd6fc77906a..c81fd082745 100644
--- a/code/game/objects/items/paint.dm
+++ b/code/game/objects/items/paint.dm
@@ -79,6 +79,7 @@
/obj/item/paint/afterattack(turf/target, mob/user, proximity)
+ . = ..()
if(!proximity)
return
if(paintleft <= 0)
@@ -96,6 +97,7 @@
icon_state = "paint_neutral"
/obj/item/paint/paint_remover/afterattack(turf/target, mob/user, proximity)
+ . = ..()
if(!proximity)
return
if(istype(target) && target.color != initial(target.color))
diff --git a/code/game/objects/items/pneumaticCannon.dm b/code/game/objects/items/pneumaticCannon.dm
index 54fa046019b..752859143b5 100644
--- a/code/game/objects/items/pneumaticCannon.dm
+++ b/code/game/objects/items/pneumaticCannon.dm
@@ -126,6 +126,7 @@
return TRUE
/obj/item/pneumatic_cannon/afterattack(atom/target, mob/living/user, flag, params)
+ . = ..()
if(flag && user.a_intent == INTENT_HARM) //melee attack
return
if(!istype(user))
diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm
index 696168d69d0..316298296f5 100644
--- a/code/game/objects/items/religion.dm
+++ b/code/game/objects/items/religion.dm
@@ -288,6 +288,7 @@
/obj/item/godstaff/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
+ . = ..()
if(staffcooldown + staffwait > world.time)
return
user.visible_message("[user] chants deeply and waves [user.p_their()] staff!")
diff --git a/code/game/objects/items/robot/ai_upgrades.dm b/code/game/objects/items/robot/ai_upgrades.dm
index 63906ff5bad..7f7780d3a4c 100644
--- a/code/game/objects/items/robot/ai_upgrades.dm
+++ b/code/game/objects/items/robot/ai_upgrades.dm
@@ -10,6 +10,7 @@
/obj/item/malf_upgrade/afterattack(mob/living/silicon/ai/AI, mob/user)
+ . = ..()
if(!istype(AI))
return
if(AI.malf_picker)
@@ -30,6 +31,7 @@
icon_state = "datadisk3"
/obj/item/surveillance_upgrade/afterattack(mob/living/silicon/ai/AI, mob/user)
+ . = ..()
if(!istype(AI))
return
if(AI.eyeobj)
diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm
index ecf7abe1d38..e98b7984943 100644
--- a/code/game/objects/items/robot/robot_items.dm
+++ b/code/game/objects/items/robot/robot_items.dm
@@ -172,6 +172,7 @@
update_icon()
/obj/item/borg/charger/afterattack(obj/item/target, mob/living/silicon/robot/user, proximity_flag)
+ . = ..()
if(!proximity_flag || !iscyborg(user))
return
if(mode == "draw")
@@ -448,6 +449,7 @@
check_amount()
/obj/item/borg/lollipop/afterattack(atom/target, mob/living/user, proximity, click_params)
+ . = ..()
check_amount()
if(iscyborg(user))
var/mob/living/silicon/robot/R = user
diff --git a/code/game/objects/items/singularityhammer.dm b/code/game/objects/items/singularityhammer.dm
index 11248aad50c..1fe57d151f0 100644
--- a/code/game/objects/items/singularityhammer.dm
+++ b/code/game/objects/items/singularityhammer.dm
@@ -57,6 +57,7 @@
return
/obj/item/twohanded/singularityhammer/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity)
+ . = ..()
if(!proximity)
return
if(wielded)
diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm
index a6e2d255fbe..77b669ec527 100644
--- a/code/game/objects/items/stacks/sheets/glass.dm
+++ b/code/game/objects/items/stacks/sheets/glass.dm
@@ -268,6 +268,7 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
pixel_y = rand(-5, 5)
/obj/item/shard/afterattack(atom/A as mob|obj, mob/user, proximity)
+ . = ..()
if(!proximity || !(src in user))
return
if(isturf(A))
diff --git a/code/game/objects/items/stacks/telecrystal.dm b/code/game/objects/items/stacks/telecrystal.dm
index ec1e7b87736..c1fb3965293 100644
--- a/code/game/objects/items/stacks/telecrystal.dm
+++ b/code/game/objects/items/stacks/telecrystal.dm
@@ -21,6 +21,7 @@
return ..()
/obj/item/stack/telecrystal/afterattack(obj/item/I, mob/user, proximity)
+ . = ..()
if(istype(I, /obj/item/cartridge/virus/frame))
var/obj/item/cartridge/virus/frame/cart = I
if(!cart.charges)
@@ -29,8 +30,6 @@
cart.telecrystals += amount
use(amount)
to_chat(user, "You slot [src] into [cart]. The next time it's used, it will also give telecrystals.")
- else
- return ..()
/obj/item/stack/telecrystal/five
amount = 5
diff --git a/code/game/objects/items/stacks/wrap.dm b/code/game/objects/items/stacks/wrap.dm
index 3e5c9c2ba99..1225998a2cd 100644
--- a/code/game/objects/items/stacks/wrap.dm
+++ b/code/game/objects/items/stacks/wrap.dm
@@ -61,6 +61,7 @@
return 0
/obj/item/stack/packageWrap/afterattack(obj/target, mob/user, proximity)
+ . = ..()
if(!proximity)
return
if(!istype(target))
diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm
index 1066e1394c1..50e943fe1e6 100644
--- a/code/game/objects/items/storage/book.dm
+++ b/code/game/objects/items/storage/book.dm
@@ -153,6 +153,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible",
playsound(src.loc, "punch", 25, 1, -1)
/obj/item/storage/book/bible/afterattack(atom/A, mob/user, proximity)
+ . = ..()
if(!proximity)
return
if(isfloorturf(A))
diff --git a/code/game/objects/items/taster.dm b/code/game/objects/items/taster.dm
index 5f88f06af43..8363c63c2cd 100644
--- a/code/game/objects/items/taster.dm
+++ b/code/game/objects/items/taster.dm
@@ -12,6 +12,7 @@
return list()
/obj/item/taster/afterattack(atom/O, mob/user, proximity)
+ . = ..()
if(!proximity)
return
diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm
index c343abaa686..0c74f610df4 100644
--- a/code/game/objects/items/theft_tools.dm
+++ b/code/game/objects/items/theft_tools.dm
@@ -229,6 +229,7 @@
icon_state = "supermatter_tongs"
/obj/item/hemostat/supermatter/afterattack(atom/O, mob/user, proximity)
+ . = ..()
if(!sliver)
return
if(ismovableatom(O) && O != sliver)
diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm
index 4707ba9b474..db517ddb666 100644
--- a/code/game/objects/items/tools/weldingtool.dm
+++ b/code/game/objects/items/tools/weldingtool.dm
@@ -120,6 +120,7 @@
/obj/item/weldingtool/afterattack(atom/O, mob/user, proximity)
+ . = ..()
if(!proximity)
return
if(!status && O.is_refillable())
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 94ce5d96a5d..fd41b80bdb9 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -51,6 +51,7 @@
return
/obj/item/toy/balloon/afterattack(atom/A as mob|obj, mob/user, proximity)
+ . = ..()
if(!proximity)
return
if (istype(A, /obj/structure/reagent_dispensers))
@@ -176,6 +177,7 @@
return ..()
/obj/item/toy/gun/afterattack(atom/target as mob|obj|turf|area, mob/user, flag)
+ . = ..()
if (flag)
return
if (!user.IsAdvancedToolUser())
@@ -1033,6 +1035,7 @@
throwforce = 12 //pelt your enemies to death with lumps of snow
/obj/item/toy/snowball/afterattack(atom/target as mob|obj|turf|area, mob/user)
+ . = ..()
if(user.dropItemToGround(src))
throw_at(target, throw_range, throw_speed)
@@ -1052,6 +1055,7 @@
w_class = WEIGHT_CLASS_BULKY //Stops people from hiding it in their bags/pockets
/obj/item/toy/beach_ball/afterattack(atom/target as mob|obj|turf|area, mob/user)
+ . = ..()
if(user.dropItemToGround(src))
throw_at(target, throw_range, throw_speed)
diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm
index f1c766e90c6..267411a39a4 100644
--- a/code/game/objects/items/twohanded.dm
+++ b/code/game/objects/items/twohanded.dm
@@ -247,6 +247,7 @@
return (BRUTELOSS)
/obj/item/twohanded/fireaxe/afterattack(atom/A, mob/user, proximity)
+ . = ..()
if(!proximity)
return
if(wielded) //destroys windows and grilles in one hit
@@ -505,6 +506,7 @@
icon_state = "spearglass[wielded]"
/obj/item/twohanded/spear/afterattack(atom/movable/AM, mob/user, proximity)
+ . = ..()
if(!proximity)
return
if(isopenturf(AM)) //So you can actually melee with it
@@ -635,7 +637,7 @@
attack_verb = list("gored")
/obj/item/twohanded/spear/grey_tide/afterattack(atom/movable/AM, mob/living/user, proximity)
- ..()
+ . = ..()
if(!proximity)
return
user.faction |= "greytide([REF(user)])"
@@ -716,6 +718,7 @@
..()
/obj/item/twohanded/pitchfork/demonic/ascended/afterattack(atom/target, mob/user, proximity)
+ . = ..()
if(!proximity || !wielded)
return
if(iswallturf(target))
@@ -725,7 +728,6 @@
W.break_wall()
W.ScrapeAway()
return
- ..()
//HF blade
diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm
index 9ee281e62dc..e8242118692 100644
--- a/code/game/objects/items/weaponry.dm
+++ b/code/game/objects/items/weaponry.dm
@@ -579,6 +579,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
/obj/item/melee/flyswatter/afterattack(atom/target, mob/user, proximity_flag)
+ . = ..()
if(proximity_flag)
if(is_type_in_typecache(target, strong_against))
new /obj/effect/decal/cleanable/insectguts(target.drop_location())
diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm
index e8f326856af..12dcb979037 100644
--- a/code/game/objects/structures/beds_chairs/bed.dm
+++ b/code/game/objects/structures/beds_chairs/bed.dm
@@ -127,6 +127,7 @@
deploy_roller(user, user.loc)
/obj/item/roller/afterattack(obj/target, mob/user , proximity)
+ . = ..()
if(!proximity)
return
if(isopenturf(target))
diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm
index 47278179454..f75ae912fac 100644
--- a/code/game/objects/structures/beds_chairs/chair.dm
+++ b/code/game/objects/structures/beds_chairs/chair.dm
@@ -307,7 +307,7 @@
return 0
/obj/item/chair/afterattack(atom/target, mob/living/carbon/user, proximity)
- ..()
+ . = ..()
if(!proximity)
return
if(prob(break_chance))
diff --git a/code/game/objects/structures/manned_turret.dm b/code/game/objects/structures/manned_turret.dm
index df145baf940..aa55cd81b1e 100644
--- a/code/game/objects/structures/manned_turret.dm
+++ b/code/game/objects/structures/manned_turret.dm
@@ -208,7 +208,7 @@
add_fingerprint(user)
/obj/item/gun_control/afterattack(atom/targeted_atom, mob/user, flag, params)
- ..()
+ . = ..()
var/obj/machinery/manned_turret/E = user.buckled
E.calculated_projectile_vars = calculate_projectile_angle_and_pixel_offsets(user, params)
E.direction_track(user, targeted_atom)
diff --git a/code/game/objects/structures/signs/_signs.dm b/code/game/objects/structures/signs/_signs.dm
index ad943ff9fc4..56b43a289b3 100644
--- a/code/game/objects/structures/signs/_signs.dm
+++ b/code/game/objects/structures/signs/_signs.dm
@@ -103,6 +103,7 @@
var/sign_path = /obj/structure/sign/basic //the type of sign that will be created when placed on a turf
/obj/item/sign_backing/afterattack(atom/target, mob/user, proximity)
+ . = ..()
if(isturf(target) && proximity)
var/turf/T = target
user.visible_message("[user] fastens [src] to [T].", \
@@ -111,8 +112,6 @@
var/obj/structure/sign/S = new sign_path(T)
S.setDir(dir)
qdel(src)
- else
- return ..()
/obj/item/sign_backing/Move(atom/new_loc, direct = 0)
// pulling, throwing, or conveying a sign backing does not rotate it
diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
index f19521e8216..75bff75b62e 100644
--- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm
+++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
@@ -190,6 +190,7 @@
/obj/item/abductor/gizmo/afterattack(atom/target, mob/living/user, flag, params)
+ . = ..()
if(flag)
return
if(!ScientistCheck(user))
@@ -251,6 +252,7 @@
radio_off(M, user)
/obj/item/abductor/silencer/afterattack(atom/target, mob/living/user, flag, params)
+ . = ..()
if(flag)
return
if(!AbductorCheck(user))
@@ -303,6 +305,7 @@
to_chat(user, "You switch the device to [mode==MIND_DEVICE_MESSAGE? "TRANSMISSION": "COMMAND"] MODE")
/obj/item/abductor/mind_device/afterattack(atom/target, mob/living/user, flag, params)
+ . = ..()
if(!ScientistCheck(user))
return
diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm
index 08fe6bd0cec..091e75b0754 100644
--- a/code/modules/antagonists/changeling/powers/mutations.dm
+++ b/code/modules/antagonists/changeling/powers/mutations.dm
@@ -159,6 +159,7 @@
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
sharpness = IS_SHARP
var/can_drop = FALSE
+ var/fake = FALSE
/obj/item/melee/arm_blade/Initialize(mapload,silent,synthetic)
. = ..()
@@ -169,6 +170,7 @@
AddComponent(/datum/component/butchering, 60, 80)
/obj/item/melee/arm_blade/afterattack(atom/target, mob/user, proximity)
+ . = ..()
if(!proximity)
return
if(istype(target, /obj/structure/table))
diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm
index a801c87ac20..757d69a3848 100644
--- a/code/modules/antagonists/changeling/powers/tiny_prick.dm
+++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm
@@ -119,9 +119,7 @@
/obj/item/melee/arm_blade/false
desc = "A grotesque mass of flesh that used to be your arm. Although it looks dangerous at first, you can tell it's actually quite dull and useless."
force = 5 //Basically as strong as a punch
-
-/obj/item/melee/arm_blade/false/afterattack(atom/target, mob/user, proximity)
- return
+ fake = TRUE
/obj/effect/proc_holder/changeling/sting/false_armblade/can_sting(mob/user, mob/target)
if(!..())
diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm
index 847b49c354c..441d08bcd94 100644
--- a/code/modules/antagonists/cult/blood_magic.dm
+++ b/code/modules/antagonists/cult/blood_magic.dm
@@ -383,6 +383,7 @@
M.lastattackerckey = user.ckey
/obj/item/melee/blood_magic/afterattack(atom/target, mob/living/carbon/user, proximity)
+ . = ..()
if(invocation)
user.whisper(invocation, language = /datum/language/common)
if(health_cost)
diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm
index e1710dae96a..337375c5054 100644
--- a/code/modules/antagonists/cult/cult_items.dm
+++ b/code/modules/antagonists/cult/cult_items.dm
@@ -804,6 +804,7 @@
/obj/item/blood_beam/afterattack(atom/A, mob/living/user, flag, params)
+ . = ..()
if(firing || charging)
return
var/C = user.client
diff --git a/code/modules/cargo/export_scanner.dm b/code/modules/cargo/export_scanner.dm
index 2113696e908..25a2fd21b27 100644
--- a/code/modules/cargo/export_scanner.dm
+++ b/code/modules/cargo/export_scanner.dm
@@ -17,6 +17,7 @@
to_chat(user, "[src] is not currently linked to a cargo console.")
/obj/item/export_scanner/afterattack(obj/O, mob/user, proximity)
+ . = ..()
if(!istype(O) || !proximity)
return
diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm
index 59f7a1c3873..dc866977777 100644
--- a/code/modules/clothing/suits/wiz_robe.dm
+++ b/code/modules/clothing/suits/wiz_robe.dm
@@ -219,7 +219,7 @@
icon_state = "electricity2"
/obj/item/wizard_armour_charge/afterattack(obj/item/clothing/suit/space/hardsuit/shielded/wizard/W, mob/user)
- ..()
+ . = ..()
if(!istype(W))
to_chat(user, "The rune can only be used on battlemage armour!")
return
diff --git a/code/modules/detectivework/evidence.dm b/code/modules/detectivework/evidence.dm
index a97758e2948..a3b17a4c1f5 100644
--- a/code/modules/detectivework/evidence.dm
+++ b/code/modules/detectivework/evidence.dm
@@ -9,6 +9,7 @@
w_class = WEIGHT_CLASS_TINY
/obj/item/evidencebag/afterattack(obj/item/I, mob/user,proximity)
+ . = ..()
if(!proximity || loc == I)
return
evidencebagEquip(I, user)
diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm
index 50a845a6892..6c684c4ecad 100644
--- a/code/modules/detectivework/footprints_and_rag.dm
+++ b/code/modules/detectivework/footprints_and_rag.dm
@@ -24,6 +24,7 @@
return (OXYLOSS)
/obj/item/reagent_containers/glass/rag/afterattack(atom/A as obj|turf|area, mob/user,proximity)
+ . = ..()
if(!proximity)
return
if(iscarbon(A) && A.reagents && reagents.total_volume)
diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm
index e8847adb118..38ec885a504 100644
--- a/code/modules/detectivework/scanner.dm
+++ b/code/modules/detectivework/scanner.dm
@@ -59,6 +59,7 @@
scanning = 0
/obj/item/detective_scanner/afterattack(atom/A, mob/user, params)
+ . = ..()
scan(A, user)
return FALSE
diff --git a/code/modules/events/wizard/rpgloot.dm b/code/modules/events/wizard/rpgloot.dm
index d94ee0e2120..420582ddabe 100644
--- a/code/modules/events/wizard/rpgloot.dm
+++ b/code/modules/events/wizard/rpgloot.dm
@@ -34,6 +34,7 @@
var/one_use = TRUE
/obj/item/upgradescroll/afterattack(obj/item/target, mob/user , proximity)
+ . = ..()
if(!proximity || !istype(target))
return
diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm
index d84deb81324..38e78d16bc6 100644
--- a/code/modules/food_and_drinks/drinks/drinks.dm
+++ b/code/modules/food_and_drinks/drinks/drinks.dm
@@ -56,6 +56,7 @@
return 1
/obj/item/reagent_containers/food/drinks/afterattack(obj/target, mob/user , proximity)
+ . = ..()
if(!proximity)
return
@@ -93,8 +94,6 @@
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this)
to_chat(user, "You fill [src] with [trans] units of the contents of [target].")
- else
-
/obj/item/reagent_containers/food/drinks/attackby(obj/item/I, mob/user, params)
var/hotness = I.is_hot()
if(hotness && reagents)
diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm
index faafcdf7762..927cd3d36c0 100644
--- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm
+++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm
@@ -115,6 +115,7 @@
..()
/obj/item/reagent_containers/food/drinks/drinkingglass/afterattack(obj/target, mob/user, proximity)
+ . = ..()
if((!proximity) || !check_allowed_items(target,target_self=1))
return
@@ -124,5 +125,4 @@
reagents.reaction(target, TOUCH)
reagents.clear_reagents()
return
- ..()
diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm
index 53a0c2fb5b7..dff175e9e71 100644
--- a/code/modules/food_and_drinks/food/condiment.dm
+++ b/code/modules/food_and_drinks/food/condiment.dm
@@ -58,6 +58,7 @@
return 1
/obj/item/reagent_containers/food/condiment/afterattack(obj/target, mob/user , proximity)
+ . = ..()
if(!proximity)
return
if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
@@ -146,6 +147,7 @@
return (TOXLOSS)
/obj/item/reagent_containers/food/condiment/saltshaker/afterattack(obj/target, mob/living/user, proximity)
+ . = ..()
if(!proximity)
return
if(isturf(target))
@@ -156,7 +158,6 @@
reagents.remove_reagent("sodiumchloride", 2)
new/obj/effect/decal/cleanable/salt(target)
return
- ..()
/obj/item/reagent_containers/food/condiment/peppermill
name = "pepper mill"
@@ -241,6 +242,7 @@
return
/obj/item/reagent_containers/food/condiment/pack/afterattack(obj/target, mob/user , proximity)
+ . = ..()
if(!proximity)
return
diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm
index a74c7c6f697..53389837a37 100644
--- a/code/modules/food_and_drinks/food/snacks.dm
+++ b/code/modules/food_and_drinks/food/snacks.dm
@@ -120,11 +120,6 @@
return 0
-
-/obj/item/reagent_containers/food/snacks/afterattack(obj/target, mob/user , proximity)
- return
-
-
/obj/item/reagent_containers/food/snacks/examine(mob/user)
..()
if(bitecount == 0)
diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm
index 62c3c0b0643..c2698c13672 100644
--- a/code/modules/hydroponics/grown/flowers.dm
+++ b/code/modules/hydroponics/grown/flowers.dm
@@ -199,6 +199,7 @@
log_game("[key_name(user)] set [key_name(M)] on fire with [src] at [AREACOORD(user)]")
/obj/item/grown/novaflower/afterattack(atom/A as mob|obj, mob/user,proximity)
+ . = ..()
if(!proximity)
return
if(force > 0)
diff --git a/code/modules/hydroponics/grown/nettle.dm b/code/modules/hydroponics/grown/nettle.dm
index bb1a0d2f23e..962fa86d4d1 100644
--- a/code/modules/hydroponics/grown/nettle.dm
+++ b/code/modules/hydroponics/grown/nettle.dm
@@ -67,6 +67,7 @@
return TRUE
/obj/item/grown/nettle/afterattack(atom/A as mob|obj, mob/user,proximity)
+ . = ..()
if(!proximity)
return
if(force > 0)
diff --git a/code/modules/integrated_electronics/core/analyzer.dm b/code/modules/integrated_electronics/core/analyzer.dm
index 89b990f352a..7e30529bf4a 100644
--- a/code/modules/integrated_electronics/core/analyzer.dm
+++ b/code/modules/integrated_electronics/core/analyzer.dm
@@ -7,6 +7,7 @@
w_class = WEIGHT_CLASS_SMALL
/obj/item/integrated_electronics/analyzer/afterattack(var/atom/A, var/mob/living/user)
+ . = ..()
if(istype(A, /obj/item/electronic_assembly))
var/saved = "[A.name] analyzed! On circuit printers with cloning enabled, you may use the code below to clone the circuit:
[SScircuit.save_electronic_assembly(A)]"
if(saved)
@@ -14,5 +15,3 @@
user << browse(saved, "window=circuit_scan;size=500x600;border=1;can_resize=1;can_close=1;can_minimize=1")
else
to_chat(user, "[A] is not complete enough to be encoded!")
- else
- ..()
diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm
index d39163b5474..b8aabb88517 100644
--- a/code/modules/integrated_electronics/core/assemblies.dm
+++ b/code/modules/integrated_electronics/core/assemblies.dm
@@ -420,6 +420,7 @@
/obj/item/electronic_assembly/afterattack(atom/target, mob/user, proximity)
+ . = ..()
for(var/obj/item/integrated_circuit/input/S in assembly_components)
if(S.sense(target,user,proximity))
visible_message(" [user] waves [src] around [target].")
diff --git a/code/modules/integrated_electronics/core/debugger.dm b/code/modules/integrated_electronics/core/debugger.dm
index d6f6a551ad6..ceaee08fa15 100644
--- a/code/modules/integrated_electronics/core/debugger.dm
+++ b/code/modules/integrated_electronics/core/debugger.dm
@@ -38,14 +38,13 @@
to_chat(user, "You set \the [src]'s memory to absolutely nothing.")
/obj/item/integrated_electronics/debugger/afterattack(atom/target, mob/living/user, proximity)
+ . = ..()
if(accepting_refs && proximity)
data_to_write = WEAKREF(target)
visible_message("[user] slides \a [src]'s over \the [target].")
to_chat(user, "You set \the [src]'s memory to a reference to [target.name] \[Ref\]. The ref scanner is \
now off.")
accepting_refs = FALSE
- else
- return ..()
/obj/item/integrated_electronics/debugger/proc/write_data(var/datum/integrated_io/io, mob/user)
if(io.io_type == DATA_CHANNEL)
diff --git a/code/modules/integrated_electronics/subtypes/memory.dm b/code/modules/integrated_electronics/subtypes/memory.dm
index fe746575325..93d800807a7 100644
--- a/code/modules/integrated_electronics/subtypes/memory.dm
+++ b/code/modules/integrated_electronics/subtypes/memory.dm
@@ -129,6 +129,7 @@
to_chat(user, "You set \the [src]'s memory to absolutely nothing.")
/obj/item/integrated_circuit/memory/constant/afterattack(atom/target, mob/living/user, proximity)
+ . = ..()
if(accepting_refs && proximity)
var/datum/integrated_io/O = outputs[1]
O.data = WEAKREF(target)
diff --git a/code/modules/library/soapstone.dm b/code/modules/library/soapstone.dm
index e51103937f6..88d1248a281 100644
--- a/code/modules/library/soapstone.dm
+++ b/code/modules/library/soapstone.dm
@@ -19,6 +19,7 @@
to_chat(user, "It has [remaining_uses] uses left.")
/obj/item/soapstone/afterattack(atom/target, mob/user, proximity)
+ . = ..()
var/turf/T = get_turf(target)
if(!proximity)
return
diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm
index 5b1110acab8..7a9c8f7103f 100644
--- a/code/modules/mining/equipment/kinetic_crusher.dm
+++ b/code/modules/mining/equipment/kinetic_crusher.dm
@@ -72,6 +72,7 @@
C.total_damage += target_health - target.health //we did some damage, but let's not assume how much we did
/obj/item/twohanded/required/kinetic_crusher/afterattack(atom/target, mob/living/user, proximity_flag, clickparams)
+ . = ..()
if(!proximity_flag && charged)//Mark a target, or mine a tile.
var/turf/proj_turf = user.loc
if(!isturf(proj_turf))
diff --git a/code/modules/mining/equipment/lazarus_injector.dm b/code/modules/mining/equipment/lazarus_injector.dm
index 6947b5b23f4..b2a2e3357d3 100644
--- a/code/modules/mining/equipment/lazarus_injector.dm
+++ b/code/modules/mining/equipment/lazarus_injector.dm
@@ -16,6 +16,7 @@
var/revive_type = SENTIENCE_ORGANIC //So you can't revive boss monsters or robots with it
/obj/item/lazarus_injector/afterattack(atom/target, mob/user, proximity_flag)
+ . = ..()
if(!loaded)
return
if(isliving(target) && proximity_flag)
diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm
index 43be61dd779..cbff942fc43 100644
--- a/code/modules/mining/equipment/regenerative_core.dm
+++ b/code/modules/mining/equipment/regenerative_core.dm
@@ -7,6 +7,7 @@
w_class = WEIGHT_CLASS_TINY
/obj/item/hivelordstabilizer/afterattack(obj/item/organ/M, mob/user)
+ . = ..()
var/obj/item/organ/regenerative_core/C = M
if(!istype(C, /obj/item/organ/regenerative_core))
to_chat(user, "The stabilizer only works on certain types of monster organs, generally regenerative in nature.")
@@ -66,6 +67,7 @@
ui_action_click()
/obj/item/organ/regenerative_core/afterattack(atom/target, mob/user, proximity_flag)
+ . = ..()
if(proximity_flag && ishuman(target))
var/mob/living/carbon/human/H = target
if(inert)
@@ -83,7 +85,6 @@
SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "self"))
H.revive(full_heal = 1)
qdel(src)
- ..()
/obj/item/organ/regenerative_core/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
. = ..()
diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm
index d6ea55855df..f97d3612a85 100644
--- a/code/modules/mining/fulton.dm
+++ b/code/modules/mining/fulton.dm
@@ -38,6 +38,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons)
to_chat(user, "You link the extraction pack to the beacon system.")
/obj/item/extraction_pack/afterattack(atom/movable/A, mob/living/carbon/human/user, flag, params)
+ . = ..()
if(!beacon)
to_chat(user, "[src] is not linked to a beacon, and cannot be used.")
return
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index 79adcdf9d83..157fb5dc934 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -899,7 +899,7 @@
var/static/list/banned_turfs = typecacheof(list(/turf/open/space/transit, /turf/closed))
/obj/item/lava_staff/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
- ..()
+ . = ..()
if(timer > world.time)
return
@@ -1097,7 +1097,7 @@
qdel(user)
/obj/item/hierophant_club/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
- ..()
+ . = ..()
var/turf/T = get_turf(target)
if(!T || timer > world.time)
return
diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm
index a9230195ac4..d225eee17f1 100644
--- a/code/modules/mining/machine_vending.dm
+++ b/code/modules/mining/machine_vending.dm
@@ -259,6 +259,7 @@
icon_state = "data"
/obj/item/card/mining_access_card/afterattack(atom/movable/AM, mob/user, proximity)
+ . = ..()
if(istype(AM, /obj/item/card/id) && proximity)
var/obj/item/card/id/I = AM
I.access |= ACCESS_MINING
@@ -267,7 +268,6 @@
I.access |= ACCESS_CARGO
to_chat(user, "You upgrade [I] with mining access.")
qdel(src)
- ..()
/obj/item/storage/backpack/duffelbag/mining_conscript
name = "mining conscription kit"
diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm
index 3809514f024..15ff372c47f 100644
--- a/code/modules/mining/minebot.dm
+++ b/code/modules/mining/minebot.dm
@@ -270,6 +270,7 @@
icon = 'icons/obj/module.dmi'
/obj/item/mine_bot_upgrade/afterattack(mob/living/simple_animal/hostile/mining_drone/M, mob/user, proximity)
+ . = ..()
if(!istype(M) || !proximity)
return
upgrade_bot(M, user)
diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
index 22a44e3fa77..3d42fb32cff 100644
--- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
@@ -180,6 +180,7 @@
AddComponent(/datum/component/butchering, 80, 70)
/obj/item/light_eater/afterattack(atom/movable/AM, mob/user, proximity)
+ . = ..()
if(!proximity)
return
if(isopenturf(AM)) //So you can actually melee with it
diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm
index 8573c3b7cb5..b09b3e768b2 100644
--- a/code/modules/mob/living/simple_animal/hostile/bear.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bear.dm
@@ -81,6 +81,7 @@
icon_state = "bear_armor_upgrade"
/obj/item/bear_armor/afterattack(atom/target, mob/user, proximity_flag)
+ . = ..()
if(istype(target, /mob/living/simple_animal/hostile/bear) && proximity_flag)
var/mob/living/simple_animal/hostile/bear/A = target
if(A.armored)
diff --git a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm
index d262725d7ba..ec7451dc2ec 100644
--- a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm
+++ b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm
@@ -127,6 +127,7 @@
var/list/banned_mobs
/obj/item/fugu_gland/afterattack(atom/target, mob/user, proximity_flag)
+ . = ..()
if(proximity_flag && isanimal(target))
var/mob/living/simple_animal/A = target
if(A.buffed || (A.type in banned_mobs) || A.stat)
diff --git a/code/modules/ninja/energy_katana.dm b/code/modules/ninja/energy_katana.dm
index 2943dde559e..97c41faf128 100644
--- a/code/modules/ninja/energy_katana.dm
+++ b/code/modules/ninja/energy_katana.dm
@@ -33,6 +33,7 @@
to_chat(user, "You [dash_toggled ? "enable" : "disable"] the dash function on [src].")
/obj/item/energy_katana/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
+ . = ..()
if(dash_toggled)
jaunt.Teleport(user, target)
if(proximity_flag && (isobj(target) || issilicon(target)))
diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm
index ea68899eb3d..574fa1f98b4 100644
--- a/code/modules/paperwork/handlabeler.dm
+++ b/code/modules/paperwork/handlabeler.dm
@@ -36,6 +36,7 @@
return OXYLOSS
/obj/item/hand_labeler/afterattack(atom/A, mob/user,proximity)
+ . = ..()
if(!proximity)
return
if(!mode) //if it's off, give up.
@@ -89,7 +90,7 @@
name = "cyborg-hand labeler"
/obj/item/hand_labeler/borg/afterattack(atom/A, mob/user, proximity)
- ..(A, user, proximity)
+ . = ..(A, user, proximity)
if(!iscyborg(user))
return
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index 9b7d3ae8846..4bc006efbd0 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -123,6 +123,7 @@
. = ..()
/obj/item/pen/afterattack(obj/O, mob/living/user, proximity)
+ . = ..()
//Changing Name/Description of items. Only works if they have the 'unique_rename' flag set
if(isobj(O) && proximity && (O.obj_flags & UNIQUE_RENAME))
var/penchoice = input(user, "What would you like to edit?", "Rename or change description?") as null|anything in list("Rename","Change description")
diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm
index 0fa3a36d194..a5644171b27 100644
--- a/code/modules/paperwork/photography.dm
+++ b/code/modules/paperwork/photography.dm
@@ -459,6 +459,7 @@
viewpichelper(Ainfo)
/obj/item/camera/afterattack(atom/target, mob/user, flag)
+ . = ..()
if(!on || !pictures_left || !isturf(target.loc))
return
if (disk)
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index bf032562191..e3b2bf59caf 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -405,7 +405,7 @@
var/delay = 0
/obj/item/turret_control/afterattack(atom/targeted_atom, mob/user, proxflag, clickparams)
- ..()
+ . = ..()
var/obj/machinery/power/emitter/E = user.buckled
E.setDir(get_dir(E,targeted_atom))
user.setDir(E.dir)
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index d9c62f79f89..837c65a7c17 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -130,6 +130,7 @@
O.emp_act(severity)
/obj/item/gun/afterattack(atom/target, mob/living/user, flag, params)
+ . = ..()
if(firing_burst)
return
if(flag) //It's adjacent, is the user, or is on the user's person
diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm
index 420e6c78cec..c3206a6a028 100644
--- a/code/modules/projectiles/guns/ballistic/automatic.dm
+++ b/code/modules/projectiles/guns/ballistic/automatic.dm
@@ -104,7 +104,7 @@
update_icon()
/obj/item/gun/ballistic/automatic/c20r/afterattack()
- ..()
+ . = ..()
empty_alarm()
return
@@ -167,7 +167,7 @@
if(select == 2)
underbarrel.afterattack(target, user, flag, params)
else
- ..()
+ . = ..()
return
/obj/item/gun/ballistic/automatic/m90/attackby(obj/item/A, mob/user, params)
if(istype(A, /obj/item/ammo_casing))
@@ -264,7 +264,7 @@
icon_state = "bulldog[chambered ? "" : "-e"]"
/obj/item/gun/ballistic/automatic/shotgun/bulldog/afterattack()
- ..()
+ . = ..()
empty_alarm()
return
@@ -317,7 +317,7 @@
if(cover_open)
to_chat(user, "[src]'s cover is open! Close it before firing!")
else
- ..()
+ . = ..()
update_icon()
//ATTACK HAND IGNORING PARENT RETURN VALUE
diff --git a/code/modules/projectiles/guns/ballistic/laser_gatling.dm b/code/modules/projectiles/guns/ballistic/laser_gatling.dm
index db5beb21ed6..49ced8ff399 100644
--- a/code/modules/projectiles/guns/ballistic/laser_gatling.dm
+++ b/code/modules/projectiles/guns/ballistic/laser_gatling.dm
@@ -141,7 +141,7 @@
/obj/item/gun/ballistic/minigun/afterattack(atom/target, mob/living/user, flag, params)
if(!ammo_pack || ammo_pack.loc != user)
to_chat(user, "You need the backpack power source to fire the gun!")
- ..()
+ . = ..()
/obj/item/gun/ballistic/minigun/dropped(mob/living/user)
ammo_pack.attach_gun(user)
diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm
index cd115223421..c9658818e2d 100644
--- a/code/modules/projectiles/guns/ballistic/revolver.dm
+++ b/code/modules/projectiles/guns/ballistic/revolver.dm
@@ -191,6 +191,7 @@
..()
/obj/item/gun/ballistic/revolver/russian/afterattack(atom/target, mob/living/user, flag, params)
+ . = ..()
if(flag)
if(!(target in user.contents) && ismob(target))
if(user.a_intent == INTENT_HARM) // Flogging action
diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm
index ef705263c20..9dd25bf3e3f 100644
--- a/code/modules/projectiles/guns/magic.dm
+++ b/code/modules/projectiles/guns/magic.dm
@@ -31,7 +31,7 @@
return
else
no_den_usage = 0
- ..()
+ . = ..()
/obj/item/gun/magic/can_shoot()
return charges
diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm
index 9c9d253439c..ae20720a440 100644
--- a/code/modules/projectiles/guns/magic/wand.dm
+++ b/code/modules/projectiles/guns/magic/wand.dm
@@ -43,7 +43,7 @@
no_den_usage = 0
zap_self(user)
else
- ..()
+ . = ..()
update_icon()
diff --git a/code/modules/projectiles/guns/misc/grenade_launcher.dm b/code/modules/projectiles/guns/misc/grenade_launcher.dm
index e51c3573e31..eb36438a6c0 100644
--- a/code/modules/projectiles/guns/misc/grenade_launcher.dm
+++ b/code/modules/projectiles/guns/misc/grenade_launcher.dm
@@ -28,16 +28,10 @@
else
to_chat(usr, "The grenade launcher cannot hold more grenades.")
-/obj/item/gun/grenadelauncher/afterattack(obj/target, mob/user , flag)
- if(target == user)
- return
+/obj/item/gun/grenadelauncher/can_shoot()
+ return grenades.len
- if(grenades.len)
- fire_grenade(target,user)
- else
- to_chat(user, "The grenade launcher is empty.")
-
-/obj/item/gun/grenadelauncher/proc/fire_grenade(atom/target, mob/user)
+/obj/item/gun/grenadelauncher/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0)
user.visible_message("[user] fired a grenade!", \
"You fire the grenade launcher!")
var/obj/item/grenade/F = grenades[1] //Now with less copypasta!
diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm
index f132d62b27c..2f33fcad211 100644
--- a/code/modules/projectiles/pins.dm
+++ b/code/modules/projectiles/pins.dm
@@ -19,6 +19,7 @@
gun = newloc
/obj/item/firing_pin/afterattack(atom/target, mob/user, proximity_flag)
+ . = ..()
if(proximity_flag)
if(istype(target, /obj/item/gun))
var/obj/item/gun/G = target
@@ -156,7 +157,7 @@
var/unique_enzymes = null
/obj/item/firing_pin/dna/afterattack(atom/target, mob/user, proximity_flag)
- ..()
+ . = ..()
if(proximity_flag && iscarbon(target))
var/mob/living/carbon/M = target
if(M.dna && M.dna.unique_enzymes)
diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm
index 4a40addc5d1..fc2fed3a21b 100644
--- a/code/modules/reagents/reagent_containers.dm
+++ b/code/modules/reagents/reagent_containers.dm
@@ -45,9 +45,6 @@
if(user.a_intent == INTENT_HARM)
return ..()
-/obj/item/reagent_containers/afterattack(obj/target, mob/user , flag)
- return
-
/obj/item/reagent_containers/proc/canconsume(mob/eater, mob/user)
if(!iscarbon(eater))
return 0
diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm
index 911571a3bda..61ed1ef61e6 100644
--- a/code/modules/reagents/reagent_containers/borghydro.dm
+++ b/code/modules/reagents/reagent_containers/borghydro.dm
@@ -197,6 +197,7 @@ Borg Shaker
RG.add_reagent(reagent_ids[valueofi], 5)
/obj/item/reagent_containers/borghypo/borgshaker/afterattack(obj/target, mob/user, proximity)
+ . = ..()
if(!proximity)
return
diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm
index 144db32a6cb..092a89a6851 100644
--- a/code/modules/reagents/reagent_containers/dropper.dm
+++ b/code/modules/reagents/reagent_containers/dropper.dm
@@ -9,6 +9,7 @@
container_type = TRANSPARENT
/obj/item/reagent_containers/dropper/afterattack(obj/target, mob/user , proximity)
+ . = ..()
if(!proximity)
return
if(!target.reagents)
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 596973a2c44..8da31a7ba1a 100755
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -53,6 +53,7 @@
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
/obj/item/reagent_containers/glass/afterattack(obj/target, mob/user, proximity)
+ . = ..()
if((!proximity) || !check_allowed_items(target,target_self=1))
return
diff --git a/code/modules/reagents/reagent_containers/patch.dm b/code/modules/reagents/reagent_containers/patch.dm
index ac064c9c151..b11ef878b6d 100644
--- a/code/modules/reagents/reagent_containers/patch.dm
+++ b/code/modules/reagents/reagent_containers/patch.dm
@@ -9,9 +9,7 @@
apply_type = PATCH
apply_method = "apply"
self_delay = 30 // three seconds
-
-/obj/item/reagent_containers/pill/patch/afterattack(obj/target, mob/user , proximity)
- return // thanks inheritance again
+ dissolvable = FALSE
/obj/item/reagent_containers/pill/patch/attack(mob/living/L, mob/user)
if(ishuman(L))
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index d2f840cda33..d0da035a9f0 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -13,6 +13,7 @@
var/apply_method = "swallow"
var/roundstart = 0
var/self_delay = 0 //pills are instant, this is because patches inheret their aplication from pills
+ var/dissolvable = TRUE
/obj/item/reagent_containers/pill/Initialize()
. = ..()
@@ -55,22 +56,24 @@
/obj/item/reagent_containers/pill/afterattack(obj/target, mob/user , proximity)
+ . = ..()
if(!proximity)
return
- if(target.is_refillable())
- if(target.is_drainable() && !target.reagents.total_volume)
- to_chat(user, "[target] is empty! There's nothing to dissolve [src] in.")
- return
+ if(!dissolvable || !target.is_refillable())
+ return
+ if(target.is_drainable() && !target.reagents.total_volume)
+ to_chat(user, "[target] is empty! There's nothing to dissolve [src] in.")
+ return
- if(target.reagents.holder_full())
- to_chat(user, "[target] is full.")
- return
+ if(target.reagents.holder_full())
+ to_chat(user, "[target] is full.")
+ return
- to_chat(user, "You dissolve [src] in [target].")
- for(var/mob/O in viewers(2, user)) //viewers is necessary here because of the small radius
- to_chat(O, "[user] slips something into [target]!")
- reagents.trans_to(target, reagents.total_volume)
- qdel(src)
+ to_chat(user, "You dissolve [src] in [target].")
+ for(var/mob/O in viewers(2, user)) //viewers is necessary here because of the small radius
+ to_chat(O, "[user] slips something into [target]!")
+ reagents.trans_to(target, reagents.total_volume)
+ qdel(src)
/obj/item/reagent_containers/pill/tox
name = "toxins pill"
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index 91a22ff1fb1..e3576b36250 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -24,6 +24,7 @@
possible_transfer_amounts = list(5,10,15,20,25,30,50,100)
/obj/item/reagent_containers/spray/afterattack(atom/A, mob/user)
+ . = ..()
if(istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart) || istype(A, /obj/machinery/hydroponics))
return
@@ -195,7 +196,7 @@
/obj/item/reagent_containers/spray/pepper/afterattack(atom/A as mob|obj, mob/user)
if (A.loc == user)
return
- ..()
+ . = ..()
//water flower
/obj/item/reagent_containers/spray/waterflower
@@ -273,7 +274,7 @@
// Make it so the bioterror spray doesn't spray yourself when you click your inventory items
if (A.loc == user)
return
- ..()
+ . = ..()
/obj/item/reagent_containers/spray/chemsprayer/spray(atom/A)
var/direction = get_dir(src, A)
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 3e7cd539d02..0ba781d9624 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -48,6 +48,7 @@
return
/obj/item/reagent_containers/syringe/afterattack(atom/target, mob/user , proximity)
+ . = ..()
if(busy)
return
if(!proximity)
diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm
index 8acecf25a1d..5875e821a3f 100644
--- a/code/modules/recycling/conveyor2.dm
+++ b/code/modules/recycling/conveyor2.dm
@@ -343,6 +343,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id)
id = C.id
/obj/item/conveyor_construct/afterattack(atom/A, mob/user, proximity)
+ . = ..()
if(!proximity || user.stat || !isfloorturf(A) || istype(A, /area/shuttle))
return
var/cdir = get_dir(A, user)
@@ -366,6 +367,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id)
id = "[rand()]" //this couldn't possibly go wrong
/obj/item/conveyor_switch_construct/afterattack(atom/A, mob/user, proximity)
+ . = ..()
if(!proximity || user.stat || !isfloorturf(A) || istype(A, /area/shuttle))
return
var/found = 0
diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm
index ba50229d9c1..48f822f7ca6 100644
--- a/code/modules/research/xenobiology/crossbreeding/burning.dm
+++ b/code/modules/research/xenobiology/crossbreeding/burning.dm
@@ -300,7 +300,7 @@ Burning extracts:
if(!on || !pictures_left || !isturf(target.loc))
return
new /obj/effect/timestop(get_turf(target), 2, 50, list(user))
- ..()
+ . = ..()
var/text = "The camera fades away"
if(disk)
text += ", leaving the disk behind!"
diff --git a/code/modules/research/xenobiology/crossbreeding/charged.dm b/code/modules/research/xenobiology/crossbreeding/charged.dm
index 8ae7bf8d540..c95b892dde6 100644
--- a/code/modules/research/xenobiology/crossbreeding/charged.dm
+++ b/code/modules/research/xenobiology/crossbreeding/charged.dm
@@ -315,7 +315,7 @@ Charged extracts:
var/uses = 2
/obj/item/slimepotion/spaceproof/afterattack(obj/item/clothing/C, mob/user, proximity)
- ..()
+ . = ..()
if(!uses)
qdel(src)
return
@@ -352,7 +352,7 @@ Charged extracts:
var/uses = 2
/obj/item/slimepotion/lavaproof/afterattack(obj/item/C, mob/user, proximity)
- ..()
+ . = ..()
if(!uses)
qdel(src)
return ..()
diff --git a/code/modules/research/xenobiology/crossbreeding/prismatic.dm b/code/modules/research/xenobiology/crossbreeding/prismatic.dm
index 41063de3d1d..65e66aa0e2b 100644
--- a/code/modules/research/xenobiology/crossbreeding/prismatic.dm
+++ b/code/modules/research/xenobiology/crossbreeding/prismatic.dm
@@ -22,6 +22,7 @@ Prismatic extracts:
desc = "It's constantly wet with a pungent-smelling, clear chemical."
/obj/item/slimecross/prismatic/grey/afterattack(turf/target, mob/user, proximity)
+ . = ..()
if(!proximity)
return
if(istype(target) && target.color != initial(target.color))
diff --git a/code/modules/research/xenobiology/crossbreeding/regenerative.dm b/code/modules/research/xenobiology/crossbreeding/regenerative.dm
index 7c8d8fa78ff..a0ccdf15498 100644
--- a/code/modules/research/xenobiology/crossbreeding/regenerative.dm
+++ b/code/modules/research/xenobiology/crossbreeding/regenerative.dm
@@ -16,6 +16,7 @@ Regenerative extracts:
/obj/item/slimecross/regenerative/afterattack(atom/target,mob/user,prox)
+ . = ..()
if(!prox || !isliving(target))
return
var/mob/living/H = target
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index b8cc61df978..59718eee8a7 100644
--- a/code/modules/research/xenobiology/xenobiology.dm
+++ b/code/modules/research/xenobiology/xenobiology.dm
@@ -615,6 +615,7 @@
w_class = WEIGHT_CLASS_TINY
/obj/item/slimepotion/afterattack(obj/item/reagent_containers/target, mob/user , proximity)
+ . = ..()
if (istype(target))
to_chat(user, "You cannot transfer [src] to [target]! It appears the potion must be given directly to a slime to absorb." )
return
@@ -833,7 +834,7 @@
icon_state = "potyellow"
/obj/item/slimepotion/speed/afterattack(obj/C, mob/user)
- ..()
+ . = ..()
if(!istype(C))
to_chat(user, "The potion can only be used on items or vehicles!")
return
@@ -866,7 +867,7 @@
var/uses = 3
/obj/item/slimepotion/fireproof/afterattack(obj/item/clothing/C, mob/user)
- ..()
+ . = ..()
if(!uses)
qdel(src)
return
diff --git a/code/modules/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/ruins/objects_and_mobs/sin_ruins.dm
index 7ad8a136f96..caa2ca7adff 100644
--- a/code/modules/ruins/objects_and_mobs/sin_ruins.dm
+++ b/code/modules/ruins/objects_and_mobs/sin_ruins.dm
@@ -129,7 +129,7 @@
hitsound = 'sound/weapons/bladeslice.ogg'
/obj/item/kitchen/knife/envy/afterattack(atom/movable/AM, mob/living/carbon/human/user, proximity)
- ..()
+ . = ..()
if(!proximity)
return
if(!istype(user))
diff --git a/code/modules/spells/spell_types/godhand.dm b/code/modules/spells/spell_types/godhand.dm
index 27cfc9208ba..5d07b88ca7b 100644
--- a/code/modules/spells/spell_types/godhand.dm
+++ b/code/modules/spells/spell_types/godhand.dm
@@ -24,6 +24,7 @@
..()
/obj/item/melee/touch_attack/afterattack(atom/target, mob/user, proximity)
+ . = ..()
user.say(catchphrase)
playsound(get_turf(user), on_use_sound,50,1)
charges--
@@ -63,10 +64,9 @@
var/obj/item/bodypart/part = user.get_holding_bodypart_of_item(src)
if(part)
part.dismember()
- ..()
- return
+ return ..()
M.gib()
- ..()
+ return ..()
/obj/item/melee/touch_attack/fleshtostone
name = "\improper petrifying touch"
@@ -93,4 +93,4 @@
return
M.Stun(40)
M.petrify()
- ..()
+ return ..()
diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm
index 0601ff28e14..e97627f16fc 100644
--- a/code/modules/station_goals/dna_vault.dm
+++ b/code/modules/station_goals/dna_vault.dm
@@ -78,7 +78,7 @@
dna = list()
/obj/item/dna_probe/afterattack(atom/target, mob/user, proximity)
- ..()
+ . = ..()
if(!proximity || !target)
return
//tray plants
diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm
index 7afee36543e..e71403a9217 100644
--- a/code/modules/surgery/tools.dm
+++ b/code/modules/surgery/tools.dm
@@ -198,6 +198,7 @@
icon_state = "evidenceobj"
/obj/item/organ_storage/afterattack(obj/item/I, mob/user, proximity)
+ . = ..()
if(!proximity)
return
if(contents.len)