/datum/status_effect
Status effects are used to apply temporary or permanent effects to mobs. This file contains their code, plus code for applying and removing them.
Vars | |
alert_type | The typepath to the alert thrown by the status effect when created. Status effect "name"s and "description"s are shown to the owner here. |
---|---|
duration | When set initially / in on_creation, this is how long the status effect lasts in deciseconds. While processing, this becomes the world.time when the status effect will expire. -1 = infinite duration. |
duration_set | Truthy once duration is initialized |
id | The ID of the effect. ID is used in adding and removing effects to check for duplicates, among other things. |
linked_alert | The alert itself, created in [proc/on_creation] (if alert_type is specified). |
on_remove_on_mob_delete | If TRUE, we call [proc/on_remove] when owner is deleted. Otherwise, we call [proc/be_replaced]. |
owner | The mob affected by the status effect. |
processing_speed | Used to define if the status effect should be using SSfasteffects or SSeffects |
remove_on_fullheal | Do we self-terminate when a fullheal is called? // CM note: this is rejuvenate |
status_type | How many of the effect can be on one mob, and/or what happens when you try to add a duplicate. |
tick_interval | When set initially / in on_creation, this is how long between [proc/tick] calls in deciseconds. Note that this cannot be faster than the processing subsystem you choose to fire the effect on. (See: [var/processing_speed]) While processing, this becomes the world.time when the next tick will occur. -1 = will prevent ticks, and if duration is also unlimited (-1), stop processing wholesale. |
timerid | Timer ID for triggering the effect end precisely |
Procs | |
adjust_duration | Updates the duration of the status effect to the given [amount] of deciseconds from its current set ending |
be_replaced | Called instead of on_remove when a status effect of status_type STATUS_EFFECT_REPLACE is replaced by itself, or when a status effect with on_remove_on_mob_delete set to FALSE has its mob deleted |
before_remove | Called before being fully removed (before on_remove) Returning FALSE will cancel removal |
get_duration_left | Get duration left on the effect |
get_examine_text | Gets and formats examine text associated with our status effect. Return 'null' to have no examine text appear (default behavior). |
nextmove_adjust | Adds nextmove adjustment additiviely to the owner while applied |
nextmove_modifier | Adds nextmove modifier multiplicatively to the owner while applied |
on_apply | Called when the effect is applied in on_created Returning FALSE will cause it to delete itself during creation instead. |
on_creation | Called from New() with any supplied status effect arguments. Not guaranteed to exist by the end. Returning FALSE from on_apply will stop on_creation and self-delete the effect. |
on_remove | Called whenever the buff expires or is removed (qdeleted) Note that at the point this is called, it is out of the owner's status_effects list, but owner is not yet null |
refresh | Called when a status effect of status_type STATUS_EFFECT_REFRESH has its duration refreshed in apply_status_effect - is passed New() args |
remove_duration | Remove [amount] of duration (in deciseconds) from the status effect. Compatibility handler with /tg/. |
remove_effect_on_heal | Signal proc for COMSIG_LIVING_REJUVENATED to remove us on fullheal |
tick | Called every tick from process(). This is only called of tick_interval is not -1. |
timer_callback | Timer invocation callback to end the effect |
update_duration | Updates the duration of the status effect to the given [amount] of deciseconds from now, qdeling / ending if we eclipse the current world time. If increment is truthy, we only update if the resulting amount is higher. |
update_particles | Updates the particles for the status effects Should be handled by subtypes! |
update_timer | Updates the timer used for precisely ending the effect We force_refresh if the duration changed otherwise than ticking down |
Var Details
alert_type
The typepath to the alert thrown by the status effect when created. Status effect "name"s and "description"s are shown to the owner here.
duration
When set initially / in on_creation, this is how long the status effect lasts in deciseconds. While processing, this becomes the world.time when the status effect will expire. -1 = infinite duration.
duration_set
Truthy once duration is initialized
id
The ID of the effect. ID is used in adding and removing effects to check for duplicates, among other things.
linked_alert
The alert itself, created in [proc/on_creation] (if alert_type is specified).
on_remove_on_mob_delete
If TRUE, we call [proc/on_remove] when owner is deleted. Otherwise, we call [proc/be_replaced].
owner
The mob affected by the status effect.
processing_speed
Used to define if the status effect should be using SSfasteffects or SSeffects
remove_on_fullheal
Do we self-terminate when a fullheal is called? // CM note: this is rejuvenate
status_type
How many of the effect can be on one mob, and/or what happens when you try to add a duplicate.
tick_interval
When set initially / in on_creation, this is how long between [proc/tick] calls in deciseconds. Note that this cannot be faster than the processing subsystem you choose to fire the effect on. (See: [var/processing_speed]) While processing, this becomes the world.time when the next tick will occur. -1 = will prevent ticks, and if duration is also unlimited (-1), stop processing wholesale.
timerid
Timer ID for triggering the effect end precisely
Proc Details
adjust_duration
Updates the duration of the status effect to the given [amount] of deciseconds from its current set ending
be_replaced
Called instead of on_remove when a status effect of status_type STATUS_EFFECT_REPLACE is replaced by itself, or when a status effect with on_remove_on_mob_delete set to FALSE has its mob deleted
before_remove
Called before being fully removed (before on_remove) Returning FALSE will cancel removal
get_duration_left
Get duration left on the effect
get_examine_text
Gets and formats examine text associated with our status effect. Return 'null' to have no examine text appear (default behavior).
nextmove_adjust
Adds nextmove adjustment additiviely to the owner while applied
nextmove_modifier
Adds nextmove modifier multiplicatively to the owner while applied
on_apply
Called when the effect is applied in on_created Returning FALSE will cause it to delete itself during creation instead.
on_creation
Called from New() with any supplied status effect arguments. Not guaranteed to exist by the end. Returning FALSE from on_apply will stop on_creation and self-delete the effect.
on_remove
Called whenever the buff expires or is removed (qdeleted) Note that at the point this is called, it is out of the owner's status_effects list, but owner is not yet null
refresh
Called when a status effect of status_type STATUS_EFFECT_REFRESH has its duration refreshed in apply_status_effect - is passed New() args
remove_duration
Remove [amount] of duration (in deciseconds) from the status effect. Compatibility handler with /tg/.
remove_effect_on_heal
Signal proc for COMSIG_LIVING_REJUVENATED to remove us on fullheal
tick
Called every tick from process(). This is only called of tick_interval is not -1.
Note that every tick =/= every processing cycle.
- seconds_between_ticks = This is how many SECONDS that elapse between ticks. This is a constant value based upon the initial tick interval set on the status effect. It is similar to seconds_per_tick, from processing itself, but adjusted to the status effect's tick interval.
timer_callback
Timer invocation callback to end the effect
update_duration
Updates the duration of the status effect to the given [amount] of deciseconds from now, qdeling / ending if we eclipse the current world time. If increment is truthy, we only update if the resulting amount is higher.
update_particles
Updates the particles for the status effects Should be handled by subtypes!
update_timer
Updates the timer used for precisely ending the effect We force_refresh if the duration changed otherwise than ticking down