diff --git a/baystation12.dme b/baystation12.dme
index cf80c8ab74..c861c5b34e 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -6,14 +6,230 @@
// BEGIN_FILE_DIR
#define FILE_DIR .
#define FILE_DIR "code"
+#define FILE_DIR "code/__HELPERS"
+#define FILE_DIR "code/ATMOSPHERICS"
+#define FILE_DIR "code/ATMOSPHERICS/components"
+#define FILE_DIR "code/ATMOSPHERICS/components/binary_devices"
+#define FILE_DIR "code/ATMOSPHERICS/components/trinary_devices"
+#define FILE_DIR "code/ATMOSPHERICS/components/unary"
+#define FILE_DIR "code/controllers"
+#define FILE_DIR "code/datums"
+#define FILE_DIR "code/datums/diseases"
+#define FILE_DIR "code/datums/diseases/advance"
+#define FILE_DIR "code/datums/diseases/advance/symptoms"
+#define FILE_DIR "code/datums/helper_datums"
+#define FILE_DIR "code/datums/organs"
+#define FILE_DIR "code/datums/spells"
+#define FILE_DIR "code/defines"
+#define FILE_DIR "code/defines/obj"
+#define FILE_DIR "code/defines/procs"
+#define FILE_DIR "code/FEA"
+#define FILE_DIR "code/game"
+#define FILE_DIR "code/game/area"
+#define FILE_DIR "code/game/gamemodes"
+#define FILE_DIR "code/game/gamemodes/autotraitor"
+#define FILE_DIR "code/game/gamemodes/blob"
+#define FILE_DIR "code/game/gamemodes/blob/blobs"
+#define FILE_DIR "code/game/gamemodes/changeling"
+#define FILE_DIR "code/game/gamemodes/cult"
+#define FILE_DIR "code/game/gamemodes/epidemic"
+#define FILE_DIR "code/game/gamemodes/events"
+#define FILE_DIR "code/game/gamemodes/events/holidays"
+#define FILE_DIR "code/game/gamemodes/extended"
+#define FILE_DIR "code/game/gamemodes/malfunction"
+#define FILE_DIR "code/game/gamemodes/meme"
+#define FILE_DIR "code/game/gamemodes/meteor"
+#define FILE_DIR "code/game/gamemodes/nuclear"
+#define FILE_DIR "code/game/gamemodes/revolution"
+#define FILE_DIR "code/game/gamemodes/sandbox"
+#define FILE_DIR "code/game/gamemodes/traitor"
+#define FILE_DIR "code/game/gamemodes/wizard"
+#define FILE_DIR "code/game/jobs"
+#define FILE_DIR "code/game/jobs/job"
+#define FILE_DIR "code/game/machinery"
+#define FILE_DIR "code/game/machinery/atmoalter"
+#define FILE_DIR "code/game/machinery/bots"
+#define FILE_DIR "code/game/machinery/camera"
+#define FILE_DIR "code/game/machinery/computer"
+#define FILE_DIR "code/game/machinery/doors"
+#define FILE_DIR "code/game/machinery/embedded_controller"
+#define FILE_DIR "code/game/machinery/kitchen"
+#define FILE_DIR "code/game/machinery/pipe"
+#define FILE_DIR "code/game/machinery/telecomms"
+#define FILE_DIR "code/game/magic"
+#define FILE_DIR "code/game/mecha"
+#define FILE_DIR "code/game/mecha/combat"
+#define FILE_DIR "code/game/mecha/equipment"
+#define FILE_DIR "code/game/mecha/equipment/tools"
+#define FILE_DIR "code/game/mecha/equipment/weapons"
+#define FILE_DIR "code/game/mecha/medical"
+#define FILE_DIR "code/game/mecha/working"
+#define FILE_DIR "code/game/objects"
+#define FILE_DIR "code/game/objects/closets"
+#define FILE_DIR "code/game/objects/closets/secure"
+#define FILE_DIR "code/game/objects/effects"
+#define FILE_DIR "code/game/objects/effects/decals"
+#define FILE_DIR "code/game/objects/effects/decals/Cleanable"
+#define FILE_DIR "code/game/objects/effects/spawners"
+#define FILE_DIR "code/game/objects/items"
+#define FILE_DIR "code/game/objects/items/devices"
+#define FILE_DIR "code/game/objects/items/devices/PDA"
+#define FILE_DIR "code/game/objects/items/devices/radio"
+#define FILE_DIR "code/game/objects/items/robot"
+#define FILE_DIR "code/game/objects/items/stacks"
+#define FILE_DIR "code/game/objects/items/stacks/sheets"
+#define FILE_DIR "code/game/objects/items/stacks/tiles"
+#define FILE_DIR "code/game/objects/items/weapons"
+#define FILE_DIR "code/game/objects/items/weapons/grenades"
+#define FILE_DIR "code/game/objects/items/weapons/implants"
+#define FILE_DIR "code/game/objects/items/weapons/melee"
+#define FILE_DIR "code/game/objects/items/weapons/storage"
+#define FILE_DIR "code/game/objects/items/weapons/tanks"
+#define FILE_DIR "code/game/objects/storage"
+#define FILE_DIR "code/game/objects/structures"
+#define FILE_DIR "code/game/objects/structures/crates_lockers"
+#define FILE_DIR "code/game/objects/structures/crates_lockers/closets"
+#define FILE_DIR "code/game/objects/structures/crates_lockers/closets/secure"
+#define FILE_DIR "code/game/objects/structures/stool_bed_chair_nest"
+#define FILE_DIR "code/game/structure"
+#define FILE_DIR "code/game/turfs"
+#define FILE_DIR "code/game/turfs/simulated"
+#define FILE_DIR "code/game/turfs/space"
+#define FILE_DIR "code/game/turfs/unsimulated"
+#define FILE_DIR "code/game/vehicles"
+#define FILE_DIR "code/game/verbs"
+#define FILE_DIR "code/js"
+#define FILE_DIR "code/modules"
+#define FILE_DIR "code/modules/admin"
+#define FILE_DIR "code/modules/admin/DB ban"
+#define FILE_DIR "code/modules/admin/permissionverbs"
+#define FILE_DIR "code/modules/admin/verbs"
+#define FILE_DIR "code/modules/assembly"
+#define FILE_DIR "code/modules/awaymissions"
+#define FILE_DIR "code/modules/awaymissions/maploader"
+#define FILE_DIR "code/modules/client"
+#define FILE_DIR "code/modules/clothing"
+#define FILE_DIR "code/modules/clothing/glasses"
+#define FILE_DIR "code/modules/clothing/gloves"
+#define FILE_DIR "code/modules/clothing/head"
+#define FILE_DIR "code/modules/clothing/masks"
+#define FILE_DIR "code/modules/clothing/shoes"
+#define FILE_DIR "code/modules/clothing/spacesuits"
+#define FILE_DIR "code/modules/clothing/suits"
+#define FILE_DIR "code/modules/clothing/under"
+#define FILE_DIR "code/modules/clothing/under/jobs"
+#define FILE_DIR "code/modules/customitems"
+#define FILE_DIR "code/modules/destilery"
+#define FILE_DIR "code/modules/DetectiveWork"
+#define FILE_DIR "code/modules/events"
+#define FILE_DIR "code/modules/flufftext"
+#define FILE_DIR "code/modules/food"
+#define FILE_DIR "code/modules/genetics"
+#define FILE_DIR "code/modules/icon generation"
+#define FILE_DIR "code/modules/library"
+#define FILE_DIR "code/modules/liquid"
+#define FILE_DIR "code/modules/maps"
+#define FILE_DIR "code/modules/mining"
+#define FILE_DIR "code/modules/mob"
+#define FILE_DIR "code/modules/mob/dead"
+#define FILE_DIR "code/modules/mob/dead/observer"
+#define FILE_DIR "code/modules/mob/living"
+#define FILE_DIR "code/modules/mob/living/blob"
+#define FILE_DIR "code/modules/mob/living/carbon"
+#define FILE_DIR "code/modules/mob/living/carbon/alien"
+#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid"
+#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid/caste"
+#define FILE_DIR "code/modules/mob/living/carbon/alien/larva"
+#define FILE_DIR "code/modules/mob/living/carbon/alien/special"
+#define FILE_DIR "code/modules/mob/living/carbon/brain"
+#define FILE_DIR "code/modules/mob/living/carbon/human"
+#define FILE_DIR "code/modules/mob/living/carbon/metroid"
+#define FILE_DIR "code/modules/mob/living/carbon/monkey"
+#define FILE_DIR "code/modules/mob/living/silicon"
+#define FILE_DIR "code/modules/mob/living/silicon/ai"
+#define FILE_DIR "code/modules/mob/living/silicon/ai/freelook"
+#define FILE_DIR "code/modules/mob/living/silicon/decoy"
+#define FILE_DIR "code/modules/mob/living/silicon/pai"
+#define FILE_DIR "code/modules/mob/living/silicon/robot"
+#define FILE_DIR "code/modules/mob/living/simple_animal"
+#define FILE_DIR "code/modules/mob/living/simple_animal/friendly"
+#define FILE_DIR "code/modules/mob/living/simple_animal/hostile"
+#define FILE_DIR "code/modules/mob/living/simple_animal/hostile/retaliate"
+#define FILE_DIR "code/modules/mob/new_player"
+#define FILE_DIR "code/modules/paperwork"
+#define FILE_DIR "code/modules/power"
+#define FILE_DIR "code/modules/power/antimatter"
+#define FILE_DIR "code/modules/power/singularity"
+#define FILE_DIR "code/modules/power/singularity/particle_accelerator"
+#define FILE_DIR "code/modules/projectiles"
+#define FILE_DIR "code/modules/projectiles/ammunition"
+#define FILE_DIR "code/modules/projectiles/guns"
+#define FILE_DIR "code/modules/projectiles/guns/energy"
+#define FILE_DIR "code/modules/projectiles/guns/projectile"
+#define FILE_DIR "code/modules/projectiles/projectile"
+#define FILE_DIR "code/modules/reagents"
+#define FILE_DIR "code/modules/reagents/reagent_containers"
+#define FILE_DIR "code/modules/reagents/reagent_containers/food"
+#define FILE_DIR "code/modules/reagents/reagent_containers/food/drinks"
+#define FILE_DIR "code/modules/reagents/reagent_containers/food/drinks/bottle"
+#define FILE_DIR "code/modules/reagents/reagent_containers/food/snacks"
+#define FILE_DIR "code/modules/reagents/reagent_containers/glass"
+#define FILE_DIR "code/modules/reagents/reagent_containers/glass/bottle"
+#define FILE_DIR "code/modules/recycling"
+#define FILE_DIR "code/modules/research"
+#define FILE_DIR "code/modules/research/xenoarchaeology"
+#define FILE_DIR "code/modules/scripting"
+#define FILE_DIR "code/modules/scripting/AST"
+#define FILE_DIR "code/modules/scripting/AST/Operators"
+#define FILE_DIR "code/modules/scripting/Implementations"
+#define FILE_DIR "code/modules/scripting/Interpreter"
+#define FILE_DIR "code/modules/scripting/Parser"
+#define FILE_DIR "code/modules/scripting/Scanner"
+#define FILE_DIR "code/modules/security levels"
+#define FILE_DIR "code/modules/surgery"
#define FILE_DIR "code/TriDimension"
+#define FILE_DIR "code/unused"
+#define FILE_DIR "code/unused/beast"
+#define FILE_DIR "code/unused/computer2"
+#define FILE_DIR "code/unused/disease2"
+#define FILE_DIR "code/unused/gamemodes"
+#define FILE_DIR "code/unused/hivebot"
+#define FILE_DIR "code/unused/mining"
+#define FILE_DIR "code/unused/optics"
+#define FILE_DIR "code/unused/pda2"
+#define FILE_DIR "code/unused/powerarmor"
+#define FILE_DIR "code/unused/spacecraft"
#define FILE_DIR "code/WorkInProgress"
+#define FILE_DIR "code/WorkInProgress/AI_Visibility"
+#define FILE_DIR "code/WorkInProgress/animusstation"
+#define FILE_DIR "code/WorkInProgress/Apples"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn"
+#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Economy"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Jungle"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Rust"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/ShieldGen"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Supermatter"
+#define FILE_DIR "code/WorkInProgress/carn"
+#define FILE_DIR "code/WorkInProgress/Chinsky"
+#define FILE_DIR "code/WorkInProgress/Cib"
+#define FILE_DIR "code/WorkInProgress/Cib/amorph"
+#define FILE_DIR "code/WorkInProgress/Mini"
+#define FILE_DIR "code/WorkInProgress/Mloc"
+#define FILE_DIR "code/WorkInProgress/organs"
+#define FILE_DIR "code/WorkInProgress/Ported"
+#define FILE_DIR "code/WorkInProgress/Ported/Abi79"
+#define FILE_DIR "code/WorkInProgress/Ported/Bureaucracy"
+#define FILE_DIR "code/WorkInProgress/Ported/Spawners"
+#define FILE_DIR "code/WorkInProgress/Sigyn"
+#define FILE_DIR "code/WorkInProgress/Sigyn/Department Sec"
+#define FILE_DIR "code/WorkInProgress/Sigyn/Softcurity"
+#define FILE_DIR "code/WorkInProgress/SkyMarshal"
#define FILE_DIR "code/WorkInProgress/Susan"
+#define FILE_DIR "code/WorkInProgress/Tastyfish"
+#define FILE_DIR "code/WorkInProgress/virus2"
+#define FILE_DIR "code/WorkInProgress/virus2/Disease2"
+#define FILE_DIR "code/WorkInProgress/Wrongnumber"
+#define FILE_DIR "code/ZAS"
#define FILE_DIR "html"
#define FILE_DIR "icons"
#define FILE_DIR "icons/48x48"
@@ -35,6 +251,9 @@
#define FILE_DIR "icons/Testing"
#define FILE_DIR "icons/turf"
#define FILE_DIR "icons/vending_icons"
+#define FILE_DIR "interface"
+#define FILE_DIR "maps"
+#define FILE_DIR "maps/RandomZLevels"
#define FILE_DIR "sound"
#define FILE_DIR "sound/AI"
#define FILE_DIR "sound/ambience"
@@ -51,6 +270,8 @@
#define FILE_DIR "sound/violin"
#define FILE_DIR "sound/voice"
#define FILE_DIR "sound/weapons"
+#define FILE_DIR "tools"
+#define FILE_DIR "tools/Redirector"
// END_FILE_DIR
// BEGIN_PREFERENCES
#define DEBUG
@@ -1196,6 +1417,7 @@
#include "code\WorkInProgress\Cael_Aislinn\Economy\Economy_Events_Mundane.dm"
#include "code\WorkInProgress\Cael_Aislinn\Economy\Economy_TradeDestinations.dm"
#include "code\WorkInProgress\Cael_Aislinn\Economy\EFTPOS.dm"
+#include "code\WorkInProgress\Cael_Aislinn\Economy\Job_Departments.dm"
#include "code\WorkInProgress\Cael_Aislinn\Jungle\falsewall.dm"
#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle.dm"
#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle_animals.dm"
@@ -1224,7 +1446,6 @@
#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\energy_field.dm"
#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\shield_capacitor.dm"
#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\shield_gen.dm"
-#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\shield_gen_external.dm"
#include "code\WorkInProgress\Cael_Aislinn\Supermatter\LaserComputer.dm"
#include "code\WorkInProgress\Cael_Aislinn\Supermatter\SuperMatter.dm"
#include "code\WorkInProgress\Cael_Aislinn\Supermatter\ZeroPointLaser.dm"
diff --git a/code/WorkInProgress/Cael_Aislinn/Economy/Accounts.dm b/code/WorkInProgress/Cael_Aislinn/Economy/Accounts.dm
index 3c1d3570b7..d3407e0dba 100644
--- a/code/WorkInProgress/Cael_Aislinn/Economy/Accounts.dm
+++ b/code/WorkInProgress/Cael_Aislinn/Economy/Accounts.dm
@@ -1,6 +1,7 @@
var/global/current_date_string
var/global/num_financial_terminals = 1
var/global/datum/money_account/station_account
+var/global/list/datum/money_account/department_accounts = list()
var/global/next_account_number = 0
var/global/obj/machinery/account_database/centcomm_account_db
@@ -28,6 +29,31 @@ var/global/obj/machinery/account_database/centcomm_account_db
for(var/obj/machinery/account_database/A in world)
A.accounts.Add(station_account)
+/proc/create_department_account(department)
+ next_account_number = rand(111111, 999999)
+
+ var/datum/money_account/department_account = new()
+ department_account.owner_name = "[department] Account"
+ department_account.account_number = rand(111111, 999999)
+ department_account.remote_access_pin = rand(1111, 111111)
+ department_account.money = 5000
+
+ //create an entry in the account transaction log for when it was created
+ var/datum/transaction/T = new()
+ T.target_name = department_account.owner_name
+ T.purpose = "Account creation"
+ T.amount = department_account.money
+ T.date = "2nd April, 2555"
+ T.time = "11:24"
+ T.source_terminal = "Biesel GalaxyNet Terminal #277"
+
+ //add the account
+ department_account.transaction_log.Add(T)
+ for(var/obj/machinery/account_database/A in world)
+ A.accounts.Add(department_account)
+
+ department_accounts[department] = department_account
+
//the current ingame time (hh:mm) can be obtained by calling:
//worldtime2text()
@@ -70,6 +96,10 @@ var/global/obj/machinery/account_database/centcomm_account_db
if(!station_account)
create_station_account()
+ if(department_accounts.len == 0)
+ for(var/department in station_departments)
+ create_department_account(department)
+
if(!current_date_string)
current_date_string = "[num2text(rand(1,31))] [pick("January","February","March","April","May","June","July","August","September","October","November","December")], 2557"
diff --git a/code/WorkInProgress/Cael_Aislinn/Economy/Job_Departments.dm b/code/WorkInProgress/Cael_Aislinn/Economy/Job_Departments.dm
new file mode 100644
index 0000000000..64abe66acc
--- /dev/null
+++ b/code/WorkInProgress/Cael_Aislinn/Economy/Job_Departments.dm
@@ -0,0 +1,70 @@
+var/list/station_departments = list("Command", "Medical", "Engineering", "Science", "Security", "Cargo", "Civilian")
+
+// The department the job belongs to.
+/datum/job/var/department = null
+
+// Whether this is a head position
+/datum/job/var/head_position = 0
+
+/datum/job/captain/department = "Command"
+/datum/job/captain/head_position = 1
+
+/datum/job/hop/department = "Civilian"
+/datum/job/hop/head_position = 1
+
+/datum/job/assistant/department = "Civilian"
+
+/datum/job/bartender/department = "Civilian"
+
+/datum/job/chef/department = "Civilian"
+
+/datum/job/hydro/department = "Civilian"
+
+/datum/job/mining/department = "Civilian"
+
+/datum/job/janitor/department = "Civilian"
+
+/datum/job/librarian/department = "Civilian"
+
+/datum/job/lawyer/department = "Civilian"
+
+/datum/job/chaplain/department = "Civilian"
+
+/datum/job/qm/department = "Cargo"
+/datum/job/qm/head_position = 1
+
+/datum/job/cargo_tech/department = "Cargo"
+
+/datum/job/chief_engineer/department = "Engineering"
+/datum/job/chief_engineer/head_position = 1
+
+/datum/job/engineer/department = "Engineering"
+
+/datum/job/atmos/department = "Engineering"
+
+/datum/job/cmo/department = "Medical"
+/datum/job/cmo/head_position = 1
+
+/datum/job/doctor/department = "Medical"
+
+/datum/job/chemist/department = "Medical"
+
+/datum/job/geneticist/department = "Medical"
+
+/datum/job/psychiatrist/department = "Medical"
+
+/datum/job/rd/department = "Science"
+/datum/job/rd/head_position = 1
+
+/datum/job/scientist/department = "Science"
+
+/datum/job/roboticist/department = "Science"
+
+/datum/job/hos/department = "Security"
+/datum/job/hos/head_position = 1
+
+/datum/job/warden/department = "Security"
+
+/datum/job/detective/department = "Security"
+
+/datum/job/officer/department = "Security"
\ No newline at end of file
diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
index 8b08b0a26b..c6e6428d83 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -340,6 +340,17 @@ var/global/datum/controller/occupations/job_master
H.mind.initial_account = M
+ // If they're head, give them the account info for their department
+ if(H.mind && job.head_position)
+ var/remembered_info = ""
+ var/datum/money_account/department_account = department_accounts[job.department]
+
+ remembered_info += "Your department's account number is: #[department_account.account_number]
"
+ remembered_info += "Your department's account pin is: [department_account.remote_access_pin]
"
+ remembered_info += "Your department's account funds are: $[department_account.money]
"
+
+ H.mind.store_memory(remembered_info)
+
spawn(0)
H << "\blueYour account number is: [M.account_number], your account pin is: [M.remote_access_pin]"