diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index 8f79948d09c..944aa0ee312 100644
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -25,7 +25,7 @@
if(!isarea(a))
user << "\red The [name] blinks red as you try to insert the item!"
return
- if(a.power_equip == 0)
+ if(a.power_equip == 0 && a.requires_power)
user << "\red The [name] blinks red as you try to insert the item!"
return
diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm
index 3a094007760..d574d6d2b7b 100644
--- a/code/modules/admin/secrets.dm
+++ b/code/modules/admin/secrets.dm
@@ -104,6 +104,7 @@
dat += {"
Fun Secrets
+ Start a Thunderdome match
Reset Thunderdome to default state
Remove 'internal' clothing
Remove ALL clothing
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 59660536e34..0345ad79b36 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -2674,6 +2674,17 @@
log_admin("[key_name(usr)] reset the thunderdome to default with delete_mobs==[delete_mobs].", 1)
message_admins("[key_name_admin(usr)] reset the thunderdome to default with delete_mobs==[delete_mobs].")
+
+ if("tdomestart")
+ var/confirmation = alert("Start a Thunderdome match?","Confirm","Yes","No")
+ if(confirmation == "No")
+ return
+ if(makeThunderdomeTeams())
+ log_admin("[key_name(usr)] started a Thunderdome match!", 1)
+ message_admins("[key_name_admin(usr)] has started a Thunderdome match!")
+ else
+ log_admin("[key_name(usr)] attempted to start a Thunderdome match, but no ghosts signed up.", 1)
+ message_admins("[key_name_admin(usr)] tried starting a Thunderdome match, but no ghosts signed up.")
if("securitylevel0")
set_security_level(0)
message_admins("\blue [key_name_admin(usr)] change security level to Green.", 1)
diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm
index 241417d9649..3b8f7a99088 100644
--- a/code/modules/admin/verbs/one_click_antag.dm
+++ b/code/modules/admin/verbs/one_click_antag.dm
@@ -573,4 +573,93 @@ client/proc/one_click_antag()
return 1
- return 0
\ No newline at end of file
+ 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
+
+ //Generates a list of candidates from active ghosts.
+ for(var/mob/G in 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/datum/preferences/A = new()
+ for (var/obj/effect/landmark/L in world)
+ if(L.name == "tdome1")
+ if(teamOneMembers<=0)
+ break
+
+ var/mob/living/carbon/human/newMember = new(L)
+
+ newMember.gender = pick(MALE,FEMALE)
+ A.randomize_appearance_for(newMember)
+ if(newMember.gender == MALE)
+ newMember.real_name = "[pick(first_names_male)] [pick(last_names)]"
+ else
+ newMember.real_name = "[pick(first_names_female)] [pick(last_names)]"
+ newMember.name = newMember.real_name
+ newMember.age = rand(17,45)
+
+ newMember.dna.ready_dna(newMember)
+
+ while((!theghost || !theghost.client) && candidates.len)
+ theghost = pick(candidates)
+ candidates.Remove(theghost)
+
+ if(!theghost)
+ del(newMember)
+ break
+
+ newMember.key = theghost.key
+ teamOneMembers--
+
+ if(L.name == "tdome2")
+ if(teamTwoMembers<=0)
+ break
+
+ var/mob/living/carbon/human/newMember = new(L)
+
+ newMember.gender = pick(MALE,FEMALE)
+ A.randomize_appearance_for(newMember)
+ if(newMember.gender == MALE)
+ newMember.real_name = "[pick(first_names_male)] [pick(last_names)]"
+ else
+ newMember.real_name = "[pick(first_names_female)] [pick(last_names)]"
+ newMember.name = newMember.real_name
+ newMember.age = rand(17,45)
+
+ newMember.dna.ready_dna(newMember)
+
+ while((!theghost || !theghost.client) && candidates.len)
+ theghost = pick(candidates)
+ candidates.Remove(theghost)
+
+ if(!theghost)
+ del(newMember)
+ break
+
+ newMember.key = theghost.key
+ teamTwoMembers--
+ else
+ return 0
+ return 1
\ No newline at end of file