mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-26 21:48:21 +01:00
DS / prefs fix
This commit is contained in:
+18
-11
@@ -490,19 +490,26 @@ proc/pollCandidates(Question, be_special_type, antag_age_check = 0, poll_time =
|
||||
|
||||
return candidates
|
||||
|
||||
/proc/pollCandidatesByKeyWithVeto(adminclient, adminusr, max_slots, Question, be_special_type, antag_age_check = 0, poll_time = 300, ignore_respawnability = 0, min_hours = 0, flashwindow = TRUE, check_antaghud = TRUE)
|
||||
/proc/pollCandidatesWithVeto(adminclient, adminusr, max_slots, Question, be_special_type, antag_age_check = 0, poll_time = 300, ignore_respawnability = 0, min_hours = 0, flashwindow = TRUE, check_antaghud = TRUE)
|
||||
var/list/willing_ghosts = pollCandidates(Question, be_special_type, antag_age_check, poll_time, ignore_respawnability, min_hours, flashwindow, check_antaghud)
|
||||
var/list/candidate_ckeys = list()
|
||||
var/list/selected_ckeys = list()
|
||||
var/list/selected_ghosts = list()
|
||||
if(!willing_ghosts.len)
|
||||
return selected_ckeys
|
||||
for(var/mob/dead/observer/G in willing_ghosts)
|
||||
candidate_ckeys += G.key
|
||||
for(var/i = max_slots, (i > 0 && candidate_ckeys.len), i--)
|
||||
var/this_ckey = input("Pick players. This will go on until there either no more ghosts to pick from or the slots are full.", "Candidates") as null|anything in candidate_ckeys
|
||||
candidate_ckeys -= this_ckey
|
||||
selected_ckeys += this_ckey
|
||||
return selected_ckeys
|
||||
return selected_ghosts
|
||||
|
||||
var/list/candidate_ghosts = willing_ghosts.Copy()
|
||||
|
||||
to_chat(adminusr, "Candidate Ghosts:");
|
||||
for(var/mob/dead/observer/G in candidate_ghosts)
|
||||
if(G.key && G.client)
|
||||
to_chat(adminusr, "- [G] ([G.key])");
|
||||
else
|
||||
candidate_ghosts -= G
|
||||
|
||||
for(var/i = max_slots, (i > 0 && candidate_ghosts.len), i--)
|
||||
var/this_ghost = input("Pick players. This will go on until there either no more ghosts to pick from or the [i] remaining slot(s) are full.", "Candidates") as null|anything in candidate_ghosts
|
||||
candidate_ghosts -= this_ghost
|
||||
selected_ghosts += this_ghost
|
||||
return selected_ghosts
|
||||
|
||||
/proc/window_flash(client/C)
|
||||
if(ismob(C))
|
||||
|
||||
@@ -37,8 +37,8 @@ var/global/sent_strike_team = 0
|
||||
break
|
||||
|
||||
// Find ghosts willing to be DS
|
||||
var/list/commando_ckeys = pollCandidatesByKeyWithVeto(src, usr, commandos_possible, "Join the DeathSquad?",, 21, 600, 1, role_playtime_requirements[ROLE_DEATHSQUAD], TRUE, FALSE)
|
||||
if(!commando_ckeys.len)
|
||||
var/list/commando_ghosts = pollCandidatesWithVeto(src, usr, commandos_possible, "Join the DeathSquad?",, 21, 200, 1, role_playtime_requirements[ROLE_DEATHSQUAD], TRUE, FALSE)
|
||||
if(!commando_ghosts.len)
|
||||
to_chat(usr, "<span class='userdanger'>Nobody volunteered to join the DeathSquad.</span>")
|
||||
return
|
||||
|
||||
@@ -51,49 +51,50 @@ var/global/sent_strike_team = 0
|
||||
if(commando_number<=0) break
|
||||
if(L.name == "Commando")
|
||||
|
||||
spawn(0)
|
||||
var/use_ds_borg = FALSE
|
||||
var/ghost_key // Ghost ckey that we intend to put into the commando. Can remain undefined if we don't have one.
|
||||
if(commando_ckeys.len)
|
||||
ghost_key = pick(commando_ckeys)
|
||||
commando_ckeys -= ghost_key
|
||||
if(!is_leader)
|
||||
var/new_gender = alert(src, "Select Deathsquad Type.", "DS Character Generation", "Organic", "Cyborg")
|
||||
if(new_gender == "Cyborg")
|
||||
use_ds_borg = TRUE
|
||||
|
||||
if(use_ds_borg)
|
||||
var/mob/living/silicon/robot/deathsquad/R = new()
|
||||
R.forceMove(get_turf(L))
|
||||
var/rnum = rand(1,1000)
|
||||
var/borgname = "Epsilon [rnum]"
|
||||
R.name = borgname
|
||||
R.custom_name = borgname
|
||||
R.real_name = R.name
|
||||
R.mind = new
|
||||
R.mind.current = R
|
||||
R.mind.original = R
|
||||
R.mind.assigned_role = "MODE"
|
||||
R.mind.special_role = SPECIAL_ROLE_DEATHSQUAD
|
||||
if(!(R.mind in ticker.minds))
|
||||
ticker.minds += R.mind
|
||||
ticker.mode.traitors += R.mind
|
||||
if(ghost_key)
|
||||
R.key = ghost_key
|
||||
if(nuke_code)
|
||||
R.mind.store_memory("<B>Nuke Code:</B> <span class='warning'>[nuke_code].</span>")
|
||||
R.mind.store_memory("<B>Mission:</B> <span class='warning'>[input].</span>")
|
||||
to_chat(R, "<span class='userdanger'>You are a Special Operations cyborg, in the service of Central Command. \nYour current mission is: <span class='danger'>[input]</span></span>")
|
||||
else
|
||||
var/mob/living/carbon/human/new_commando = create_death_commando(L, is_leader)
|
||||
if(ghost_key)
|
||||
new_commando.key = ghost_key
|
||||
new_commando.internal = new_commando.s_store
|
||||
new_commando.update_action_buttons_icon()
|
||||
if(nuke_code)
|
||||
new_commando.mind.store_memory("<B>Nuke Code:</B> <span class='warning'>[nuke_code].</span>")
|
||||
new_commando.mind.store_memory("<B>Mission:</B> <span class='warning'>[input].</span>")
|
||||
to_chat(new_commando, "<span class='userdanger'>You are a Special Ops [is_leader ? "<B>TEAM LEADER</B>" : "commando"] in the service of Central Command. Check the table ahead for detailed instructions.\nYour current mission is: <span class='danger'>[input]</span></span>")
|
||||
var/use_ds_borg = FALSE
|
||||
var/mob/ghost_mob
|
||||
if(commando_ghosts.len)
|
||||
ghost_mob = pick(commando_ghosts)
|
||||
commando_ghosts -= ghost_mob
|
||||
if(!is_leader || TRUE)
|
||||
var/new_gender = alert(ghost_mob.client, "Select Deathsquad Type.", "DS Character Generation", "Organic", "Cyborg")
|
||||
if(new_gender == "Cyborg")
|
||||
use_ds_borg = TRUE
|
||||
else
|
||||
continue
|
||||
if(use_ds_borg)
|
||||
var/mob/living/silicon/robot/deathsquad/R = new()
|
||||
R.forceMove(get_turf(L))
|
||||
var/rnum = rand(1,1000)
|
||||
var/borgname = "Epsilon [rnum]"
|
||||
R.name = borgname
|
||||
R.custom_name = borgname
|
||||
R.real_name = R.name
|
||||
R.mind = new
|
||||
R.mind.current = R
|
||||
R.mind.original = R
|
||||
R.mind.assigned_role = "MODE"
|
||||
R.mind.special_role = SPECIAL_ROLE_DEATHSQUAD
|
||||
if(!(R.mind in ticker.minds))
|
||||
ticker.minds += R.mind
|
||||
ticker.mode.traitors += R.mind
|
||||
if(ghost_mob && ghost_mob.key)
|
||||
R.key = ghost_mob.key
|
||||
if(nuke_code)
|
||||
R.mind.store_memory("<B>Nuke Code:</B> <span class='warning'>[nuke_code].</span>")
|
||||
R.mind.store_memory("<B>Mission:</B> <span class='warning'>[input].</span>")
|
||||
to_chat(R, "<span class='userdanger'>You are a Special Operations cyborg, in the service of Central Command. \nYour current mission is: <span class='danger'>[input]</span></span>")
|
||||
else
|
||||
var/mob/living/carbon/human/new_commando = create_death_commando(L, is_leader)
|
||||
if(ghost_mob && ghost_mob.key)
|
||||
new_commando.mind.key = ghost_mob.key
|
||||
new_commando.key = ghost_mob.key
|
||||
new_commando.internal = new_commando.s_store
|
||||
new_commando.update_action_buttons_icon()
|
||||
if(nuke_code)
|
||||
new_commando.mind.store_memory("<B>Nuke Code:</B> <span class='warning'>[nuke_code].</span>")
|
||||
new_commando.mind.store_memory("<B>Mission:</B> <span class='warning'>[input].</span>")
|
||||
to_chat(new_commando, "<span class='userdanger'>You are a Special Ops [is_leader ? "<B>TEAM LEADER</B>" : "commando"] in the service of Central Command. Check the table ahead for detailed instructions.\nYour current mission is: <span class='danger'>[input]</span></span>")
|
||||
|
||||
is_leader = FALSE
|
||||
commando_number--
|
||||
@@ -133,6 +134,7 @@ var/global/sent_strike_team = 0
|
||||
A.real_name = "[commando_rank] [commando_name]"
|
||||
A.copy_to(new_commando)
|
||||
|
||||
|
||||
new_commando.dna.ready_dna(new_commando)//Creates DNA.
|
||||
|
||||
//Creates mind stuff.
|
||||
|
||||
@@ -45,8 +45,8 @@ var/global/sent_syndicate_strike_team = 0
|
||||
break
|
||||
|
||||
// Find ghosts willing to be SST
|
||||
var/list/commando_ckeys = pollCandidatesByKeyWithVeto(src, usr, syndicate_commandos_possible, "Join the Syndicate Strike Team?",, 21, 600, 1, role_playtime_requirements[ROLE_DEATHSQUAD], TRUE, FALSE)
|
||||
if(!commando_ckeys.len)
|
||||
var/list/commando_ghosts = pollCandidatesWithVeto(src, usr, syndicate_commandos_possible, "Join the Syndicate Strike Team?",, 21, 600, 1, role_playtime_requirements[ROLE_DEATHSQUAD], TRUE, FALSE)
|
||||
if(!commando_ghosts.len)
|
||||
to_chat(usr, "<span class='userdanger'>Nobody volunteered to join the SST.</span>")
|
||||
return
|
||||
|
||||
@@ -58,9 +58,10 @@ var/global/sent_syndicate_strike_team = 0
|
||||
if(L.name == "Syndicate-Commando")
|
||||
var/mob/living/carbon/human/new_syndicate_commando = create_syndicate_death_commando(L, is_leader)
|
||||
|
||||
if(commando_ckeys.len)
|
||||
new_syndicate_commando.key = pick(commando_ckeys)
|
||||
commando_ckeys -= new_syndicate_commando.key
|
||||
if(commando_ghosts.len)
|
||||
var/mob/thisghost = pick(commando_ghosts)
|
||||
new_syndicate_commando.key = thisghost.key
|
||||
commando_ghosts -= thisghost
|
||||
new_syndicate_commando.internal = new_syndicate_commando.s_store
|
||||
new_syndicate_commando.update_action_buttons_icon()
|
||||
|
||||
|
||||
@@ -209,6 +209,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
b_type = pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+")
|
||||
|
||||
max_gear_slots = config.max_loadout_points
|
||||
var/loaded_preferences_successfully = FALSE
|
||||
if(istype(C))
|
||||
if(!IsGuestKey(C.key))
|
||||
unlock_content = C.IsByondMember()
|
||||
@@ -217,16 +218,17 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
if(C.donator_level >= DONATOR_LEVEL_ONE)
|
||||
max_gear_slots += 5
|
||||
|
||||
var/loaded_preferences_successfully = load_preferences(C)
|
||||
if(loaded_preferences_successfully)
|
||||
if(load_character(C))
|
||||
return
|
||||
loaded_preferences_successfully = load_preferences(C) // Do not call this with no client/C, it generates a runtime / SQL error
|
||||
if(loaded_preferences_successfully)
|
||||
if(load_character(C))
|
||||
return
|
||||
//we couldn't load character data so just randomize the character appearance + name
|
||||
random_character() //let's create a random character then - rather than a fat, bald and naked man.
|
||||
real_name = random_name(gender)
|
||||
if(!loaded_preferences_successfully)
|
||||
save_preferences(C)
|
||||
save_character(C) //let's save this new random character so it doesn't keep generating new ones.
|
||||
if(istype(C))
|
||||
if(!loaded_preferences_successfully)
|
||||
save_preferences(C) // Do not call this with no client/C, it generates a runtime / SQL error
|
||||
save_character(C) // Do not call this with no client/C, it generates a runtime / SQL error
|
||||
|
||||
/datum/preferences/proc/color_square(colour)
|
||||
return "<span style='font-face: fixedsys; background-color: [colour]; color: [colour]'>___</span>"
|
||||
|
||||
Reference in New Issue
Block a user