mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 03:33:21 +00:00
Merge pull request #7723 from VOREStation/aro-playtimedept
Add department playtime requirement config, code
This commit is contained in:
@@ -1,12 +1,14 @@
|
||||
/datum/job/captain
|
||||
disallow_jobhop = TRUE
|
||||
pto_type = PTO_CIVILIAN
|
||||
//dept_time_required = 60 //Pending something more complicated
|
||||
|
||||
/datum/job/hop
|
||||
disallow_jobhop = TRUE
|
||||
pto_type = PTO_CIVILIAN
|
||||
departments = list(DEPARTMENT_COMMAND, DEPARTMENT_CIVILIAN)
|
||||
departments_managed = list(DEPARTMENT_CIVILIAN, DEPARTMENT_CARGO, DEPARTMENT_PLANET)
|
||||
dept_time_required = 60
|
||||
|
||||
alt_titles = list("Crew Resources Officer" = /datum/alt_title/cro,
|
||||
"Deputy Director" = /datum/alt_title/deputy_director)
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
/datum/job/qm
|
||||
pto_type = PTO_CARGO
|
||||
dept_time_required = 20
|
||||
|
||||
/datum/job/cargo_tech
|
||||
total_positions = 3
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/datum/job/chief_engineer
|
||||
disallow_jobhop = TRUE
|
||||
pto_type = PTO_ENGINEERING
|
||||
dept_time_required = 60
|
||||
|
||||
/datum/job/engineer
|
||||
pto_type = PTO_ENGINEERING
|
||||
|
||||
@@ -44,6 +44,7 @@ var/const/SAR =(1<<14)
|
||||
economic_modifier = 8
|
||||
minimal_player_age = 7
|
||||
pto_type = PTO_EXPLORATION
|
||||
dept_time_required = 20
|
||||
|
||||
access = list(access_eva, access_maint_tunnels, access_external_airlocks, access_pilot, access_explorer, access_gateway)
|
||||
minimal_access = list(access_eva, access_maint_tunnels, access_external_airlocks, access_pilot, access_explorer, access_gateway)
|
||||
|
||||
@@ -14,6 +14,17 @@
|
||||
//Disallow joining as this job midround from off-duty position via going on-duty
|
||||
var/disallow_jobhop = FALSE
|
||||
|
||||
//Time required in the department as other jobs before playing this one (in hours)
|
||||
var/dept_time_required = 0
|
||||
|
||||
// Check client-specific availability rules.
|
||||
/datum/job/proc/player_has_enough_pto(client/C)
|
||||
return timeoff_factor >= 0 || (C && LAZYACCESS(C.department_hours, pto_type) > 0)
|
||||
|
||||
/datum/job/proc/player_has_enough_playtime(client/C)
|
||||
return (available_in_playhours(C) == 0)
|
||||
|
||||
/datum/job/proc/available_in_playhours(client/C)
|
||||
if(C && config.use_playtime_restriction_for_jobs && isnum(C.play_hours[pto_type]) && dept_time_required > 0)
|
||||
return max(0, dept_time_required - C.play_hours[pto_type])
|
||||
return 0
|
||||
@@ -1,6 +1,7 @@
|
||||
/datum/job/cmo
|
||||
disallow_jobhop = TRUE
|
||||
pto_type = PTO_MEDICAL
|
||||
dept_time_required = 60
|
||||
|
||||
/datum/job/doctor
|
||||
spawn_positions = 5
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/datum/job/rd
|
||||
disallow_jobhop = TRUE
|
||||
pto_type = PTO_SCIENCE
|
||||
dept_time_required = 60
|
||||
|
||||
access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue,
|
||||
access_tox_storage, access_teleporter, access_sec_doors,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/datum/job/hos
|
||||
disallow_jobhop = TRUE
|
||||
pto_type = PTO_SECURITY
|
||||
dept_time_required = 60
|
||||
|
||||
access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory,
|
||||
access_forensics_lockers, access_morgue, access_maint_tunnels, access_all_personal_lockers,
|
||||
@@ -13,6 +14,7 @@
|
||||
|
||||
/datum/job/warden
|
||||
pto_type = PTO_SECURITY
|
||||
dept_time_required = 20
|
||||
|
||||
/datum/job/detective
|
||||
pto_type = PTO_SECURITY
|
||||
|
||||
@@ -60,8 +60,12 @@ var/global/datum/controller/occupations/job_master
|
||||
return 0
|
||||
if(!job.player_old_enough(player.client))
|
||||
return 0
|
||||
if(!is_job_whitelisted(player, rank)) //VOREStation Code
|
||||
//VOREStation Add
|
||||
if(!job.player_has_enough_playtime(player.client))
|
||||
return 0
|
||||
if(!is_job_whitelisted(player, rank))
|
||||
return 0
|
||||
//VOREStation Add End
|
||||
|
||||
var/position_limit = job.total_positions
|
||||
if(!latejoin)
|
||||
@@ -97,6 +101,9 @@ var/global/datum/controller/occupations/job_master
|
||||
Debug("FOC character not old enough, Player: [player]")
|
||||
continue
|
||||
//VOREStation Code Start
|
||||
if(!job.player_has_enough_playtime(player.client))
|
||||
Debug("FOC character not enough playtime, Player: [player]")
|
||||
continue
|
||||
if(!is_job_whitelisted(player, job.title))
|
||||
Debug("FOC is_job_whitelisted failed, Player: [player]")
|
||||
continue
|
||||
@@ -133,6 +140,9 @@ var/global/datum/controller/occupations/job_master
|
||||
continue
|
||||
|
||||
//VOREStation Code Start
|
||||
if(!job.player_has_enough_playtime(player.client))
|
||||
Debug("GRJ player not enough playtime, Player: [player]")
|
||||
continue
|
||||
if(!is_job_whitelisted(player, job.title))
|
||||
Debug("GRJ player not whitelisted for this job, Player: [player], Job: [job.title]")
|
||||
continue
|
||||
@@ -283,6 +293,12 @@ var/global/datum/controller/occupations/job_master
|
||||
Debug("DO player not old enough, Player: [player], Job:[job.title]")
|
||||
continue
|
||||
|
||||
//VOREStation Add
|
||||
if(!job.player_has_enough_playtime(player.client))
|
||||
Debug("DO player not enough playtime, Player: [player]")
|
||||
continue
|
||||
//VOREStation Add End
|
||||
|
||||
// If the player wants that job on this level, then try give it to him.
|
||||
if(player.client.prefs.GetJobDepartment(job, level) & job.flag)
|
||||
|
||||
@@ -610,6 +626,11 @@ var/global/datum/controller/occupations/job_master
|
||||
if(!job.player_old_enough(player.client))
|
||||
level6++
|
||||
continue
|
||||
//VOREStation Add
|
||||
if(!job.player_has_enough_playtime(player.client))
|
||||
level6++
|
||||
continue
|
||||
//VOREStation Add End
|
||||
if(player.client.prefs.GetJobDepartment(job, 1) & job.flag)
|
||||
level1++
|
||||
else if(player.client.prefs.GetJobDepartment(job, 2) & job.flag)
|
||||
|
||||
@@ -154,6 +154,7 @@
|
||||
&& !job.whitelist_only \
|
||||
&& !jobban_isbanned(user,job.title) \
|
||||
&& job.player_old_enough(user.client) \
|
||||
&& job.player_has_enough_playtime(user.client) \
|
||||
&& job.pto_type == department \
|
||||
&& !job.disallow_jobhop \
|
||||
&& job.timeoff_factor > 0
|
||||
|
||||
Reference in New Issue
Block a user