diff --git a/code/controllers/Processes/effect_process.dm b/code/controllers/Processes/effect_process.dm
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm
index 270dbc71cdc..b82fc629eef 100644
--- a/code/datums/status_effects/neutral.dm
+++ b/code/datums/status_effects/neutral.dm
@@ -3,4 +3,7 @@
/datum/status_effect/high_five
id = "high_five"
duration = 25
- alert_type = null
\ No newline at end of file
+ alert_type = null
+
+/datum/status_effect/high_five/on_timeout()
+ owner.visible_message("[owner] was left hanging....")
\ No newline at end of file
diff --git a/code/datums/status_effects/status_effect.dm b/code/datums/status_effects/status_effect.dm
index 90ea9b3be11..196aa6f55d9 100644
--- a/code/datums/status_effects/status_effect.dm
+++ b/code/datums/status_effects/status_effect.dm
@@ -10,6 +10,7 @@
var/mob/living/owner //The mob affected by the status effect.
var/status_type = STATUS_EFFECT_UNIQUE //How many of the effect can be on one mob, and what happens when you try to add another
var/on_remove_on_mob_delete = FALSE //if we call on_remove() when the mob is deleted
+ var/can_timeout = FALSE //use for effect that to a diffrent thing on time out (so it can do something on time out rather then on just remove)
var/examine_text //If defined, this text will appear when the mob is examined - to use he, she etc. use "SUBJECTPRONOUN" and replace it in the examines themselves
var/alert_type = /obj/screen/alert/status_effect //the alert thrown by the status effect, contains name and description
var/obj/screen/alert/status_effect/linked_alert = null //the alert itself, if it exists
@@ -52,11 +53,13 @@
tick()
tick_interval = world.time + initial(tick_interval)
if(duration != -1 && duration < world.time)
+ on_timeout()
qdel(src)
/datum/status_effect/proc/on_apply() //Called whenever the buff is applied; returning FALSE will cause it to autoremove itself.
return TRUE
/datum/status_effect/proc/tick() //Called every tick.
+/datum/status_effect/proc/on_timeout()//called when a buff times out
/datum/status_effect/proc/on_remove() //Called whenever the buff expires or is removed; do note that at the point this is called, it is out of the owner's status_effects but owner is not yet null
/datum/status_effect/proc/be_replaced() //Called instead of on_remove when a status effect is replaced by itself or when a status effect with on_remove_on_mob_delete = FALSE has its mob deleted
owner.clear_alert(id)
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index 309724b4eb3..cb383a7955f 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -840,27 +840,28 @@
if("highfive")
if(restrained())
return
- visible_message("[name] requests a highfive.", "You request a highfive.")
- if(!has_status_effect(STATUS_EFFECT_HIGHFIVE))
- apply_status_effect(STATUS_EFFECT_HIGHFIVE)
-
- for(var/mob/living/carbon/C in orange(1))
- if(!C || C == src)
- visible_message("[name] was left hanging. Embarrassing.", "You are left hanging. How embarrassing!")
- else
- C.apply_status_effect(STATUS_EFFECT_HIGHFIVE)
- if(C.has_status_effect(STATUS_EFFECT_HIGHFIVE))
- if((mind.special_role == SPECIAL_ROLE_WIZARD) && (C.mind && (C.mind.special_role == SPECIAL_ROLE_WIZARD)))
- visible_message("[name] and [C.name] high-five EPICALLY!")
+ if(has_status_effect(STATUS_EFFECT_HIGHFIVE))
+ to_chat(src, "You give up on the highfive.")
+ remove_status_effect(STATUS_EFFECT_HIGHFIVE)
+ return
+ visible_message("[name] requests a highfive.", "You request a high five.")
+ apply_status_effect(STATUS_EFFECT_HIGHFIVE)
+ for(var/mob/living/L in orange(1))
+ L.apply_status_effect(STATUS_EFFECT_HIGHFIVE)
+ if(L.has_status_effect(STATUS_EFFECT_HIGHFIVE))
+ if((mind && mind.special_role == SPECIAL_ROLE_WIZARD) && (L.mind && L.mind.special_role == SPECIAL_ROLE_WIZARD))
+ visible_message("[name] and [L.name] high-five EPICALLY!")
status_flags |= GODMODE
- C.status_flags |= GODMODE
+ L.status_flags |= GODMODE
explosion(loc,5,2,1,3)
status_flags &= ~GODMODE
- C.status_flags &= ~GODMODE
- break
- visible_message("[name] and [C.name] high-five!")
+ L.status_flags &= ~GODMODE
+ return
+ visible_message("[name] and [L.name] high-five!")
playsound('sound/effects/snap.ogg', 50)
- break
+ remove_status_effect(STATUS_EFFECT_HIGHFIVE)
+ L.remove_status_effect(STATUS_EFFECT_HIGHFIVE)
+ return
if("help")
var/emotelist = "aflap(s), airguitar, blink(s), blink(s)_r, blush(es), bow(s)-(none)/mob, burp(s), choke(s), chuckle(s), clap(s), collapse(s), cough(s),cry, cries, custom, dance, dap(s)(none)/mob," \
diff --git a/paradise.dme b/paradise.dme
index 1dc15bf5891..50d948012f7 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -177,7 +177,6 @@
#include "code\controllers\voting.dm"
#include "code\controllers\Processes\air.dm"
#include "code\controllers\Processes\alarm.dm"
-#include "code\controllers\Processes\effect_process.dm"
#include "code\controllers\Processes\event.dm"
#include "code\controllers\Processes\fast_process.dm"
#include "code\controllers\Processes\fires.dm"