mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-12 16:44:43 +01:00
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:
@@ -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())
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user