Fixes the Thunderdome (#20066)

* Fixes the thunderdome

* Ryan's review
This commit is contained in:
GDN
2023-01-05 12:26:11 -06:00
committed by GitHub
parent 1bdc60de9d
commit 6a5fa87fea
+36 -61
View File
@@ -286,69 +286,44 @@
return 0
/datum/admins/proc/makeThunderdomeTeams() // Not strictly an antag, but this seemed to be the best place to put it.
var/list/mob/candidates = list()
var/mob/theghost = null
var/time_passed = world.time
var/max_thunderdome_players = 10
var/team_to_assign_to = "Green"
var/list/red_spawn_locations = GLOB.tdome1.Copy()
var/list/blue_spawn_locations = GLOB.tdome2.Copy()
log_admin("[key_name(owner)] tried making Thunderdome Teams with One-Click-Antag")
message_admins("[key_name_admin(owner)] tried making Thunderdone Teams with One-Click-Antag")
message_admins("[key_name_admin(owner)] tried making Thunderdome Teams with One-Click-Antag")
//Generates a list of candidates from active ghosts.
for(var/mob/G in GLOB.respawnable_list)
spawn(0)
switch(alert(G,"Do you wish to be considered for a Thunderdome match about to start?","Please answer in 30 seconds!","Yes","No"))
if("Yes")
if((world.time-time_passed)>300)//If more than 30 game seconds passed.
return
candidates += G
if("No")
return
else
return
sleep(300) //Debug.
for(var/mob/dead/observer/G in candidates)
if(!G.key)
candidates.Remove(G)
if(candidates.len)
var/teamOneMembers = 5
var/teamTwoMembers = 5
var/list/thunderdome_candidates = shuffle(SSghost_spawns.poll_candidates("Participate in a Thunderdome match?", poll_time = 30 SECONDS, ignore_respawnability = TRUE, flash_window = TRUE, check_antaghud = FALSE))
if(length(thunderdome_candidates) < 2) // One person thunderdome ain't great
log_admin("[key_name(owner)] tried making Thunderdome Teams with One-Click-Antag, but not enough people signed up.")
message_admins("[key_name_admin(owner)] tried making Thunderdome Teams with One-Click-Antag, but not enough people signed up.")
return FALSE
// Time to set up our team structure
if(length(thunderdome_candidates) > max_thunderdome_players)
thunderdome_candidates.Cut(max_thunderdome_players)
for(var/mob/dead/observer/candidate_to_spawn in thunderdome_candidates)
if(!candidate_to_spawn || !candidate_to_spawn.key || !candidate_to_spawn.client)
continue
var/datum/character_save/S = new
S.randomise()
for(var/obj/effect/landmark/L in GLOB.tdome1)
if(!teamOneMembers)
break
var/mob/living/carbon/human/newMember = new(get_turf(L))
S.copy_to(newMember)
newMember.dna.ready_dna(newMember)
while((!theghost || !theghost.client) && candidates.len)
theghost = pick(candidates)
candidates.Remove(theghost)
if(!theghost)
qdel(newMember)
break
newMember.key = theghost.key
teamOneMembers--
to_chat(newMember, "You are a member of the <font color='green'><b>GREEN</b></font> Thunderdome team! Gear up and help your team destroy the red team!")
for(var/obj/effect/landmark/L in GLOB.tdome2)
if(!teamTwoMembers)
break
var/mob/living/carbon/human/newMember = new(get_turf(L))
S.copy_to(newMember)
newMember.dna.ready_dna(newMember)
while((!theghost || !theghost.client) && candidates.len)
theghost = pick(candidates)
candidates.Remove(theghost)
if(!theghost)
qdel(newMember)
break
newMember.key = theghost.key
teamTwoMembers--
to_chat(newMember, "You are a member of the <font color='red'><b>RED</b></font> Thunderdome team! Gear up and help your team destroy the green team!")
else
return 0
return 1
switch(team_to_assign_to)
if("Green")
var/turf/possible_spawn_loc_red = pick_n_take(red_spawn_locations)
var/mob/living/carbon/human/new_thunderdome_member = new(get_turf(possible_spawn_loc_red))
S.copy_to(new_thunderdome_member)
new_thunderdome_member.dna.ready_dna(new_thunderdome_member)
thunderdome_candidates.Remove(candidate_to_spawn)
new_thunderdome_member.key = candidate_to_spawn.key
to_chat(new_thunderdome_member, "You are a member of the <font color='green'><b>GREEN</b></font> Thunderdome team! Gear up and help your team destroy the red team!")
new_thunderdome_member.mind.offstation_role = TRUE
team_to_assign_to = "Red"
if("Red")
var/turf/possible_spawn_loc_blue = pick_n_take(blue_spawn_locations)
var/mob/living/carbon/human/new_thunderdome_member = new(get_turf(possible_spawn_loc_blue))
S.copy_to(new_thunderdome_member)
new_thunderdome_member.dna.ready_dna(new_thunderdome_member)
new_thunderdome_member.key = candidate_to_spawn.key
to_chat(new_thunderdome_member, "You are a member of the <font color='red'><b>RED</b></font> Thunderdome team! Gear up and help your team destroy the green team!")
new_thunderdome_member.mind.offstation_role = TRUE
team_to_assign_to = "Green"