From 1f9a77c37770b38c2a36a2f45ffbc657d5e0cd54 Mon Sep 17 00:00:00 2001 From: "baloh.matevz" Date: Sun, 30 Oct 2011 18:42:19 +0000 Subject: [PATCH] Update to feedback gathering: - Rounds that end in invalid ways will now be logged, - Round results are logged - Rounds that don't end with a code-determined reboot will still not log at all (so rounds that end in a crash will not log at all - not even round start or mode.) git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2457 316c924e-a436-60f5-8080-3fe189b3f50e --- code/game/gamemodes/blob/blob.dm | 3 +++ code/game/gamemodes/cult/cult.dm | 4 ++++ code/game/gamemodes/gameticker.dm | 11 +++++++---- code/game/gamemodes/malfunction/malfunction.dm | 12 ++++++++++++ code/game/gamemodes/meteor/meteor.dm | 3 +++ code/game/gamemodes/nuclear/nuclear.dm | 8 ++++++++ code/game/gamemodes/nuclear/nuclearbomb.dm | 5 +++++ code/game/gamemodes/revolution/revolution.dm | 2 ++ code/game/gamemodes/wizard/wizard.dm | 1 + code/game/vote.dm | 10 ++++++++++ code/modules/admin/admin.dm | 15 +++++++++++++-- .../mob/living/carbon/alien/humanoid/death.dm | 5 +++++ .../mob/living/carbon/alien/larva/death.dm | 5 +++++ code/modules/mob/living/carbon/brain/death.dm | 6 ++++++ code/modules/mob/living/carbon/human/death.dm | 5 +++++ code/modules/mob/living/carbon/metroid/death.dm | 6 ++++++ code/modules/mob/living/carbon/monkey/death.dm | 6 ++++++ code/modules/mob/living/silicon/ai/death.dm | 6 ++++++ code/modules/mob/living/silicon/pai/death.dm | 6 ++++++ code/modules/mob/living/silicon/robot/death.dm | 6 ++++++ code/unused/gamemodes/monkey.dm | 2 ++ code/unused/gamemodes/ruby.dm | 2 ++ 22 files changed, 123 insertions(+), 6 deletions(-) diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm index d279cc02172..80fe93360e7 100644 --- a/code/game/gamemodes/blob/blob.dm +++ b/code/game/gamemodes/blob/blob.dm @@ -116,15 +116,18 @@ /datum/game_mode/blob/declare_completion() if(stage >= 3) + feedback_set_details("round_end_result","loss - blob took over") world << "The blob has taken over the station!" world << "The entire station was eaten by the Blob" check_quarantine() else if(station_was_nuked) + feedback_set_details("round_end_result","halfwin - nuke") world << "Partial Win: The station has been destroyed!" world << "Directive 7-12 has been successfully carried out preventing the Blob from spreading." else + feedback_set_details("round_end_result","win - blob eliminated") world << "The staff has won!" world << "The alien organism has been eradicated from the station" diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index 72950da028a..199cb257a29 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -284,8 +284,12 @@ /datum/game_mode/cult/declare_completion() if(!check_cult_victory()) + feedback_set_details("round_end_result","win - cult win") + feedback_set("round_end_result",acolytes_survived) world << "\red The cult wins! It has succeeded in serving its dark masters!" else + feedback_set_details("round_end_result","loss - staff stopped the cult") + feedback_set("round_end_result",acolytes_survived) world << "\red The staff managed to stop the cult!" world << "\b Cultists escaped: [acolytes_survived]" diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index bb4c9775e91..2cad4558abf 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -168,9 +168,16 @@ var/global/datum/controller/gameticker/ticker spawn(50) if (mode.station_was_nuked) + feedback_set_details("end_proper","nuke") world << "\blue Rebooting due to destruction of station in [restart_timeout/10] seconds" else + feedback_set_details("end_proper","proper completion") world << "\blue Restarting in [restart_timeout/10] seconds" + + feedback_set_details("round_end","[time2text(world.realtime)]") + if(blackbox) + blackbox.save_all_data_to_sql() + sleep(restart_timeout) world.Reboot() @@ -207,8 +214,4 @@ var/global/datum/controller/gameticker/ticker if (findtext("[handler]","auto_declare_completion_")) call(mode, handler)() - feedback_set_details("round_end","[time2text(world.realtime)]") - if(blackbox) - blackbox.save_all_data_to_sql() - return 1 diff --git a/code/game/gamemodes/malfunction/malfunction.dm b/code/game/gamemodes/malfunction/malfunction.dm index 138cc4c3b64..c1657de76e2 100644 --- a/code/game/gamemodes/malfunction/malfunction.dm +++ b/code/game/gamemodes/malfunction/malfunction.dm @@ -36,6 +36,11 @@ if(malf_ai.len < 1) world << "Uh oh, its malfunction and there is no AI! Please report this." world << "Rebooting world in 5 seconds." + + feedback_set_details("end_error","malf - no AI") + feedback_set_details("round_end","[time2text(world.realtime)]") + if(blackbox) + blackbox.save_all_data_to_sql() sleep(50) world.Reboot() return @@ -193,30 +198,37 @@ var/crew_evacuated = (emergency_shuttle.location==2) if ( station_captured && station_was_nuked) + feedback_set_details("round_end_result","win - AI win - nuke") world << "AI Victory" world << "Everyone was killed by the self-destruct!" else if ( station_captured && malf_dead && !station_was_nuked) + feedback_set_details("round_end_result","halfwin - AI killed, staff lost control") world << "Neutral Victory" world << "The AI has been killed! The staff has lose control over the station." else if ( station_captured && !malf_dead && !station_was_nuked) + feedback_set_details("round_end_result","win - AI win - no explosion") world << "AI Victory" world << "The AI has chosen not to explode you all!" else if (!station_captured && station_was_nuked) + feedback_set_details("round_end_result","halfwin - everyone killed by nuke") world << "Neutral Victory" world << "Everyone was killed by the nuclear blast!" else if (!station_captured && malf_dead && !station_was_nuked) + feedback_set_details("round_end_result","loss - staff win") world << "Human Victory" world << "The AI has been killed! The staff is victorious." else if (!station_captured && !malf_dead && !station_was_nuked && crew_evacuated) + feedback_set_details("round_end_result","halfwin - evacuated") world << "Neutral Victory" world << "The Corporation has lose [station_name()]! All survived personnel will be fired!" else if (!station_captured && !malf_dead && !station_was_nuked && !crew_evacuated) + feedback_set_details("round_end_result","nalfwin - interrupted") world << "Neutral Victory" world << "Round was mysteriously interrupted!" ..() diff --git a/code/game/gamemodes/meteor/meteor.dm b/code/game/gamemodes/meteor/meteor.dm index 88bbc7e125f..74e63797ee9 100644 --- a/code/game/gamemodes/meteor/meteor.dm +++ b/code/game/gamemodes/meteor/meteor.dm @@ -46,6 +46,9 @@ else survivors[player.real_name] = "alive" + feedback_set_details("round_end_result","end - evacuation") + feedback_set("round_end_result",survivors.len) + if (survivors.len) world << "\blue The following survived the meteor attack!" for(var/survivor in survivors) diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index dc33f5237d9..90b41eee68b 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -263,34 +263,42 @@ //herp //Used for tracking if the syndies got the shuttle off of the z-level if (!disk_rescued && station_was_nuked && !herp) + feedback_set_details("round_end_result","win - syndicate nuke") world << "Syndicate Victory!" world << "[syndicate_name()] operatives have destroyed [station_name()]!" else if (!disk_rescued && station_was_nuked && herp) + feedback_set_details("round_end_result","halfwin - syndicate nuke - did not evacuate in time") world << "Total Annihilation" world << "[syndicate_name()] operatives destroyed [station_name()] but did not leave the area in time and got caught in the explosion. Next time, don't lose the disk!" else if (!disk_rescued && !station_was_nuked && derp && !herp) + feedback_set_details("round_end_result","halfwin - blew wrong station") world << "Neutral Victory" world << "[syndicate_name()] operatives secured the authentication disk but blew up something that wasn't [station_name()]. Next time, don't lose the disk!" else if (!disk_rescued && !station_was_nuked && derp && herp) + feedback_set_details("round_end_result","halfwin - blew wrong station - did not evacuate in time") world << "[syndicate_name()] operatives have earned Darwin Award!" world << "[syndicate_name()] operatives blew up something that wasn't [station_name()] and got caught in the explosion. Next time, don't lose the disk!" else if ( disk_rescued ) + feedback_set_details("round_end_result","loss - evacuation - disk secured") world << "Crew Victory" world << "The Research Staff has saved the disc and stopped the [syndicate_name()] Operatives!" else if (!disk_rescued && is_operatives_are_dead()) + feedback_set_details("round_end_result","loss - evacuation - disk not secured") world << "Crew Victory" world << "The Research Staff has stopped the [syndicate_name()] Operatives!" else if (!disk_rescued && crew_evacuated) + feedback_set_details("round_end_result","halfwin - detonation averted") world << "Neutral Victory" world << "[syndicate_name()] operatives recovered the abandoned authentication disk but detonation of [station_name()] was averted. Next time, don't lose the disk!" else if (!disk_rescued && !crew_evacuated) + feedback_set_details("round_end_result","halfwin - interrupted") world << "Neutral Victory" world << "Round was mysteriously interrupted!" diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 24606e71e83..26139859a8a 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -206,6 +206,11 @@ if(!ticker.mode.check_finished())//If the mode does not deal with the nuke going off so just reboot because everyone is stuck as is world << "Resetting in 30 seconds!" + + feedback_set_details("end_error","nuke - unhandled ending") + feedback_set_details("round_end","[time2text(world.realtime)]") + if(blackbox) + blackbox.save_all_data_to_sql() sleep(300) log_game("Rebooting due to nuclear detonation") world.Reboot() diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 1895255f1d1..7a66d22b822 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -303,8 +303,10 @@ ////////////////////////////////////////////////////////////////////// /datum/game_mode/revolution/declare_completion() if(finished == 1) + feedback_set_details("round_end_result","win - heads killed") world << "\red The heads of staff were killed or abandoned the station! The revolutionaries win!" else if(finished == 2) + feedback_set_details("round_end_result","loss - rev heads killed") world << "\red The heads of staff managed to stop the revolution!" ..() return 1 diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index ca48e48201d..3c15ee72bbd 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -198,6 +198,7 @@ /datum/game_mode/wizard/declare_completion() if(finished) + feedback_set_details("round_end_result","loss - wizard killed") world << "\red The wizard[(wizards.len>1)?"s":""] has been killed by the crew! The Space Wizards Federation has been taught a lesson they will not soon forget!" ..() return 1 diff --git a/code/game/vote.dm b/code/game/vote.dm index 222797c115b..7dbe6c6cce9 100644 --- a/code/game/vote.dm +++ b/code/game/vote.dm @@ -77,6 +77,11 @@ if(ticker) world <<"\red World will reboot in 10 seconds" + feedback_set_details("end_error","mode vote - [winner]") + feedback_set_details("round_end","[time2text(world.realtime)]") + if(blackbox) + blackbox.save_all_data_to_sql() + sleep(100) log_game("Rebooting due to mode vote") world.Reboot() @@ -93,6 +98,11 @@ world <<"\red World will reboot in 5 seconds" + feedback_set_details("end_error","restart vote") + feedback_set_details("round_end","[time2text(world.realtime)]") + if(blackbox) + blackbox.save_all_data_to_sql() + sleep(50) log_game("Rebooting due to restart vote") world.Reboot() diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 2c503b58576..598f272f877 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -2133,9 +2133,14 @@ if(confirm == "Cancel") return if(confirm == "Yes") - world << "\red Restarting world! \blue Initiated by [usr.client.stealth ? "Admin Candidate" : usr.key]!" + world << "\red Restarting world! \blue Initiated by [usr.client.stealth ? "Admin" : usr.key]!" log_admin("[key_name(usr)] initiated a reboot.") + feedback_set_details("end_error","admin reboot - by [usr.key] [usr.client.stealth ? "(stealth)" : ""]") + feedback_set_details("round_end","[time2text(world.realtime)]") + if(blackbox) + blackbox.save_all_data_to_sql() + sleep(50) world.Reboot() @@ -2290,8 +2295,14 @@ set name="Immediate Reboot" if( alert("Reboot server?",,"Yes","No") == "No") return - world << "\red Rebooting world! \blue Initiated by [usr.client.stealth ? "Admin Candidate" : usr.key]!" + world << "\red Rebooting world! \blue Initiated by [usr.client.stealth ? "Admin" : usr.key]!" log_admin("[key_name(usr)] initiated an immediate reboot.") + + feedback_set_details("end_error","immediate admin reboot - by [usr.key] [usr.client.stealth ? "(stealth)" : ""]") + feedback_set_details("round_end","[time2text(world.realtime)]") + if(blackbox) + blackbox.save_all_data_to_sql() + world.Reboot() /client/proc/deadchat() diff --git a/code/modules/mob/living/carbon/alien/humanoid/death.dm b/code/modules/mob/living/carbon/alien/humanoid/death.dm index 238e63d1515..de242f455e2 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/death.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/death.dm @@ -48,6 +48,11 @@ if (!cancel && !abandon_allowed) world << "Everyone is dead! Resetting in 30 seconds!" + feedback_set_details("end_error","no live players") + feedback_set_details("round_end","[time2text(world.realtime)]") + if(blackbox) + blackbox.save_all_data_to_sql() + spawn (300) log_game("Rebooting because of no live players") world.Reboot() diff --git a/code/modules/mob/living/carbon/alien/larva/death.dm b/code/modules/mob/living/carbon/alien/larva/death.dm index bd2f5cb2187..48b6e13c7a5 100644 --- a/code/modules/mob/living/carbon/alien/larva/death.dm +++ b/code/modules/mob/living/carbon/alien/larva/death.dm @@ -51,6 +51,11 @@ if (!cancel && !abandon_allowed) world << "Everyone is dead! Resetting in 30 seconds!" + feedback_set_details("end_error","no live players") + feedback_set_details("round_end","[time2text(world.realtime)]") + if(blackbox) + blackbox.save_all_data_to_sql() + spawn (300) log_game("Rebooting because of no live players") world.Reboot() diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm index 289ef7e46ab..6f34b926c6f 100644 --- a/code/modules/mob/living/carbon/brain/death.dm +++ b/code/modules/mob/living/carbon/brain/death.dm @@ -24,6 +24,12 @@ break if (!( cancel )) world << "Everyone is dead! Resetting in 30 seconds!" + + feedback_set_details("end_error","no live players") + feedback_set_details("round_end","[time2text(world.realtime)]") + if(blackbox) + blackbox.save_all_data_to_sql() + spawn( 300 ) log_game("Rebooting because of no live players") world.Reboot() diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index dba4ba3ea50..fcc51e9f13d 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -64,6 +64,11 @@ if (!cancel && !abandon_allowed) world << "Everyone is dead! Resetting in 30 seconds!" + feedback_set_details("end_error","no live players") + feedback_set_details("round_end","[time2text(world.realtime)]") + if(blackbox) + blackbox.save_all_data_to_sql() + spawn (300) log_game("Rebooting because of no live players") world.Reboot() diff --git a/code/modules/mob/living/carbon/metroid/death.dm b/code/modules/mob/living/carbon/metroid/death.dm index 2eca45cabfb..813929cb0d1 100644 --- a/code/modules/mob/living/carbon/metroid/death.dm +++ b/code/modules/mob/living/carbon/metroid/death.dm @@ -43,6 +43,12 @@ break if (!( cancel )) world << "Everyone is dead! Resetting in 30 seconds!" + + feedback_set_details("end_error","no live players") + feedback_set_details("round_end","[time2text(world.realtime)]") + if(blackbox) + blackbox.save_all_data_to_sql() + spawn( 300 ) log_game("Rebooting because of no live players") world.Reboot() diff --git a/code/modules/mob/living/carbon/monkey/death.dm b/code/modules/mob/living/carbon/monkey/death.dm index f7690d7ba6e..0f984a3b4bd 100644 --- a/code/modules/mob/living/carbon/monkey/death.dm +++ b/code/modules/mob/living/carbon/monkey/death.dm @@ -32,6 +32,12 @@ break if (!( cancel )) world << "Everyone is dead! Resetting in 30 seconds!" + + feedback_set_details("end_error","no live players") + feedback_set_details("round_end","[time2text(world.realtime)]") + if(blackbox) + blackbox.save_all_data_to_sql() + spawn( 300 ) log_game("Rebooting because of no live players") world.Reboot() diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm index 3a8bfa4bdae..3671674633c 100644 --- a/code/modules/mob/living/silicon/ai/death.dm +++ b/code/modules/mob/living/silicon/ai/death.dm @@ -53,6 +53,12 @@ break if (!( cancel )) world << "Everyone is dead! Resetting in 30 seconds!" + + feedback_set_details("end_error","no live players") + feedback_set_details("round_end","[time2text(world.realtime)]") + if(blackbox) + blackbox.save_all_data_to_sql() + spawn( 300 ) log_game("Rebooting because of no live players") world.Reboot() diff --git a/code/modules/mob/living/silicon/pai/death.dm b/code/modules/mob/living/silicon/pai/death.dm index 90adfd82499..33da7afd092 100644 --- a/code/modules/mob/living/silicon/pai/death.dm +++ b/code/modules/mob/living/silicon/pai/death.dm @@ -19,6 +19,12 @@ break if (!( cancel )) world << "Everyone is dead! Resetting in 30 seconds!" + + feedback_set_details("end_error","no live players") + feedback_set_details("round_end","[time2text(world.realtime)]") + if(blackbox) + blackbox.save_all_data_to_sql() + spawn( 300 ) log_game("Rebooting because of no live players") world.Reboot() diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index 6974c0e9885..dec51853808 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -34,6 +34,12 @@ break if (!( cancel )) world << "Everyone is dead! Resetting in 30 seconds!" + + feedback_set_details("end_error","no live players") + feedback_set_details("round_end","[time2text(world.realtime)]") + if(blackbox) + blackbox.save_all_data_to_sql() + spawn( 300 ) log_game("Rebooting because of no live players") world.Reboot() diff --git a/code/unused/gamemodes/monkey.dm b/code/unused/gamemodes/monkey.dm index 7454928c9e2..52d98fce20a 100644 --- a/code/unused/gamemodes/monkey.dm +++ b/code/unused/gamemodes/monkey.dm @@ -105,6 +105,7 @@ break if (monkeywin) + feedback_set_details("round_end_result","win - monkey win") world << "The monkeys have won! Humanity is doomed!" for (var/mob/living/carbon/human/player in world) if (player.client) @@ -112,6 +113,7 @@ player.monkeyize() sleep(200) else + feedback_set_details("round_end_result","loss - crew win") world << "The Research Staff has stopped the monkey invasion!" ..() return 1 diff --git a/code/unused/gamemodes/ruby.dm b/code/unused/gamemodes/ruby.dm index 8e6357c1b8d..b1e01953cd7 100644 --- a/code/unused/gamemodes/ruby.dm +++ b/code/unused/gamemodes/ruby.dm @@ -49,8 +49,10 @@ /datum/game_mode/ruby/declare_completion() if(abominationwins) + feedback_set_details("round_end_result","win - abomination win") world << "The Abomination has murdered the station and sacrificed himself to Cjopaze! (played by [winnerkey])" else + feedback_set_details("round_end_result","loss - abomination killed") world << "The Abomination has been stopped and Cjopaze's influence resisted! The station lives another day," if(killed.len > 0) world << "Those who were sacrificed shall be remembered: "