mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 02:16:05 +00:00
converted on_irradiate to lazy events (#27241)
This commit is contained in:
@@ -492,7 +492,7 @@ var/list/variables_not_to_be_copied = list(
|
||||
"group","on_moved","on_destroyed","on_density_change",
|
||||
"on_use","on_emote","on_life","on_resist",
|
||||
"on_spellcast","on_uattack","on_ruattack","on_logout","on_damaged",
|
||||
"on_irradiate","on_death","on_clickon","on_attackhand","on_attackby",
|
||||
"on_death","on_clickon","on_attackhand","on_attackby",
|
||||
"on_explode","on_projectile","in_chamber","power_supply","contents",
|
||||
"x","y","z"
|
||||
)
|
||||
|
||||
@@ -63,6 +63,13 @@
|
||||
/lazy_event
|
||||
|
||||
// TODO: Document here the arguments that need to be passed to the procs invoked by each event
|
||||
|
||||
// Called by human/proc/apply_radiation()
|
||||
// Arguments:
|
||||
// mob/carbon/living/human/user: The human.
|
||||
// rads: The amount of radiation.
|
||||
/lazy_event/on_irradiate
|
||||
|
||||
/lazy_event/on_z_transition
|
||||
/lazy_event/on_post_z_transition
|
||||
|
||||
|
||||
@@ -10,23 +10,19 @@
|
||||
var/on = 0
|
||||
var/last_call = 0
|
||||
var/last_sound = 0
|
||||
var/event_key
|
||||
|
||||
/obj/item/device/geiger_counter/New()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/device/geiger_counter/pickup(mob/user)
|
||||
event_key = user.on_irradiate.Add(src, "measure_rad")
|
||||
user.lazy_register_event(/lazy_event/on_irradiate, src, .proc/measure_rad)
|
||||
|
||||
/obj/item/device/geiger_counter/dropped(mob/user)
|
||||
user.on_irradiate.Remove(event_key)
|
||||
event_key = null
|
||||
user.lazy_unregister_event(/lazy_event/on_irradiate, src, .proc/measure_rad)
|
||||
|
||||
|
||||
/obj/item/device/geiger_counter/proc/measure_rad(list/arguments)
|
||||
var/mob/user = arguments["user"]
|
||||
var/rads = arguments["rads"]
|
||||
/obj/item/device/geiger_counter/proc/measure_rad(mob/living/carbon/human/user, rads)
|
||||
if(on && world.time > last_call + COOLDOWN)
|
||||
to_chat(user, "<span class = 'notice'>Radiation detected.</span>")
|
||||
last_call = world.time
|
||||
@@ -47,4 +43,4 @@
|
||||
icon_state = initial(icon_state)+"[on]"
|
||||
|
||||
#undef COOLDOWN
|
||||
#undef SOUND_COOLDOWN
|
||||
#undef SOUND_COOLDOWN
|
||||
|
||||
@@ -219,13 +219,13 @@
|
||||
/obj/item/clothing/accessory/medal/gold/heroism
|
||||
name = "medal of exceptional heroism"
|
||||
desc = "An extremely rare golden medal awarded only by CentComm. To recieve such a medal is the highest honor and as such, very few exist. This medal is almost never awarded to anybody but commanders."
|
||||
|
||||
|
||||
/obj/item/clothing/accessory/medal/byond
|
||||
name = "\improper BYOND support pin"
|
||||
icon_state = "byond"
|
||||
_color = "byond"
|
||||
desc = "A cheap, but surprisingly rare, plastic pin. Sent to supporters by the BYOND corporation."
|
||||
|
||||
|
||||
/obj/item/clothing/accessory/medal/byond/on_attached(obj/item/clothing/C)
|
||||
..()
|
||||
if(ismob(C.loc))
|
||||
@@ -352,31 +352,27 @@
|
||||
w_class = W_CLASS_TINY
|
||||
w_type = RECYK_WOOD
|
||||
|
||||
/obj/item/clothing/accessory/rad_patch/proc/check_rads(list/arguments)
|
||||
/obj/item/clothing/accessory/rad_patch/proc/check_rads(mob/living/carbon/human/user, rads)
|
||||
if(triggered)
|
||||
return
|
||||
var/mob/user = arguments["user"]
|
||||
var/rads = arguments["rads"]
|
||||
rad_absorbed += rads
|
||||
|
||||
if(rad_absorbed > rad_threshold)
|
||||
triggered = TRUE
|
||||
update_icon()
|
||||
to_chat(user, "<span class = 'warning'>You hear \the [src] tick!</span>")
|
||||
user.on_irradiate.Remove(event_key)
|
||||
event_key = null
|
||||
|
||||
user.lazy_unregister_event(/lazy_event/on_irradiate, src, .proc/check_rads)
|
||||
|
||||
/obj/item/clothing/accessory/rad_patch/on_attached(obj/item/clothing/C)
|
||||
..()
|
||||
if(ismob(C.loc) && !triggered)
|
||||
var/mob/user = C.loc
|
||||
event_key = user.on_irradiate.Add(src, "check_rads")
|
||||
user.lazy_register_event(/lazy_event/on_irradiate, src, .proc/check_rads)
|
||||
|
||||
/obj/item/clothing/accessory/rad_patch/on_removed(mob/user)
|
||||
..()
|
||||
if(event_key)
|
||||
user.on_irradiate.Remove(event_key)
|
||||
event_key = null
|
||||
user.lazy_unregister_event(/lazy_event/on_irradiate, src, .proc/check_rads)
|
||||
|
||||
/obj/item/clothing/accessory/rad_patch/examine(mob/user)
|
||||
..(user)
|
||||
|
||||
@@ -232,7 +232,7 @@
|
||||
rig.armor["rad"] = 100
|
||||
|
||||
say_to_wearer("[src] enabled.")
|
||||
event_key = rig.wearer.on_irradiate.Add(src, "absorb_rads")
|
||||
rig.wearer.lazy_register_event(/lazy_event/on_irradiate, src, .proc/absorb_rads)
|
||||
..()
|
||||
|
||||
/obj/item/rig_module/rad_shield/deactivate()
|
||||
@@ -244,18 +244,12 @@
|
||||
rig?.armor["rad"] = initial_suit
|
||||
|
||||
say_to_wearer("[src] disabled.")
|
||||
if(event_key)
|
||||
rig.wearer?.on_irradiate.Remove(event_key)
|
||||
event_key = null
|
||||
rig.wearer?.lazy_unregister_event(/lazy_event/on_irradiate, src, .proc/absorb_rads)
|
||||
..()
|
||||
|
||||
/obj/item/rig_module/rad_shield/proc/absorb_rads(list/arguments)
|
||||
var/mob/user = arguments["user"]
|
||||
var/rads = arguments["rads"]
|
||||
|
||||
/obj/item/rig_module/rad_shield/proc/absorb_rads(mob/living/carbon/human/user, rads)
|
||||
if(rig?.wearer != user) //Well lad.
|
||||
user.on_irradiate.Remove(event_key)
|
||||
event_key = null
|
||||
user.lazy_unregister_event(/lazy_event/on_irradiate, src, .proc/absorb_rads)
|
||||
return
|
||||
|
||||
if(rig.H)
|
||||
|
||||
@@ -493,7 +493,7 @@ This function restores all organs.
|
||||
return
|
||||
|
||||
if(application == RAD_EXTERNAL)
|
||||
INVOKE_EVENT(on_irradiate, list("user" = src,"rads" = rads))
|
||||
lazy_invoke_event(/lazy_event/on_irradiate, list("user" = src, "rads" = rads))
|
||||
|
||||
if(reagents)
|
||||
if(reagents.has_reagent(LITHOTORCRAZINE))
|
||||
|
||||
@@ -37,8 +37,6 @@
|
||||
on_ruattack.holder = null
|
||||
if(on_damaged)
|
||||
on_damaged.holder = null
|
||||
if(on_irradiate)
|
||||
on_irradiate.holder = null
|
||||
if(on_death)
|
||||
on_death.holder = null
|
||||
if(on_bumping)
|
||||
@@ -90,7 +88,6 @@
|
||||
qdel(on_ruattack)
|
||||
qdel(on_damaged)
|
||||
qdel(on_clickon)
|
||||
qdel(on_irradiate)
|
||||
qdel(on_death)
|
||||
qdel(on_bumping)
|
||||
qdel(on_bumped)
|
||||
@@ -101,7 +98,6 @@
|
||||
on_ruattack = null
|
||||
on_damaged = null
|
||||
on_clickon = null
|
||||
on_irradiate = null
|
||||
on_death = null
|
||||
on_bumping = null
|
||||
on_bumped = null
|
||||
@@ -303,7 +299,6 @@
|
||||
on_logout = new(owner = src)
|
||||
on_damaged = new(owner = src)
|
||||
on_clickon = new(owner = src)
|
||||
on_irradiate = new(owner = src)
|
||||
on_death = new(owner = src)
|
||||
on_bumping = new(owner = src)
|
||||
on_bumped = new(owner = src)
|
||||
|
||||
@@ -277,7 +277,6 @@
|
||||
var/event/on_ruattack //on restrained unarmed attack
|
||||
var/event/on_logout
|
||||
var/event/on_damaged
|
||||
var/event/on_irradiate
|
||||
var/event/on_death
|
||||
var/event/on_bumping //We bumped someone
|
||||
var/event/on_bumped //We got bumped
|
||||
|
||||
Reference in New Issue
Block a user