mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-20 12:35:33 +01:00
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:
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user