diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 9dc4312c009..df257364a90 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -258,7 +258,7 @@ its easier to just keep the beam vertical. /atom/proc/fire_act() return -/atom/proc/hitby(atom/movable/AM, skip, var/hitpush) +/atom/proc/hitby(atom/movable/AM, skipcatch, hitpush) if(density && !has_gravity(AM)) //thrown stuff bounces off dense stuff in no grav. spawn(2) step(AM, turn(AM.dir, 180)) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index e7f259c71a2..49a050b3bd3 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -155,10 +155,10 @@ /atom/movable/proc/throw_impact(atom/hit_atom) return hit_atom.hitby(src) -/atom/movable/hitby(atom/movable/AM, skip, var/hitpush = 1) +/atom/movable/hitby(atom/movable/AM, skipcatch, hitpush = 1) if(!anchored && hitpush) step(src, AM.dir) - return ..() + ..() /atom/movable/proc/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0) if(!target || !src || (flags & NODROP)) return 0 diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 6b4660a28f0..1057c2b4742 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -476,7 +476,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s var/itempush = 1 if(w_class < 4) itempush = 0 //too light to push anything - return A.hitby(src,thrownby, 0, itempush) + return A.hitby(src, 0, itempush) /obj/item/throw_at(atom/target, range, speed, mob/thrower, spin=1) thrownby = thrower diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm index 7f1e5337575..fd3fff64a4b 100644 --- a/code/modules/mob/living/carbon/alien/alien_defense.dm +++ b/code/modules/mob/living/carbon/alien/alien_defense.dm @@ -1,5 +1,5 @@ -/mob/living/carbon/alien/hitby(atom/movable/AM) - ..(AM, skip = 1) +/mob/living/carbon/alien/hitby(atom/movable/AM, skipcatch, hitpush) + ..(AM, skipcatch = 1, hitpush = 0) /*Code for aliens attacking aliens. Because aliens act on a hivemind, I don't see them as very aggressive with each other. diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 3c92e6403a1..80224f72e38 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -1,5 +1,5 @@ -/mob/living/carbon/hitby(atom/movable/AM, skip) - if(!skip) //ugly, but easy +/mob/living/carbon/hitby(atom/movable/AM, skipcatch, hitpush = 1) + if(!skipcatch) //ugly, but easy if(in_throw_mode && !get_active_hand()) //empty active hand and we're in throw mode if(canmove && !restrained()) if(istype(AM, /obj/item)) @@ -9,7 +9,7 @@ visible_message("[src] catches [I]!") throw_mode_off() return 1 - return ..() + ..() /mob/living/carbon/throw_impact(atom/hit_atom) . = ..() diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index fc4afd3b1b4..86c3b23fd50 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -455,6 +455,8 @@ emp_act ..() /mob/living/carbon/human/hitby(atom/movable/AM) + var/hitpush = 1 + var/skipcatch = 0 if(AM.throw_speed >= EMBED_THROWSPEED_THRESHOLD) if(istype(AM, /obj/item)) var/obj/item/I = AM @@ -467,5 +469,6 @@ emp_act I.loc = src L.take_damage(I.w_class*I.embedded_impact_pain_multiplier) visible_message("\the [I.name] embeds itself in [src]'s [L.getDisplayName()]!","\the [I.name] embeds itself in your [L.getDisplayName()]!") - return - return ..() + hitpush = 0 + skipcatch = 1 //can't catch the now embedded item + return ..(AM, skipcatch, hitpush) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 9d8017d0c2b..9a332445538 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -44,7 +44,7 @@ else return 0 -/mob/living/hitby(atom/movable/AM) +/mob/living/hitby(atom/movable/AM, skipcatch, hitpush = 1) if(istype(AM, /obj/item)) var/obj/item/I = AM var/zone = ran_zone("chest", 65)//Hits a random part of the body, geared towards the chest @@ -75,7 +75,7 @@ add_logs(I.thrownby, src, "hit", I) else playsound(loc, 'sound/weapons/genhit.ogg', 50, 1, -1) - return ..() + ..() /mob/living/mech_melee_attack(obj/mecha/M) if(M.occupant.a_intent == "harm")