Refactored CollidedWith (#19541)

Refactored CollidedWith()
This commit is contained in:
Fluffy
2024-06-29 10:01:18 +00:00
committed by GitHub
parent d63d63d78c
commit d8d67ebd3a
31 changed files with 317 additions and 183 deletions
@@ -111,20 +111,20 @@
SPAN_NOTICE("[src] has been whittled away under your careful excavation, but there was nothing of interest inside."))
qdel(src)
/obj/structure/boulder/CollidedWith(AM)
/obj/structure/boulder/CollidedWith(atom/bumped_atom)
. = ..()
if(istype(AM,/mob/living/carbon/human))
var/mob/living/carbon/human/H = AM
if(istype(bumped_atom,/mob/living/carbon/human))
var/mob/living/carbon/human/H = bumped_atom
if((istype(H.l_hand,/obj/item/pickaxe)) && (!H.hand))
var/obj/item/pickaxe/P = H.l_hand
if(P.autodrill)
attackby(H.l_hand,H)
INVOKE_ASYNC(src, TYPE_PROC_REF(/atom, attackby), H.l_hand, H)
else if((istype(H.r_hand,/obj/item/pickaxe)) && H.hand)
var/obj/item/pickaxe/P = H.r_hand
if(P.autodrill)
attackby(H.r_hand,H)
INVOKE_ASYNC(src, TYPE_PROC_REF(/atom, attackby), H.r_hand, H)
else if(istype(AM,/mob/living/silicon/robot))
var/mob/living/silicon/robot/R = AM
else if(istype(bumped_atom,/mob/living/silicon/robot))
var/mob/living/silicon/robot/R = bumped_atom
if(istype(R.module_active,/obj/item/pickaxe))
attackby(R.module_active,R)
INVOKE_ASYNC(src, TYPE_PROC_REF(/atom, attackby), R.module_active, R)
@@ -244,33 +244,39 @@
if(secondary_effect?.trigger == TRIGGER_FORCE)
secondary_effect.ToggleActivate()
/obj/machinery/artifact/CollidedWith(M as mob|obj)
/obj/machinery/artifact/CollidedWith(atom/bumped_atom)
..()
if(istype(M,/obj))
if(M:throwforce >= 10)
if(istype(bumped_atom, /obj))
var/obj/O = bumped_atom
if(O.throwforce >= 10)
if(my_effect.trigger == TRIGGER_FORCE)
my_effect.ToggleActivate()
if(secondary_effect?.trigger == TRIGGER_FORCE)
secondary_effect.ToggleActivate()
else if(ishuman(M) && !istype(M:gloves,/obj/item/clothing/gloves))
var/warn = 0
if (my_effect.trigger == TRIGGER_TOUCH && prob(50))
my_effect.ToggleActivate()
warn = 1
if(secondary_effect?.trigger == TRIGGER_TOUCH && prob(50))
secondary_effect.ToggleActivate()
warn = 1
else if(ishuman(bumped_atom))
if (my_effect.effect == EFFECT_TOUCH && prob(50))
my_effect.DoEffectTouch(M)
warn = 1
if(secondary_effect?.effect == EFFECT_TOUCH && prob(50))
secondary_effect.DoEffectTouch(M)
warn = 1
var/mob/living/carbon/human/H = bumped_atom
if(warn)
to_chat(M, "<b>You accidentally touch [src].</b>")
if(!istype(H.gloves, /obj/item/clothing/gloves))
var/warn = 0
if (my_effect.trigger == TRIGGER_TOUCH && prob(50))
my_effect.ToggleActivate()
warn = 1
if(secondary_effect?.trigger == TRIGGER_TOUCH && prob(50))
secondary_effect.ToggleActivate()
warn = 1
if (my_effect.effect == EFFECT_TOUCH && prob(50))
my_effect.DoEffectTouch(H)
warn = 1
if(secondary_effect?.effect == EFFECT_TOUCH && prob(50))
secondary_effect.DoEffectTouch(H)
warn = 1
if(warn)
to_chat(H, "<b>You accidentally touch [src].</b>")
..()
/obj/machinery/artifact/bullet_act(var/obj/item/projectile/P)