Adds playtime requirements for roles (e.g: antag roles)

- All antag roles now have playtime requirements.
- Solo antags require 3 hours, partner antags (e.g: guardian) require
5h, team-based antags (shadowlings, nukeops, etc) require 10h. Abductors
and ERTs require 20h.
- If someone can't choose a certain role, it will display as "[IN X
HRS]" in their preferences panel.
- These restrictions are enabled by the same config as job playtime
requirements are. Once this PR is merged, we can remove
USE_AGE_RESTRICTION_FOR_JOBS from our config.
This commit is contained in:
Kyep
2017-04-01 00:12:13 -07:00
parent 6cb97888db
commit eebf2ade7f
4 changed files with 74 additions and 8 deletions

View File

@@ -28,9 +28,11 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
)
/proc/player_old_enough_antag(client/C, role)
if(available_in_days_antag(C, role) == 0)
return 1 //Available in 0 days = available right now = player is old enough to play.
return 0
if(available_in_days_antag(C, role))
return 0 //available_in_days>0 = still some days required = player not old enough
if(role_available_in_playtime(C, role))
return 0 //available_in_playtime>0 = still some more playtime required = they are not eligible
return 1
/proc/available_in_days_antag(client/C, role)
if(!C)
@@ -460,9 +462,15 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
for(var/i in special_roles)
if(jobban_isbanned(user, i))
dat += "<b>Be [capitalize(i)]:</b> <font color=red><b> \[BANNED]</b></font><br>"
else if(!player_old_enough_antag(user.client,i))
var/available_in_days_antag = available_in_days_antag(user.client,i)
dat += "<b>Be [capitalize(i)]:</b> <font color=red><b> \[IN [(available_in_days_antag)] DAYS]</b></font><br>"
else if(!player_old_enough_antag(user.client, i))
var/available_in_days_antag = available_in_days_antag(user.client, i)
var/role_available_in_playtime = get_exp_format(role_available_in_playtime(user.client, i))
if(available_in_days_antag)
dat += "<b>Be [capitalize(i)]:</b> <font color=red><b> \[IN [(available_in_days_antag)] DAYS]</b></font><br>"
else if(role_available_in_playtime)
dat += "<b>Be [capitalize(i)]:</b> <font color=red><b> \[IN [(role_available_in_playtime)]]</b></font><br>"
else
dat += "<b>Be [capitalize(i)]:</b> <font color=red><b> \[ERROR]</b></font><br>"
else
dat += "<b>Be [capitalize(i)]:</b> <a href='?_src_=prefs;preference=be_special;role=[i]'><b>[(i in src.be_special) ? "Yes" : "No"]</b></a><br>"
dat += "</td></tr></table>"