diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index a005ed1f6a7..6dcd2bace21 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -165,6 +165,7 @@ return var/datum/round_event_control/E = locate(href_list["forceevent"]) in SSevents.control if(E) + E.admin_setup(usr) var/datum/round_event/event = E.runEvent() if(event.announceWhen>0) event.processing = FALSE diff --git a/code/modules/events/_event.dm b/code/modules/events/_event.dm index c33bb463b32..8b2c85d4e3e 100644 --- a/code/modules/events/_event.dm +++ b/code/modules/events/_event.dm @@ -99,6 +99,10 @@ return E +//Special admins setup +/datum/round_event_control/proc/admin_setup() + return + /datum/round_event //NOTE: Times are measured in master controller ticks! var/processing = TRUE var/datum/round_event_control/control diff --git a/code/modules/events/false_alarm.dm b/code/modules/events/false_alarm.dm index f9e30a54d70..83e37dd5286 100644 --- a/code/modules/events/false_alarm.dm +++ b/code/modules/events/false_alarm.dm @@ -3,6 +3,24 @@ typepath = /datum/round_event/falsealarm weight = 20 max_occurrences = 5 + var/forced_type //Admin abuse + + +/datum/round_event_control/falsealarm/admin_setup() + if(!check_rights(R_FUN)) + return + + var/list/possible_types = list() + + for(var/datum/round_event_control/E in SSevents.control) + if(istype(E, /datum/round_event_control/falsealarm)) + continue + var/datum/round_event/event = E.typepath + if(initial(event.announceWhen) <= 0) + continue + possible_types += E + + forced_type = input(usr, "Select the scare.","False event") as null|anything in possible_types /datum/round_event_control/falsealarm/canSpawnEvent(players_amt, gamemode) return ..() && length(gather_false_events()) @@ -16,7 +34,13 @@ var/gamemode = SSticker.mode.config_tag var/events_list = gather_false_events(players_amt, gamemode) - var/datum/round_event_control/event_control = pick(events_list) + var/datum/round_event_control/event_control + var/datum/round_event_control/falsealarm/C = control + if(C.forced_type) + event_control = C.forced_type + C.forced_type = null + else + event_control = pick(events_list) if(event_control) var/datum/round_event/Event = new event_control.typepath() message_admins("False Alarm: [Event]")