From ee75aa1fa4c56384aec552b841b3a17b3246650a Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Mon, 10 Nov 2014 16:19:51 +0100 Subject: [PATCH] Logging of event changes. --- code/defines/procs/admin.dm | 4 ++ code/game/gamemodes/calamity/calamity.dm | 1 + code/modules/events/event.dm | 5 +++ code/modules/events/event_container.dm | 3 +- code/modules/events/event_manager.dm | 47 +++++++++++++++++------- code/modules/events/wallrot.dm | 2 +- 6 files changed, 47 insertions(+), 15 deletions(-) diff --git a/code/defines/procs/admin.dm b/code/defines/procs/admin.dm index 5943ada459b..44d79a38930 100644 --- a/code/defines/procs/admin.dm +++ b/code/defines/procs/admin.dm @@ -1,3 +1,7 @@ proc/log_and_message_admins(var/message as text) log_admin("[usr]([usr.ckey]) " + message) message_admins("[usr]([usr.ckey]) " + message) + +proc/admin_log_and_message_admins(var/message as text) + log_admin("[key_name(usr)] " + message) + message_admins("[key_name_admin(usr)] " + message, 1) \ No newline at end of file diff --git a/code/game/gamemodes/calamity/calamity.dm b/code/game/gamemodes/calamity/calamity.dm index 8120153b561..6ddd3d70a59 100644 --- a/code/game/gamemodes/calamity/calamity.dm +++ b/code/game/gamemodes/calamity/calamity.dm @@ -82,6 +82,7 @@ return 1 /datum/game_mode/calamity/post_setup() + event_manager.report_at_round_end = 1 // Reduce the interval between moderate/major events var/datum/event_container/EModerate = event_manager.event_containers[EVENT_LEVEL_MODERATE] var/datum/event_container/EMajor = event_manager.event_containers[EVENT_LEVEL_MAJOR] diff --git a/code/modules/events/event.dm b/code/modules/events/event.dm index f2e0e890f32..25d7cad6f0e 100644 --- a/code/modules/events/event.dm +++ b/code/modules/events/event.dm @@ -56,6 +56,8 @@ var/severity = 0 //Severity. Lower means less severe, higher means more severe. Does not have to be supported. Is set on New(). var/activeFor = 0 //How long the event has existed. You don't need to change this. var/isRunning = 1 //If this event is currently running. You should not change this. + var/started = 0 //When this event started. + var/ended = 0 //When this event ended. var/datum/event_meta/event_meta = null /datum/event/nothing @@ -127,6 +129,7 @@ isRunning = 0 end() + ended = world.timeofday event_manager.active_events -= src event_manager.event_complete(src) @@ -139,5 +142,7 @@ if(severity < EVENT_LEVEL_MUNDANE) severity = EVENT_LEVEL_MUNDANE if(severity > EVENT_LEVEL_MAJOR) severity = EVENT_LEVEL_MAJOR + started = world.timeofday + setup() ..() diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index 0220ea17cbd..3aeec6f2f22 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -117,6 +117,7 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT available_events += next_event available_events -= EM next_event = EM + return EM /datum/event_container/mundane severity = EVENT_LEVEL_MUNDANE @@ -132,7 +133,7 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 20, list(ASSIGNMENT_SECURITY = 10), 1), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Brand Intelligence",/datum/event/brand_intelligence,20, list(ASSIGNMENT_JANITOR = 25), 1), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Vermin Infestation",/datum/event/infestation, 100, list(ASSIGNMENT_JANITOR = 100)), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Wall root", /datum/event/wallrot, 0, list(ASSIGNMENT_ENGINEER = 30, ASSIGNMENT_GARDENER = 50)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Wall rot", /datum/event/wallrot, 0, list(ASSIGNMENT_ENGINEER = 30, ASSIGNMENT_GARDENER = 50)), ) /datum/event_container/moderate diff --git a/code/modules/events/event_manager.dm b/code/modules/events/event_manager.dm index e01b835352c..fdfdb2396bb 100644 --- a/code/modules/events/event_manager.dm +++ b/code/modules/events/event_manager.dm @@ -1,6 +1,7 @@ /datum/event_manager var/window_x = 700 var/window_y = 600 + var/report_at_round_end = 0 var/table_options = " align='center'" var/row_options1 = " width='85px'" var/row_options2 = " width='260px'" @@ -8,7 +9,7 @@ var/datum/event_container/selected_event_container = null var/list/datum/event/active_events = list() - var/list/datum/event/finished_events = list() + var/list/events_finished = list() var/list/datum/event/allEvents var/list/datum/event_container/event_containers = list( @@ -35,7 +36,7 @@ log_debug("Event of '[E.type]' with missing meta-data has completed.") return - finished_events += E + events_finished += E // Add the event back to the list of available events var/datum/event_container/EC = event_containers[E.severity] @@ -60,7 +61,7 @@ html += "Back
" html += "Time till start: [round(event_time / 600, 0.1)]
" html += "
" - html += "

Available [severity_to_string[selected_event_container.severity]] Events (queued events will not be displayed)

" + html += "

Available [severity_to_string[selected_event_container.severity]] Events (queued & running events will not be displayed)

" html += "" html += "Name Weight MinWeight MaxWeight OneShot Enabled CurrWeight Remove" for(var/datum/event_meta/EM in selected_event_container.available_events) @@ -91,7 +92,7 @@ html += "Add
" html += "
" else - html += "
" + html += "Round End Report: [report_at_round_end ? "On": "Off"]
" html += "
" html += "

Event Start

" @@ -138,14 +139,16 @@ html += "
" html += "

Running Events

" html += "" - html += "SeverityNameStop" + html += "SeverityNameEnds InStop" for(var/datum/event/E in active_events) if(!E.event_meta) continue var/datum/event_meta/EM = E.event_meta + var/ends_in = max(0, round((E.started + (E.endWhen * 10) - world.timeofday) / 600, 0.1)) html += "" html += "[severity_to_string[EM.severity]]" html += "[EM.name]" + html += "[ends_in]" html += "Stop" html += "" html += "" @@ -159,25 +162,35 @@ if(href_list["dec_timer"]) var/datum/event_container/EC = locate(href_list["event"]) - EC.next_event_time -= (60 * RaiseToPower(10, text2num(href_list["dec_timer"]))) + var/decrease = (60 * RaiseToPower(10, text2num(href_list["dec_timer"]))) + EC.next_event_time -= decrease + admin_log_and_message_admins("decreased timer for [severity_to_string[EC.severity]] events by [decrease/600] minute(s).") else if(href_list["inc_timer"]) var/datum/event_container/EC = locate(href_list["event"]) - EC.next_event_time += (60 * RaiseToPower(10, text2num(href_list["inc_timer"]))) + var/increase = (60 * RaiseToPower(10, text2num(href_list["inc_timer"]))) + EC.next_event_time += increase + admin_log_and_message_admins("increased timer for [severity_to_string[EC.severity]] events by [increase/600] minute(s).") else if(href_list["select_event"]) var/datum/event_container/EC = locate(href_list["select_event"]) - EC.SelectEvent() + var/datum/event_meta/EM = EC.SelectEvent() + if(EM) + admin_log_and_message_admins("has queued the [severity_to_string[EC.severity]] event '[EM.name]'.") else if(href_list["pause"]) var/datum/event_container/EC = locate(href_list["pause"]) EC.delayed = !EC.delayed + admin_log_and_message_admins("has [EC.delayed ? "paused" : "resumed"] countdown for [severity_to_string[EC.severity]] events.") else if(href_list["interval"]) var/delay = input("Enter delay modifier. A value less than one means events fire more often, higher than one less often.", "Set Interval Modifier") as num|null if(delay && delay > 0) var/datum/event_container/EC = locate(href_list["interval"]) EC.delay_modifier = delay + admin_log_and_message_admins("has set the interval modifier for [severity_to_string[EC.severity]] events to [EC.delay_modifier].") else if(href_list["stop"]) if(alert("Stopping an event may have unintended side-effects. Continue?","Stopping Event!","Yes","No") != "Yes") return var/datum/event/E = locate(href_list["stop"]) + var/datum/event_meta/EM = E.event_meta + admin_log_and_message_admins("has stopped the [severity_to_string[EM.severity]] event '[EM.name]'.") E.kill() else if(href_list["view_events"]) selected_event_container = locate(href_list["view_events"]) @@ -198,35 +211,43 @@ if(weight && weight > 0) var/datum/event_meta/EM = locate(href_list["set_weight"]) EM.weight = weight + if(EM != new_event) + admin_log_and_message_admins("has changed the weight of the [severity_to_string[EM.severity]] event '[EM.name]' to [EM.weight].") else if(href_list["set_oneshot"]) var/datum/event_meta/EM = locate(href_list["set_oneshot"]) EM.one_shot = !EM.one_shot + if(EM != new_event) + admin_log_and_message_admins("has [EM.one_shot ? "set" : "unset"] the oneshot flag for the [severity_to_string[EM.severity]] event '[EM.name]'.") else if(href_list["set_enabled"]) var/datum/event_meta/EM = locate(href_list["set_enabled"]) EM.enabled = !EM.enabled + admin_log_and_message_admins("has [EM.enabled ? "enabled" : "disabled"] the [severity_to_string[EM.severity]] event '[EM.name]'.") else if(href_list["remove"]) if(alert("This will remove the event from rotation. Continue?","Removing Event!","Yes","No") != "Yes") return var/datum/event_meta/EM = locate(href_list["remove"]) var/datum/event_container/EC = locate(href_list["EC"]) EC.available_events -= EM + admin_log_and_message_admins("has removed the [severity_to_string[EM.severity]] event '[EM.name]'.") else if(href_list["add"]) if(!new_event.name || !new_event.event_type) return if(alert("This will add a new event to the rotation. Continue?","Add Event!","Yes","No") != "Yes") return selected_event_container.available_events += new_event + admin_log_and_message_admins("has added \a [severity_to_string[new_event.severity]] event '[new_event.name]' of type [new_event.event_type] with weight [new_event.weight].") new_event = new else if(href_list["clear"]) var/datum/event_container/EC = locate(href_list["clear"]) - EC.next_event = null + if(EC.next_event) + admin_log_and_message_admins("has unqueued the [severity_to_string[EC.severity]] event '[EC.next_event.name]'.") + EC.next_event = null + else if(href_list["report"]) + report_at_round_end = !report_at_round_end + admin_log_and_message_admins("has [report_at_round_end ? "enabled" : "disabled"] the round end event report.") Interact(usr) -/proc/debugStartEvent(var/severity) - var/datum/event_container/EC = event_manager.event_containers[severity] - EC.start_event() - /client/proc/forceEvent(var/type in event_manager.allEvents) set name = "Trigger Event (Debug Only)" set category = "Debug" diff --git a/code/modules/events/wallrot.dm b/code/modules/events/wallrot.dm index d54aa7c4ac0..6e263aaf12e 100644 --- a/code/modules/events/wallrot.dm +++ b/code/modules/events/wallrot.dm @@ -1,5 +1,5 @@ datum/event/wallrot/setup() - name = "Wallroot" + name = "Wall rot" announceWhen = rand(0, 300) endWhen = announceWhen + 1