sigh
This commit is contained in:
@@ -1,20 +0,0 @@
|
|||||||
#define JOB_MODIFICATION_MAP_NAME "PubbyStation"
|
|
||||||
|
|
||||||
/datum/job/hos/New()
|
|
||||||
..()
|
|
||||||
MAP_JOB_CHECK
|
|
||||||
access += ACCESS_CREMATORIUM
|
|
||||||
minimal_access += ACCESS_CREMATORIUM
|
|
||||||
|
|
||||||
/datum/job/warden/New()
|
|
||||||
..()
|
|
||||||
MAP_JOB_CHECK
|
|
||||||
access += ACCESS_CREMATORIUM
|
|
||||||
minimal_access += ACCESS_CREMATORIUM
|
|
||||||
|
|
||||||
/datum/job/officer/New()
|
|
||||||
..()
|
|
||||||
MAP_JOB_CHECK
|
|
||||||
access += ACCESS_CREMATORIUM
|
|
||||||
minimal_access += ACCESS_CREMATORIUM
|
|
||||||
|
|
||||||
@@ -7,5 +7,10 @@
|
|||||||
"whiteship": "whiteship_pubby",
|
"whiteship": "whiteship_pubby",
|
||||||
"ferry": "ferry_fancy",
|
"ferry": "ferry_fancy",
|
||||||
"cargo": "cargo_box"
|
"cargo": "cargo_box"
|
||||||
}
|
},
|
||||||
|
"job_access_add": {
|
||||||
|
"/datum/job/hos": [27],
|
||||||
|
"/datum/job/officer": [27],
|
||||||
|
"/datum/job/detective": [27]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,11 +20,6 @@ Multi-Z stations are supported and multi-Z mining and away missions would
|
|||||||
require only minor tweaks.
|
require only minor tweaks.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// helpers for modifying jobs, used in various job_changes.dm files
|
|
||||||
#define MAP_JOB_CHECK if(SSmapping.config.map_name != JOB_MODIFICATION_MAP_NAME) { return; }
|
|
||||||
#define MAP_JOB_CHECK_BASE if(SSmapping.config.map_name != JOB_MODIFICATION_MAP_NAME) { return ..(); }
|
|
||||||
#define MAP_REMOVE_JOB(jobpath) /datum/job/##jobpath/map_check() { return (SSmapping.config.map_name != JOB_MODIFICATION_MAP_NAME) && ..() }
|
|
||||||
|
|
||||||
#define SPACERUIN_MAP_EDGE_PAD 15
|
#define SPACERUIN_MAP_EDGE_PAD 15
|
||||||
|
|
||||||
// traits
|
// traits
|
||||||
|
|||||||
@@ -55,9 +55,10 @@ SUBSYSTEM_DEF(job)
|
|||||||
continue
|
continue
|
||||||
if(!job.config_check())
|
if(!job.config_check())
|
||||||
continue
|
continue
|
||||||
if(!job.map_check()) //Even though we initialize before mapping, this is fine because the config is loaded at new
|
if(!job.map_check(SSmapping.config)) //Even though we initialize before mapping, this is fine because the config is loaded at new
|
||||||
testing("Removed [job.type] due to map config");
|
testing("Removed [job.type] due to map config");
|
||||||
continue
|
continue
|
||||||
|
job.process_map_overrides(SSmapping.config)
|
||||||
occupations += job
|
occupations += job
|
||||||
name_occupations[job.title] = job
|
name_occupations[job.title] = job
|
||||||
type_occupations[J] = job
|
type_occupations[J] = job
|
||||||
|
|||||||
@@ -73,6 +73,31 @@
|
|||||||
/// Starting skill modifiers.
|
/// Starting skill modifiers.
|
||||||
var/list/starting_modifiers
|
var/list/starting_modifiers
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if we should be created on a certain map
|
||||||
|
*/
|
||||||
|
/datum/job/proc/map_check(datum/map_config/C)
|
||||||
|
return (length(C.job_whitelist)? (type in C.job_whitelist) : !(type in C.job_blacklist))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Processes map specific overrides
|
||||||
|
*/
|
||||||
|
/datum/job/proc/process_map_overrides(datum/map_config/C)
|
||||||
|
if(type in C.job_override_spawn_positions)
|
||||||
|
spawn_positions = C.job_override_spawn_positions[type]
|
||||||
|
if(type in C.job_override_total_positions)
|
||||||
|
total_positions = C.job_override_total_positions[type]
|
||||||
|
if(type in C.job_access_override)
|
||||||
|
access = C.job_access_override[type]
|
||||||
|
minimal_access = access
|
||||||
|
else
|
||||||
|
if(type in C.job_access_add)
|
||||||
|
access += C.job_access_add[type]
|
||||||
|
minimal_access += C.job_access_add[type]
|
||||||
|
if(type in C.job_access_remove)
|
||||||
|
access -= C.job_access_add[type]
|
||||||
|
minimal_access -= C.job_access_remove[type]
|
||||||
|
|
||||||
//Only override this proc
|
//Only override this proc
|
||||||
//H is usually a human unless an /equip override transformed it
|
//H is usually a human unless an /equip override transformed it
|
||||||
/datum/job/proc/after_spawn(mob/living/H, mob/M, latejoin = FALSE)
|
/datum/job/proc/after_spawn(mob/living/H, mob/M, latejoin = FALSE)
|
||||||
@@ -175,9 +200,6 @@
|
|||||||
/datum/job/proc/config_check()
|
/datum/job/proc/config_check()
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
/datum/job/proc/map_check()
|
|
||||||
return TRUE
|
|
||||||
|
|
||||||
/datum/job/proc/radio_help_message(mob/M)
|
/datum/job/proc/radio_help_message(mob/M)
|
||||||
to_chat(M, "<b>Prefix your message with :h to speak on your department's radio. To see other prefixes, look closely at your headset.</b>")
|
to_chat(M, "<b>Prefix your message with :h to speak on your department's radio. To see other prefixes, look closely at your headset.</b>")
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
//this needs to come after the job_types subfolder to keep the correct ordering
|
|
||||||
|
|
||||||
#include "..\..\..\..\_maps\map_files\PubbyStation\job_changes.dm"
|
|
||||||
#undef JOB_MODIFICATION_MAP_NAME
|
|
||||||
@@ -43,6 +43,21 @@
|
|||||||
/// Orientation to load in by default.
|
/// Orientation to load in by default.
|
||||||
var/orientation = SOUTH //byond defaults to placing everyting SOUTH.
|
var/orientation = SOUTH //byond defaults to placing everyting SOUTH.
|
||||||
|
|
||||||
|
/// Jobs whitelist - if this is not empty, ONLY these jobs are allowed. Overrides blacklist.
|
||||||
|
var/list/job_whitelist
|
||||||
|
/// Jobs blacklist - if this is not empty, jobs in this aren't allowed.
|
||||||
|
var/list/job_blacklist
|
||||||
|
/// Job spawn position mod - type = number
|
||||||
|
var/list/job_override_spawn_positions
|
||||||
|
/// Job total position mod - type = number
|
||||||
|
var/list/job_override_total_positions
|
||||||
|
/// Add these accesses to jobs - type = list()
|
||||||
|
var/list/job_access_add
|
||||||
|
/// Remove these accesses from jobs - type = list()
|
||||||
|
var/list/job_access_remove
|
||||||
|
/// Override job accesses - type = list() - overrides everything else
|
||||||
|
var/list/job_access_override
|
||||||
|
|
||||||
/proc/load_map_config(filename = "data/next_map.json", default_to_box, delete_after, error_if_missing = TRUE)
|
/proc/load_map_config(filename = "data/next_map.json", default_to_box, delete_after, error_if_missing = TRUE)
|
||||||
var/datum/map_config/config = new
|
var/datum/map_config/config = new
|
||||||
if (default_to_box)
|
if (default_to_box)
|
||||||
@@ -161,6 +176,69 @@
|
|||||||
|
|
||||||
allow_custom_shuttles = json["allow_custom_shuttles"] != FALSE
|
allow_custom_shuttles = json["allow_custom_shuttles"] != FALSE
|
||||||
|
|
||||||
|
if("job_whitelist" in json)
|
||||||
|
job_whitelist = list()
|
||||||
|
for(var/path in json["job_whitelist"])
|
||||||
|
var/type = text2path(path)
|
||||||
|
if(!path)
|
||||||
|
log_config("map datum [config_filename] failed to validate path [path] in job overrides.")
|
||||||
|
continue
|
||||||
|
job_whitelist += type
|
||||||
|
|
||||||
|
if("job_blacklist" in json)
|
||||||
|
job_blacklist = list()
|
||||||
|
for(var/path in json["job_blacklist"])
|
||||||
|
var/type = text2path(path)
|
||||||
|
if(!path)
|
||||||
|
log_config("map datum [config_filename] failed to validate path [path] in job overrides.")
|
||||||
|
continue
|
||||||
|
job_blacklist += type
|
||||||
|
|
||||||
|
if("job_override_spawn_positions" in json)
|
||||||
|
job_override_spawn_positions = list()
|
||||||
|
for(var/path in json["job_override_spawn_positions"])
|
||||||
|
var/type = text2path(path)
|
||||||
|
if(!path)
|
||||||
|
log_config("map datum [config_filename] failed to validate path [path] in job overrides.")
|
||||||
|
continue
|
||||||
|
job_override_spawn_positions += type
|
||||||
|
|
||||||
|
if("job_override_total_positions" in json)
|
||||||
|
job_override_total_positions = list()
|
||||||
|
for(var/path in json["job_override_total_positions"])
|
||||||
|
var/type = text2path(path)
|
||||||
|
if(!path)
|
||||||
|
log_config("map datum [config_filename] failed to validate path [path] in job overrides.")
|
||||||
|
continue
|
||||||
|
job_override_total_positions += type
|
||||||
|
|
||||||
|
if("job_access_add" in json)
|
||||||
|
job_access_add = list()
|
||||||
|
for(var/path in json["job_acces_add"])
|
||||||
|
var/type = text2path(path)
|
||||||
|
if(!path)
|
||||||
|
log_config("map datum [config_filename] failed to validate path [path] in job overrides.")
|
||||||
|
continue
|
||||||
|
job_access_add[type] = json["job_access_add"]
|
||||||
|
|
||||||
|
if("job_access_remove" in json)
|
||||||
|
job_access_remove = list()
|
||||||
|
for(var/path in json["job_acces_add"])
|
||||||
|
var/type = text2path(path)
|
||||||
|
if(!path)
|
||||||
|
log_config("map datum [config_filename] failed to validate path [path] in job overrides.")
|
||||||
|
continue
|
||||||
|
job_access_remove[type] = json["job_access_remove"]
|
||||||
|
|
||||||
|
if("job_access_override" in json)
|
||||||
|
job_access_override = list()
|
||||||
|
for(var/path in json["job_acces_add"])
|
||||||
|
var/type = text2path(path)
|
||||||
|
if(!path)
|
||||||
|
log_config("map datum [config_filename] failed to validate path [path] in job overrides.")
|
||||||
|
continue
|
||||||
|
job_access_override[type] = json["job_access_override"]
|
||||||
|
|
||||||
defaulted = FALSE
|
defaulted = FALSE
|
||||||
return TRUE
|
return TRUE
|
||||||
#undef CHECK_EXISTS
|
#undef CHECK_EXISTS
|
||||||
@@ -190,6 +268,13 @@
|
|||||||
jsonlist["announcertype"] = announcertype
|
jsonlist["announcertype"] = announcertype
|
||||||
jsonlist["orientation"] = orientation
|
jsonlist["orientation"] = orientation
|
||||||
jsonlist["allow_custom_shuttles"] = allow_custom_shuttles
|
jsonlist["allow_custom_shuttles"] = allow_custom_shuttles
|
||||||
|
jsonlist["job_whitelist"] = job_whitelist
|
||||||
|
jsonlist["job_blacklist"] = job_blacklist
|
||||||
|
jsonlist["job_override_spawn_positions"] = job_override_spawn_positions
|
||||||
|
jsonlist["job_override_total_positions"] = job_override_total_positions
|
||||||
|
jsonlist["job_access_add"] = job_access_add
|
||||||
|
jsonlist["job_access_remove"] = job_access_remove
|
||||||
|
jsonlist["job_access_override"] = job_access_override
|
||||||
if(fexists("data/next_map.json"))
|
if(fexists("data/next_map.json"))
|
||||||
fdel("data/next_map.json")
|
fdel("data/next_map.json")
|
||||||
var/F = file("data/next_map.json")
|
var/F = file("data/next_map.json")
|
||||||
|
|||||||
@@ -2274,7 +2274,6 @@
|
|||||||
#include "code\modules\jobs\job_types\station_engineer.dm"
|
#include "code\modules\jobs\job_types\station_engineer.dm"
|
||||||
#include "code\modules\jobs\job_types\virologist.dm"
|
#include "code\modules\jobs\job_types\virologist.dm"
|
||||||
#include "code\modules\jobs\job_types\warden.dm"
|
#include "code\modules\jobs\job_types\warden.dm"
|
||||||
#include "code\modules\jobs\map_changes\map_changes.dm"
|
|
||||||
#include "code\modules\keybindings\bindings_atom.dm"
|
#include "code\modules\keybindings\bindings_atom.dm"
|
||||||
#include "code\modules\keybindings\bindings_client.dm"
|
#include "code\modules\keybindings\bindings_client.dm"
|
||||||
#include "code\modules\keybindings\focus.dm"
|
#include "code\modules\keybindings\focus.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user