Allows you to right click to lower job preference

This commit is contained in:
ShadowLarkens
2020-08-14 11:56:14 -07:00
parent 13d6629748
commit 1f3a74e747

View File

@@ -61,6 +61,7 @@
. = list()
. += "<tt><center>"
. += "<b>Choose occupation chances</b><br>Unavailable occupations are crossed out.<br>"
. += "<script type='text/javascript'>function setJobPrefRedirect(level, rank) { window.location.href='?src=\ref[src];level=' + level + ';set_job=' + encodeURIComponent(rank); return false; }</script>"
. += "<table width='100%' cellpadding='1' cellspacing='0'><tr><td width='20%' valign='top'>" // Table within a table for alignment, also allows you to easily add more columns.
. += "<table width='100%' cellpadding='1' cellspacing='0'>"
var/index = -1
@@ -140,7 +141,32 @@
. += "</td><td width='40%'>"
. += "<a href='?src=\ref[src];set_job=[rank]'>"
var/prefLevelLabel = "ERROR"
var/prefLevelColor = "pink"
var/prefUpperLevel = -1 // level to assign on left click
var/prefLowerLevel = -1 // level to assign on right click
if(pref.GetJobDepartment(job, 1) & job.flag)
prefLevelLabel = "High"
prefLevelColor = "55cc55"
prefUpperLevel = 4
prefLowerLevel = 2
else if(pref.GetJobDepartment(job, 2) & job.flag)
prefLevelLabel = "Medium"
prefLevelColor = "eecc22"
prefUpperLevel = 1
prefLowerLevel = 3
else if(pref.GetJobDepartment(job, 3) & job.flag)
prefLevelLabel = "Low"
prefLevelColor = "cc5555"
prefUpperLevel = 2
prefLowerLevel = 4
else
prefLevelLabel = "NEVER"
prefLevelColor = "black"
prefUpperLevel = 3
prefLowerLevel = 1
. += "<a href='?src=\ref[src];set_job=[rank];level=[prefUpperLevel]' oncontextmenu='javascript:return setJobPrefRedirect([prefLowerLevel], \"[rank]\");'>"
if(job.type == /datum/job/assistant)//Assistant is special
if(pref.job_civilian_low & ASSISTANT)
@@ -152,14 +178,7 @@
. += "</a></td></tr>"
continue
if(pref.GetJobDepartment(job, 1) & job.flag)
. += " <font color=55cc55>\[High]</font>"
else if(pref.GetJobDepartment(job, 2) & job.flag)
. += " <font color=eecc22>\[Medium]</font>"
else if(pref.GetJobDepartment(job, 3) & job.flag)
. += " <font color=cc5555>\[Low]</font>"
else
. += " <font color=black>\[NEVER]</font>"
. += " <font color=[prefLevelColor]>\[[prefLevelLabel]]</font>"
if(LAZYLEN(job.alt_titles))
. += "</a></td></tr><tr bgcolor='[lastJob.selection_color]'><td width='60%' align='center'>&nbsp</td><td><a href='?src=\ref[src];select_alt_title=\ref[job]'>\[[pref.GetPlayerAltTitle(job)]\]</a></td></tr>"
. += "</a></td></tr>"
@@ -200,8 +219,8 @@
return (pref.equip_preview_mob ? TOPIC_REFRESH_UPDATE_PREVIEW : TOPIC_REFRESH)
else if(href_list["set_job"])
if(SetJob(user, href_list["set_job"])) return (pref.equip_preview_mob ? TOPIC_REFRESH_UPDATE_PREVIEW : TOPIC_REFRESH)
if(SetJob(user, href_list["set_job"], text2num(href_list["level"])))
return (pref.equip_preview_mob ? TOPIC_REFRESH_UPDATE_PREVIEW : TOPIC_REFRESH)
else if(href_list["job_info"])
var/rank = href_list["job_info"]
@@ -250,7 +269,7 @@
if(job.title != new_title)
pref.player_alt_titles[job.title] = new_title
/datum/category_item/player_setup_item/occupation/proc/SetJob(mob/user, role)
/datum/category_item/player_setup_item/occupation/proc/SetJob(mob/user, role, level)
var/datum/job/job = job_master.GetJob(role)
if(!job)
return 0
@@ -262,63 +281,58 @@
pref.job_civilian_low |= job.flag
return 1
if(pref.GetJobDepartment(job, 1) & job.flag)
SetJobDepartment(job, 1)
else if(pref.GetJobDepartment(job, 2) & job.flag)
SetJobDepartment(job, 2)
else if(pref.GetJobDepartment(job, 3) & job.flag)
SetJobDepartment(job, 3)
else//job = Never
SetJobDepartment(job, 4)
SetJobDepartment(job, level)
return 1
/datum/category_item/player_setup_item/occupation/proc/reset_jobhigh()
pref.job_civilian_med |= pref.job_civilian_high
pref.job_medsci_med |= pref.job_medsci_high
pref.job_engsec_med |= pref.job_engsec_high
pref.job_civilian_high = 0
pref.job_medsci_high = 0
pref.job_engsec_high = 0
// Level is equal to the desired new level of the job. So for a value of 4, we want to disable the job.
/datum/category_item/player_setup_item/occupation/proc/SetJobDepartment(var/datum/job/job, var/level)
if(!job || !level) return 0
switch(level)
if(1)//Only one of these should ever be active at once so clear them all here
pref.job_civilian_high = 0
pref.job_medsci_high = 0
pref.job_engsec_high = 0
return 1
if(2)//Set current highs to med, then reset them
pref.job_civilian_med |= pref.job_civilian_high
pref.job_medsci_med |= pref.job_medsci_high
pref.job_engsec_med |= pref.job_engsec_high
pref.job_civilian_high = 0
pref.job_medsci_high = 0
pref.job_engsec_high = 0
if(!job || !level)
return 0
switch(job.department_flag)
if(CIVILIAN)
pref.job_civilian_low &= ~job.flag
pref.job_civilian_med &= ~job.flag
pref.job_civilian_high &= ~job.flag
switch(level)
if(2)
if(1)
reset_jobhigh()
pref.job_civilian_high = job.flag
pref.job_civilian_med &= ~job.flag
if(3)
if(2)
pref.job_civilian_med |= job.flag
pref.job_civilian_low &= ~job.flag
else
if(3)
pref.job_civilian_low |= job.flag
if(MEDSCI)
pref.job_medsci_low &= ~job.flag
pref.job_medsci_med &= ~job.flag
pref.job_medsci_high &= ~job.flag
switch(level)
if(2)
if(1)
reset_jobhigh()
pref.job_medsci_high = job.flag
pref.job_medsci_med &= ~job.flag
if(3)
if(2)
pref.job_medsci_med |= job.flag
pref.job_medsci_low &= ~job.flag
else
if(3)
pref.job_medsci_low |= job.flag
if(ENGSEC)
pref.job_engsec_low &= ~job.flag
pref.job_engsec_med &= ~job.flag
pref.job_engsec_high &= ~job.flag
switch(level)
if(2)
if(1)
reset_jobhigh()
pref.job_engsec_high = job.flag
pref.job_engsec_med &= ~job.flag
if(3)
if(2)
pref.job_engsec_med |= job.flag
pref.job_engsec_low &= ~job.flag
else
if(3)
pref.job_engsec_low |= job.flag
return 1