diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 53046c88c5d..e03bb155c27 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -440,7 +440,7 @@
/datum/mind/proc/memory_edit_eventmisc(mob/living/H)
. = _memory_edit_header("event", list())
- if(src in SSticker.mode.eventmiscs)
+ if(has_antag_datum(/datum/antagonist/eventmisc))
. += "YES|no"
else
. += "Event Role|NO"
@@ -1206,16 +1206,16 @@
else if(href_list["eventmisc"])
switch(href_list["eventmisc"])
if("clear")
- if(src in SSticker.mode.eventmiscs)
- SSticker.mode.eventmiscs -= src
- SSticker.mode.update_eventmisc_icons_removed(src)
- special_role = null
- message_admins("[key_name_admin(usr)] has de-eventantag'ed [current].")
- log_admin("[key_name(usr)] has de-eventantag'ed [current].")
+ if(!has_antag_datum(/datum/antagonist/eventmisc))
+ return
+ remove_antag_datum(/datum/antagonist/eventmisc)
+ message_admins("[key_name_admin(usr)] has de-eventantag'ed [current].")
+ log_admin("[key_name(usr)] has de-eventantag'ed [current].")
if("eventmisc")
- SSticker.mode.eventmiscs += src
- special_role = SPECIAL_ROLE_EVENTMISC
- SSticker.mode.update_eventmisc_icons_added(src)
+ if(has_antag_datum(/datum/antagonist/eventmisc))
+ to_chat(usr, "[current] is already an event antag!")
+ return
+ add_antag_datum(/datum/antagonist/eventmisc)
message_admins("[key_name_admin(usr)] has eventantag'ed [current].")
log_admin("[key_name(usr)] has eventantag'ed [current].")
current.create_log(MISC_LOG, "[current] was made into an event antagonist by [key_name_admin(usr)]")
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index ffa6c0a158f..dea52357f81 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -625,17 +625,6 @@
if(something_to_print)
print_command_report(trait_list_desc.Join("
"), "NAS Trurl Detected Divergencies", FALSE)
-
-/datum/game_mode/proc/update_eventmisc_icons_added(datum/mind/mob_mind)
- var/datum/atom_hud/antag/antaghud = GLOB.huds[ANTAG_HUD_EVENTMISC]
- antaghud.join_hud(mob_mind.current)
- set_antag_hud(mob_mind.current, "hudevent")
-
-/datum/game_mode/proc/update_eventmisc_icons_removed(datum/mind/mob_mind)
- var/datum/atom_hud/antag/antaghud = GLOB.huds[ANTAG_HUD_EVENTMISC]
- antaghud.leave_hud(mob_mind.current)
- set_antag_hud(mob_mind.current, null)
-
/// Gets the value of all end of round stats through auto_declare and returns them
/datum/game_mode/proc/get_end_of_round_antagonist_statistics()
. = list()
diff --git a/code/modules/antagonists/event/datum_eventmisc.dm b/code/modules/antagonists/event/datum_eventmisc.dm
new file mode 100644
index 00000000000..c86ed49603a
--- /dev/null
+++ b/code/modules/antagonists/event/datum_eventmisc.dm
@@ -0,0 +1,15 @@
+RESTRICT_TYPE(/datum/antagonist/eventmisc)
+
+/datum/antagonist/eventmisc
+ name = "Event"
+ job_rank = ROLE_EVENTMISC
+ special_role = SPECIAL_ROLE_EVENTMISC
+ give_objectives = FALSE
+ antag_hud_name = "hudevent"
+ antag_hud_type = ANTAG_HUD_EVENTMISC
+
+/datum/antagonist/eventmisc/add_owner_to_gamemode()
+ SSticker.mode.eventmiscs |= owner
+
+/datum/antagonist/eventmisc/remove_owner_from_gamemode()
+ SSticker.mode.eventmiscs -= owner
diff --git a/code/modules/mob/dead/observer/orbit.dm b/code/modules/mob/dead/observer/orbit.dm
index 9f13488cba0..c83753cb1ad 100644
--- a/code/modules/mob/dead/observer/orbit.dm
+++ b/code/modules/mob/dead/observer/orbit.dm
@@ -107,6 +107,7 @@ GLOBAL_DATUM_INIT(orbit_menu, /datum/orbit_menu, new)
- vampire
- changelings
- revolutionaries/headrevs
+ - event
*/
for(var/_A in mind.antag_datums)
var/datum/antagonist/A = _A
@@ -121,8 +122,7 @@ GLOBAL_DATUM_INIT(orbit_menu, /datum/orbit_menu, new)
other_antags += list(
"Blob" = (mind.special_role == SPECIAL_ROLE_BLOB),
"Nuclear Operative" = (mind in SSticker.mode.syndicates),
- "Abductor" = (mind in SSticker.mode.abductors),
- "Event Roles" = (mind.special_role == SPECIAL_ROLE_EVENTMISC)
+ "Abductor" = (mind in SSticker.mode.abductors)
)
for(var/antag_name in other_antags)
diff --git a/paradise.dme b/paradise.dme
index 7a5f74e9dfb..7db88875bf9 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -1549,6 +1549,7 @@
#include "code\modules\antagonists\changeling\powers\transform.dm"
#include "code\modules\antagonists\cult\datum_cultist.dm"
#include "code\modules\antagonists\cult\team_cult.dm"
+#include "code\modules\antagonists\event\datum_eventmisc.dm"
#include "code\modules\antagonists\mind_flayer\flayer_datum.dm"
#include "code\modules\antagonists\mind_flayer\flayer_power.dm"
#include "code\modules\antagonists\mind_flayer\mindflayer_gamemode.dm"