Round End Summary Fixes (#9096)

Added an admin verb that ends the round smoothly, displaying the end round card.
    Wizard learned spells are now properly displayed at round.
    Antags added to gamemodes they don't belong in, now properly update the gamemode's antag template, allowing their things to be displayed at round end.
    Fixed a typo in the apprentice pebble spawn-in calling it an 'artificer pebble' in deadchat.
This commit is contained in:
Geeves
2020-06-20 11:34:07 +03:00
committed by GitHub
parent a074b7e224
commit 2ec9ae5701
8 changed files with 49 additions and 27 deletions
+5 -2
View File
@@ -155,7 +155,7 @@ var/datum/controller/subsystem/ticker/SSticker
pregame_timeleft = 1 SECOND
to_world("Reattempting gamemode selection.")
/datum/controller/subsystem/ticker/proc/game_tick()
/datum/controller/subsystem/ticker/proc/game_tick(var/force_end = FALSE)
if(current_state != GAME_STATE_PLAYING)
return 0
@@ -163,7 +163,10 @@ var/datum/controller/subsystem/ticker/SSticker
var/game_finished = 0
var/mode_finished = 0
if (config.continous_rounds)
if(force_end)
game_finished = TRUE
mode_finished = TRUE
else if(config.continous_rounds)
game_finished = (emergency_shuttle.returned() || mode.station_was_nuked)
mode_finished = (!post_game && mode.check_finished())
else
@@ -18,6 +18,7 @@
greet(target)
if(!gag_announcement)
announce_antagonist_spawn()
LAZYDISTINCTADD(SSticker.mode.antag_templates, src)
/datum/antagonist/proc/create_default(var/mob/source)
var/mob/living/M
+12
View File
@@ -6,6 +6,7 @@
var/text = "<br><br><font size = 2><b>The [current_antagonists.len == 1 ? "[role_text] was" : "[role_text_plural] were"]:</b></font>"
for(var/datum/mind/P in current_antagonists)
text += print_player_full(P)
text += print_special_role_report(P)
text += get_special_objective_text(P)
if(P.ambitions)
text += "<br><font color='purple'><b>Their goals for today were:</b></font>"
@@ -48,6 +49,17 @@
text += "<font color='red'>Fail.</font>"
return text
/datum/antagonist/proc/print_special_role_report(var/datum/mind/ply)
var/text = ""
if(length(ply.learned_spells))
text += "<br><br><b>[ply.name]'s spells were:</b><br>"
for(var/s in ply.learned_spells)
var/spell/spell = s
text += "<b>[spell.name]</b> - "
text += "Speed: [spell.spell_levels["speed"]] Power: [spell.spell_levels["power"]]"
text += "<br>"
return text
/datum/antagonist/proc/print_player_lite(var/datum/mind/ply)
var/role = ply.assigned_role ? "\improper[ply.assigned_role]" : "\improper[ply.special_role]"
var/text = "<br><b>[ply.name]</b> as \a <b>[role]</b> ("
-18
View File
@@ -100,24 +100,6 @@ var/datum/antagonist/wizard/wizards
feedback_set_details("round_end_result","loss - wizard killed")
to_world("<span class='danger'><font size = 3>The [(current_antagonists.len>1)?"[role_text_plural] have":"[role_text] has"] been killed by the crew! The Space Wizards Federation has been taught a lesson they will not soon forget!</font></span>")
/datum/antagonist/wizard/print_player_summary()
..()
for(var/p in current_antagonists)
var/datum/mind/player = p
var/text = "<b>[player.name]'s spells were:</b>"
if(!player.learned_spells || !player.learned_spells.len)
text += "<br>None!"
else
for(var/s in player.learned_spells)
var/spell/spell = s
text += "<br><b>[spell.name]</b> - "
text += "Speed: [spell.spell_levels["speed"]] Power: [spell.spell_levels["power"]]"
if(player.ambitions)
text += "<br><font color='purple'><b>Their goals for today were:</b></font>"
text += "<br> '[player.ambitions]'"
text += "<br>"
to_world(text)
//To batch-remove wizard spells. Linked to mind.dm.
/mob/proc/spellremove()
+16
View File
@@ -80,6 +80,7 @@ var/list/admin_verbs_admin = list(
/client/proc/toggle_antagHUD_restrictions,
/client/proc/allow_character_respawn, // Allows a ghost to respawn ,
/client/proc/allow_stationbound_reset,
/client/proc/end_round,
/client/proc/event_manager_panel,
/client/proc/empty_ai_core_toggle_latejoin,
/client/proc/aooc,
@@ -312,6 +313,7 @@ var/list/admin_verbs_hideable = list(
/datum/admins/proc/toggleaban,
/client/proc/create_poll,
/client/proc/allow_stationbound_reset,
/client/proc/end_round,
/client/proc/toggle_log_hrefs,
/datum/admins/proc/immreboot,
/client/proc/cmd_dev_bst,
@@ -1166,6 +1168,20 @@ var/list/admin_verbs_cciaa = list(
log_and_message_admins("admin-wiped [key_name_admin(target)]'s core.")
target.do_wipe_core()
/client/proc/end_round()
set name = "End Round"
set desc = "This button will end the round."
set category = "Server"
if(!check_rights(R_ADMIN))
return
if(alert(usr, "Are you sure you want to end the round?", "Confirm Round End", "No", "Yes") != "Yes")
return
log_and_message_admins("has ended the round with the End Round button.")
SSticker.game_tick(TRUE)
/client/proc/restart_sql()
set category = "Debug"
set name = "Reconnect SQL"
@@ -13,7 +13,7 @@
SSghostroles.add_spawn_atom("apprentice", src)
var/area/A = get_area(src)
if(A)
say_dead_direct("An artificer pebble has been created in [A.name]! Spawn at it by using the ghost spawner menu in the ghost tab.")
say_dead_direct("A wizard apprentice pebble has been created in [A.name]! Spawn at it by using the ghost spawner menu in the ghost tab.")
/obj/item/apprentice_pebble/Destroy()
if(contract)
+5 -6
View File
@@ -44,7 +44,9 @@
if(spell_master.type == master_type)
LAZYADD(spell_list, spell_to_add)
spell_master.add_spell(spell_to_add)
return 1
if(mind)
LAZYDISTINCTADD(mind.learned_spells, spell_to_add)
return TRUE
var/obj/screen/movable/spell_master/new_spell_master = new master_type //we're here because either we didn't find our type, or we have no spell masters to attach to
if(client)
@@ -56,11 +58,8 @@
spell_masters.Add(new_spell_master)
LAZYADD(spell_list, spell_to_add)
if(mind)
if(!mind.learned_spells)
mind.learned_spells = list()
mind.learned_spells += spell_to_add
return 1
LAZYDISTINCTADD(mind.learned_spells, spell_to_add)
return TRUE
/mob/proc/remove_spell(var/spell/spell_to_remove)
if(!spell_to_remove || !istype(spell_to_remove))
@@ -0,0 +1,9 @@
author: Geeves
delete-after: True
changes:
- admin: "Added an admin verb that ends the round smoothly, displaying the end round card."
- bugfix: "Wizard learned spells are now properly displayed at round."
- bugfix: "Antags added to gamemodes they don't belong in, now properly update the gamemode's antag template, allowing their things to be displayed at round end."
- bugfix: "Fixed a typo in the apprentice pebble spawn-in calling it an 'artificer pebble' in deadchat."