Most compoennts/elements that register COMSIG_PROJECTILE_ON_HIT can now be applied to turrets and projectile spells (#68238)

expands elements that register COMSIG_PROJECTILE_ON_HIT
This commit is contained in:
Y0SH1M4S73R
2022-07-16 02:59:36 -04:00
committed by GitHub
parent 8ec444f191
commit 111b1ffe01
12 changed files with 47 additions and 22 deletions
+2 -2
View File
@@ -12,7 +12,7 @@
/datum/element/knockback/Attach(datum/target, throw_distance = 1, throw_anchored = FALSE, throw_gentle = FALSE)
. = ..()
if(ismachinery(target) || isstructure(target) || isgun(target)) // turrets, etc
if(ismachinery(target) || isstructure(target) || isgun(target) || isprojectilespell(target)) // turrets, etc
RegisterSignal(target, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit)
else if(isitem(target))
RegisterSignal(target, COMSIG_ITEM_AFTERATTACK, .proc/item_afterattack)
@@ -45,7 +45,7 @@
do_knockback(target, attacker, get_dir(attacker, target))
/// triggered after a projectile hits something
/datum/element/knockback/proc/projectile_hit(atom/fired_from, atom/movable/firer, atom/target, Angle)
/datum/element/knockback/proc/projectile_hit(datum/fired_from, atom/movable/firer, atom/target, Angle)
SIGNAL_HANDLER
do_knockback(target, null, angle2dir(Angle))
+2 -2
View File
@@ -11,7 +11,7 @@
/datum/element/lifesteal/Attach(datum/target, flat_heal)
. = ..()
if(isgun(target))
if(ismachinery(target) || isstructure(target) || isgun(target) || isprojectilespell(target))
RegisterSignal(target, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit)
else if(isitem(target))
RegisterSignal(target, COMSIG_ITEM_AFTERATTACK, .proc/item_afterattack)
@@ -40,7 +40,7 @@
return
do_lifesteal(attacker, target)
/datum/element/lifesteal/proc/projectile_hit(atom/fired_from, atom/movable/firer, atom/target, Angle)
/datum/element/lifesteal/proc/projectile_hit(datum/fired_from, atom/movable/firer, atom/target, Angle)
SIGNAL_HANDLER
do_lifesteal(firer, target)
+23 -2
View File
@@ -9,14 +9,20 @@
/datum/element/light_eater/Attach(datum/target)
if(isatom(target))
if(ismovable(target))
if(ismachinery(target) || isstructure(target))
RegisterSignal(target, COMSIG_PROJECTILE_ON_HIT, .proc/on_projectile_hit)
RegisterSignal(target, COMSIG_MOVABLE_IMPACT, .proc/on_throw_impact)
if(isitem(target))
if(isgun(target))
RegisterSignal(target, COMSIG_PROJECTILE_ON_HIT, .proc/on_projectile_hit)
RegisterSignal(target, COMSIG_ITEM_AFTERATTACK, .proc/on_afterattack)
RegisterSignal(target, COMSIG_ITEM_HIT_REACT, .proc/on_hit_reaction)
else if(isprojectile(target))
RegisterSignal(target, COMSIG_PROJECTILE_ON_HIT, .proc/on_projectile_hit)
RegisterSignal(target, COMSIG_PROJECTILE_SELF_ON_HIT, .proc/on_projectile_self_hit)
else if(istype(target, /datum/reagent))
RegisterSignal(target, COMSIG_REAGENT_EXPOSE_ATOM, .proc/on_expose_atom)
else if(isprojectilespell(target))
RegisterSignal(target, COMSIG_PROJECTILE_ON_HIT, .proc/on_projectile_hit)
else
return ELEMENT_INCOMPATIBLE
@@ -137,6 +143,20 @@
eat_lights(hitby, source)
return NONE
/**
* Called when a produced projectile strikes a target atom
*
* Arguments:
* - [source][/datum]: The thing that created the projectile
* - [firer][/atom/movable]: The movable atom that fired the projectile
* - [target][/atom]: The atom that was struck by the projectile
* - angle: The angle the target was struck at
*/
/datum/element/light_eater/proc/on_projectile_hit(datum/source, atom/movable/firer, atom/target, angle)
SIGNAL_HANDLER
eat_lights(target, source)
return NONE
/**
* Called when a source projectile strikes a target atom
*
@@ -145,8 +165,9 @@
* - [firer][/atom/movable]: The movable atom that fired the projectile
* - [target][/atom]: The atom that was struck by the projectile
* - angle: The angle the target was struck at
* - hit_limb: The limb that was hit, if the target was a carbon
*/
/datum/element/light_eater/proc/on_projectile_hit(obj/projectile/source, atom/movable/firer, atom/target, angle)
/datum/element/light_eater/proc/on_projectile_self_hit(obj/projectile/source, atom/movable/firer, atom/target, angle, hit_limb)
SIGNAL_HANDLER
eat_lights(target, source)
return NONE
+1 -1
View File
@@ -14,7 +14,7 @@
/datum/element/venomous/Attach(datum/target, poison_type, amount_added)
. = ..()
if(isgun(target))
if(ismachinery(target) || isstructure(target) || isgun(target) || isprojectilespell(target))
RegisterSignal(target, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit)
else if(isitem(target))
RegisterSignal(target, COMSIG_ITEM_AFTERATTACK, .proc/item_afterattack)