Added spawnpoint datum, moved existing latejoin spawn to datum setup.

This commit is contained in:
Zuhayr
2014-06-24 13:30:04 +09:30
parent b63708577b
commit 96bbe1d9db
8 changed files with 88 additions and 7 deletions

View File

@@ -667,6 +667,7 @@
#include "code\game\verbs\who.dm" #include "code\game\verbs\who.dm"
#include "code\js\byjax.dm" #include "code\js\byjax.dm"
#include "code\js\menus.dm" #include "code\js\menus.dm"
#include "code\modules\spawnpoints.dm"
#include "code\modules\admin\admin.dm" #include "code\modules\admin\admin.dm"
#include "code\modules\admin\admin_investigate.dm" #include "code\modules\admin\admin_investigate.dm"
#include "code\modules\admin\admin_memo.dm" #include "code\modules\admin\admin_memo.dm"

View File

@@ -85,6 +85,9 @@ datum/controller/game_controller/proc/setup()
var/datum/ore_distribution/O = new() var/datum/ore_distribution/O = new()
O.populate_distribution_map() O.populate_distribution_map()
//Set up spawn points.
populate_spawn_points()
spawn(0) spawn(0)
if(ticker) if(ticker)
ticker.pregame() ticker.pregame()

View File

@@ -40,6 +40,14 @@
latejoin += loc latejoin += loc
del(src) del(src)
if("JoinLateGateway")
latejoin_gateway += loc
del(src)
if("JoinLateCryo")
latejoin_cryo += loc
del(src)
//prisoners //prisoners
if("prisonwarp") if("prisonwarp")
prisonwarp += loc prisonwarp += loc

View File

@@ -125,7 +125,12 @@ var/airtunnel_bottom = 72 // default
var/list/monkeystart = list() var/list/monkeystart = list()
var/list/wizardstart = list() var/list/wizardstart = list()
var/list/newplayer_start = list() var/list/newplayer_start = list()
//Spawnpoints.
var/list/latejoin = list() var/list/latejoin = list()
var/list/latejoin_gateway = list()
var/list/latejoin_cryo = list()
var/list/prisonwarp = list() //prisoners go to these var/list/prisonwarp = list() //prisoners go to these
var/list/holdingfacility = list() //captured people go here var/list/holdingfacility = list() //captured people go here
var/list/xeno_spawn = list()//Aliens spawn at these. var/list/xeno_spawn = list()//Aliens spawn at these.

View File

@@ -53,6 +53,7 @@ datum/preferences
var/be_random_name = 0 //whether we are a random name every round var/be_random_name = 0 //whether we are a random name every round
var/gender = MALE //gender of character (well duh) var/gender = MALE //gender of character (well duh)
var/age = 30 //age of character var/age = 30 //age of character
var/spawnpoint = "Arrivals Shuttle" //where this character will spawn (0-2).
var/b_type = "A+" //blood type (not-chooseable) var/b_type = "A+" //blood type (not-chooseable)
var/underwear = 1 //underwear type var/underwear = 1 //underwear type
var/undershirt = 1 //undershirt type var/undershirt = 1 //undershirt type
@@ -247,6 +248,7 @@ datum/preferences
dat += "<b>Gender:</b> <a href='?_src_=prefs;preference=gender'><b>[gender == MALE ? "Male" : "Female"]</b></a><br>" dat += "<b>Gender:</b> <a href='?_src_=prefs;preference=gender'><b>[gender == MALE ? "Male" : "Female"]</b></a><br>"
dat += "<b>Age:</b> <a href='?_src_=prefs;preference=age;task=input'>[age]</a>" dat += "<b>Age:</b> <a href='?_src_=prefs;preference=age;task=input'>[age]</a>"
dat += "<b>Spawn Point</b>: <a href='byond://?src=\ref[user];preference=spawnpoint;task=input'>[spawnpoint]</a><br>"
dat += "<br>" dat += "<br>"
dat += "<b>UI Style:</b> <a href='?_src_=prefs;preference=ui'><b>[UI_style]</b></a><br>" dat += "<b>UI Style:</b> <a href='?_src_=prefs;preference=ui'><b>[UI_style]</b></a><br>"
@@ -1179,6 +1181,16 @@ datum/preferences
var/skin_style_name = input(user, "Select a new skin style") as null|anything in list("default1", "default2", "default3") var/skin_style_name = input(user, "Select a new skin style") as null|anything in list("default1", "default2", "default3")
if(!skin_style_name) return if(!skin_style_name) return
if("spawnpoint")
var/list/spawnkeys = list()
for(var/S in spawntypes)
spawnkeys += S
var/choice = input(user, "Where would you like to spawn when latejoining?") as null|anything in spawnkeys
if(!choice || !spawntypes[choice])
spawnpoint = "Arrivals Shuttle"
return
spawnpoint = choice
else else
switch(href_list["preference"]) switch(href_list["preference"])
if("gender") if("gender")

View File

@@ -108,6 +108,7 @@
S["age"] >> age S["age"] >> age
S["species"] >> species S["species"] >> species
S["language"] >> language S["language"] >> language
S["spawnpoint"] >> spawnpoint
//colors to be consolidated into hex strings (requires some work with dna code) //colors to be consolidated into hex strings (requires some work with dna code)
S["hair_red"] >> r_hair S["hair_red"] >> r_hair
@@ -168,6 +169,7 @@
real_name = reject_bad_name(real_name) real_name = reject_bad_name(real_name)
if(isnull(species)) species = "Human" if(isnull(species)) species = "Human"
if(isnull(language)) language = "None" if(isnull(language)) language = "None"
if(isnull(spawnpoint)) spawnpoint = "Arrivals Shuttle"
if(isnull(nanotrasen_relation)) nanotrasen_relation = initial(nanotrasen_relation) if(isnull(nanotrasen_relation)) nanotrasen_relation = initial(nanotrasen_relation)
if(!real_name) real_name = random_name(gender) if(!real_name) real_name = random_name(gender)
be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name)) be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name))

View File

@@ -159,7 +159,7 @@
src << alert("You are currently not whitelisted to play [client.prefs.species].") src << alert("You are currently not whitelisted to play [client.prefs.species].")
return 0 return 0
AttemptLateSpawn(href_list["SelectedJob"]) AttemptLateSpawn(href_list["SelectedJob"],client.prefs.spawnpoint)
return return
if(href_list["privacy_poll"]) if(href_list["privacy_poll"])
@@ -270,7 +270,7 @@
return 1 return 1
proc/AttemptLateSpawn(rank) proc/AttemptLateSpawn(rank,var/spawning_at)
if (src != usr) if (src != usr)
return 0 return 0
if(!ticker || ticker.current_state != GAME_STATE_PLAYING) if(!ticker || ticker.current_state != GAME_STATE_PLAYING)
@@ -291,7 +291,21 @@
var/mob/living/carbon/human/character = create_character() //creates the human and transfers vars and mind var/mob/living/carbon/human/character = create_character() //creates the human and transfers vars and mind
job_master.EquipRank(character, rank, 1) //equips the human job_master.EquipRank(character, rank, 1) //equips the human
EquipCustomItems(character) EquipCustomItems(character)
//Find our spawning point.
var/join_message
var/datum/spawnpoint/S
if(spawning_at)
S = spawntypes[spawning_at]
if(S && istype(S))
character.loc = pick(S.turfs)
join_message = S.msg
else
character.loc = pick(latejoin) character.loc = pick(latejoin)
join_message = "has arrived on the station"
character.lastarea = get_area(loc) character.lastarea = get_area(loc)
// Moving wheelchair if they have one // Moving wheelchair if they have one
if(character.buckled && istype(character.buckled, /obj/structure/stool/bed/chair/wheelchair)) if(character.buckled && istype(character.buckled, /obj/structure/stool/bed/chair/wheelchair))
@@ -305,18 +319,18 @@
if(character.mind.assigned_role != "Cyborg") if(character.mind.assigned_role != "Cyborg")
data_core.manifest_inject(character) data_core.manifest_inject(character)
ticker.minds += character.mind//Cyborgs and AIs handle this in the transform proc. //TODO!!!!! ~Carn ticker.minds += character.mind//Cyborgs and AIs handle this in the transform proc. //TODO!!!!! ~Carn
AnnounceArrival(character, rank) AnnounceArrival(character, rank, join_message)
else else
character.Robotize() character.Robotize()
del(src) del(src)
proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank) proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank, var/join_message)
if (ticker.current_state == GAME_STATE_PLAYING) if (ticker.current_state == GAME_STATE_PLAYING)
var/obj/item/device/radio/intercom/a = new /obj/item/device/radio/intercom(null)// BS12 EDIT Arrivals Announcement Computer, rather than the AI. var/obj/item/device/radio/intercom/a = new /obj/item/device/radio/intercom(null)// BS12 EDIT Arrivals Announcement Computer, rather than the AI.
if(character.mind.role_alt_title) if(character.mind.role_alt_title)
rank = character.mind.role_alt_title rank = character.mind.role_alt_title
a.autosay("[character.real_name],[rank ? " [rank]," : " visitor," ] has arrived on the station.", "Arrivals Announcement Computer") a.autosay("[character.real_name],[rank ? " [rank]," : " visitor," ] [join_message ? join_message : "has arrived on the station"].", "Arrivals Announcement Computer")
del(a) del(a)
proc/LateChoices() proc/LateChoices()

View File

@@ -0,0 +1,36 @@
var/list/spawntypes = list()
/proc/populate_spawn_points()
spawntypes = list()
for(var/type in typesof(/datum/spawnpoint)-/datum/spawnpoint)
var/datum/spawnpoint/S = new type()
spawntypes[S.display_name] = S
/datum/spawnpoint
var/msg //Message to display on the arrivals computer.
var/list/turfs //List of turfs to spawn on.
var/display_name //Name used in preference setup.
/datum/spawnpoint/arrivals
display_name = "Arrivals Shuttle"
msg = "has arrived on the station"
/datum/spawnpoint/arrivals/New()
..()
turfs = latejoin
/datum/spawnpoint/gateway
display_name = "Gateway"
msg = "has completed translation from offsite gateway"
/datum/spawnpoint/gateway/New()
..()
turfs = latejoin_gateway
/datum/spawnpoint/cryo
display_name = "Cryogenic Storage"
msg = "has completed cryogenic revival and clocked in"
/datum/spawnpoint/cryo/New()
..()
turfs = latejoin_cryo