Mob Initialization (#24840)

* Mob Initialization

* new_player Repath

* Fix the dme

* Fix the shit

* Fix a loc

* Fix another loc

* But, in my haste, I forgot the cola!

* Another loc

* ANOTHER LOC

* Further docs

* Where'd that s come from

* Fix shit

* Better
This commit is contained in:
Cyberboss
2017-03-13 15:21:12 -04:00
committed by AnturK
parent 29d9da3760
commit 012eaec1b9
107 changed files with 233 additions and 219 deletions
+17 -18
View File
@@ -68,8 +68,7 @@ var/datum/controller/subsystem/job/SSjob
SetupOccupations()
return type_occupations[jobtype]
/datum/controller/subsystem/job/proc/AssignRole(mob/new_player/player, rank, latejoin=0)
/datum/controller/subsystem/job/proc/AssignRole(mob/dead/new_player/player, rank, latejoin=0)
Debug("Running AR, Player: [player], Rank: [rank], LJ: [latejoin]")
if(player && player.mind && rank)
var/datum/job/job = GetJob(rank)
@@ -94,7 +93,7 @@ var/datum/controller/subsystem/job/SSjob
/datum/controller/subsystem/job/proc/FindOccupationCandidates(datum/job/job, level, flag)
Debug("Running FOC, Job: [job], Level: [level], Flag: [flag]")
var/list/candidates = list()
for(var/mob/new_player/player in unassigned)
for(var/mob/dead/new_player/player in unassigned)
if(jobban_isbanned(player, job.title))
Debug("FOC isbanned failed, Player: [player]")
continue
@@ -115,7 +114,7 @@ var/datum/controller/subsystem/job/SSjob
candidates += player
return candidates
/datum/controller/subsystem/job/proc/GiveRandomJob(mob/new_player/player)
/datum/controller/subsystem/job/proc/GiveRandomJob(mob/dead/new_player/player)
Debug("GRJ Giving random job, Player: [player]")
for(var/datum/job/job in shuffle(occupations))
if(!job)
@@ -151,7 +150,7 @@ var/datum/controller/subsystem/job/SSjob
break
/datum/controller/subsystem/job/proc/ResetOccupations()
for(var/mob/new_player/player in player_list)
for(var/mob/dead/new_player/player in player_list)
if((player) && (player.mind))
player.mind.assigned_role = null
player.mind.special_role = null
@@ -174,7 +173,7 @@ var/datum/controller/subsystem/job/SSjob
var/list/candidates = FindOccupationCandidates(job, level)
if(!candidates.len)
continue
var/mob/new_player/candidate = pick(candidates)
var/mob/dead/new_player/candidate = pick(candidates)
if(AssignRole(candidate, command_position))
return 1
return 0
@@ -192,7 +191,7 @@ var/datum/controller/subsystem/job/SSjob
var/list/candidates = FindOccupationCandidates(job, level)
if(!candidates.len)
continue
var/mob/new_player/candidate = pick(candidates)
var/mob/dead/new_player/candidate = pick(candidates)
AssignRole(candidate, command_position)
return
@@ -207,7 +206,7 @@ var/datum/controller/subsystem/job/SSjob
var/list/candidates = list()
candidates = FindOccupationCandidates(job, level)
if(candidates.len)
var/mob/new_player/candidate = pick(candidates)
var/mob/dead/new_player/candidate = pick(candidates)
if(AssignRole(candidate, "AI"))
ai_selected++
break
@@ -231,7 +230,7 @@ var/datum/controller/subsystem/job/SSjob
A.spawn_positions = 3
//Get the players who are ready
for(var/mob/new_player/player in player_list)
for(var/mob/dead/new_player/player in player_list)
if(player.ready && player.mind && !player.mind.assigned_role)
unassigned += player
@@ -261,7 +260,7 @@ var/datum/controller/subsystem/job/SSjob
var/datum/job/assist = new /datum/job/assistant()
var/list/assistant_candidates = FindOccupationCandidates(assist, 3)
Debug("AC1, Candidates: [assistant_candidates.len]")
for(var/mob/new_player/player in assistant_candidates)
for(var/mob/dead/new_player/player in assistant_candidates)
Debug("AC1 pass, Player: [player]")
AssignRole(player, "Assistant")
assistant_candidates -= player
@@ -292,7 +291,7 @@ var/datum/controller/subsystem/job/SSjob
CheckHeadPositions(level)
// Loop through all unassigned players
for(var/mob/new_player/player in unassigned)
for(var/mob/dead/new_player/player in unassigned)
if(PopcapReached())
RejectPlayer(player)
@@ -330,13 +329,13 @@ var/datum/controller/subsystem/job/SSjob
// Hand out random jobs to the people who didn't get any in the last check
// Also makes sure that they got their preference correct
for(var/mob/new_player/player in unassigned)
for(var/mob/dead/new_player/player in unassigned)
if(PopcapReached())
RejectPlayer(player)
else if(jobban_isbanned(player, "Assistant"))
GiveRandomJob(player) //you get to roll for random before everyone else just to be sure you don't get assistant. you're so speshul
for(var/mob/new_player/player in unassigned)
for(var/mob/dead/new_player/player in unassigned)
if(PopcapReached())
RejectPlayer(player)
else if(player.client.prefs.joblessrole == BERANDOMJOB)
@@ -347,7 +346,7 @@ var/datum/controller/subsystem/job/SSjob
Debug("DO, Running AC2")
// For those who wanted to be assistant if their preferences were filled, here you go.
for(var/mob/new_player/player in unassigned)
for(var/mob/dead/new_player/player in unassigned)
if(PopcapReached())
RejectPlayer(player)
if(player.client.prefs.joblessrole == BEASSISTANT)
@@ -356,14 +355,14 @@ var/datum/controller/subsystem/job/SSjob
else // For those who don't want to play if their preference were filled, back you go.
RejectPlayer(player)
for(var/mob/new_player/player in unassigned) //Players that wanted to back out but couldn't because they're antags (can you feel the edge case?)
for(var/mob/dead/new_player/player in unassigned) //Players that wanted to back out but couldn't because they're antags (can you feel the edge case?)
GiveRandomJob(player)
return 1
//Gives the player the stuff he should have with his rank
/datum/controller/subsystem/job/proc/EquipRank(mob/M, rank, joined_late=0)
var/mob/new_player/N
var/mob/dead/new_player/N
var/mob/living/H
if(!joined_late)
N = M
@@ -473,7 +472,7 @@ var/datum/controller/subsystem/job/SSjob
var/level4 = 0 //never
var/level5 = 0 //banned
var/level6 = 0 //account too young
for(var/mob/new_player/player in player_list)
for(var/mob/dead/new_player/player in player_list)
if(!(player.ready && player.mind && !player.mind.assigned_role))
continue //This player is not ready
if(jobban_isbanned(player, job.title))
@@ -500,7 +499,7 @@ var/datum/controller/subsystem/job/SSjob
return 1
return 0
/datum/controller/subsystem/job/proc/RejectPlayer(mob/new_player/player)
/datum/controller/subsystem/job/proc/RejectPlayer(mob/dead/new_player/player)
if(player.mind && player.mind.special_role)
return
if(PopcapReached())
+7 -7
View File
@@ -86,7 +86,7 @@ var/datum/controller/subsystem/ticker/ticker
timeLeft = max(0,start_at - world.time)
totalPlayers = 0
totalPlayersReady = 0
for(var/mob/new_player/player in player_list)
for(var/mob/dead/new_player/player in player_list)
++totalPlayers
if(player.ready)
++totalPlayersReady
@@ -364,7 +364,7 @@ var/datum/controller/subsystem/ticker/ticker
M.gib()
/datum/controller/subsystem/ticker/proc/create_characters()
for(var/mob/new_player/player in player_list)
for(var/mob/dead/new_player/player in player_list)
if(player.ready && player.mind)
joined_player_list += player.ckey
player.create_character(FALSE)
@@ -373,7 +373,7 @@ var/datum/controller/subsystem/ticker/ticker
CHECK_TICK
/datum/controller/subsystem/ticker/proc/collect_minds()
for(var/mob/new_player/P in player_list)
for(var/mob/dead/new_player/P in player_list)
if(P.new_character && P.new_character.mind)
ticker.minds += P.new_character.mind
CHECK_TICK
@@ -381,7 +381,7 @@ var/datum/controller/subsystem/ticker/ticker
/datum/controller/subsystem/ticker/proc/equip_characters()
var/captainless=1
for(var/mob/new_player/N in player_list)
for(var/mob/dead/new_player/N in player_list)
var/mob/living/carbon/human/player = N.new_character
if(istype(player) && player.mind && player.mind.assigned_role)
if(player.mind.assigned_role == "Captain")
@@ -390,14 +390,14 @@ var/datum/controller/subsystem/ticker/ticker
SSjob.EquipRank(N, player.mind.assigned_role, 0)
CHECK_TICK
if(captainless)
for(var/mob/new_player/N in player_list)
for(var/mob/dead/new_player/N in player_list)
if(N.new_character)
to_chat(N, "Captainship not forced on anyone.")
CHECK_TICK
/datum/controller/subsystem/ticker/proc/transfer_characters()
var/list/livings = list()
for(var/mob/new_player/player in player_list)
for(var/mob/dead/new_player/player in player_list)
var/mob/living = player.transfer_character()
if(living)
qdel(player)
@@ -624,7 +624,7 @@ var/datum/controller/subsystem/ticker/ticker
return
queue_delay++
var/mob/new_player/next_in_line = queued_players[1]
var/mob/dead/new_player/next_in_line = queued_players[1]
switch(queue_delay)
if(5) //every 5 ticks check if there is a slot available