From 69c788449bc752e5240a3022895d7626e872908b Mon Sep 17 00:00:00 2001 From: SamCroswell Date: Mon, 6 Apr 2015 11:59:02 -0400 Subject: [PATCH] Thunderdome - Create Teams Button --- code/game/machinery/recharger.dm | 2 +- code/modules/admin/secrets.dm | 1 + code/modules/admin/topic.dm | 11 +++ code/modules/admin/verbs/one_click_antag.dm | 91 ++++++++++++++++++++- 4 files changed, 103 insertions(+), 2 deletions(-) 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