|
|
|
@@ -1,5 +1,3 @@
|
|
|
|
|
#define LINKIFY_READY(string, value) "<a href='byond://?src=[REF(src)];ready=[value]'>[string]</a>"
|
|
|
|
|
|
|
|
|
|
/mob/dead/new_player
|
|
|
|
|
var/ready = 0
|
|
|
|
|
var/spawning = 0//Referenced when you want to delete the new_player later on in the code.
|
|
|
|
@@ -10,6 +8,8 @@
|
|
|
|
|
|
|
|
|
|
density = FALSE
|
|
|
|
|
stat = DEAD
|
|
|
|
|
hud_type = /datum/hud/new_player
|
|
|
|
|
hud_possible = list()
|
|
|
|
|
|
|
|
|
|
var/mob/living/new_character //for instant transfer once the round is set up
|
|
|
|
|
|
|
|
|
@@ -43,69 +43,6 @@
|
|
|
|
|
/mob/dead/new_player/prepare_huds()
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
/mob/dead/new_player/proc/new_player_panel()
|
|
|
|
|
var/output = "<center><p>Welcome, <b>[client ? client.prefs.real_name : "Unknown User"]</b></p>"
|
|
|
|
|
output += "<center><p><a href='byond://?src=[REF(src)];show_preferences=1'>Setup Character</a></p>"
|
|
|
|
|
|
|
|
|
|
if(SSticker.current_state <= GAME_STATE_PREGAME)
|
|
|
|
|
switch(ready)
|
|
|
|
|
if(PLAYER_NOT_READY)
|
|
|
|
|
output += "<p>\[ [LINKIFY_READY("Ready", PLAYER_READY_TO_PLAY)] | <b>Not Ready</b> | [LINKIFY_READY("Observe", PLAYER_READY_TO_OBSERVE)] \]</p>"
|
|
|
|
|
if(PLAYER_READY_TO_PLAY)
|
|
|
|
|
output += "<p>\[ <b>Ready</b> | [LINKIFY_READY("Not Ready", PLAYER_NOT_READY)] | [LINKIFY_READY("Observe", PLAYER_READY_TO_OBSERVE)] \]</p>"
|
|
|
|
|
if(PLAYER_READY_TO_OBSERVE)
|
|
|
|
|
output += "<p>\[ [LINKIFY_READY("Ready", PLAYER_READY_TO_PLAY)] | [LINKIFY_READY("Not Ready", PLAYER_NOT_READY)] | <b> Observe </b> \]</p>"
|
|
|
|
|
else
|
|
|
|
|
output += "<p><a href='byond://?src=[REF(src)];manifest=1'>View the Crew Manifest</a></p>"
|
|
|
|
|
output += "<p><a href='byond://?src=[REF(src)];late_join=1'>Join Game!</a></p>"
|
|
|
|
|
output += "<p>[LINKIFY_READY("Observe", PLAYER_READY_TO_OBSERVE)]</p>"
|
|
|
|
|
|
|
|
|
|
if(!IsGuestKey(src.key))
|
|
|
|
|
output += playerpolls()
|
|
|
|
|
|
|
|
|
|
output += "</center>"
|
|
|
|
|
|
|
|
|
|
//src << browse(output,"window=playersetup;size=210x240;can_close=0")
|
|
|
|
|
var/datum/browser/popup = new(src, "playersetup", "<div align='center'>New Player Options</div>", 250, 265)
|
|
|
|
|
popup.set_window_options("can_close=0")
|
|
|
|
|
popup.set_content(output)
|
|
|
|
|
popup.open(FALSE)
|
|
|
|
|
|
|
|
|
|
/mob/dead/new_player/proc/playerpolls()
|
|
|
|
|
var/output = "" //hey tg why is this a list?
|
|
|
|
|
if (SSdbcore.Connect())
|
|
|
|
|
var/isadmin = FALSE
|
|
|
|
|
if(client?.holder)
|
|
|
|
|
isadmin = TRUE
|
|
|
|
|
var/datum/db_query/query_get_new_polls = SSdbcore.NewQuery({"
|
|
|
|
|
SELECT id FROM [format_table_name("poll_question")]
|
|
|
|
|
WHERE (adminonly = 0 OR :isadmin = 1)
|
|
|
|
|
AND Now() BETWEEN starttime AND endtime
|
|
|
|
|
AND deleted = 0
|
|
|
|
|
AND id NOT IN (
|
|
|
|
|
SELECT pollid FROM [format_table_name("poll_vote")]
|
|
|
|
|
WHERE ckey = :ckey
|
|
|
|
|
AND deleted = 0
|
|
|
|
|
)
|
|
|
|
|
AND id NOT IN (
|
|
|
|
|
SELECT pollid FROM [format_table_name("poll_textreply")]
|
|
|
|
|
WHERE ckey = :ckey
|
|
|
|
|
AND deleted = 0
|
|
|
|
|
)
|
|
|
|
|
"}, list("isadmin" = isadmin, "ckey" = ckey))
|
|
|
|
|
var/rs = REF(src)
|
|
|
|
|
if(!query_get_new_polls.Execute())
|
|
|
|
|
qdel(query_get_new_polls)
|
|
|
|
|
return
|
|
|
|
|
if(query_get_new_polls.NextRow())
|
|
|
|
|
output += "<p><b><a href='byond://?src=[rs];showpoll=1'>Show Player Polls</A> (NEW!)</b></p>"
|
|
|
|
|
else
|
|
|
|
|
output += "<p><a href='byond://?src=[rs];showpoll=1'>Show Player Polls</A></p>"
|
|
|
|
|
qdel(query_get_new_polls)
|
|
|
|
|
if(QDELETED(src))
|
|
|
|
|
return
|
|
|
|
|
return output
|
|
|
|
|
|
|
|
|
|
/mob/dead/new_player/proc/age_gate()
|
|
|
|
|
var/list/dat = list("<center>")
|
|
|
|
|
dat += "Enter your date of birth here, to confirm that you are over 18.<BR>"
|
|
|
|
@@ -152,6 +89,9 @@
|
|
|
|
|
if(!(client.prefs.db_flags & DB_FLAG_AGE_CONFIRMATION_INCOMPLETE)) //completed? Skip
|
|
|
|
|
return TRUE
|
|
|
|
|
|
|
|
|
|
if(!client)
|
|
|
|
|
return FALSE
|
|
|
|
|
|
|
|
|
|
var/age_verification = age_gate()
|
|
|
|
|
//ban them and kick them
|
|
|
|
|
if(age_verification != 1)
|
|
|
|
@@ -269,61 +209,12 @@
|
|
|
|
|
if(!age_verify())
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
//Determines Relevent Population Cap
|
|
|
|
|
var/relevant_cap
|
|
|
|
|
var/hpc = CONFIG_GET(number/hard_popcap)
|
|
|
|
|
var/epc = CONFIG_GET(number/extreme_popcap)
|
|
|
|
|
if(hpc && epc)
|
|
|
|
|
relevant_cap = min(hpc, epc)
|
|
|
|
|
else
|
|
|
|
|
relevant_cap = max(hpc, epc)
|
|
|
|
|
|
|
|
|
|
if(href_list["show_preferences"])
|
|
|
|
|
client.prefs.ShowChoices(src)
|
|
|
|
|
return 1
|
|
|
|
|
|
|
|
|
|
if(href_list["ready"])
|
|
|
|
|
var/tready = text2num(href_list["ready"])
|
|
|
|
|
//Avoid updating ready if we're after PREGAME (they should use latejoin instead)
|
|
|
|
|
//This is likely not an actual issue but I don't have time to prove that this
|
|
|
|
|
//no longer is required
|
|
|
|
|
if(SSticker.current_state <= GAME_STATE_PREGAME)
|
|
|
|
|
ready = tready
|
|
|
|
|
//if it's post initialisation and they're trying to observe we do the needful
|
|
|
|
|
if(!SSticker.current_state < GAME_STATE_PREGAME && tready == PLAYER_READY_TO_OBSERVE)
|
|
|
|
|
ready = tready
|
|
|
|
|
make_me_an_observer()
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
if(href_list["refresh"])
|
|
|
|
|
src << browse(null, "window=playersetup") //closes the player setup window
|
|
|
|
|
new_player_panel()
|
|
|
|
|
|
|
|
|
|
if(href_list["late_join"])
|
|
|
|
|
if(!SSticker || !SSticker.IsRoundInProgress())
|
|
|
|
|
to_chat(usr, "<span class='danger'>The round is either not ready, or has already finished...</span>")
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
if(href_list["late_join"] == "override")
|
|
|
|
|
LateChoices()
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
if(SSticker.queued_players.len || (relevant_cap && living_player_count() >= relevant_cap && !(ckey(key) in GLOB.admin_datums)))
|
|
|
|
|
to_chat(usr, "<span class='danger'>[CONFIG_GET(string/hard_popcap_message)]</span>")
|
|
|
|
|
|
|
|
|
|
var/queue_position = SSticker.queued_players.Find(usr)
|
|
|
|
|
if(queue_position == 1)
|
|
|
|
|
to_chat(usr, "<span class='notice'>You are next in line to join the game. You will be notified when a slot opens up.</span>")
|
|
|
|
|
else if(queue_position)
|
|
|
|
|
to_chat(usr, "<span class='notice'>There are [queue_position-1] players in front of you in the queue to join the game.</span>")
|
|
|
|
|
else
|
|
|
|
|
SSticker.queued_players += usr
|
|
|
|
|
to_chat(usr, "<span class='notice'>You have been added to the queue to join the game. Your position in queue is [SSticker.queued_players.len].</span>")
|
|
|
|
|
return
|
|
|
|
|
LateChoices()
|
|
|
|
|
|
|
|
|
|
if(href_list["manifest"])
|
|
|
|
|
ViewManifest()
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
if(href_list["SelectedJob"])
|
|
|
|
|
if(!SSticker || !SSticker.IsRoundInProgress())
|
|
|
|
@@ -337,6 +228,17 @@
|
|
|
|
|
to_chat(usr, "<span class='notice'>There is an administrative lock on entering the game!</span>")
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
//Determines Relevent Population Cap
|
|
|
|
|
var/relevant_cap
|
|
|
|
|
var/hpc = CONFIG_GET(number/hard_popcap)
|
|
|
|
|
var/epc = CONFIG_GET(number/extreme_popcap)
|
|
|
|
|
if(hpc && epc)
|
|
|
|
|
relevant_cap = min(hpc, epc)
|
|
|
|
|
else
|
|
|
|
|
relevant_cap = max(hpc, epc)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(SSticker.queued_players.len && !(ckey(key) in GLOB.admin_datums))
|
|
|
|
|
if((living_player_count() >= relevant_cap) || (src != SSticker.queued_players[1]))
|
|
|
|
|
to_chat(usr, "<span class='warning'>Server is full.</span>")
|
|
|
|
@@ -349,6 +251,15 @@
|
|
|
|
|
if(!GLOB.enter_allowed)
|
|
|
|
|
to_chat(usr, "<span class='notice'> There is an administrative lock on entering the game!</span>")
|
|
|
|
|
|
|
|
|
|
//Determines Relevent Population Cap
|
|
|
|
|
var/relevant_cap
|
|
|
|
|
var/hpc = CONFIG_GET(number/hard_popcap)
|
|
|
|
|
var/epc = CONFIG_GET(number/extreme_popcap)
|
|
|
|
|
if(hpc && epc)
|
|
|
|
|
relevant_cap = min(hpc, epc)
|
|
|
|
|
else
|
|
|
|
|
relevant_cap = max(hpc, epc)
|
|
|
|
|
|
|
|
|
|
if(SSticker.queued_players.len && !(ckey(key) in GLOB.admin_datums))
|
|
|
|
|
if((living_player_count() >= relevant_cap) || (src != SSticker.queued_players[1]))
|
|
|
|
|
to_chat(usr, "<span class='warning'>Server is full.</span>")
|
|
|
|
@@ -360,13 +271,6 @@
|
|
|
|
|
SSticker.queue_delay = 4
|
|
|
|
|
qdel(src)
|
|
|
|
|
|
|
|
|
|
else if(!href_list["late_join"])
|
|
|
|
|
new_player_panel()
|
|
|
|
|
|
|
|
|
|
if(href_list["showpoll"])
|
|
|
|
|
handle_player_polling()
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
if(href_list["pollid"])
|
|
|
|
|
var/pollid = href_list["pollid"]
|
|
|
|
|
if(istext(pollid))
|
|
|
|
@@ -460,7 +364,6 @@
|
|
|
|
|
if(QDELETED(src) || !src.client || this_is_like_playing_right != "Yes")
|
|
|
|
|
ready = PLAYER_NOT_READY
|
|
|
|
|
src << browse(null, "window=playersetup") //closes the player setup window
|
|
|
|
|
new_player_panel()
|
|
|
|
|
return FALSE
|
|
|
|
|
|
|
|
|
|
var/mob/dead/observer/observer = new()
|
|
|
|
|