mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-27 07:08:55 +01:00
Merge branch 'release' of https://github.com/VOREStation/VOREStation into izac
This commit is contained in:
@@ -35,8 +35,8 @@
|
||||
pref.client_fps = sanitize_integer(pref.client_fps, 0, MAX_CLIENT_FPS, initial(pref.client_fps))
|
||||
pref.ambience_freq = sanitize_integer(pref.ambience_freq, 0, 60, initial(pref.ambience_freq)) // No more than once per hour.
|
||||
pref.ambience_chance = sanitize_integer(pref.ambience_chance, 0, 100, initial(pref.ambience_chance)) // 0-100 range.
|
||||
pref.tgui_fancy = sanitize_integer(pref.tgui_fancy, 0, 1, initial(pref.tgui_fancy))
|
||||
pref.tgui_lock = sanitize_integer(pref.tgui_lock, 0, 1, initial(pref.tgui_lock))
|
||||
pref.tgui_fancy = sanitize_integer(pref.tgui_fancy, 0, 1, initial(pref.tgui_fancy))
|
||||
pref.tgui_lock = sanitize_integer(pref.tgui_lock, 0, 1, initial(pref.tgui_lock))
|
||||
|
||||
/datum/category_item/player_setup_item/player_global/ui/content(var/mob/user)
|
||||
. = "<b>UI Style:</b> <a href='?src=\ref[src];select_style=1'><b>[pref.UI_style]</b></a><br>"
|
||||
|
||||
@@ -303,6 +303,14 @@
|
||||
character_name = list("Yikatihaki")
|
||||
allowed_roles = list("Explorer")
|
||||
|
||||
/datum/gear/fluff/suit/storage/flintlock
|
||||
path = /obj/item/clothing/suit/storage/flintlock
|
||||
display_name = "Flintlock's jacket"
|
||||
slot = slot_wear_suit
|
||||
ckeywhitelist = list("flintlockdafox")
|
||||
character_name = list("Flintlock Sharpsman")
|
||||
|
||||
|
||||
// G CKEYS
|
||||
|
||||
// H CKEYS
|
||||
|
||||
@@ -134,11 +134,6 @@
|
||||
cloaks[initial(cloak_type.name)] = cloak_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
|
||||
|
||||
/datum/gear/mask/ipc_monitor
|
||||
display_name = "display monitor (Full Body Prosthetic)"
|
||||
path = /obj/item/clothing/mask/monitor
|
||||
sort_category = "Xenowear"
|
||||
|
||||
/datum/gear/uniform/harness
|
||||
display_name = "gear harness (Full Body Prosthetic, Diona)"
|
||||
path = /obj/item/clothing/under/harness
|
||||
|
||||
@@ -76,6 +76,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
|
||||
@@ -162,7 +163,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)
|
||||
@@ -174,14 +200,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'> </td><td><a href='?src=\ref[src];select_alt_title=\ref[job]'>\[[pref.GetPlayerAltTitle(job)]\]</a></td></tr>"
|
||||
. += "</a></td></tr>"
|
||||
@@ -222,8 +241,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"]
|
||||
@@ -272,7 +291,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
|
||||
@@ -284,67 +303,74 @@
|
||||
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
|
||||
pref.job_talon_high = 0 //VOREStation Add
|
||||
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_talon_med |= pref.job_talon_high //VOREStation Add
|
||||
pref.job_civilian_high = 0
|
||||
pref.job_medsci_high = 0
|
||||
pref.job_engsec_high = 0
|
||||
pref.job_talon_high = 0 //VOREStation Add
|
||||
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
|
||||
/*/VOREStation Add //YW COMMENT OUT
|
||||
if(TALON)
|
||||
pref.job_talon_low &= ~job.flag
|
||||
pref.job_talon_med &= ~job.flag
|
||||
pref.job_talon_high &= ~job.flag
|
||||
switch(level)
|
||||
if(1)
|
||||
reset_jobhigh()
|
||||
pref.job_talon_high = job.flag
|
||||
if(2)
|
||||
pref.job_talon_med |= job.flag
|
||||
if(3)
|
||||
pref.job_talon_low |= job.flag
|
||||
VOREStation Add End*/
|
||||
|
||||
return 1
|
||||
|
||||
/datum/category_item/player_setup_item/occupation/proc/ResetJobs()
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
/datum/category_group/player_setup_category/volume_sliders
|
||||
name = "Sound"
|
||||
sort_order = 7
|
||||
category_item_type = /datum/category_item/player_setup_item/volume_sliders
|
||||
|
||||
/datum/category_item/player_setup_item/volume_sliders/volume
|
||||
name = "General Volume"
|
||||
sort_order = 1
|
||||
|
||||
/datum/category_item/player_setup_item/volume_sliders/volume/load_preferences(var/savefile/S)
|
||||
S["volume_channels"] >> pref.volume_channels
|
||||
|
||||
/datum/category_item/player_setup_item/volume_sliders/volume/save_preferences(var/savefile/S)
|
||||
S["volume_channels"] << pref.volume_channels
|
||||
|
||||
/datum/category_item/player_setup_item/volume_sliders/volume/sanitize_preferences()
|
||||
if(isnull(pref.volume_channels))
|
||||
pref.volume_channels = list()
|
||||
|
||||
for(var/channel in pref.volume_channels)
|
||||
if(!(channel in GLOB.all_volume_channels))
|
||||
// Channel no longer exists, yeet
|
||||
pref.volume_channels.Remove(channel)
|
||||
|
||||
for(var/channel in GLOB.all_volume_channels)
|
||||
if(!(channel in pref.volume_channels))
|
||||
pref.volume_channels["[channel]"] = 1
|
||||
else
|
||||
pref.volume_channels["[channel]"] = clamp(pref.volume_channels["[channel]"], 0, 2)
|
||||
|
||||
/datum/category_item/player_setup_item/volume_sliders/volume/content(var/mob/user)
|
||||
. += "<b>Volume Settings</b><br>"
|
||||
for(var/channel in pref.volume_channels)
|
||||
. += "[channel]: <a href='?src=\ref[src];change_volume=[channel];'><b>[pref.volume_channels[channel] * 100]%</b></a><br>"
|
||||
. += "<br>"
|
||||
|
||||
/datum/category_item/player_setup_item/volume_sliders/volume/OnTopic(var/href, var/list/href_list, var/mob/user)
|
||||
if(href_list["change_volume"])
|
||||
if(CanUseTopic(user))
|
||||
var/channel = href_list["change_volume"]
|
||||
if(!(channel in pref.volume_channels))
|
||||
pref.volume_channels["[channel]"] = 1
|
||||
var/value = input("Choose your volume for [channel] (0-200%)", "[channel] volume", (pref.volume_channels[channel] * 100))
|
||||
if(isnum(value))
|
||||
value = CLAMP(value, 0, 200)
|
||||
pref.volume_channels["[channel]"] = (value / 100)
|
||||
return TOPIC_REFRESH
|
||||
return ..()
|
||||
|
||||
/mob/proc/get_preference_volume_channel(volume_channel)
|
||||
if(!client)
|
||||
return 0
|
||||
return client.get_preference_volume_channel(volume_channel)
|
||||
|
||||
/client/proc/get_preference_volume_channel(volume_channel)
|
||||
if(!volume_channel || !prefs)
|
||||
return 1
|
||||
if(!(volume_channel in prefs.volume_channels))
|
||||
prefs.volume_channels["[volume_channel]"] = 1
|
||||
return prefs.volume_channels["[volume_channel]"]
|
||||
|
||||
|
||||
// Neat little volume adjuster thing in case you don't wanna touch preferences by hand you lazy fuck
|
||||
/datum/volume_panel
|
||||
/datum/volume_panel/tgui_state(mob/user)
|
||||
return GLOB.tgui_always_state
|
||||
|
||||
/datum/volume_panel/tgui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, "VolumePanel", "Volume Panel")
|
||||
ui.open()
|
||||
|
||||
/datum/volume_panel/tgui_data(mob/user)
|
||||
if(!user.client || !user.client.prefs)
|
||||
return list("error" = TRUE)
|
||||
|
||||
var/list/data = ..()
|
||||
data["volume_channels"] = user.client.prefs.volume_channels
|
||||
return data
|
||||
|
||||
/datum/volume_panel/tgui_act(action, params)
|
||||
if(..())
|
||||
return TRUE
|
||||
|
||||
if(!usr?.client?.prefs)
|
||||
return TRUE
|
||||
|
||||
var/datum/preferences/P = usr.client.prefs
|
||||
switch(action)
|
||||
if("adjust_volume")
|
||||
var/channel = params["channel"]
|
||||
if(channel in P.volume_channels)
|
||||
P.volume_channels["[channel]"] = clamp(params["vol"], 0, 2)
|
||||
SScharacter_setup.queue_preferences_save(P)
|
||||
return TRUE
|
||||
|
||||
/client/verb/volume_panel()
|
||||
set name = "Volume Panel"
|
||||
set category = "Preferences"
|
||||
set desc = "Allows you to adjust volume levels on the fly."
|
||||
|
||||
if(!volume_panel)
|
||||
volume_panel = new(src)
|
||||
|
||||
volume_panel.tgui_interact(mob)
|
||||
+7
-7
@@ -2,23 +2,23 @@
|
||||
var/media_volume = 1
|
||||
var/media_player = 2 // 0 = VLC, 1 = WMP, 2 = HTML5, 3+ = unassigned
|
||||
|
||||
/datum/category_item/player_setup_item/player_global/media
|
||||
/datum/category_item/player_setup_item/volume_sliders/media
|
||||
name = "Media"
|
||||
sort_order = 5
|
||||
sort_order = 2
|
||||
|
||||
/datum/category_item/player_setup_item/player_global/media/load_preferences(var/savefile/S)
|
||||
/datum/category_item/player_setup_item/volume_sliders/media/load_preferences(var/savefile/S)
|
||||
S["media_volume"] >> pref.media_volume
|
||||
S["media_player"] >> pref.media_player
|
||||
|
||||
/datum/category_item/player_setup_item/player_global/media/save_preferences(var/savefile/S)
|
||||
/datum/category_item/player_setup_item/volume_sliders/media/save_preferences(var/savefile/S)
|
||||
S["media_volume"] << pref.media_volume
|
||||
S["media_player"] << pref.media_player
|
||||
|
||||
/datum/category_item/player_setup_item/player_global/media/sanitize_preferences()
|
||||
/datum/category_item/player_setup_item/volume_sliders/media/sanitize_preferences()
|
||||
pref.media_volume = isnum(pref.media_volume) ? CLAMP(pref.media_volume, 0, 1) : initial(pref.media_volume)
|
||||
pref.media_player = sanitize_inlist(pref.media_player, list(0, 1, 2), initial(pref.media_player))
|
||||
|
||||
/datum/category_item/player_setup_item/player_global/media/content(var/mob/user)
|
||||
/datum/category_item/player_setup_item/volume_sliders/media/content(var/mob/user)
|
||||
. += "<b>Jukebox Volume:</b>"
|
||||
. += "<a href='?src=\ref[src];change_media_volume=1'><b>[round(pref.media_volume * 100)]%</b></a><br>"
|
||||
. += "<b>Media Player Type:</b> Depending on you operating system, one of these might work better. "
|
||||
@@ -30,7 +30,7 @@
|
||||
. += (pref.media_player == 0) ? "<span class='linkOn'><b>VLC</b></span> " : "<a href='?src=\ref[src];set_media_player=0'>VLC</a> "
|
||||
. += "<br>"
|
||||
|
||||
/datum/category_item/player_setup_item/player_global/media/OnTopic(var/href, var/list/href_list, var/mob/user)
|
||||
/datum/category_item/player_setup_item/volume_sliders/media/OnTopic(var/href, var/list/href_list, var/mob/user)
|
||||
if(href_list["change_media_volume"])
|
||||
if(CanUseTopic(user))
|
||||
var/value = input("Choose your Jukebox volume (0-100%)", "Jukebox volume", round(pref.media_volume * 100))
|
||||
@@ -1,7 +1,7 @@
|
||||
// Global stuff that will put us on the map
|
||||
/datum/category_group/player_setup_category/vore
|
||||
name = "VORE"
|
||||
sort_order = 7
|
||||
sort_order = 8
|
||||
category_item_type = /datum/category_item/player_setup_item/vore
|
||||
|
||||
// Define a place to save appearance in character setup
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
var/traits_cheating = 0 //Varedit by admins allows saving new maximums on people who apply/etc
|
||||
var/starting_trait_points = STARTING_SPECIES_POINTS
|
||||
var/max_traits = MAX_SPECIES_TRAITS
|
||||
var/dirty_synth = 0 //Are you a synth
|
||||
|
||||
// Definition of the stuff for Ears
|
||||
/datum/category_item/player_setup_item/vore/traits
|
||||
@@ -82,6 +83,10 @@
|
||||
/datum/category_item/player_setup_item/vore/traits/copy_to_mob(var/mob/living/carbon/human/character)
|
||||
character.custom_species = pref.custom_species
|
||||
var/datum/species/selected_species = GLOB.all_species[pref.species]
|
||||
|
||||
if(character.isSynthetic()) //Checking if we have a synth on our hands, boys.
|
||||
pref.dirty_synth = 1
|
||||
|
||||
if(selected_species.selects_bodytype)
|
||||
var/datum/species/custom/CS = character.species
|
||||
var/S = pref.custom_base ? pref.custom_base : "Human"
|
||||
@@ -255,6 +260,14 @@
|
||||
|
||||
var/conflict = FALSE
|
||||
|
||||
user.isSynthetic() //Recheck just to be sure
|
||||
if(pref.dirty_synth && instance.not_for_synths)//if you are a synth you can't take this trait.
|
||||
alert("You cannot take this trait as a SYNTH.\
|
||||
Please remove that trait, or pick another trait to add.","Error")
|
||||
pref.dirty_synth = 0 //Just to be sure
|
||||
return TOPIC_REFRESH
|
||||
|
||||
|
||||
if(trait_choice in pref.pos_traits + pref.neu_traits + pref.neg_traits)
|
||||
conflict = instance.name
|
||||
|
||||
|
||||
Reference in New Issue
Block a user