diff --git a/code/ATMOSPHERICS/pipes.dm b/code/ATMOSPHERICS/pipes.dm
index ca699cd125..8964822c2f 100644
--- a/code/ATMOSPHERICS/pipes.dm
+++ b/code/ATMOSPHERICS/pipes.dm
@@ -160,7 +160,7 @@ obj/machinery/atmospherics/pipe
proc/burst()
src.visible_message("\red \bold [src] bursts!");
playsound(src.loc, 'bang.ogg', 25, 1)
- var/datum/effect/system/harmless_smoke_spread/smoke = new
+ var/datum/effect/effect/system/harmless_smoke_spread/smoke = new
smoke.set_up(1,0, src.loc, 0)
smoke.start()
del(src)
diff --git a/code/WorkInProgress/explosion_particles.dm b/code/WorkInProgress/explosion_particles.dm
index e47ab0face..ba59cc6377 100644
--- a/code/WorkInProgress/explosion_particles.dm
+++ b/code/WorkInProgress/explosion_particles.dm
@@ -65,6 +65,6 @@
P.set_up(10,location)
P.start()
spawn(5)
- var/datum/effect/system/harmless_smoke_spread/S = new/datum/effect/system/harmless_smoke_spread()
+ var/datum/effect/effect/system/harmless_smoke_spread/S = new/datum/effect/effect/system/harmless_smoke_spread()
S.set_up(5,0,location,null)
S.start()
\ No newline at end of file
diff --git a/code/datums/spell.dm b/code/datums/spell.dm
index 6724489ece..03a334e7e9 100644
--- a/code/datums/spell.dm
+++ b/code/datums/spell.dm
@@ -145,16 +145,16 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
if(istype(target,/mob) && message)
target << text("[message]")
if(sparks_spread)
- var/datum/effect/system/spark_spread/sparks = new /datum/effect/system/spark_spread()
+ var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
sparks.set_up(sparks_amt, 0, location) //no idea what the 0 is
sparks.start()
if(smoke_spread)
if(smoke_spread == 1)
- var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread()
+ var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread()
smoke.set_up(smoke_amt, 0, location) //no idea what the 0 is
smoke.start()
else if(smoke_spread == 2)
- var/datum/effect/system/bad_smoke_spread/smoke = new /datum/effect/system/bad_smoke_spread()
+ var/datum/effect/effect/system/bad_smoke_spread/smoke = new /datum/effect/effect/system/bad_smoke_spread()
smoke.set_up(smoke_amt, 0, location) //no idea what the 0 is
smoke.start()
diff --git a/code/datums/spells/ethereal_jaunt.dm b/code/datums/spells/ethereal_jaunt.dm
index 0a32c7940a..46c15db0aa 100644
--- a/code/datums/spells/ethereal_jaunt.dm
+++ b/code/datums/spells/ethereal_jaunt.dm
@@ -28,7 +28,7 @@
flick("liquify",animation)
target.loc = holder
target.client.eye = holder
- var/datum/effect/system/steam_spread/steam = new /datum/effect/system/steam_spread()
+ var/datum/effect/effect/system/steam_spread/steam = new /datum/effect/effect/system/steam_spread()
steam.set_up(10, 0, mobloc)
steam.start()
sleep(jaunt_duration)
diff --git a/code/defines/global.dm b/code/defines/global.dm
index a709b1d498..9aa15f3bcf 100644
--- a/code/defines/global.dm
+++ b/code/defines/global.dm
@@ -73,8 +73,7 @@ var
guests_allowed = 1
shuttle_frozen = 0
shuttle_left = 0
- tinted_weldhelh = 1 //as soon as the thing is sprited, we'll code in the toggle verb, bot for now, it should stay on by default. -errorage //Until you have the actual functionality for it, don't set this on by default. You're putting the cart before the horse. --DH
- lawyer = 0//Checks for a lawyer
+ tinted_weldhelh = 1
list/jobMax = list()
list/bombers = list( )
diff --git a/code/defines/mob/living/silicon/robot.dm b/code/defines/mob/living/silicon/robot.dm
index 0dcfa85ad9..ebcf1457b6 100644
--- a/code/defines/mob/living/silicon/robot.dm
+++ b/code/defines/mob/living/silicon/robot.dm
@@ -42,8 +42,8 @@
var/modtype = null
var/lower_mod = 0
var/jetpack = 0
- var/datum/effect/system/ion_trail_follow/ion_trail = null
- var/datum/effect/system/spark_spread/spark_system//So they can initialize sparks whenever/N
+ var/datum/effect/effect/system/ion_trail_follow/ion_trail = null
+ var/datum/effect/effect/system/spark_spread/spark_system//So they can initialize sparks whenever/N
var/jeton = 0
var/borgwires = 15
var/killswitch = 0
diff --git a/code/defines/mob/mob.dm b/code/defines/mob/mob.dm
index 92f72fd33e..d1bf9e743d 100644
--- a/code/defines/mob/mob.dm
+++ b/code/defines/mob/mob.dm
@@ -226,14 +226,6 @@ the mob is also allowed to move without any sort of restriction. For instance, i
// var/obj/effect/organstructure/organStructure = null //for dem organs
-/mob/proc/Delete(atom/A in view())
- set category = "Debug"
- switch (alert("Are you sure you wish to delete \the [A.name] at ([A.x],[A.y],[A.z]) ?", "Admin Delete Object","Yes","No"))
- if("Yes")
- log_admin("[usr.key] deleted [A.name] at ([A.x],[A.y],[A.z])")
-
-
-
/mob/proc/contract_disease(var/datum/disease/virus, var/skip_this = 0, var/force_species_check=1)
// world << "Contract_disease called by [src] with virus [virus]"
if(stat >=2) return
diff --git a/code/defines/obj.dm b/code/defines/obj.dm
index 1ea86a6c65..0bd140df58 100644
--- a/code/defines/obj.dm
+++ b/code/defines/obj.dm
@@ -66,7 +66,7 @@
unacidable = 1
density = 0
anchored = 1
- var/datum/effect/system/harmless_smoke_spread/smoke
+ var/datum/effect/effect/system/harmless_smoke_spread/smoke
diff --git a/code/defines/obj/toy.dm b/code/defines/obj/toy.dm
index 20bb3931ff..7f7fffb76c 100644
--- a/code/defines/obj/toy.dm
+++ b/code/defines/obj/toy.dm
@@ -266,7 +266,7 @@
throw_impact(atom/hit_atom)
..()
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
new /obj/effect/decal/ash(src.loc)
@@ -280,7 +280,7 @@
if(M.m_intent == "run")
M << "\red You step on the snap pop!"
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(2, 0, src)
s.start()
new /obj/effect/decal/ash(src.loc)
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index 74cb097fb6..63bc6aefed 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -26,6 +26,9 @@
m_amt = 1000
origin_tech = "materials=2"
+ IsShield()
+ return 1
+
/obj/item/weapon/sord
name = "SORD"
desc = "This thing is so unspeakably shitty you are having a hard time even holding it."
@@ -228,7 +231,7 @@
throw_range = 1
w_class = 4.0//So you can't hide it in your pocket or some such.
flags = FPRINT | TABLEPASS | NOSHIELD
- var/datum/effect/system/spark_spread/spark_system
+ var/datum/effect/effect/system/spark_spread/spark_system
/obj/item/weapon/bananapeel
name = "Banana Peel"
diff --git a/code/game/atom_procs.dm b/code/game/atom_procs.dm
index b112c4d168..ba5ab8d69f 100644
--- a/code/game/atom_procs.dm
+++ b/code/game/atom_procs.dm
@@ -765,40 +765,21 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
C.oxyloss = max(0, C.oxyloss-25)
C.toxloss = max(0, C.toxloss-25)
- if (istype(C, /mob/living/carbon/human))
+ if(istype(C, /mob/living/carbon/human))
// ------- YOUR TARGET IS HUMAN -------
var/mob/living/carbon/human/H = C
- var/datum/organ/external/affecting = H.organs["chest"]
-
- var/t = usr:zone_sel:selecting
-
- if (t in list("eyes", "mouth"))
- t = "head"
-
- if (H.organs[t])
- affecting = H.organs[t]
-
- if (affecting.heal_damage(25, 25))
+ var/datum/organ/external/affecting = H.get_organ(check_zone(usr:zone_sel:selecting))
+ if(affecting && affecting.heal_damage(25, 25))
H.UpdateDamageIcon()
- else
- H.UpdateDamage()
- C.updatehealth()
else
C.heal_organ_damage(25, 25)
-
C.cloneloss = max(0, C.cloneloss-25)
-
C.stunned = max(0, C.stunned-5)
C.paralysis = max(0, C.paralysis-5)
C.stuttering = max(0, C.stuttering-5)
C.drowsyness = max(0, C.drowsyness-5)
C.weakened = max(0, C.weakened-5)
-
- if(C.client)
- C.updatehealth()
- C:handle_regular_hud_updates()
usr:nutrition -= rand(1,10)
- usr:handle_regular_hud_updates()
usr.next_move = world.time + 6
else
// ------- PERSON YOU'RE TOUCHING IS ALREADY DEAD -------
diff --git a/code/game/chemistry.dm b/code/game/chemistry.dm
index 0e228ca0b9..cc8b8291d0 100644
--- a/code/game/chemistry.dm
+++ b/code/game/chemistry.dm
@@ -12,7 +12,7 @@
throw_speed = 4
throw_range = 20
flags = FPRINT | TABLEPASS | ONBELT | USEDELAY
- var/datum/effect/system/bad_smoke_spread/smoke
+ var/datum/effect/effect/system/bad_smoke_spread/smoke
/obj/item/weapon/mustardbomb
desc = "It is set to detonate in 4 seconds."
@@ -26,17 +26,17 @@
throw_speed = 4
throw_range = 20
flags = FPRINT | TABLEPASS | CONDUCT | ONBELT
- var/datum/effect/system/mustard_gas_spread/mustard_gas
+ var/datum/effect/effect/system/mustard_gas_spread/mustard_gas
/obj/item/weapon/smokebomb/New()
..()
- src.smoke = new /datum/effect/system/bad_smoke_spread/
+ src.smoke = new /datum/effect/effect/system/bad_smoke_spread/
src.smoke.attach(src)
src.smoke.set_up(10, 0, usr.loc)
/obj/item/weapon/mustardbomb/New()
..()
- src.mustard_gas = new /datum/effect/system/mustard_gas_spread/
+ src.mustard_gas = new /datum/effect/effect/system/mustard_gas_spread/
src.mustard_gas.attach(src)
src.mustard_gas.set_up(5, 0, usr.loc)
diff --git a/code/game/dna.dm b/code/game/dna.dm
index d6594aed8c..e9243daad0 100644
--- a/code/game/dna.dm
+++ b/code/game/dna.dm
@@ -321,7 +321,7 @@
M << "\red You start coughing."
if (isblockon(getblock(M.dna.struc_enzymes, CLUMSYBLOCK,3),6))
M << "\red You feel lightheaded."
- M.mutations |= CLOWN
+ M.mutations |= CLUMSY
if (isblockon(getblock(M.dna.struc_enzymes, 7,3),7))
M.disabilities |= 8
M << "\red You twitch."
diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm
index 4cc896eeca..26b440ad89 100644
--- a/code/game/gamemodes/events.dm
+++ b/code/game/gamemodes/events.dm
@@ -86,7 +86,7 @@
/obj/effect/bhole/New()
- src.smoke = new /datum/effect/system/harmless_smoke_spread()
+ src.smoke = new /datum/effect/effect/system/harmless_smoke_spread()
src.smoke.set_up(5, 0, src)
src.smoke.attach(src)
src:life()
diff --git a/code/game/gamemodes/events/ninja_abilities.dm b/code/game/gamemodes/events/ninja_abilities.dm
index 88fb058ed3..c7b1521d05 100644
--- a/code/game/gamemodes/events/ninja_abilities.dm
+++ b/code/game/gamemodes/events/ninja_abilities.dm
@@ -57,7 +57,7 @@ Not sure why this would be useful (it's not) but whatever. Ninjas need their smo
if(!ninjacost(,2))
var/mob/living/carbon/human/U = affecting
U << "\blue There are [s_bombs] smoke bombs remaining."
- var/datum/effect/system/bad_smoke_spread/smoke = new /datum/effect/system/bad_smoke_spread()
+ var/datum/effect/effect/system/bad_smoke_spread/smoke = new /datum/effect/effect/system/bad_smoke_spread()
smoke.set_up(10, 0, U.loc)
smoke.start()
playsound(U.loc, 'bamf.ogg', 50, 2)
diff --git a/code/game/gamemodes/events/ninja_equipment.dm b/code/game/gamemodes/events/ninja_equipment.dm
index c7e2d5d9f3..bd35e12229 100644
--- a/code/game/gamemodes/events/ninja_equipment.dm
+++ b/code/game/gamemodes/events/ninja_equipment.dm
@@ -948,7 +948,7 @@ ________________________________________________________________________________
if("APC")
var/obj/machinery/power/apc/A = target
if(A.cell&&A.cell.charge)
- var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
+ var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, A.loc)
while(G.candrain&&A.cell.charge>0&&!maxcapacity)
drain = rand(G.mindrain,G.maxdrain)
@@ -976,7 +976,7 @@ ________________________________________________________________________________
if("SMES")
var/obj/machinery/power/smes/A = target
if(A.charge)
- var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
+ var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, A.loc)
while(G.candrain&&A.charge>0&&!maxcapacity)
drain = rand(G.mindrain,G.maxdrain)
@@ -1018,7 +1018,7 @@ ________________________________________________________________________________
var/obj/machinery/A = target
if(A.powered())//If powered.
- var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
+ var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, A.loc)
var/obj/machinery/power/apc/B = A.loc.loc:get_apc()//Object.turf.area find APC
@@ -1360,7 +1360,7 @@ It is possible to destroy the net by the occupant or someone else.
M << "\red You appear in a strange place!"
spawn(0)
- var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
+ var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, M.loc)
spark_system.start()
playsound(M.loc, 'phasein.ogg', 25, 1)
diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm
index c10fe51bb4..c2223f9d17 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/game/gamemodes/gameticker.dm
@@ -54,7 +54,7 @@ var/global/datum/controller/gameticker/ticker
var/datum/game_mode/M = config.pick_mode(secret_force_mode)
if(M.can_start())
src.mode = config.pick_mode(secret_force_mode)
- ResetOccupations()
+ job_master.ResetOccupations()
if(!src.mode)
src.mode = pickweight(runnable_modes)
if(src.mode)
@@ -67,18 +67,18 @@ var/global/datum/controller/gameticker/ticker
world << "Unable to start [mode.name]. Not enough players, [mode.required_players] players needed. Reverting to pre-game lobby."
del(mode)
current_state = GAME_STATE_PREGAME
- ResetOccupations()
+ job_master.ResetOccupations()
return 0
//Configure mode and assign player to special mode stuff
- DivideOccupations() //Distribute jobs
+ job_master.DivideOccupations() //Distribute jobs
var/can_continue = src.mode.pre_setup()//Setup special modes
if(!can_continue)
del(mode)
current_state = GAME_STATE_PREGAME
world << "Error setting up [master_mode]. Reverting to pre-game lobby."
- ResetOccupations()
+ job_master.ResetOccupations()
return 0
if(hide_mode)
@@ -143,15 +143,12 @@ var/global/datum/controller/gameticker/ticker
proc/equip_characters()
var/captainless=1
for(var/mob/living/carbon/human/player in world)
- if(player)
- if(player.mind)
- if(player.mind.assigned_role)
- if(player.mind.assigned_role == "Captain")
- captainless=0
- if(player.mind.assigned_role != "MODE")
- player.Equip_Rank(player.mind.assigned_role)
-
- if (captainless)
+ if(player && player.mind && player.mind.assigned_role)
+ if(player.mind.assigned_role == "Captain")
+ captainless=0
+ if(player.mind.assigned_role != "MODE")
+ job_master.EquipRank(player, player.mind.assigned_role, 0)
+ if(captainless)
world << "Captainship not forced on anyone."
diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm
index f953e03f75..f491818969 100644
--- a/code/game/gamemodes/traitor/traitor.dm
+++ b/code/game/gamemodes/traitor/traitor.dm
@@ -192,7 +192,7 @@
if (traitor_mob.mind)
if (traitor_mob.mind.assigned_role == "Clown")
traitor_mob << "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself."
- traitor_mob.mutations &= ~CLOWN
+ traitor_mob.mutations &= ~CLUMSY
// find a radio! toolbox(es), backpack, belt, headset
var/loc = ""
diff --git a/code/game/gamemodes/wizard/spells.dm b/code/game/gamemodes/wizard/spells.dm
index 920ca87c51..bbc1e54c33 100644
--- a/code/game/gamemodes/wizard/spells.dm
+++ b/code/game/gamemodes/wizard/spells.dm
@@ -101,7 +101,7 @@
usr.verbs -= /client/proc/smokecloud
spawn(120)
usr.verbs += /client/proc/smokecloud
- var/datum/effect/system/bad_smoke_spread/smoke = new /datum/effect/system/bad_smoke_spread()
+ var/datum/effect/effect/system/bad_smoke_spread/smoke = new /datum/effect/effect/system/bad_smoke_spread()
smoke.set_up(10, 0, usr.loc)
smoke.start()
@@ -244,7 +244,7 @@
usr.say("EI NATH")
usr.spellvoice()
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(4, 1, M)
s.start()
@@ -287,7 +287,7 @@
if(T.y>world.maxy-4 || T.y<4) continue
turfs += T
if(!turfs.len) turfs += pick(/turf in orange(6))
- var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread()
+ var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread()
smoke.set_up(10, 0, usr.loc)
smoke.start()
var/turf/picked = pick(turfs)
@@ -330,7 +330,7 @@
usr.say("SCYAR NILA [uppertext(A)]")
usr.spellvoice()
- var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread()
+ var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread()
smoke.set_up(5, 0, usr.loc)
smoke.attach(usr)
smoke.start()
@@ -360,7 +360,7 @@
A = input("Area to jump to", "BOOYEA", A) in teleportlocs
var/area/thearea = teleportlocs[A]
- var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread()
+ var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread()
smoke.set_up(5, 0, usr.loc)
smoke.attach(usr)
smoke.start()
@@ -410,7 +410,7 @@
flick("liquify",animation)
H.loc = holder
H.client.eye = holder
- var/datum/effect/system/steam_spread/steam = new /datum/effect/system/steam_spread()
+ var/datum/effect/effect/system/steam_spread/steam = new /datum/effect/effect/system/steam_spread()
steam.set_up(10, 0, mobloc)
steam.start()
sleep(time)
diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm
index 42440b1027..ca48e48201 100644
--- a/code/game/gamemodes/wizard/wizard.dm
+++ b/code/game/gamemodes/wizard/wizard.dm
@@ -295,209 +295,3 @@ Made a proc here so it's not repeated several times.*/
// playsound(usr.loc, pick('null.ogg','null.ogg'), 100, 1)
// else
// playsound(usr.loc, pick('null.ogg','null.ogg'), 100, 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-//UNUSED/OLD CODE
-
-// for (var/obj/effect/landmark/A in world)
-// if (A.name == "Teleport-Scroll")
-// new /obj/item/weapon/teleportation_scroll(A.loc)
-// del(A)
-// continue
-//Scroll now starts in the wizard's inventory.
-
-// if (wizard_mob.mind.assigned_role == "Clown")
-// wizard_mob << "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself."
-// wizard_mob.mutations &= ~CLOWN No more clowns as wizarrrddsss
-
-/*Creates random numbers/codes for the uplink.
- var/freq = 1441
- var/list/freqlist = list()
- while (freq <= 1489)
- if (freq < 1451 || freq > 1459)
- freqlist += freq
- freq += 2
- if ((freq % 2) == 0)
- freq += 1
- freq = freqlist[rand(1, freqlist.len)]
- // generate a passcode if the uplink is hidden in a PDA
- var/pda_pass = "[rand(100,999)] [pick("Morgan","Circe","Prospero","Elminister","Raistlin","Tzeentch","Saruman","Khelben","Dumbledor","Gandalf","Houdini","Teferi","Urza","Tenser","Zagyg","Mystryl","Boccob","Merlin")]"
-No longer used because wizards begin with a spell book.*/
-
-/*Checks where to spawn the swf uplink.
- var/loc = ""
- var/obj/item/device/R = null //Hide the uplink in a PDA if available, otherwise radio
- if (!R && istype(wizard_mob.belt, /obj/item/device/pda))
- R = wizard_mob.belt
- loc = "on your belt"
- if (!R && istype(wizard_mob.l_hand, /obj/item/weapon/storage))
- var/obj/item/weapon/storage/S = wizard_mob.l_hand
- var/list/L = S.return_inv()
- for (var/obj/item/device/radio/foo in L)
- R = foo
- loc = "in the [S.name] in your left hand"
- break
- if (!R && istype(wizard_mob.r_hand, /obj/item/weapon/storage))
- var/obj/item/weapon/storage/S = wizard_mob.r_hand
- var/list/L = S.return_inv()
- for (var/obj/item/device/radio/foo in L)
- R = foo
- loc = "in the [S.name] in your right hand"
- break
- if (!R && istype(wizard_mob.back, /obj/item/weapon/storage))
- var/obj/item/weapon/storage/S = wizard_mob.back
- var/list/L = S.return_inv()
- for (var/obj/item/device/radio/foo in L)
- R = foo
- loc = "in the [S.name] on your back"
- break
- if (!R && wizard_mob.w_uniform && istype(wizard_mob.belt, /obj/item/device/radio))
- R = wizard_mob.belt
- loc = "on your belt"
- if (!R && istype(wizard_mob.ears, /obj/item/device/radio))
- R = wizard_mob.ears
- loc = "on your head"
- if (!R)
- wizard_mob << "Unfortunately, the Space Wizards Federation wasn't able to get you a radio."
- else
- if (istype(R, /obj/item/device/radio))
- var/obj/item/weapon/SWF_uplink/T = new /obj/item/weapon/SWF_uplink(R)
- R:traitorradio = T
- R:traitor_frequency = freq
- T.name = R.name
- T.icon_state = R.icon_state
- T.origradio = R
- wizard_mob << "The Space Wizards Federation have cunningly disguised a spell book as your [R.name] [loc]. Simply dial the frequency [format_frequency(freq)] to unlock it's hidden features."
- wizard_mob.mind.store_memory("Radio Freq: [format_frequency(freq)] ([R.name] [loc]).")
- else if (istype(R, /obj/item/device/pda))
- var/obj/item/weapon/integrated_uplink/SWF/T = new /obj/item/weapon/integrated_uplink/SWF(R)
- R:uplink = T
- T.lock_code = pda_pass
- T.hostpda = R
- wizard_mob << "The Space Wizards Federation have cunningly enchanted a spellbook into your PDA [loc]. Simply enter the code \"[pda_pass]\" into the ringtone select to unlock its hidden features."
- wizard_mob.mind.store_memory("Uplink Passcode: [pda_pass] ([R.name] [loc]).")
-No longer used because wizards begin with a spell book.*/
-
-/*Code which works for intergrated uplinks, like those in PDAs.
-/obj/item/weapon/integrated_uplink/SWF
- name = "enchanted uplink"
- uses = 4
- var/temp = null
-
-/obj/item/weapon/integrated_uplink/SWF/generate_menu()
- src.menu_message = "Wizarding Uplink Console:
"
- src.menu_message += "Tele-Crystals left: [src.uses]
"
- src.menu_message += "
"
-
- if(src.temp)
- src.menu_message += "[src.temp]
"
- else //Nice empty space for it to appear in.
- src.menu_message += "
"
- src.menu_message += "Request item:
"
- src.menu_message += "Each item costs 1 telecrystal. The number afterwards is the cooldown time.
"
- src.menu_message += "Magic Missile (10)
"
- src.menu_message += "Fireball (10)
"
- src.menu_message += "Disintegrate (60)
"
- src.menu_message += "Disable Technology (60)
"
- src.menu_message += "Smoke (10)
"
- src.menu_message += "Blind (30)
"
- src.menu_message += "Forcewall (10)
"
- src.menu_message += "Blink (2)
"
- src.menu_message += "Teleport (30)
"
- src.menu_message += "Mutate (60)
"
- src.menu_message += "Ethereal Jaunt (60)
"
- src.menu_message += "Knock (10)
"
- src.menu_message += "
"
- return
-
-/obj/item/weapon/integrated_uplink/SWF/Topic(href, href_list)
- if ((isnull(src.hostpda)) || (!src.active))
- return
-
- if (usr.stat || usr.restrained() || !in_range(src.hostpda, usr))
- return
-
- if (href_list["buy_spell"])
- switch(href_list["buy_spell"])
- if("magicmissile")
- if (src.uses >= 1)
- src.uses -= 1
- usr.verbs += /client/proc/magicmissile
- src.temp = "This spell fires several, slow moving, magic projectiles at nearby targets. If they hit a target, it is paralyzed and takes minor damage."
- if("fireball")
- if (src.uses >= 1)
- src.uses -= 1
- usr.verbs += /client/proc/fireball
- src.temp = "This spell fires a fireball at a target and does not require wizard garb. Be careful not to fire it at people that are standing next to you."
- if("disintegrate")
- if (src.uses >= 1)
- src.uses -= 1
- usr.verbs += /mob/proc/kill
- src.temp = "This spell instantly kills somebody adjacent to you with the vilest of magick. It has a long cooldown."
- if("emp")
- if (src.uses >= 1)
- src.uses -= 1
- usr.verbs += /mob/proc/tech
- src.temp = "This spell disables all weapons, cameras and most other technology in range."
- if("smoke")
- if (src.uses >= 1)
- src.uses -= 1
- usr.verbs += /client/proc/smokecloud
- src.temp = "This spell spawns a cloud of choking smoke at your location and does not require wizard garb."
- if("blind")
- if (src.uses >= 1)
- src.uses -= 1
- usr.verbs += /client/proc/blind
- src.temp = "This spell temporarly blinds a single person and does not require wizard garb."
- if("forcewall")
- if (src.uses >= 1)
- src.uses -= 1
- usr.verbs += /client/proc/forcewall
- src.temp = "This spell creates an unbreakable wall that lasts for 30 seconds and does not require wizard garb."
- if("blink")
- if (src.uses >= 1)
- src.uses -= 1
- usr.verbs += /client/proc/blink
- src.temp = "This spell randomly teleports you a short distance. Useful for evasion or getting into areas if you have patience."
- if("teleport")
- if (src.uses >= 1)
- src.uses -= 1
- usr.verbs += /mob/proc/teleport
- src.temp = "This spell teleports you to a type of area of your selection. Very useful if you are in danger, but has a decent cooldown, and is unpredictable."
- if("mutate")
- if (src.uses >= 1)
- src.uses -= 1
- usr.verbs += /client/proc/mutate
- src.temp = "This spell causes you to turn into a hulk, and gain telekinesis for a short while."
- if("jaunt")
- if (src.uses >= 1)
- src.uses -= 1
- usr.verbs += /client/proc/jaunt
- src.temp = "This spell creates your ethereal form, temporarily making you invisible and able to pass through walls."
- if("knock")
- if (src.uses >= 1)
- src.uses -= 1
- usr.verbs += /client/proc/knock
- src.temp = "This spell opens nearby doors and does not require wizard garb."
- src.generate_menu()
- src.print_to_host(src.menu_message)
- return
-
- return
-No longer used because wizards begin with a spell book.*/
\ No newline at end of file
diff --git a/code/game/jobs/job/assistant.dm b/code/game/jobs/job/assistant.dm
new file mode 100644
index 0000000000..84513bef21
--- /dev/null
+++ b/code/game/jobs/job/assistant.dm
@@ -0,0 +1,14 @@
+/datum/job/assistant
+ title = "Assistant"
+ flag = ASSISTANT
+ department_flag = CIVILIAN
+ faction = "Station"
+ total_positions = -1
+ spawn_positions = -1
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/clothing/under/color/grey(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
+ return 1
diff --git a/code/game/jobs/job/captian.dm b/code/game/jobs/job/captian.dm
new file mode 100644
index 0000000000..c21bec3d2e
--- /dev/null
+++ b/code/game/jobs/job/captian.dm
@@ -0,0 +1,50 @@
+/datum/job/captain
+ title = "Captain"
+ flag = CAPTAIN
+ department_flag = ENGSEC
+ faction = "Station"
+ total_positions = 1
+ spawn_positions = 1
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/device/radio/headset/heads/captain(H), H.slot_ears)
+ H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back)
+ H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/captain(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/device/pda/captain(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/suit/armor/captain(H), H.slot_wear_suit)
+ H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/clothing/head/caphat(H), H.slot_head)
+ H.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(H), H.slot_glasses)
+ H.equip_if_possible(new /obj/item/weapon/storage/id_kit(H), H.slot_in_backpack)
+ var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
+ L.imp_in = H
+ L.implanted = 1
+ world << "[src] is the captain!"
+ return 1
+
+
+
+/datum/job/hop
+ title = "Head of Personnel"
+ flag = HOP
+ department_flag = CIVILIAN
+ faction = "Station"
+ total_positions = 1
+ spawn_positions = 1
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/device/radio/headset/heads/hop(H), H.slot_ears)
+ H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back)
+ H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/head_of_personnel(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/device/pda/heads/hop(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/suit/armor/vest(H), H.slot_wear_suit)
+ H.equip_if_possible(new /obj/item/clothing/head/helmet(H), H.slot_head)
+ H.equip_if_possible(new /obj/item/weapon/storage/id_kit(H), H.slot_in_backpack)
+ return 1
diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm
new file mode 100644
index 0000000000..5a1271e0ea
--- /dev/null
+++ b/code/game/jobs/job/civilian.dm
@@ -0,0 +1,259 @@
+
+
+
+
+
+//Food
+/datum/job/bartender
+ title = "Bartender"
+ flag = BARTENDER
+ department_flag = CIVILIAN
+ faction = "Station"
+ total_positions = 1
+ spawn_positions = 1
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back)
+ H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/bartender(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/clothing/suit/armor/vest(H), H.slot_wear_suit)
+ H.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(H), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(H), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(H), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(H), H.slot_in_backpack)
+ return 1
+
+
+
+/datum/job/chef
+ title = "Chef"
+ flag = CHEF
+ department_flag = CIVILIAN
+ faction = "Station"
+ total_positions = 1
+ spawn_positions = 1
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/clothing/under/rank/chef(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/suit/chef(H), H.slot_wear_suit)
+ H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/clothing/head/chefhat(H), H.slot_head)
+ return 1
+
+
+
+/datum/job/hydro
+ title = "Botanist"
+ flag = BOTANIST
+ department_flag = CIVILIAN
+ faction = "Station"
+ total_positions = 3
+ spawn_positions = 2
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/clothing/under/rank/hydroponics(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/clothing/gloves/botanic_leather(H), H.slot_gloves)
+ H.equip_if_possible(new /obj/item/clothing/suit/apron(H), H.slot_wear_suit)
+ H.equip_if_possible(new /obj/item/device/analyzer/plant_analyzer(H), H.slot_s_store)
+ return 1
+
+
+
+//Cargo
+/datum/job/qm
+ title = "Quartermaster"
+ flag = QUARTERMASTER
+ department_flag = CIVILIAN
+ faction = "Station"
+ total_positions = 1
+ spawn_positions = 1
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/device/radio/headset/heads/qm(H), H.slot_ears)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/cargo(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/device/pda/quartermaster(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves)
+ H.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(H), H.slot_glasses)
+ H.equip_if_possible(new /obj/item/weapon/clipboard(H), H.slot_l_hand)
+ return 1
+
+
+
+/datum/job/cargo_tech
+ title = "Cargo Technician"
+ flag = CARGOTECH
+ department_flag = CIVILIAN
+ faction = "Station"
+ total_positions = 2
+ spawn_positions = 2
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/device/radio/headset/headset_cargo(H), H.slot_ears)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/cargo(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/device/pda/quartermaster(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves)
+ return 1
+
+
+
+/datum/job/mining
+ title = "Shaft Miner"
+ flag = MINER
+ department_flag = CIVILIAN
+ faction = "Station"
+ total_positions = 3
+ spawn_positions = 3
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/device/radio/headset/headset_mine (H), H.slot_ears)
+ H.equip_if_possible(new /obj/item/weapon/storage/backpack/industrial (H), H.slot_back)
+ H.equip_if_possible(new /obj/item/weapon/storage/box/engineer(H.back), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/miner(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves)
+ H.equip_if_possible(new /obj/item/weapon/crowbar(H), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/weapon/satchel(H), H.slot_in_backpack)
+ return 1
+
+
+
+//Griff
+/datum/job/clown
+ title = "Clown"
+ flag = CLOWN
+ department_flag = CIVILIAN
+ faction = "Station"
+ total_positions = 1
+ spawn_positions = 1
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/weapon/storage/backpack/clown(H), H.slot_back)
+ H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/clown(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/clown_shoes(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/device/pda/clown(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/mask/gas/clown_hat(H), H.slot_wear_mask)
+ H.equip_if_possible(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(H), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/weapon/bikehorn(H), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/weapon/stamp/clown(H), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/toy/crayon/rainbow(H), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/toy/crayonbox(H), H.slot_in_backpack)
+ H.mutations |= CLOWN
+ return 1
+
+
+
+/datum/job/mime
+ title = "Mime"
+ flag = MIME
+ department_flag = CIVILIAN
+ faction = "Station"
+ total_positions = 1
+ spawn_positions = 1
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back)
+ H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/clothing/under/mime(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/device/pda/mime(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/gloves/white(H), H.slot_gloves)
+ H.equip_if_possible(new /obj/item/clothing/mask/gas/mime(H), H.slot_wear_mask)
+ H.equip_if_possible(new /obj/item/clothing/head/beret(H), H.slot_head)
+ H.equip_if_possible(new /obj/item/clothing/suit/suspenders(H), H.slot_wear_suit)
+ H.equip_if_possible(new /obj/item/toy/crayon/mime(H), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing(H), H.slot_in_backpack)
+ H.verbs += /client/proc/mimespeak
+ H.verbs += /client/proc/mimewall
+ H.mind.special_verbs += /client/proc/mimespeak
+ H.mind.special_verbs += /client/proc/mimewall
+ H.miming = 1
+ return 1
+
+
+
+/datum/job/janitor
+ title = "Janitor"
+ flag = JANITOR
+ department_flag = CIVILIAN
+ faction = "Station"
+ total_positions = 1
+ spawn_positions = 1
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/clothing/under/rank/janitor(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/device/pda/janitor(H), H.slot_belt)
+ return 1
+
+
+
+//More or less assistants
+/datum/job/librarian
+ title = "Librarian"
+ flag = LIBRARIAN
+ department_flag = CIVILIAN
+ faction = "Station"
+ total_positions = 1
+ spawn_positions = 1
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/clothing/under/suit_jacket/red(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/weapon/barcodescanner(H), H.slot_l_hand)
+ return 1
+
+
+
+var/global/lawyer = 0//Checks for another lawyer
+/datum/job/lawyer
+ title = "Lawyer"
+ flag = LAWYER
+ department_flag = CIVILIAN
+ faction = "Station"
+ total_positions = 2
+ spawn_positions = 2
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back)
+ H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack)
+ if(!lawyer)
+ lawyer = 1
+ H.equip_if_possible(new /obj/item/clothing/under/lawyer/bluesuit(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/suit/lawyer/bluejacket(H), H.slot_wear_suit)
+ else
+ H.equip_if_possible(new /obj/item/clothing/under/lawyer/purpsuit(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/suit/lawyer/purpjacket(H), H.slot_wear_suit)
+ H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/device/pda/lawyer(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/device/detective_scanner(H), H.slot_in_backpack)//Why do they even get this?
+ H.equip_if_possible(new /obj/item/weapon/storage/briefcase(H), H.slot_l_hand)
+ return 1
+
+
diff --git a/code/game/jobs/job/civilian_chaplain.dm b/code/game/jobs/job/civilian_chaplain.dm
new file mode 100644
index 0000000000..5a84c6a855
--- /dev/null
+++ b/code/game/jobs/job/civilian_chaplain.dm
@@ -0,0 +1,152 @@
+//Due to how large this one is it gets its own file
+/datum/job/chaplain
+ title = "Chaplain"
+ flag = CHAPLAIN
+ department_flag = CIVILIAN
+ faction = "Station"
+ total_positions = 1
+ spawn_positions = 1
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+
+ var/obj/item/weapon/storage/bible/B = new /obj/item/weapon/storage/bible/booze(H)
+ H.equip_if_possible(B, H.slot_l_hand)
+ H.equip_if_possible(new /obj/item/device/pda/chaplain(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/chaplain(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
+ spawn(0)
+ var/religion_name = "Christianity"
+ var/new_religion = input(H, "You are the Chaplain. Would you like to change your religion? Default is Christianity, in SPACE.", "Name change", religion_name)
+
+ if ((length(new_religion) == 0) || (new_religion == "Christianity"))
+ new_religion = religion_name
+
+ if (new_religion)
+ if (length(new_religion) >= 26)
+ new_religion = copytext(new_religion, 1, 26)
+ new_religion = dd_replacetext(new_religion, ">", "'")
+ switch(lowertext(new_religion))
+ if("christianity")
+ B.name = pick("The Holy Bible","The Dead Sea Scrolls")
+ if("satanism")
+ B.name = "The Unholy Bible"
+ if("cthulu")
+ B.name = "The Necronomicon"
+ if("islam")
+ B.name = "Quran"
+ if("scientology")
+ B.name = pick("The Biography of L. Ron Hubbard","Dianetics")
+ if("chaos")
+ B.name = "The Book of Lorgar"
+ if("imperium")
+ B.name = "Uplifting Primer"
+ if("toolboxia")
+ B.name = "Toolbox Manifesto"
+ if("homosexuality")
+ B.name = "Guys Gone Wild"
+ if("lol", "wtf", "gay", "penis", "ass", "poo", "badmin", "shitmin", "deadmin", "cock", "cocks")
+ B.name = pick("Woodys Got Wood: The Aftermath", "War of the Cocks", "Sweet Bro and Hella Jef: Expanded Edition")
+ H.brainloss = 100 // starts off retarded as fuck
+ if("science")
+ B.name = pick("Principle of Relativity", "Quantum Enigma: Physics Encounters Consciousness", "Programming the Universe", "Quantum Physics and Theology", "String Theory for Dummies", "How To: Build Your Own Warp Drive", "The Mysteries of Bluespace", "Playing God: Collector's Edition")
+ else
+ B.name = "The Holy Book of [new_religion]"
+
+ spawn(1)
+ var/deity_name = "Space Jesus"
+ var/new_deity = input(H, "Would you like to change your deity? Default is Space Jesus.", "Name change", deity_name)
+
+ if ((length(new_deity) == 0) || (new_deity == "Space Jesus") )
+ new_deity = deity_name
+
+ if(new_deity)
+ if (length(new_deity) >= 26)
+ new_deity = copytext(new_deity, 1, 26)
+ new_deity = dd_replacetext(new_deity, ">", "'")
+ B.deity_name = new_deity
+
+ var/accepted = 0
+ var/outoftime = 0
+ spawn(200) // 20 seconds to choose
+ outoftime = 1
+ while(!accepted)
+ if(!B) break // prevents possible runtime errors
+
+ switch(input(H,"Which bible style would you like?") in list("Bible", "Koran", "Scrapbook", "Daederic Scroll", "Creeper", "White Bible", "Holy Light", "Athiest", "Tome", "The King in Yellow", "Ithaqua", "Scientology", "the bible melts", "Necronomicon"))
+ if("Koran")
+ B.icon_state = "koran"
+ B.item_state = "koran"
+ for(var/area/chapel/main/A in world)
+ for(var/turf/T in A.contents)
+ if(T.icon_state == "carpetsymbol")
+ T.dir = 4
+ if("Scrapbook")
+ B.icon_state = "scrapbook"
+ B.item_state = "scrapbook"
+ if("Daederic Scroll")
+ B.icon_state = "daederic_scroll"
+ B.item_state = "daederic"
+ if("Creeper")
+ B.icon_state = "creeper"
+ B.item_state = "syringe_kit"
+ if("White Bible")
+ B.icon_state = "white"
+ B.item_state = "syringe_kit"
+ if("Holy Light")
+ B.icon_state = "holylight"
+ B.item_state = "syringe_kit"
+ if("Athiest")
+ B.icon_state = "athiest"
+ B.item_state = "syringe_kit"
+ for(var/area/chapel/main/A in world)
+ for(var/turf/T in A.contents)
+ if(T.icon_state == "carpetsymbol")
+ T.dir = 10
+ if("Tome")
+ B.icon_state = "tome"
+ B.item_state = "syringe_kit"
+ if("The King in Yellow")
+ B.icon_state = "kingyellow"
+ B.item_state = "kingyellow"
+ if("Ithaqua")
+ B.icon_state = "ithaqua"
+ B.item_state = "ithaqua"
+ if("Scientology")
+ B.icon_state = "scientology"
+ B.item_state = "scientology"
+ for(var/area/chapel/main/A in world)
+ for(var/turf/T in A.contents)
+ if(T.icon_state == "carpetsymbol")
+ T.dir = 8
+ if("the bible melts")
+ B.icon_state = "melted"
+ B.item_state = "melted"
+ if("Necronomicon")
+ B.icon_state = "necronomicon"
+ B.item_state = "necronomicon"
+ else
+ // if christian bible, revert to default
+ B.icon_state = "bible"
+ B.item_state = "bible"
+ for(var/area/chapel/main/A in world)
+ for(var/turf/T in A.contents)
+ if(T.icon_state == "carpetsymbol")
+ T.dir = 2
+
+ H:update_clothing() // so that it updates the bible's item_state in his hand
+
+ switch(input(H,"Look at your bible - is this what you want?") in list("Yes","No"))
+ if("Yes")
+ accepted = 1
+ if("No")
+ if(outoftime)
+ H << "Welp, out of time, buddy. You're stuck. Next time choose faster."
+ accepted = 1
+
+ if(ticker)
+ ticker.Bible_icon_state = B.icon_state
+ ticker.Bible_item_state = B.item_state
+ ticker.Bible_name = B.name
+ return 1
\ No newline at end of file
diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm
new file mode 100644
index 0000000000..21378012d2
--- /dev/null
+++ b/code/game/jobs/job/engineering.dm
@@ -0,0 +1,88 @@
+/datum/job/chief_engineer
+ title = "Chief Engineer"
+ flag = CHIEF
+ department_flag = ENGSEC
+ faction = "Station"
+ total_positions = 1
+ spawn_positions = 1
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/device/radio/headset/heads/ce(H), H.slot_ears)
+ H.equip_if_possible(new /obj/item/weapon/storage/backpack/industrial (H), H.slot_back)
+ H.equip_if_possible(new /obj/item/weapon/storage/box/engineer(H.back), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/chief_engineer(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/device/pda/heads/ce(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/clothing/head/helmet/hardhat/white(H), H.slot_head)
+ H.equip_if_possible(new /obj/item/weapon/storage/belt/utility/full(H), H.slot_l_hand)
+ H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves)
+ return 1
+
+
+
+/datum/job/engineer
+ title = "Station Engineer"
+ flag = ENGINEER
+ department_flag = ENGSEC
+ faction = "Station"
+ total_positions = 5
+ spawn_positions = 5
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/device/radio/headset/headset_eng(H), H.slot_ears)
+ H.equip_if_possible(new /obj/item/weapon/storage/backpack/industrial(H), H.slot_back)
+ H.equip_if_possible(new /obj/item/weapon/storage/box/engineer(H.back), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/engineer(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/orange(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/device/pda/engineering(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/head/helmet/hardhat(H), H.slot_head)
+ H.equip_if_possible(new /obj/item/weapon/storage/belt/utility/full(H), H.slot_l_hand)
+ H.equip_if_possible(new /obj/item/device/t_scanner(H), H.slot_r_store)
+ return 1
+
+
+
+/datum/job/atmos
+ title = "Atmospheric Technician"
+ flag = ATMOSTECH
+ department_flag = ENGSEC
+ faction = "Station"
+ total_positions = 3
+ spawn_positions = 2
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/device/radio/headset/headset_eng(H), H.slot_ears)
+ H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back)
+ H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/atmospheric_technician(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/device/pda/engineering(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/weapon/storage/toolbox/mechanical(H), H.slot_l_hand)
+ return 1
+
+
+
+/datum/job/roboticist
+ title = "Roboticist"
+ flag = ROBOTICIST
+ department_flag = ENGSEC
+ faction = "Station"
+ total_positions = 2
+ spawn_positions = 1
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/device/radio/headset/headset_eng(H), H.slot_ears)
+ H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back)
+ H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/roboticist(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/device/pda/engineering(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves)
+ return 1
\ No newline at end of file
diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm
new file mode 100644
index 0000000000..1931a97679
--- /dev/null
+++ b/code/game/jobs/job/job.dm
@@ -0,0 +1,94 @@
+/datum/job
+ var
+ //The name of the job
+ title = "NOPE"
+ //Bitflags for the job
+ flag = 0
+ department_flag = 0
+ //Players will be allowed to spawn in as jobs that are set to "Station"
+ faction = "None"
+ //How many players can be this job
+ total_positions = 0
+ //How many players can spawn in as this job
+ spawn_positions = 0
+ //How many players have this job
+ current_positions = 0
+
+
+ proc/equip(var/mob/living/carbon/human/H)
+ return 1
+
+
+var/datum/jobs/jobs = new/datum/jobs()
+
+/datum/jobs
+ var/list/datum/job/all_jobs = list()
+
+ proc/get_all_jobs()
+ return all_jobs
+
+ //This proc returns all the jobs which are NOT admin only
+ proc/get_normal_jobs()
+// var/list/datum/job/normal_jobs = list()
+// for(var/datum/job/J in all_jobs)
+// if(!J.admin_only)
+// normal_jobs += J
+// return normal_jobs
+
+ //This proc returns all the jobs which are admin only
+ proc/get_admin_jobs()
+// var/list/datum/job/admin_jobs = list()
+// for(var/datum/job/J in all_jobs)
+// if(J.admin_only)
+// admin_jobs += J
+// return admin_jobs
+
+ //This proc returns the job datum of the job with the alias or job title given as the argument. Returns an empty string otherwise.
+ proc/get_job(var/alias)
+// for(var/datum/job/J in all_jobs)
+// if(J.is_job_alias(alias))
+// return J
+ return ""
+
+ //This proc returns a string with the default job title for the job with the given alias. Returns an empty string otherwise.
+ proc/get_job_title(var/alias)
+// for(var/datum/job/J in all_jobs)
+// if(J.is_job_alias(alias))
+// return J.title
+ return ""
+/*
+ //This proc returns all the job datums of the workers whose boss has the alias provided. (IE Engineer under Chief Engineer, etc.)
+ proc/get_jobs_under(var/boss_alias)
+ var/boss_title = get_job_title(boss_alias)
+ var/list/datum/job/employees = list()
+ for(var/datum/job/J in all_jobs)
+ if(boss_title in J.bosses)
+ employees += J
+ return employees*/
+
+ //This proc returns the chosen vital and high priority jobs that the person selected. It goes from top to bottom of the list, until it finds a job which does not have such priority.
+ //Example: Choosing (in this order): CE, Captain, Engineer, RD will only return CE and Captain, as RD is assumed as being an unwanted choice.
+ //This proc is used in the allocation algorithm when deciding vital and high priority jobs.
+/* proc/get_prefered_high_priority_jobs()
+ var/list/datum/job/hp_jobs = list()
+ for(var/datum/job/J in all_jobs)
+ if(J.assignment_priority == HIGH_PRIORITY_JOB || J.assignment_priority == VITAL_PRIORITY_JOB)
+ hp_jobs += J
+ else
+ break
+ return hp_jobs
+
+ //If only priority is given, it will return the jobs of only that priority, if end_priority is set it will return the jobs with their priority higher or equal to var/priority and lower or equal to end_priority. end_priority must be higher than 0.
+ proc/get_jobs_by_priority(var/priority, var/end_priority = 0)
+ var/list/datum/job/priority_jobs = list()
+ if(end_priority)
+ if(end_priority < priority)
+ return
+ for(var/datum/job/J in all_jobs)
+ if(J.assignment_priority >= priority && J.assignment_priority <= end_priority)
+ priority_jobs += J
+ else
+ for(var/datum/job/J in all_jobs)
+ if(J.assignment_priority == priority)
+ priority_jobs += J
+ return priority_jobs*/
\ No newline at end of file
diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm
new file mode 100644
index 0000000000..24096fcdb1
--- /dev/null
+++ b/code/game/jobs/job/medical.dm
@@ -0,0 +1,94 @@
+/datum/job/cmo
+ title = "Chief Medical Officer"
+ flag = CMO
+ department_flag = MEDSCI
+ faction = "Station"
+ total_positions = 1
+ spawn_positions = 1
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/device/radio/headset/heads/cmo(H), H.slot_ears)
+ H.equip_if_possible(new /obj/item/weapon/storage/backpack/medic (H), H.slot_back)
+ H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/chief_medical_officer(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/device/pda/heads/cmo(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/suit/labcoat/cmo(H), H.slot_wear_suit)
+ H.equip_if_possible(new /obj/item/weapon/storage/firstaid/regular(H), H.slot_l_hand)
+ H.equip_if_possible(new /obj/item/device/flashlight/pen(H), H.slot_s_store)
+ return 1
+
+
+
+/datum/job/doctor
+ title = "Medical Doctor"
+ flag = DOCTOR
+ department_flag = MEDSCI
+ faction = "Station"
+ total_positions = 5
+ spawn_positions = 3
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/device/radio/headset/headset_med(H), H.slot_ears)
+ H.equip_if_possible(new /obj/item/weapon/storage/backpack/medic (H), H.slot_back)
+ H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/medical(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/white(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/device/pda/medical(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/suit/labcoat(H), H.slot_wear_suit)
+ H.equip_if_possible(new /obj/item/weapon/storage/firstaid/regular(H), H.slot_l_hand)
+ H.equip_if_possible(new /obj/item/device/flashlight/pen(H), H.slot_s_store)
+ return 1
+
+
+
+/datum/job/geneticist
+ title = "Geneticist"
+ flag = GENETICIST
+ department_flag = MEDSCI
+ faction = "Station"
+ total_positions = 2
+ spawn_positions = 2
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/device/radio/headset/headset_medsci(H), H.slot_ears)
+ H.equip_if_possible(new /obj/item/weapon/storage/backpack/medic (H), H.slot_back)
+ H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/geneticist(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/white(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/device/pda/medical(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/suit/labcoat/genetics(H), H.slot_wear_suit)
+ H.equip_if_possible(new /obj/item/device/flashlight/pen(H), H.slot_s_store)
+ return 1
+
+
+
+/datum/job/virologist
+ title = "Virologist"
+ flag = VIROLOGIST
+ department_flag = MEDSCI
+ faction = "Station"
+ total_positions = 1
+ spawn_positions = 1
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/device/radio/headset/headset_med(H), H.slot_ears)
+ H.equip_if_possible(new /obj/item/weapon/storage/backpack/medic (H), H.slot_back)
+ H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/medical(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/device/pda/medical(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/mask/surgical(H), H.slot_wear_mask)
+ H.equip_if_possible(new /obj/item/clothing/shoes/white(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/clothing/suit/labcoat/virologist(H), H.slot_wear_suit)
+ H.equip_if_possible(new /obj/item/device/flashlight/pen(H), H.slot_s_store)
+ return 1
+
+
diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm
new file mode 100644
index 0000000000..f9afec98a7
--- /dev/null
+++ b/code/game/jobs/job/science.dm
@@ -0,0 +1,61 @@
+/datum/job/rd
+ title = "Research Director"
+ flag = RD
+ department_flag = MEDSCI
+ faction = "Station"
+ total_positions = 1
+ spawn_positions = 1
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/device/radio/headset/heads/rd(H), H.slot_ears)
+ H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/research_director(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/device/pda/heads/rd(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/suit/labcoat(H), H.slot_wear_suit)
+ H.equip_if_possible(new /obj/item/weapon/pen(H), H.slot_l_hand)
+ H.equip_if_possible(new /obj/item/weapon/clipboard(H), H.slot_r_hand)
+ return 1
+
+
+
+/datum/job/scientist
+ title = "Scientist"
+ flag = SCIENTIST
+ department_flag = MEDSCI
+ faction = "Station"
+ total_positions = 5
+ spawn_positions = 3
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/device/radio/headset/headset_sci(H), H.slot_ears)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/scientist(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/white(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/device/pda/toxins(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/suit/labcoat/science(H), H.slot_wear_suit)
+ H.equip_if_possible(new /obj/item/clothing/mask/gas(H), H.slot_wear_mask)
+ H.equip_if_possible(new /obj/item/weapon/tank/oxygen(H), H.slot_l_hand)
+ return 1
+
+
+
+/datum/job/chemist
+ title = "Chemist"
+ flag = CHEMIST
+ department_flag = MEDSCI
+ faction = "Station"
+ total_positions = 2
+ spawn_positions = 2
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/device/radio/headset/headset_medsci(H), H.slot_ears)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/chemist(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/white(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/device/pda/toxins(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/suit/labcoat/chemist(H), H.slot_wear_suit)
+ return 1
diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm
new file mode 100644
index 0000000000..dfc90deeca
--- /dev/null
+++ b/code/game/jobs/job/security.dm
@@ -0,0 +1,124 @@
+/datum/job/hos
+ title = "Head of Security"
+ flag = HOS
+ department_flag = ENGSEC
+ faction = "Station"
+ total_positions = 1
+ spawn_positions = 1
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/weapon/storage/backpack/security (H), H.slot_back)
+ H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/device/radio/headset/heads/hos(H), H.slot_ears)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/head_of_security(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/jackboots(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/device/pda/heads/hos(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/suit/armor/hos(H), H.slot_wear_suit)
+ H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves)
+ H.equip_if_possible(new /obj/item/clothing/head/helmet/HoS(H), H.slot_head)
+ H.equip_if_possible(new /obj/item/clothing/mask/gas/emergency(H), H.slot_wear_mask)
+ H.equip_if_possible(new /obj/item/clothing/glasses/sunglasses/sechud(H), H.slot_glasses)
+ H.equip_if_possible(new /obj/item/weapon/handcuffs(H), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/weapon/gun/energy/gun(H), H.slot_s_store)
+ H.equip_if_possible(new /obj/item/device/flash(H), H.slot_l_store)
+ var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
+ L.imp_in = H
+ L.implanted = 1
+ return 1
+
+
+
+/datum/job/warden
+ title = "Warden"
+ flag = WARDEN
+ department_flag = ENGSEC
+ faction = "Station"
+ total_positions = 1
+ spawn_positions = 1
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/device/radio/headset/headset_sec(H), H.slot_ears)
+ H.equip_if_possible(new /obj/item/weapon/storage/backpack/security(H), H.slot_back)
+ H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/warden(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/jackboots(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/device/pda/security(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/suit/armor/vest(H), H.slot_wear_suit)
+ H.equip_if_possible(new /obj/item/clothing/head/helmet/warden(H), H.slot_head)
+ H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves)
+ H.equip_if_possible(new /obj/item/clothing/glasses/sunglasses/sechud(H), H.slot_glasses)
+ H.equip_if_possible(new /obj/item/clothing/mask/gas/emergency(H), H.slot_wear_mask)
+ H.equip_if_possible(new /obj/item/weapon/gun/energy/taser(H), H.slot_s_store)
+ H.equip_if_possible(new /obj/item/weapon/handcuffs(H), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/device/flash(H), H.slot_l_store)
+ var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
+ L.imp_in = H
+ L.implanted = 1
+ return 1
+
+
+
+/datum/job/detective
+ title = "Detective"
+ flag = DETECTIVE
+ department_flag = ENGSEC
+ faction = "Station"
+ total_positions = 1
+ spawn_positions = 1
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/device/radio/headset/headset_sec(H), H.slot_ears)
+ H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back)
+ H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/clothing/under/det(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/device/pda/detective(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/head/det_hat(H), H.slot_head)
+ var/obj/item/clothing/mask/cigarette/CIG = new /obj/item/clothing/mask/cigarette(H)
+ CIG.light("")
+ H.equip_if_possible(CIG, H.slot_wear_mask)
+ H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves)
+ H.equip_if_possible(new /obj/item/weapon/storage/fcard_kit(H.back), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/weapon/fcardholder(H), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/clothing/suit/det_suit(H), H.slot_wear_suit)
+ H.equip_if_possible(new /obj/item/device/detective_scanner(H), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/weapon/zippo(H), H.slot_l_store)
+ H.equip_if_possible(new /obj/item/weapon/reagent_containers/food/snacks/candy_corn(H), H.slot_h_store)
+ var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
+ L.imp_in = H
+ L.implanted = 1
+ return 1
+
+
+
+/datum/job/officer
+ title = "Security Officer"
+ flag = OFFICER
+ department_flag = ENGSEC
+ faction = "Station"
+ total_positions = 5
+ spawn_positions = 5
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ H.equip_if_possible(new /obj/item/device/radio/headset/headset_sec(H), H.slot_ears)
+ H.equip_if_possible(new /obj/item/weapon/storage/backpack/security(H), H.slot_back)
+ H.equip_if_possible(new /obj/item/weapon/storage/box/survival(H.back), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/clothing/under/rank/security(H), H.slot_w_uniform)
+ H.equip_if_possible(new /obj/item/clothing/shoes/jackboots(H), H.slot_shoes)
+ H.equip_if_possible(new /obj/item/device/pda/security(H), H.slot_belt)
+ H.equip_if_possible(new /obj/item/clothing/suit/armor/vest(H), H.slot_wear_suit)
+ H.equip_if_possible(new /obj/item/clothing/head/helmet(H), H.slot_head)
+ H.equip_if_possible(new /obj/item/weapon/handcuffs(H), H.slot_in_backpack)
+ H.equip_if_possible(new /obj/item/weapon/handcuffs(H), H.slot_s_store)
+ var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
+ L.imp_in = H
+ L.implanted = 1
+ return 1
diff --git a/code/game/jobs/job/silicon.dm b/code/game/jobs/job/silicon.dm
new file mode 100644
index 0000000000..f18aa2323f
--- /dev/null
+++ b/code/game/jobs/job/silicon.dm
@@ -0,0 +1,27 @@
+/datum/job/ai
+ title = "AI"
+ flag = AI
+ department_flag = ENGSEC
+ faction = "Station"
+ total_positions = 0
+ spawn_positions = 1
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ return 1
+
+
+
+/datum/job/cyborg
+ title = "Cyborg"
+ flag = CYBORG
+ department_flag = ENGSEC
+ faction = "Station"
+ total_positions = 0
+ spawn_positions = 1
+
+
+ equip(var/mob/living/carbon/human/H)
+ if(!H) return 0
+ return 1
\ No newline at end of file
diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
new file mode 100644
index 0000000000..0f5bd67c08
--- /dev/null
+++ b/code/game/jobs/job_controller.dm
@@ -0,0 +1,222 @@
+var/global/datum/controller/occupations/job_master
+
+/datum/controller/occupations
+ var
+ //List of all jobs
+ list/occupations = list()
+ //Players who need jobs
+ list/unassigned = list()
+
+
+ proc/SetupOccupations(var/faction = "Station")
+ occupations = list()
+ var/list/all_jobs = typesof(/datum/job)
+ if(!all_jobs.len)
+ world << "\red \b Error setting up jobs, no job datums found"
+ return 0
+ for(var/J in all_jobs)
+ var/datum/job/job = new J()
+ if(!job) continue
+ if(job.faction != faction) continue
+ occupations += job
+ return 1
+
+
+ proc/GetJob(var/name)
+ if(!name) return null
+ for(var/datum/job/J in occupations)
+ if(!J) continue
+ if(J.title == name) return J
+ return null
+
+
+ proc/AssignRole(var/mob/new_player/player, var/job, var/latejoin = 0)
+ if((player) && (player.mind) && (job))
+ var/datum/job/J = GetJob(job)
+ if(jobban_isbanned(player, job)) return 0
+ if(J && ((J.title == "Assistant") || ( (J.current_positions < J.total_positions) || ((J.current_positions < J.spawn_positions) && !latejoin)) ))
+ player.mind.assigned_role = J.title
+ unassigned -= player
+ J.current_positions++
+ return 1
+ return 0
+
+
+ proc/FindOccupationCandidates(datum/job/job, level, flag)
+ var/list/candidates = list()
+ for(var/mob/new_player/player in unassigned)
+ if(jobban_isbanned(player, job.title)) continue
+ if(flag && (!player.preferences.be_special & flag)) continue
+ switch(level)
+ if(1)
+ if(job.flag == player.preferences.GetJobDepartment(job, level)) candidates += player
+ if(2)
+ if(job.flag == player.preferences.GetJobDepartment(job, level)) candidates += player
+ if(3)
+ if(job.flag == player.preferences.GetJobDepartment(job, level)) candidates += player
+ return candidates
+
+
+ proc/ResetOccupations()
+ for(var/mob/new_player/player in world)
+ if((player) && (player.mind))
+ player.mind.assigned_role = null
+ player.mind.special_role = null
+ SetupOccupations()
+ unassigned = list()
+ return
+
+
+ proc/FillHeadPosition()
+ for(var/level = 1 to 3)
+ for(var/command_position in command_positions)
+ var/datum/job/job = GetJob(command_position)
+ if(!job) continue
+ var/list/candidates = FindOccupationCandidates(job, level)
+ if(!candidates.len) continue
+ var/mob/new_player/candidate = pick(candidates)
+ if(AssignRole(candidate, command_position))
+ return 1
+ return 0
+
+
+ proc/FillAIPosition()
+ var/ai_selected = 0
+ var/datum/job/job = GetJob("AI")
+ if(!job) return 0
+ if((job.title == "AI") && (config) && (!config.allow_ai)) return 0
+
+ for(var/level = 1 to 3)
+ var/list/candidates = list()
+ if(ticker.mode.name == "AI malfunction")//Make sure they want to malf if its malf
+ candidates = FindOccupationCandidates(job, level, BE_MALF)
+ else
+ candidates = FindOccupationCandidates(job, level)
+ if(candidates.len)
+ var/mob/new_player/candidate = pick(candidates)
+ if(AssignRole(candidate, "AI"))
+ ai_selected++
+ break
+ //Malf NEEDS an AI so force one if we didn't get a player who wanted it
+ if((ticker.mode.name == "AI malfunction")&&(!ai_selected))
+ unassigned = shuffle(unassigned)
+ for(var/mob/new_player/player in unassigned)
+ if(jobban_isbanned(player, "AI")) continue
+ if(AssignRole(player, "AI"))
+ ai_selected++
+ break
+ if(ai_selected) return 1
+ return 0
+
+
+/** Proc DivideOccupations
+ * fills var "assigned_role" for all ready players.
+ * This proc must not have any side effect besides of modifying "assigned_role".
+ **/
+ proc/DivideOccupations()
+ //Setup new player list and get the jobs list
+ SetupOccupations()
+
+ //Get the players who are ready
+ for(var/mob/new_player/player in world)
+ if((player) && (player.client) && (player.ready) && (player.mind) && (!player.mind.assigned_role))
+ unassigned += player
+
+ if(unassigned.len == 0) return 0
+ //Shuffle players and jobs
+ unassigned = shuffle(unassigned)
+ // occupations = shuffle(occupations) check and see if we can do this one
+
+ //Select one head
+ FillHeadPosition()
+
+ //Check for an AI
+ FillAIPosition()
+
+ //Assistants are checked first
+ var/datum/job/assist = new /datum/job/assistant()
+ var/list/assistant_candidates = FindOccupationCandidates(assist, 3)
+ for(var/mob/new_player/player in assistant_candidates)
+ AssignRole(player, "Assistant")
+
+ //Other jobs are now checked
+ for(var/level = 1 to 3)
+ for(var/datum/job/job in occupations)
+ if(!job) continue
+ if(!unassigned.len) break
+ if(job.current_positions >= job.spawn_positions) continue
+ var/list/candidates = FindOccupationCandidates(unassigned, job, level)
+ while(candidates.len && (job.current_positions < job.spawn_positions))
+ var/mob/new_player/candidate = pick(candidates)
+ AssignRole(candidate, job)
+
+ for(var/mob/new_player/player in unassigned)
+ AssignRole(player, "Assistant")
+ return 1
+
+
+ proc/EquipRank(var/mob/living/carbon/human/H, var/rank, var/joined_late)
+ if(!H) return 0
+ var/datum/job/job = GetJob(rank)
+ if(job)
+ job.equip(H)
+ else
+ H << "Your job is [rank] and the game just can't handle it! Please report this bug to an administrator."
+
+ spawnId(H,rank)
+ H << "You are the [rank]."
+ H.job = rank
+ if(H.mind)
+ H.mind.assigned_role = rank
+
+ if(!joined_late && rank != "Tourist")
+ var/obj/S = null
+ for(var/obj/effect/landmark/start/sloc in world)
+ if(sloc.name != rank) continue
+ if(locate(/mob/living) in sloc.loc) continue
+ S = sloc
+ break
+ if(!S)
+ S = locate("start*[rank]") // use old stype
+ if(istype(S, /obj/effect/landmark/start) && istype(S.loc, /turf))
+ H.loc = S.loc
+
+ if(H.mind && H.mind.assigned_role == "Cyborg")//This could likely be done somewhere else
+ H.Robotize()
+ return 1
+
+ H.equip_if_possible(new /obj/item/device/radio/headset(H), H.slot_ears)
+ var/obj/item/weapon/storage/backpack/BPK = new/obj/item/weapon/storage/backpack(H)
+ new /obj/item/weapon/storage/box/survival(BPK)
+ H.equip_if_possible(BPK, H.slot_back,1)
+ return 1
+
+
+ proc/spawnId(var/mob/living/carbon/human/H, rank)
+ if(!H) return 0
+ var/obj/item/weapon/card/id/C = null
+ switch(rank)
+ if("Cyborg")
+ return
+ if("Captain")
+ C = new /obj/item/weapon/card/id/gold(H)
+ else
+ C = new /obj/item/weapon/card/id(H)
+ if(C)
+ C.registered = H.real_name
+ C.assignment = rank
+ C.name = "[C.registered]'s ID Card ([C.assignment])"
+ C.access = get_access(C.assignment)
+ H.equip_if_possible(C, H.slot_wear_id)
+ H.equip_if_possible(new /obj/item/weapon/pen(H), H.slot_r_store)
+ H.equip_if_possible(new /obj/item/device/pda(H), H.slot_belt)
+ if(istype(H.belt, /obj/item/device/pda))//I bet this could just use locate
+ var/obj/item/device/pda/pda = H.belt
+ pda.owner = H.real_name
+ pda.ownjob = H.wear_id.assignment
+ pda.name = "PDA-[H.real_name] ([pda.ownjob])"
+
+ if(rank == "Clown")
+ spawn(1)
+ clname(H)
+ return 1
\ No newline at end of file
diff --git a/code/game/jobs/jobprocs.dm b/code/game/jobs/jobprocs.dm
index 6cd37230d4..38ad667f7d 100644
--- a/code/game/jobs/jobprocs.dm
+++ b/code/game/jobs/jobprocs.dm
@@ -1,4 +1,7 @@
+/*
/proc/SetupJobs(jobsfile) //ran during round setup, reads info from jobs.txt -- Urist
+ return 1
+
var/text = file2text(jobsfile)
if(!text)
@@ -36,698 +39,9 @@
world << "\red \b Jobs set up!"
return
-
-
-/proc/FindOccupationCandidates(list/unassigned, job, level)
- var/list/candidates = list()
- if((job == "AI") && (config) && (!config.allow_ai)) return candidates
- for(var/mob/new_player/player in unassigned)
- if(player.preferences.occupation[job] == level)
- if(jobban_isbanned(player, job))
- continue
- candidates += player
- return candidates
-
-
-/proc/ResetOccupations()
- for(var/mob/new_player/player in world)
- if((player) && (player.mind))
- player.mind.assigned_role = null
- player.mind.special_role = null
- return
-
-
-/proc/Assign_Role(var/mob/new_player/player, var/job)
- if((player) && (player.mind) && (job))
- player.mind.assigned_role = job
- return 1
- return 0
-
-
-/proc/FillHeadPosition(list/unassigned, list/jobs)
- for(var/level = 1 to 3)
- for(var/command_position in command_positions)
- var/list/candidates = FindOccupationCandidates(unassigned, command_position, level)
- if(!candidates.len) continue
- var/mob/new_player/candidate = pick(candidates)
- if(Assign_Role(candidate, command_position))
- unassigned -= candidate
- jobs[command_position]--
- return 1
- return 0
-
-
-/proc/FillAIPosition(list/unassigned, list/jobs)
- var/ai_selected = 0
- for(var/level = 1 to 3)
- var/list/candidates = FindOccupationCandidates(unassigned, "AI", level)
- if(ticker.mode.name == "AI malfunction")//Make sure they want to malf if its malf
- for(var/mob/new_player/player in candidates)
- if(!player.preferences.be_special & BE_MALF)
- candidates -= player
- if(candidates.len)
- var/mob/new_player/candidate = pick(candidates)
- if(Assign_Role(candidate, "AI"))
- unassigned -= candidate
- jobs["AI"]--
- ai_selected++
- break
- //Malf NEEDS an AI so force one if we didn't get a player who wanted it
- if((ticker.mode.name == "AI malfunction")&&(!ai_selected))
- unassigned = shuffle(unassigned)
- for(var/mob/new_player/player in unassigned)
- if(jobban_isbanned(player, "AI"))
- continue
- if(Assign_Role(player, "AI"))
- unassigned -= player
- jobs["AI"]--
- ai_selected++
- break
- if(ai_selected) return 1
- return 0
-
-
-/** Proc DivideOccupations
- * fills var "assigned_role" for all ready players.
- * This proc must not have any side effect besides of modifying "assigned_role".
- **/
-/proc/DivideOccupations()
- //Setup new player list and get the jobs list
- var/list/unassigned = list()
- var/list/occupations_available = occupations.Copy()
-
- //Get the players who are ready
- for(var/mob/new_player/player in world)
- if((player) && (player.client) && (player.ready) && (player.mind) && (!player.mind.assigned_role))
- unassigned += player
-
- if(unassigned.len == 0) return 0
- //Shuffle players and jobs
- unassigned = shuffle(unassigned)
-// occupations_available = shuffle(occupations_available)
-
- //Select one head
- FillHeadPosition(unassigned, occupations_available)
-
- //Check for an AI
- FillAIPosition(unassigned, occupations_available)
-
- //Assistants are checked first
- for(var/mob/new_player/player in unassigned)
- if(player.preferences.occupation["Assistant"] == 0) continue
- unassigned -= player
- Assign_Role(player, "Assistant")
-
- //Other jobs are now checked
- for(var/level = 1 to 3)
- for(var/occupation in occupations_available)
- if(!unassigned.len) break
- if(occupations_available[occupation] == 0) continue
- var/list/candidates = FindOccupationCandidates(unassigned, occupation, level)
- while(candidates.len && occupations_available[occupation])
- var/mob/new_player/candidate = pick(candidates)
- if(Assign_Role(candidate, occupation))
- unassigned -= candidate
- occupations_available[occupation]--
-
- for(var/mob/new_player/player in unassigned)
- Assign_Role(player, "Assistant")
- return 1
-
-
-/mob/living/carbon/human/proc/Equip_Rank(rank, joined_late)
- switch(rank)
- if ("Chaplain")
- var/obj/item/weapon/storage/bible/B = new /obj/item/weapon/storage/bible/booze(src)
- src.equip_if_possible(B, slot_l_hand)
- src.equip_if_possible(new /obj/item/device/pda/chaplain(src), slot_belt)
- src.equip_if_possible(new /obj/item/clothing/under/rank/chaplain(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes)
- //if(prob(15))
- // src.see_invisible = 15 -- Doesn't work as see_invisible is reset every world cycle. -- Skie
- //The two procs below allow the Chaplain to choose their religion. All it really does is change their bible.
- spawn(0)
- var/religion_name = "Christianity"
- var/new_religion = input(src, "You are the Chaplain. Would you like to change your religion? Default is Christianity, in SPACE.", "Name change", religion_name)
-
- if ((length(new_religion) == 0) || (new_religion == "Christianity"))
- new_religion = religion_name
-
- if (new_religion)
- if (length(new_religion) >= 26)
- new_religion = copytext(new_religion, 1, 26)
- new_religion = dd_replacetext(new_religion, ">", "'")
- switch(lowertext(new_religion))
- if("christianity")
- B.name = pick("The Holy Bible","The Dead Sea Scrolls")
- if("satanism")
- B.name = "The Unholy Bible"
- if("cthulu")
- B.name = "The Necronomicon"
- if("islam")
- B.name = "Quran"
- if("scientology")
- B.name = pick("The Biography of L. Ron Hubbard","Dianetics")
- if("chaos")
- B.name = "The Book of Lorgar"
- if("imperium")
- B.name = "Uplifting Primer"
- if("toolboxia")
- B.name = "Toolbox Manifesto"
- if("homosexuality")
- B.name = "Guys Gone Wild"
- if("lol", "wtf", "gay", "penis", "ass", "poo", "badmin", "shitmin", "deadmin", "cock", "cocks")
- B.name = pick("Woodys Got Wood: The Aftermath", "War of the Cocks", "Sweet Bro and Hella Jef: Expanded Edition")
- brainloss = 100 // starts off retarded as fuck
- if("science")
- B.name = pick("Principle of Relativity", "Quantum Enigma: Physics Encounters Consciousness", "Programming the Universe", "Quantum Physics and Theology", "String Theory for Dummies", "How To: Build Your Own Warp Drive", "The Mysteries of Bluespace", "Playing God: Collector's Edition")
- else
- B.name = "The Holy Book of [new_religion]"
-
- spawn(1)
- var/deity_name = "Space Jesus"
- var/new_deity = input(src, "Would you like to change your deity? Default is Space Jesus.", "Name change", deity_name)
-
- if ( (length(new_deity) == 0) || (new_deity == "Space Jesus") )
- new_deity = deity_name
-
- if(new_deity)
- if (length(new_deity) >= 26)
- new_deity = copytext(new_deity, 1, 26)
- new_deity = dd_replacetext(new_deity, ">", "'")
- B.deity_name = new_deity
-
- var/accepted = 0
- var/outoftime = 0
- spawn(200) // 20 seconds to choose
- outoftime = 1
- while(!accepted)
- if(!B) break // prevents possible runtime errors
-
- switch(input(src,"Which bible style would you like?") in list("Bible", "Koran", "Scrapbook", "Daederic Scroll", "Creeper", "White Bible", "Holy Light", "Athiest", "Tome", "The King in Yellow", "Ithaqua", "Scientology", "the bible melts", "Necronomicon"))
- if("Koran")
- B.icon_state = "koran"
- B.item_state = "koran"
- for(var/area/chapel/main/A in world)
- for(var/turf/T in A.contents)
- if(T.icon_state == "carpetsymbol")
- T.dir = 4
- if("Scrapbook")
- B.icon_state = "scrapbook"
- B.item_state = "scrapbook"
- if("Daederic Scroll")
- B.icon_state = "daederic_scroll"
- B.item_state = "daederic"
- if("Creeper")
- B.icon_state = "creeper"
- B.item_state = "syringe_kit"
- if("White Bible")
- B.icon_state = "white"
- B.item_state = "syringe_kit"
- if("Holy Light")
- B.icon_state = "holylight"
- B.item_state = "syringe_kit"
- if("Athiest")
- B.icon_state = "athiest"
- B.item_state = "syringe_kit"
- for(var/area/chapel/main/A in world)
- for(var/turf/T in A.contents)
- if(T.icon_state == "carpetsymbol")
- T.dir = 10
- if("Tome")
- B.icon_state = "tome"
- B.item_state = "syringe_kit"
- if("The King in Yellow")
- B.icon_state = "kingyellow"
- B.item_state = "kingyellow"
- if("Ithaqua")
- B.icon_state = "ithaqua"
- B.item_state = "ithaqua"
- if("Scientology")
- B.icon_state = "scientology"
- B.item_state = "scientology"
- for(var/area/chapel/main/A in world)
- for(var/turf/T in A.contents)
- if(T.icon_state == "carpetsymbol")
- T.dir = 8
- if("the bible melts")
- B.icon_state = "melted"
- B.item_state = "melted"
- if("Necronomicon")
- B.icon_state = "necronomicon"
- B.item_state = "necronomicon"
- else
- // if christian bible, revert to default
- B.icon_state = "bible"
- B.item_state = "bible"
- for(var/area/chapel/main/A in world)
- for(var/turf/T in A.contents)
- if(T.icon_state == "carpetsymbol")
- T.dir = 2
-
- src:update_clothing() // so that it updates the bible's item_state in his hand
-
- switch(input(src,"Look at your bible - is this what you want?") in list("Yes","No"))
- if("Yes")
- accepted = 1
- if("No")
- if(outoftime)
- src << "Welp, out of time, buddy. You're stuck. Next time choose faster."
- accepted = 1
-
- if(ticker)
- ticker.Bible_icon_state = B.icon_state
- ticker.Bible_item_state = B.item_state
- ticker.Bible_name = B.name
-
-
- if ("Geneticist")
- src.equip_if_possible(new /obj/item/device/radio/headset/headset_medsci (src), slot_ears) // -- TLE
- src.equip_if_possible(new /obj/item/clothing/under/rank/geneticist(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/device/pda/medical(src), slot_belt)
- src.equip_if_possible(new /obj/item/weapon/storage/backpack/medic (src), slot_back)
- src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack)
- src.equip_if_possible(new /obj/item/clothing/shoes/white(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/suit/labcoat/genetics(src), slot_wear_suit)
- src.equip_if_possible(new /obj/item/device/flashlight/pen(src), slot_s_store)
-
- if ("Chemist")
- src.equip_if_possible(new /obj/item/device/radio/headset/headset_medsci (src), slot_ears) // -- TLE
- src.equip_if_possible(new /obj/item/clothing/under/rank/chemist(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/device/pda/toxins(src), slot_belt)
- src.equip_if_possible(new /obj/item/clothing/shoes/white(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/suit/labcoat/chemist(src), slot_wear_suit)
-
- if ("Janitor")
- src.equip_if_possible(new /obj/item/clothing/under/rank/janitor(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/device/pda/janitor(src), slot_belt)
- src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes)
-
- if ("Clown")
- src.equip_if_possible(new /obj/item/weapon/storage/backpack/clown (src), slot_back)
- src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack)
- src.equip_if_possible(new /obj/item/clothing/under/rank/clown(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/device/pda/clown(src), slot_belt)
- src.equip_if_possible(new /obj/item/clothing/shoes/clown_shoes(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/mask/gas/clown_hat(src), slot_wear_mask)
- src.equip_if_possible(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(src), slot_in_backpack)
- src.equip_if_possible(new /obj/item/weapon/bikehorn(src), slot_in_backpack)
- src.equip_if_possible(new /obj/item/weapon/stamp/clown(src), slot_in_backpack)
- src.equip_if_possible(new /obj/item/toy/crayon/rainbow(src), slot_in_backpack)
- src.equip_if_possible(new /obj/item/toy/crayonbox(src), slot_in_backpack)
- src.mutations |= CLOWN
-
- if ("Mime")
- src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back)
- src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack)
- src.equip_if_possible(new /obj/item/clothing/under/mime(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/device/pda/mime(src), slot_belt)
- src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/gloves/white(src), slot_gloves)
- src.equip_if_possible(new /obj/item/clothing/mask/gas/mime(src), slot_wear_mask)
- src.equip_if_possible(new /obj/item/clothing/head/beret(src), slot_head)
- src.equip_if_possible(new /obj/item/clothing/suit/suspenders(src), slot_wear_suit)
- src.equip_if_possible(new /obj/item/toy/crayon/mime(src), slot_in_backpack)
- src.equip_if_possible(new /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing(src), slot_in_backpack)
- src.verbs += /client/proc/mimespeak
- src.verbs += /client/proc/mimewall
- src.mind.special_verbs += /client/proc/mimespeak
- src.mind.special_verbs += /client/proc/mimewall
- src.miming = 1
-
- if ("Station Engineer")
- src.equip_if_possible(new /obj/item/weapon/storage/backpack/industrial (src), slot_back)
- src.equip_if_possible(new /obj/item/weapon/storage/box/engineer(src.back), slot_in_backpack)
- src.equip_if_possible(new /obj/item/device/radio/headset/headset_eng (src), slot_ears) // -- TLE
- src.equip_if_possible(new /obj/item/clothing/under/rank/engineer(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/device/pda/engineering(src), slot_belt)
- src.equip_if_possible(new /obj/item/clothing/shoes/orange(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/head/helmet/hardhat(src), slot_head)
- src.equip_if_possible(new /obj/item/weapon/storage/belt/utility/full(src), slot_l_hand)
- src.equip_if_possible(new /obj/item/device/t_scanner(src), slot_r_store)
-
- if ("Shaft Miner")
- src.equip_if_possible(new /obj/item/weapon/storage/backpack/industrial (src), slot_back)
- src.equip_if_possible(new /obj/item/weapon/storage/box/engineer(src.back), slot_in_backpack)
- src.equip_if_possible(new /obj/item/device/radio/headset/headset_mine (src), slot_ears)
- src.equip_if_possible(new /obj/item/clothing/under/rank/miner(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves)
- src.equip_if_possible(new /obj/item/weapon/crowbar(src), slot_in_backpack)
- src.equip_if_possible(new /obj/item/weapon/satchel(src), slot_in_backpack)
-
- if ("Assistant")
- src.equip_if_possible(new /obj/item/clothing/under/color/grey(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes)
-
- if ("Detective")
- src.equip_if_possible(new /obj/item/device/radio/headset/headset_sec (src), slot_ears) // -- TLE
- src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back)
- src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack)
- src.equip_if_possible(new /obj/item/clothing/under/det(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/device/pda/detective(src), slot_belt)
- src.equip_if_possible(new /obj/item/clothing/shoes/brown(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/head/det_hat(src), slot_head)
- var/obj/item/clothing/mask/cigarette/CIG = new /obj/item/clothing/mask/cigarette(src)
- CIG.light("")
- src.equip_if_possible(CIG, slot_wear_mask) // sorry, no more cigar
- src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves)
- src.equip_if_possible(new /obj/item/weapon/storage/fcard_kit(src.back), slot_in_backpack)
- src.equip_if_possible(new /obj/item/weapon/fcardholder(src), slot_in_backpack)
- src.equip_if_possible(new /obj/item/clothing/suit/det_suit(src), slot_wear_suit)
- src.equip_if_possible(new /obj/item/device/detective_scanner(src), slot_in_backpack)
- src.equip_if_possible(new /obj/item/weapon/zippo(src), slot_l_store)
- src.equip_if_possible(new /obj/item/weapon/reagent_containers/food/snacks/candy_corn(src), slot_h_store)
- var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(src)
- L.imp_in = src
- L.implanted = 1
-
- if ("Medical Doctor")
- src.equip_if_possible(new /obj/item/device/radio/headset/headset_med (src), slot_ears) // -- TLE
- src.equip_if_possible(new /obj/item/weapon/storage/backpack/medic (src), slot_back)
- src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack)
- src.equip_if_possible(new /obj/item/clothing/under/rank/medical(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/clothing/shoes/white(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/suit/labcoat(src), slot_wear_suit)
- src.equip_if_possible(new /obj/item/device/pda/medical(src), slot_belt)
- src.equip_if_possible(new /obj/item/weapon/storage/firstaid/regular(src), slot_l_hand)
- src.equip_if_possible(new /obj/item/device/flashlight/pen(src), slot_s_store)
-
- if ("Captain")
- src.equip_if_possible(new /obj/item/device/radio/headset/heads/captain (src), slot_ears)
- src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back)
- src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack)
- src.equip_if_possible(new /obj/item/clothing/under/rank/captain(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/device/pda/captain(src), slot_belt)
- src.equip_if_possible(new /obj/item/clothing/suit/armor/captain(src), slot_wear_suit)
- src.equip_if_possible(new /obj/item/clothing/shoes/brown(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/head/caphat(src), slot_head)
- src.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(src), slot_glasses)
- src.equip_if_possible(new /obj/item/weapon/storage/id_kit(src), slot_in_backpack)
- var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(src)
- L.imp_in = src
- L.implanted = 1
-
- if ("Security Officer")
- src.equip_if_possible(new /obj/item/device/radio/headset/headset_sec (src), slot_ears) // -- TLE
- src.equip_if_possible(new /obj/item/weapon/storage/backpack/security (src), slot_back)
- src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack)
- src.equip_if_possible(new /obj/item/clothing/under/rank/security(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/device/pda/security(src), slot_belt)
- src.equip_if_possible(new /obj/item/clothing/suit/armor/vest(src), slot_wear_suit)
- src.equip_if_possible(new /obj/item/clothing/head/helmet(src), slot_head)
- src.equip_if_possible(new /obj/item/clothing/shoes/jackboots(src), slot_shoes)
- src.equip_if_possible(new /obj/item/weapon/handcuffs(src), slot_in_backpack)
- src.equip_if_possible(new /obj/item/weapon/handcuffs(src), slot_s_store)
- var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(src)
- L.imp_in = src
- L.implanted = 1
-
- if ("Warden")
- src.equip_if_possible(new /obj/item/device/radio/headset/headset_sec (src), slot_ears) // -- TLE
- src.equip_if_possible(new /obj/item/weapon/storage/backpack/security (src), slot_back)
- src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack)
- src.equip_if_possible(new /obj/item/clothing/under/rank/warden(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/device/pda/security(src), slot_belt)
- src.equip_if_possible(new /obj/item/clothing/suit/armor/vest(src), slot_wear_suit)
- src.equip_if_possible(new /obj/item/clothing/head/helmet/warden(src), slot_head)
- src.equip_if_possible(new /obj/item/clothing/shoes/jackboots(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves)
- src.equip_if_possible(new /obj/item/clothing/glasses/sunglasses/sechud(src), slot_glasses)
- src.equip_if_possible(new /obj/item/clothing/mask/gas/emergency(src), slot_wear_mask)
- src.equip_if_possible(new /obj/item/weapon/gun/energy/taser(src), slot_s_store)
- src.equip_if_possible(new /obj/item/weapon/handcuffs(src), slot_in_backpack)
- src.equip_if_possible(new /obj/item/device/flash(src), slot_l_store)
- var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(src)
- L.imp_in = src
- L.implanted = 1
-
- if ("Scientist")
- src.equip_if_possible(new /obj/item/device/radio/headset/headset_sci (src), slot_ears)
- src.equip_if_possible(new /obj/item/clothing/under/rank/scientist(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/device/pda/toxins(src), slot_belt)
- src.equip_if_possible(new /obj/item/clothing/suit/labcoat/science(src), slot_wear_suit)
- src.equip_if_possible(new /obj/item/clothing/shoes/white(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/mask/gas(src), slot_wear_mask)
- src.equip_if_possible(new /obj/item/weapon/tank/oxygen(src), slot_l_hand)
-
- if ("Head of Security") //ready to come in game and kick ass - Microwave
- src.equip_if_possible(new /obj/item/device/radio/headset/heads/hos (src), slot_ears)
- src.equip_if_possible(new /obj/item/clothing/under/rank/head_of_security(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/device/pda/heads/hos(src), slot_belt)
- src.equip_if_possible(new /obj/item/clothing/suit/armor/hos(src), slot_wear_suit)
- src.equip_if_possible(new /obj/item/clothing/shoes/jackboots(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves)
- src.equip_if_possible(new /obj/item/clothing/head/helmet/HoS(src), slot_head)
- src.equip_if_possible(new /obj/item/clothing/mask/gas/emergency(src), slot_wear_mask)
- src.equip_if_possible(new /obj/item/weapon/storage/backpack/security (src), slot_back)
- src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack)
- src.equip_if_possible(new /obj/item/clothing/glasses/sunglasses/sechud(src), slot_glasses)
- src.equip_if_possible(new /obj/item/weapon/handcuffs(src), slot_in_backpack)
- src.equip_if_possible(new /obj/item/weapon/gun/energy(src), slot_s_store)
- src.equip_if_possible(new /obj/item/device/flash(src), slot_l_store)
- var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(src)
- L.imp_in = src
- L.implanted = 1
-
- if ("Head of Personnel")
- src.equip_if_possible(new /obj/item/device/radio/headset/heads/hop (src), slot_ears) // -- TLE
- src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back)
- src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack)
- src.equip_if_possible(new /obj/item/clothing/under/rank/head_of_personnel(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/device/pda/heads/hop(src), slot_belt)
- src.equip_if_possible(new /obj/item/clothing/suit/armor/vest(src), slot_wear_suit)
- src.equip_if_possible(new /obj/item/clothing/shoes/brown(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/head/helmet(src), slot_head)
- src.equip_if_possible(new /obj/item/weapon/storage/id_kit(src), slot_in_backpack)
-
- if ("Atmospheric Technician")
- src.equip_if_possible(new /obj/item/device/radio/headset/headset_eng (src), slot_ears) // -- TLE
- src.equip_if_possible(new /obj/item/clothing/under/rank/atmospheric_technician(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes)
- src.equip_if_possible(new /obj/item/weapon/storage/toolbox/mechanical(src), slot_l_hand)
-
- if ("Bartender")
- src.equip_if_possible(new /obj/item/clothing/under/rank/bartender(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/suit/armor/vest(src), slot_wear_suit)
- src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back)
- src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack)
- src.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(src), slot_in_backpack)
- src.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(src), slot_in_backpack)
- src.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(src), slot_in_backpack)
- src.equip_if_possible(new /obj/item/ammo_casing/shotgun/beanbag(src), slot_in_backpack)
-
- if ("Chef")
- src.equip_if_possible(new /obj/item/clothing/under/rank/chef(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/clothing/suit/chef(src), slot_wear_suit)
- src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/head/chefhat(src), slot_head)
-
- if ("Roboticist")
- src.equip_if_possible(new /obj/item/device/radio/headset/headset_rob (src), slot_ears) // -- DH
- src.equip_if_possible(new /obj/item/clothing/under/rank/roboticist(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/device/pda/engineering(src), slot_belt)
- src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes)
- src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back)
- src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack)
- src.equip_if_possible(new /obj/item/clothing/suit/labcoat(src), slot_wear_suit)
- src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves)
- src.equip_if_possible(new /obj/item/weapon/storage/toolbox/mechanical(src), slot_l_hand)
-
- if ("Botanist") //slot_s_store will free the hands of the working class
- src.equip_if_possible(new /obj/item/clothing/under/rank/hydroponics(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/gloves/botanic_leather(src), slot_gloves)
- src.equip_if_possible(new /obj/item/clothing/suit/apron(src), slot_wear_suit)
- src.equip_if_possible(new /obj/item/device/analyzer/plant_analyzer(src), slot_s_store)
-
- if ("Librarian")
- src.equip_if_possible(new /obj/item/clothing/under/suit_jacket/red(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes)
- src.equip_if_possible(new /obj/item/weapon/barcodescanner(src), slot_l_hand)
-
- if ("Lawyer")
- if(!lawyer)
- lawyer = 1
- src.equip_if_possible(new /obj/item/clothing/under/lawyer/bluesuit(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/clothing/suit/lawyer/bluejacket(src), slot_wear_suit)
- src.equip_if_possible(new /obj/item/device/pda/lawyer(src), slot_belt)
- else
- src.equip_if_possible(new /obj/item/clothing/under/lawyer/purpsuit(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/clothing/suit/lawyer/purpjacket(src), slot_wear_suit)
- src.equip_if_possible(new /obj/item/device/pda/lawyer(src), slot_belt)
- src.equip_if_possible(new /obj/item/clothing/shoes/brown(src), slot_shoes)
- src.equip_if_possible(new /obj/item/weapon/storage/backpack(src), slot_back)
- src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack)
- src.equip_if_possible(new /obj/item/device/detective_scanner(src), slot_in_backpack)//Why do they even get this?
- src.equip_if_possible(new /obj/item/weapon/storage/briefcase(src), slot_l_hand)
-
- if ("Quartermaster")
- src.equip_if_possible(new /obj/item/device/radio/headset/heads/qm (src), slot_ears)
- src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves)
- src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/under/rank/cargo(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/device/pda/quartermaster(src), slot_belt)
- src.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(src), slot_glasses)
- src.equip_if_possible(new /obj/item/weapon/clipboard(src), slot_l_hand)
-
- if ("Cargo Technician")
- src.equip_if_possible(new /obj/item/device/radio/headset/headset_cargo(src), slot_ears)
- src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves)
- src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/under/rank/cargo(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/device/pda/quartermaster(src), slot_belt)
-
- if ("Chief Engineer")
- src.equip_if_possible(new /obj/item/weapon/storage/backpack/industrial (src), slot_back)
- src.equip_if_possible(new /obj/item/weapon/storage/box/engineer(src.back), slot_in_backpack)
- src.equip_if_possible(new /obj/item/device/radio/headset/heads/ce (src), slot_ears)
- src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves)
- src.equip_if_possible(new /obj/item/clothing/shoes/brown(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/head/helmet/hardhat/white(src), slot_head)
- src.equip_if_possible(new /obj/item/weapon/storage/belt/utility/full(src), slot_l_hand)
- var/obj/item/clothing/mask/cigarette/CIG = new /obj/item/clothing/mask/cigarette(src)
- CIG.light("")
- src.equip_if_possible(CIG, slot_wear_mask)
- src.equip_if_possible(new /obj/item/clothing/under/rank/chief_engineer(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/device/pda/heads/ce(src), slot_belt)
-
- if ("Research Director")
- src.equip_if_possible(new /obj/item/device/radio/headset/heads/rd (src), slot_ears)
- src.equip_if_possible(new /obj/item/clothing/shoes/brown(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/under/rank/research_director(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/device/pda/heads/rd(src), slot_belt)
- src.equip_if_possible(new /obj/item/clothing/suit/labcoat(src), slot_wear_suit)
- //src.equip_if_possible(new /obj/item/weapon/pen(src), slot_l_hand)
- src.equip_if_possible(new /obj/item/weapon/clipboard(src), slot_r_hand)
- src.equip_if_possible(new /obj/item/device/flashlight/pen(src), slot_s_store)
-
- if ("Chief Medical Officer")
- src.equip_if_possible(new /obj/item/device/radio/headset/heads/cmo (src), slot_ears)
- src.equip_if_possible(new /obj/item/weapon/storage/backpack/medic (src), slot_back)
- src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack)
- src.equip_if_possible(new /obj/item/clothing/shoes/brown(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/under/rank/chief_medical_officer(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/device/pda/heads/cmo(src), slot_belt)
- src.equip_if_possible(new /obj/item/clothing/suit/labcoat/cmo(src), slot_wear_suit)
- src.equip_if_possible(new /obj/item/weapon/storage/firstaid/regular(src), slot_l_hand)
- src.equip_if_possible(new /obj/item/device/flashlight/pen(src), slot_s_store)
-
- if ("Virologist")
- src.equip_if_possible(new /obj/item/device/radio/headset/headset_medsci (src), slot_ears) // -- TLE
- src.equip_if_possible(new /obj/item/weapon/storage/backpack/medic (src), slot_back)
- src.equip_if_possible(new /obj/item/weapon/storage/box/survival(src.back), slot_in_backpack)
- src.equip_if_possible(new /obj/item/clothing/under/rank/medical(src), slot_w_uniform)
- src.equip_if_possible(new /obj/item/device/pda/medical(src), slot_belt)
- src.equip_if_possible(new /obj/item/clothing/mask/surgical(src), slot_wear_mask)
- src.equip_if_possible(new /obj/item/clothing/shoes/white(src), slot_shoes)
- src.equip_if_possible(new /obj/item/clothing/suit/labcoat/virologist(src), slot_wear_suit)
- src.equip_if_possible(new /obj/item/device/flashlight/pen(src), slot_s_store)
-
- if ("Cyborg")
-// Robotize()
-
- else
- src << "RUH ROH! Your job is [rank] and the game just can't handle it! Please report this bug to an administrator."
-
- spawnId(rank)
- if(rank == "Captain")
- world << "[src] is the captain!"
- src << "You are the [rank]."
- src.job = rank
- if(src.mind)
- src.mind.assigned_role = rank
-
- if (!joined_late && rank != "Tourist")
- var/obj/S = null
- for(var/obj/effect/landmark/start/sloc in world)
- if (sloc.name != rank)
- continue
- if (locate(/mob) in sloc.loc)
- continue
- S = sloc
- break
- if (!S)
- S = locate("start*[rank]") // use old stype
- if (istype(S, /obj/effect/landmark/start) && istype(S.loc, /turf))
- src.loc = S.loc
-// if(S.name == "Cyborg")
-// src.Robotize()
- /*else
- var/list/L = list()
- for(var/area/arrival/start/S in world)
- L += S
- if(L.len < 1) // Added this check to stop the empty list bug -- TLE
- return // **
- var/A = pick(L)
- var/list/NL = list()
- for(var/turf/T in A)
- if(!T.density)
- var/clear = 1
- for(var/obj/O in T)
- if(O.density)
- clear = 0
- break
- if(clear)
- NL += T
- src.loc = pick(NL)
- */
- if(src.mind)
- if(src.mind.assigned_role == "Cyborg")
- src << "YOU ARE GETTING BORGED NOW"
- src.Robotize()
- return
- src.equip_if_possible(new /obj/item/device/radio/headset(src), slot_ears)
- var/obj/item/weapon/storage/backpack/BPK = new/obj/item/weapon/storage/backpack(src)
- new /obj/item/weapon/storage/box/survival(BPK)
- src.equip_if_possible(BPK, slot_back,1)
- /*
- spawn(10)
- var/obj/item/weapon/camera_test/CT = new/obj/item/weapon/camera_test(src.loc)
- CT.afterattack(src, src, 10)
- var/obj/item/weapon/photo/PH
- PH = locate(/obj/item/weapon/photo,src.loc)
- if(PH)
- PH.layer = 3
- src.equip_if_possible(PH, slot_in_backpack)
- del(CT)*/ //--For another day - errorage
- return
-
-
-/mob/living/carbon/human/proc/spawnId(rank)
- var/obj/item/weapon/card/id/C = null
- switch(rank)
- if("Cyborg")
- return
- if("Captain")
- C = new /obj/item/weapon/card/id/gold(src)
- else
- C = new /obj/item/weapon/card/id(src)
- if(C)
- C.registered = src.real_name
- C.assignment = rank
- C.name = "[C.registered]'s ID Card ([C.assignment])"
- C.access = get_access(C.assignment)
- src.equip_if_possible(C, slot_wear_id)
- src.equip_if_possible(new /obj/item/weapon/pen(src), slot_r_store)
- //src.equip_if_possible(new /obj/item/device/radio/signaler(src), slot_belt)
- src.equip_if_possible(new /obj/item/device/pda(src), slot_belt)
- if (istype(src.belt, /obj/item/device/pda))
- var/obj/item/device/pda/pda = src.belt
- pda.owner = src.real_name
- pda.ownjob = src.wear_id.assignment
- pda.name = "PDA-[src.real_name] ([pda.ownjob])"
-/*
- if (istype(src.r_store, /obj/item/device/pda)) //damned mime PDAs not starting in belt slot
- var/obj/item/device/pda/pda = src.r_store
- pda.owner = src.real_name
- pda.ownjob = src.wear_id.assignment
- pda.name = "PDA-[src.real_name] ([pda.ownjob])"
*/
- if (rank == "Clown")
- spawn clname(src)
+//TODO: put these somewhere else
/client/proc/mimewall()
set category = "Mime"
set name = "Invisible wall"
diff --git a/code/game/jobs/jobs.dm b/code/game/jobs/jobs.dm
index fac6eeac19..b60b6357cd 100644
--- a/code/game/jobs/jobs.dm
+++ b/code/game/jobs/jobs.dm
@@ -1,58 +1,48 @@
-var/list/occupations = list(
- "Assistant" = -1,
- "Captain" = 1,
+var/const
+ ENGSEC =(1<<0)
- //civilian
- "Head of Personnel" = 1,
-
- "Bartender" = 1,
- "Botanist" = 2,
- "Chef" = 1,
- "Janitor" = 1,
- "Librarian" = 1,
- "Quartermaster" = 1,
- "Cargo Technician" = 3,
- "Shaft Miner" = 3,
- "Lawyer" = 2,
- "Chaplain" = 1,
- "Clown" = 1,
- "Mime" = 1,
+ CAPTAIN =(1<<0)
+ HOS =(1<<1)
+ WARDEN =(1<<2)
+ DETECTIVE =(1<<3)
+ OFFICER =(1<<4)
+ CHIEF =(1<<5)
+ ENGINEER =(1<<6)
+ ATMOSTECH =(1<<7)
+ ROBOTICIST =(1<<8)
+ AI =(1<<9)
+ CYBORG =(1<<10)
- //engineering
- "Chief Engineer" = 1,
+ MEDSCI =(1<<1)
- "Station Engineer" = 5,
- "Atmospheric Technician"= 4,
- "Roboticist" = 1,
-
- //medical
- "Chief Medical Officer" = 1,
-
- "Medical Doctor" = 5,
- "Geneticist" = 2,
- "Virologist" = 1,
+ RD =(1<<0)
+ SCIENTIST =(1<<1)
+ CHEMIST =(1<<2)
+ CMO =(1<<3)
+ DOCTOR =(1<<4)
+ GENETICIST =(1<<5)
+ VIROLOGIST =(1<<6)
- //science
- "Research Director" = 1,
+ CIVILIAN =(1<<2)
- "Scientist" = 3,
- "Chemist" = 2,
+ HOP =(1<<0)
+ BARTENDER =(1<<1)
+ BOTANIST =(1<<2)
+ CHEF =(1<<3)
+ JANITOR =(1<<4)
+ LIBRARIAN =(1<<5)
+ QUARTERMASTER =(1<<6)
+ CARGOTECH =(1<<7)
+ MINER =(1<<8)
+ LAWYER =(1<<9)
+ CHAPLAIN =(1<<10)
+ CLOWN =(1<<11)
+ MIME =(1<<12)
+ ASSISTANT =(1<<13)
-
- //security
- "Head of Security" = 1,
-
- "Warden" = 1,
- "Detective" = 1,
- "Security Officer" = 5,
-
-
- //silicon
- "AI" = 1,
- "Cyborg" = 1
-)
+var/list/occupations = list()
var/list/assistant_occupations = list(
diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm
index d43f381fa7..f73e2be7fb 100644
--- a/code/game/machinery/ai_slipper.dm
+++ b/code/game/machinery/ai_slipper.dm
@@ -96,7 +96,7 @@
if(cooldown_on || disabled)
return
else
- new /obj/effect/foam(src.loc)
+ new /obj/effect/effect/foam(src.loc)
src.uses--
cooldown_on = 1
cooldown_time = world.timeofday + 100
diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index 288950e1be..d1f4c52b1e 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -315,7 +315,7 @@ var/global/list/autolathe_recipes_hidden = list( \
return 0
if(!prob(prb))
return 0
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
if (electrocute_mob(user, get_area(src), src, 0.7))
diff --git a/code/game/machinery/bots/cleanbot.dm b/code/game/machinery/bots/cleanbot.dm
index 96937e958a..f6cbab2523 100644
--- a/code/game/machinery/bots/cleanbot.dm
+++ b/code/game/machinery/bots/cleanbot.dm
@@ -247,7 +247,7 @@ text("[src.oddbutton ? "Yes" : "No"
if (prob(50))
new /obj/item/robot_parts/l_arm(Tsec)
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
del(src)
diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm
index 78b273263f..0e4f95eabb 100644
--- a/code/game/machinery/bots/ed209bot.dm
+++ b/code/game/machinery/bots/ed209bot.dm
@@ -696,7 +696,7 @@ Auto Patrol: []"},
if (prob(50))
new /obj/item/robot_parts/l_arm(Tsec)
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
diff --git a/code/game/machinery/bots/floorbot.dm b/code/game/machinery/bots/floorbot.dm
index 3b7ceb766c..37d8c28d0c 100644
--- a/code/game/machinery/bots/floorbot.dm
+++ b/code/game/machinery/bots/floorbot.dm
@@ -355,7 +355,7 @@
if (amount)
new /obj/item/stack/tile/steel(Tsec) // only one tile, yes
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
del(src)
diff --git a/code/game/machinery/bots/medbot.dm b/code/game/machinery/bots/medbot.dm
index a16eb184b7..827a7548bf 100644
--- a/code/game/machinery/bots/medbot.dm
+++ b/code/game/machinery/bots/medbot.dm
@@ -474,7 +474,7 @@
if (prob(50))
new /obj/item/robot_parts/l_arm(Tsec)
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
del(src)
diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm
index e451dabdf8..d04d4575e7 100644
--- a/code/game/machinery/bots/mulebot.dm
+++ b/code/game/machinery/bots/mulebot.dm
@@ -957,7 +957,7 @@
cell.update_icon()
cell = null
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm
index 1cbf5e4c7e..384a628737 100644
--- a/code/game/machinery/bots/secbot.dm
+++ b/code/game/machinery/bots/secbot.dm
@@ -677,7 +677,7 @@ Auto Patrol: []"},
if (prob(50))
new /obj/item/robot_parts/l_arm(Tsec)
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
diff --git a/code/game/machinery/camera.dm b/code/game/machinery/camera.dm
index b71e00d9bc..f373d91f7d 100644
--- a/code/game/machinery/camera.dm
+++ b/code/game/machinery/camera.dm
@@ -322,7 +322,7 @@
src.bugged = 1
else if(istype(W, /obj/item/weapon/melee/energy/blade))//Putting it here last since it's a special case. I wonder if there is a better way to do these than type casting.
deactivate(user,2)//Here so that you can disconnect anyone viewing the camera, regardless if it's on or off.
- var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
+ var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, loc)
spark_system.start()
playsound(loc, 'blade1.ogg', 50, 1)
diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm
index 5efb6eb72a..d1a78b3738 100644
--- a/code/game/machinery/computer/computer.dm
+++ b/code/game/machinery/computer/computer.dm
@@ -15,7 +15,7 @@ Pod/Blast Doors computer
for(var/x in verbs)
verbs -= x
set_broken()
- var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread()
+ var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread()
smoke.set_up(5, 0, src)
smoke.start()
return
@@ -244,7 +244,7 @@ Pod/Blast Doors computer
carddesc += ""
carddesc += "Assignment: "
- jobs = "[target_rank]"
+ jobs = "[target_rank]" //CHECK THIS
var/accesses = ""
if(istype(src,/obj/machinery/computer/card/centcom))
@@ -271,7 +271,7 @@ Pod/Blast Doors computer
accesses += "
"
accesses += ""
accesses += ""
- body = "[carddesc]
[jobs]
[accesses]"
+ body = "[carddesc]
[jobs]
[accesses]" //CHECK THIS
else
body = "{Log in}
"
body += "Access Crew Manifest"
diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm
index e171a17399..f05d34a3fd 100644
--- a/code/game/machinery/deployable.dm
+++ b/code/game/machinery/deployable.dm
@@ -179,7 +179,7 @@ for reference:
user << "Barrier lock toggled off."
return
else
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(2, 1, src)
s.start()
for(var/mob/O in viewers(src, null))
@@ -191,7 +191,7 @@ for reference:
src.emagged = 1
src.req_access = null
user << "You break the ID authentication lock on the [src]."
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(2, 1, src)
s.start()
for(var/mob/O in viewers(src, null))
@@ -200,7 +200,7 @@ for reference:
else if (src.emagged == 1)
src.emagged = 2
user << "You short out the anchoring mechanism on the [src]."
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(2, 1, src)
s.start()
for(var/mob/O in viewers(src, null))
@@ -270,7 +270,7 @@ for reference:
/* var/obj/item/stack/rods/ =*/
new /obj/item/stack/rods(Tsec)
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index d2144c54ba..9ac7e268a6 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -404,7 +404,7 @@ About the new airlock wires panel:
return 0
if(!prob(prb))
return 0 //you lucked out, no shock for you
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start() //sparks always.
if (electrocute_mob(user, get_area(src), src))
@@ -599,7 +599,7 @@ About the new airlock wires panel:
if(!istype(H.head, /obj/item/clothing/head/helmet))
for(var/mob/M in viewers(src, null))
M << "\red [user] headbutts the airlock."
- var/datum/organ/external/affecting = H.organs["head"]
+ var/datum/organ/external/affecting = H.get_organ("head")
affecting.take_damage(10, 0)
H.stunned = 8
H.weakened = 5
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 7160995489..fc73044345 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -139,7 +139,7 @@
src.operating = -1
if(istype(I, /obj/item/weapon/melee/energy/blade))
if(istype(src, /obj/machinery/door/airlock))
- var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
+ var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src.loc)
spark_system.start()
playsound(src.loc, 'blade1.ogg', 50, 1)
@@ -232,7 +232,7 @@
del(src)
if(3.0)
if(prob(80))
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(2, 1, src)
s.start()
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index 9b9a1cf8a8..d91c2b56bc 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -123,7 +123,7 @@
if (src.density && (istype(I, /obj/item/weapon/card/emag)||istype(I, /obj/item/weapon/melee/energy/blade)))
src.operating = -1
if(istype(I, /obj/item/weapon/melee/energy/blade))
- var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
+ var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src.loc)
spark_system.start()
playsound(src.loc, "sparks", 50, 1)
diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm
index 65d833806f..41be21bae5 100644
--- a/code/game/machinery/igniter.dm
+++ b/code/game/machinery/igniter.dm
@@ -88,7 +88,7 @@
flick("[base_state]-spark", src)
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(2, 1, src)
s.start()
src.last_spark = world.time
diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm
index 2a7cfda27e..525a0d6154 100644
--- a/code/game/machinery/kitchen/microwave.dm
+++ b/code/game/machinery/kitchen/microwave.dm
@@ -329,7 +329,7 @@
src.updateUsrDialog()
/obj/machinery/microwave/proc/broke()
- var/datum/effect/system/spark_spread/s = new
+ var/datum/effect/effect/system/spark_spread/s = new
s.set_up(2, 1, src)
s.start()
src.icon_state = "mwb" // Make it look all busted up and shit
diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm
index 26ea1e78ce..4e07cd66a5 100644
--- a/code/game/machinery/portable_turret.dm
+++ b/code/game/machinery/portable_turret.dm
@@ -46,12 +46,12 @@
var/emagged = 0 // 1: emagged, 0: not emagged
var/on = 1 // determines if the turret is on
- var/datum/effect/system/spark_spread/spark_system // the spark system, used for generating... sparks?
+ var/datum/effect/effect/system/spark_spread/spark_system // the spark system, used for generating... sparks?
New()
..()
// Sets up a spark system
- spark_system = new /datum/effect/system/spark_spread
+ spark_system = new /datum/effect/effect/system/spark_spread
spark_system.set_up(5, 0, src)
spark_system.attach(src)
Del()
diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm
index 613aa21abb..b7ff8c2d9f 100644
--- a/code/game/machinery/teleporter.dm
+++ b/code/game/machinery/teleporter.dm
@@ -132,7 +132,7 @@
else
do_teleport(M, com.locked, 0) //dead-on precision
else
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
for(var/mob/B in hearers(src, null))
@@ -219,7 +219,7 @@
M.loc = tmploc
sleep(2)
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, M)
s.start()
return
diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm
index f37548c985..60b8d6933c 100644
--- a/code/game/machinery/turrets.dm
+++ b/code/game/machinery/turrets.dm
@@ -57,7 +57,7 @@
var/wasvalid = 0
var/lastfired = 0
var/shot_delay = 30 //3 seconds between shots
- var/datum/effect/system/spark_spread/spark_system
+ var/datum/effect/effect/system/spark_spread/spark_system
use_power = 1
idle_power_usage = 50
active_power_usage = 300
@@ -68,7 +68,7 @@
/obj/machinery/turret/New()
- spark_system = new /datum/effect/system/spark_spread
+ spark_system = new /datum/effect/effect/system/spark_spread
spark_system.set_up(5, 0, src)
spark_system.attach(src)
// targets = new
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 1dd6ea9320..74dfd1b5ca 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -443,7 +443,7 @@
return 0
if(!prob(prb))
return 0
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
if (electrocute_mob(user, get_area(src), src, 0.7))
diff --git a/code/game/magic/cultist/runes.dm b/code/game/magic/cultist/runes.dm
index 18d51d8ab3..241b13ba0d 100644
--- a/code/game/magic/cultist/runes.dm
+++ b/code/game/magic/cultist/runes.dm
@@ -271,10 +271,7 @@ var/list/sacrificed = list()
corpse_to_raise.mind.key = ghost.key
corpse_to_raise.key = ghost.key
del(ghost)
- for(var/A in corpse_to_raise.organs)
- var/datum/organ/external/affecting = corpse_to_raise.organs[A]
- if(!istype(affecting))
- continue
+ for(var/datum/organ/external/affecting in corpse_to_raise.organs)
affecting.heal_damage(1000, 1000)
corpse_to_raise.toxloss = 0
corpse_to_raise.oxyloss = 0
diff --git a/code/game/master_controller.dm b/code/game/master_controller.dm
index c8d7c20b6b..414ccaf849 100644
--- a/code/game/master_controller.dm
+++ b/code/game/master_controller.dm
@@ -19,6 +19,11 @@ datum/controller/game_controller
air_master = new /datum/controller/air_system()
air_master.setup()
+ if(!job_master)
+ job_master = new /datum/controller/occupations()
+ if(job_master.SetupOccupations())
+ world << "\red \b Job setup complete"
+
if(!tension_master)
tension_master = new /datum/tension()
@@ -28,9 +33,8 @@ datum/controller/game_controller
setupgenetics()
- SetupJobs("config/jobs.txt")
+// SetupJobs("config/jobs.txt")
- //setupcorpses() Not used any more.
syndicate_code_phrase = generate_code_phrase()//Sets up code phrase for traitors, for the round.
syndicate_code_response = generate_code_phrase()
@@ -62,11 +66,6 @@ datum/controller/game_controller
for(var/obj/machinery/atmospherics/unary/vent_scrubber/T in world)
T.broadcast_status()
- /*world << "\red \b Initializing atmos machinery"
- sleep(-1)
-
- find_air_alarms()*/
-
world << "\red \b Initializations complete."
diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm
index 6fd1583feb..353e40c2b1 100644
--- a/code/game/mecha/combat/combat.dm
+++ b/code/game/mecha/combat/combat.dm
@@ -55,9 +55,8 @@
var/mob/living/carbon/human/H = target
// if (M.health <= 0) return
- var/dam_zone = pick("chest", "chest", "chest", "head", "groin")
- if (istype(H.organs[dam_zone], /datum/organ/external))
- var/datum/organ/external/temp = H.organs[dam_zone]
+ var/datum/organ/external/temp = H.get_organ(pick("chest", "chest", "chest", "head"))
+ if(temp)
switch(damtype)
if("brute")
H.paralysis += 1
diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm
index 1596bc76e3..47ff4e6a98 100644
--- a/code/game/mecha/combat/marauder.dm
+++ b/code/game/mecha/combat/marauder.dm
@@ -12,7 +12,7 @@
var/smoke = 5
var/smoke_ready = 1
var/smoke_cooldown = 100
- var/datum/effect/system/harmless_smoke_spread/smoke_system = new
+ var/datum/effect/effect/system/harmless_smoke_spread/smoke_system = new
operation_req_access = list(access_cent_specops)
wreckage = "/obj/effect/decal/mecha_wreckage/marauder"
add_req_access = 0
diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm
index b62a7a76f8..653fb8d244 100644
--- a/code/game/mecha/equipment/tools/tools.dm
+++ b/code/game/mecha/equipment/tools/tools.dm
@@ -134,7 +134,7 @@
var/list/the_targets = list(T,T1,T2)
spawn(0)
for(var/a=0, a<5, a++)
- var/obj/effect/water/W = new /obj/effect/water(get_turf(chassis))
+ var/obj/effect/effect/water/W = new /obj/effect/effect/water(get_turf(chassis))
if(!W)
return
var/turf/my_target = pick(the_targets)
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 92c01e9c2b..ad6eacc5b2 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -32,7 +32,7 @@
var/add_req_access = 1
var/dna //dna-locking the mech
var/list/proc_res = list() //stores proc owners, like proc_res["functionname"] = owner reference
- var/datum/effect/system/spark_spread/spark_system = new
+ var/datum/effect/effect/system/spark_spread/spark_system = new
var/lights = 0
var/lights_power = 6
diff --git a/code/game/objects/blood.dm b/code/game/objects/blood.dm
index c660cafc02..da37b28f3d 100644
--- a/code/game/objects/blood.dm
+++ b/code/game/objects/blood.dm
@@ -47,7 +47,7 @@
/*var/obj/effect/decal/cleanable/oil/o =*/
new /obj/effect/decal/cleanable/oil/streak(src.loc)
else if (prob(10))
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
if (step_to(src, get_step(src, direction), 0))
diff --git a/code/game/objects/closets.dm b/code/game/objects/closets.dm
index 250696eb4a..b4cbf555d1 100644
--- a/code/game/objects/closets.dm
+++ b/code/game/objects/closets.dm
@@ -3,8 +3,7 @@
/obj/structure/closet/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(air_group || (height==0 || wall_mounted)) return 1
-
- return opened
+ return (!density)
/obj/structure/closet/proc/can_open()
if (src.welded)
@@ -44,6 +43,7 @@
src.icon_state = src.icon_opened
src.opened = 1
playsound(src.loc, 'click.ogg', 15, 1, -3)
+ density = 0
return 1
/obj/structure/closet/proc/close()
@@ -74,6 +74,7 @@
src.icon_state = src.icon_closed
src.opened = 0
playsound(src.loc, 'click.ogg', 15, 1, -3)
+ density = 1
return 1
/obj/structure/closet/proc/toggle()
@@ -188,17 +189,19 @@
return
/obj/structure/closet
- var/lastbang
+ var/lastbang = 0
/obj/structure/closet/relaymove(mob/user as mob)
if (user.stat)
return
if (!src.open())
user << "\blue It won't budge!"
- if (world.time > lastbang+5)
- lastbang = world.time
+ if(!lastbang)
+ lastbang = 1
for (var/mob/M in hearers(src, null))
M << text("BANG, bang!", max(0, 5 - get_dist(src, M)))
+ spawn(30)
+ lastbang = 0
/obj/structure/closet/Move()
..()
diff --git a/code/game/objects/closets/secure/personal.dm b/code/game/objects/closets/secure/personal.dm
index 9cfe7784e8..9072b405d6 100644
--- a/code/game/objects/closets/secure/personal.dm
+++ b/code/game/objects/closets/secure/personal.dm
@@ -45,7 +45,7 @@
desc = "It appears to be broken."
icon_state = src.icon_broken
if(istype(W, /obj/item/weapon/melee/energy/blade))
- var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
+ var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src.loc)
spark_system.start()
playsound(src.loc, 'blade1.ogg', 50, 1)
diff --git a/code/game/objects/devices/chameleonproj.dm b/code/game/objects/devices/chameleonproj.dm
index 2efe2bf108..c08ffa32e7 100644
--- a/code/game/objects/devices/chameleonproj.dm
+++ b/code/game/objects/devices/chameleonproj.dm
@@ -93,7 +93,7 @@
proc/disrupt()
if(active_dummy)
- var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread
spark_system.set_up(5, 0, src)
spark_system.attach(src)
spark_system.start()
diff --git a/code/game/objects/devices/flash.dm b/code/game/objects/devices/flash.dm
index bd3fdcb2db..185f80a256 100644
--- a/code/game/objects/devices/flash.dm
+++ b/code/game/objects/devices/flash.dm
@@ -154,7 +154,7 @@
clown_check(var/mob/user)
- if((user.mutations & CLOWN) && prob(50))
+ if((user.mutations & CLUMSY) && prob(50))
user << "\red The Flash slips out of your hand."
user.drop_item()
return 0
diff --git a/code/game/objects/devices/flashlight.dm b/code/game/objects/devices/flashlight.dm
index e79b645ff9..d75b661f8c 100644
--- a/code/game/objects/devices/flashlight.dm
+++ b/code/game/objects/devices/flashlight.dm
@@ -28,7 +28,7 @@
attack(mob/M as mob, mob/user as mob)
src.add_fingerprint(user)
if(src.on && user.zone_sel.selecting == "eyes")
- if ((user.mutations & CLOWN || user.brainloss >= 60) && prob(50))//too dumb to use flashlight properly
+ if ((user.mutations & CLUMSY || user.brainloss >= 60) && prob(50))//too dumb to use flashlight properly
return ..()//just hit them in the head
if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")//don't have dexterity
diff --git a/code/game/objects/devices/scanners.dm b/code/game/objects/devices/scanners.dm
index 468d92f9e5..ec37ca8e23 100644
--- a/code/game/objects/devices/scanners.dm
+++ b/code/game/objects/devices/scanners.dm
@@ -180,7 +180,7 @@ MASS SPECTROMETER
origin_tech = "magnets=1;biotech=1"
/obj/item/device/healthanalyzer/attack(mob/M as mob, mob/user as mob)
- if ((user.mutations & CLOWN || user.brainloss >= 60) && prob(50))
+ if ((user.mutations & CLUMSY || user.brainloss >= 60) && prob(50))
user << text("\red You try to analyze the floor's vitals!")
for(var/mob/O in viewers(M, null))
O.show_message(text("\red [user] has analyzed the floor's vitals!"), 1)
diff --git a/code/game/objects/effect_system.dm b/code/game/objects/effect_system.dm
index 8dc006f256..9cc0356d0f 100644
--- a/code/game/objects/effect_system.dm
+++ b/code/game/objects/effect_system.dm
@@ -6,14 +6,14 @@ would spawn and follow the beaker, even if it is carried or thrown.
*/
-/obj/effect
+/obj/effect/effect
name = "effect"
icon = 'effects.dmi'
mouse_opacity = 0
unacidable = 1//So effect are not targeted by alien acid.
flags = TABLEPASS
-/obj/effect/water
+/obj/effect/effect/water
name = "water"
icon = 'effects.dmi'
icon_state = "extinguish"
@@ -21,7 +21,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
flags = 2.0
mouse_opacity = 0
-/obj/effect/smoke
+/obj/effect/effect/smoke
name = "smoke"
icon = 'water.dmi'
icon_state = "smoke"
@@ -31,7 +31,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
var/amount = 8.0
-/obj/effect/water/New()
+/obj/effect/effect/water/New()
..()
//var/turf/T = src.loc
//if (istype(T, /turf))
@@ -41,14 +41,14 @@ would spawn and follow the beaker, even if it is carried or thrown.
return
return
-/obj/effect/water/Del()
+/obj/effect/effect/water/Del()
//var/turf/T = src.loc
//if (istype(T, /turf))
// T.firelevel = 0 //TODO: FIX
..()
return
-/obj/effect/water/Move(turf/newloc)
+/obj/effect/effect/water/Move(turf/newloc)
//var/turf/T = src.loc
//if (istype(T, /turf))
// T.firelevel = 0 //TODO: FIX
@@ -59,7 +59,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
return 0
.=..()
-/obj/effect/water/Bump(atom/A)
+/obj/effect/effect/water/Bump(atom/A)
if(reagents)
reagents.reaction(A)
return ..()
@@ -79,35 +79,35 @@ OPTIONAL: steam.attach(mob)
steam.start() -- spawns the effect
*/
/////////////////////////////////////////////
-/obj/effect/steam
+/obj/effect/effect/steam
name = "steam"
icon = 'effects.dmi'
icon_state = "extinguish"
density = 0
-/datum/effect/system/steam_spread
+/datum/effect/effect/system/steam_spread
var/number = 3
var/cardinals = 0
var/turf/location
var/atom/holder
-/datum/effect/system/steam_spread/proc/set_up(n = 3, c = 0, turf/loc)
+/datum/effect/effect/system/steam_spread/proc/set_up(n = 3, c = 0, turf/loc)
if(n > 10)
n = 10
number = n
cardinals = c
location = loc
-/datum/effect/system/steam_spread/proc/attach(atom/atom)
+/datum/effect/effect/system/steam_spread/proc/attach(atom/atom)
holder = atom
-/datum/effect/system/steam_spread/proc/start()
+/datum/effect/effect/system/steam_spread/proc/start()
var/i = 0
for(i=0, i 10)
n = 10
number = n
@@ -180,10 +180,10 @@ steam.start() -- spawns the effect
else
location = get_turf(loca)
-/datum/effect/system/spark_spread/proc/attach(atom/atom)
+/datum/effect/effect/system/spark_spread/proc/attach(atom/atom)
holder = atom
-/datum/effect/system/spark_spread/proc/start()
+/datum/effect/effect/system/spark_spread/proc/start()
var/i = 0
for(i=0, i 20)
@@ -191,7 +191,7 @@ steam.start() -- spawns the effect
spawn(0)
if(holder)
src.location = get_turf(holder)
- var/obj/effect/sparks/sparks = new /obj/effect/sparks(src.location)
+ var/obj/effect/effect/sparks/sparks = new /obj/effect/effect/sparks(src.location)
src.total_sparks++
var/direction
if(src.cardinals)
@@ -219,7 +219,7 @@ steam.start() -- spawns the effect
/////////////////////////////////////////////
-/obj/effect/harmless_smoke
+/obj/effect/effect/harmless_smoke
name = "smoke"
icon_state = "smoke"
opacity = 1
@@ -231,17 +231,17 @@ steam.start() -- spawns the effect
pixel_x = -32
pixel_y = -32
-/obj/effect/harmless_smoke/New()
+/obj/effect/effect/harmless_smoke/New()
..()
spawn (100)
del(src)
return
-/obj/effect/harmless_smoke/Move()
+/obj/effect/effect/harmless_smoke/Move()
..()
return
-/datum/effect/system/harmless_smoke_spread
+/datum/effect/effect/system/harmless_smoke_spread
var/number = 3
var/cardinals = 0
var/turf/location
@@ -249,7 +249,7 @@ steam.start() -- spawns the effect
var/total_smoke = 0 // To stop it being spammed and lagging!
var/direction
-/datum/effect/system/harmless_smoke_spread/proc/set_up(n = 5, c = 0, loca, direct)
+/datum/effect/effect/system/harmless_smoke_spread/proc/set_up(n = 5, c = 0, loca, direct)
if(n > 10)
n = 10
number = n
@@ -262,10 +262,10 @@ steam.start() -- spawns the effect
direction = direct
-/datum/effect/system/harmless_smoke_spread/proc/attach(atom/atom)
+/datum/effect/effect/system/harmless_smoke_spread/proc/attach(atom/atom)
holder = atom
-/datum/effect/system/harmless_smoke_spread/proc/start()
+/datum/effect/effect/system/harmless_smoke_spread/proc/start()
var/i = 0
for(i=0, i 20)
@@ -273,7 +273,7 @@ steam.start() -- spawns the effect
spawn(0)
if(holder)
src.location = get_turf(holder)
- var/obj/effect/harmless_smoke/smoke = new /obj/effect/harmless_smoke(src.location)
+ var/obj/effect/effect/harmless_smoke/smoke = new /obj/effect/effect/harmless_smoke(src.location)
src.total_smoke++
var/direction = src.direction
if(!direction)
@@ -298,7 +298,7 @@ steam.start() -- spawns the effect
// Bad smoke
/////////////////////////////////////////////
-/obj/effect/bad_smoke
+/obj/effect/effect/bad_smoke
name = "smoke"
icon_state = "smoke"
opacity = 1
@@ -310,13 +310,13 @@ steam.start() -- spawns the effect
pixel_x = -32
pixel_y = -32
-/obj/effect/bad_smoke/New()
+/obj/effect/effect/bad_smoke/New()
..()
spawn (200+rand(10,30))
del(src)
return
-/obj/effect/bad_smoke/Move()
+/obj/effect/effect/bad_smoke/Move()
..()
for(var/mob/living/carbon/M in get_turf(src))
if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS))
@@ -331,7 +331,7 @@ steam.start() -- spawns the effect
return
-/obj/effect/bad_smoke/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
+/obj/effect/effect/bad_smoke/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(air_group || (height==0)) return 1
if(istype(mover, /obj/item/projectile/beam))
var/obj/item/projectile/beam/B = mover
@@ -339,7 +339,7 @@ steam.start() -- spawns the effect
return 1
-/obj/effect/bad_smoke/HasEntered(mob/living/carbon/M as mob )
+/obj/effect/effect/bad_smoke/HasEntered(mob/living/carbon/M as mob )
..()
if(istype(M, /mob/living/carbon))
if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS))
@@ -354,7 +354,7 @@ steam.start() -- spawns the effect
M.coughedtime = 0
return
-/datum/effect/system/bad_smoke_spread
+/datum/effect/effect/system/bad_smoke_spread
var/number = 3
var/cardinals = 0
var/turf/location
@@ -362,7 +362,7 @@ steam.start() -- spawns the effect
var/total_smoke = 0 // To stop it being spammed and lagging!
var/direction
-/datum/effect/system/bad_smoke_spread/proc/set_up(n = 5, c = 0, loca, direct)
+/datum/effect/effect/system/bad_smoke_spread/proc/set_up(n = 5, c = 0, loca, direct)
if(n > 20)
n = 20
number = n
@@ -375,10 +375,10 @@ steam.start() -- spawns the effect
direction = direct
-/datum/effect/system/bad_smoke_spread/proc/attach(atom/atom)
+/datum/effect/effect/system/bad_smoke_spread/proc/attach(atom/atom)
holder = atom
-/datum/effect/system/bad_smoke_spread/proc/start()
+/datum/effect/effect/system/bad_smoke_spread/proc/start()
var/i = 0
for(i=0, i 20)
@@ -386,7 +386,7 @@ steam.start() -- spawns the effect
spawn(0)
if(holder)
src.location = get_turf(holder)
- var/obj/effect/bad_smoke/smoke = new /obj/effect/bad_smoke(src.location)
+ var/obj/effect/effect/bad_smoke/smoke = new /obj/effect/effect/bad_smoke(src.location)
src.total_smoke++
var/direction = src.direction
if(!direction)
@@ -407,7 +407,7 @@ steam.start() -- spawns the effect
/////////////////////////////////////////////
-/obj/effect/chem_smoke
+/obj/effect/effect/chem_smoke
name = "smoke"
opacity = 1
anchored = 0.0
@@ -418,7 +418,7 @@ steam.start() -- spawns the effect
pixel_x = -32
pixel_y = -32
-/obj/effect/chem_smoke/New()
+/obj/effect/effect/chem_smoke/New()
..()
var/datum/reagents/R = new/datum/reagents(500)
reagents = R
@@ -428,20 +428,20 @@ steam.start() -- spawns the effect
del(src)
return
-/obj/effect/chem_smoke/Move()
+/obj/effect/effect/chem_smoke/Move()
..()
for(var/atom/A in view(1, src))
reagents.reaction(A)
return
-/obj/effect/chem_smoke/HasEntered(mob/living/carbon/M as mob )
+/obj/effect/effect/chem_smoke/HasEntered(mob/living/carbon/M as mob )
..()
reagents.reaction(M)
return
-/datum/effect/system/chem_smoke_spread
+/datum/effect/effect/system/chem_smoke_spread
var/number = 3
var/cardinals = 0
var/turf/location
@@ -456,7 +456,7 @@ steam.start() -- spawns the effect
chemholder.reagents = R
R.my_atom = chemholder
-/datum/effect/system/chem_smoke_spread/proc/set_up(var/datum/reagents/carry = null, n = 5, c = 0, loca, direct)
+/datum/effect/effect/system/chem_smoke_spread/proc/set_up(var/datum/reagents/carry = null, n = 5, c = 0, loca, direct)
if(n > 20)
n = 20
number = n
@@ -471,10 +471,10 @@ steam.start() -- spawns the effect
direction = direct
-/datum/effect/system/chem_smoke_spread/proc/attach(atom/atom)
+/datum/effect/effect/system/chem_smoke_spread/proc/attach(atom/atom)
holder = atom
-/datum/effect/system/chem_smoke_spread/proc/start()
+/datum/effect/effect/system/chem_smoke_spread/proc/start()
var/i = 0
// Calculate the smokes' color
@@ -505,7 +505,7 @@ steam.start() -- spawns the effect
spawn(0)
if(holder)
src.location = get_turf(holder)
- var/obj/effect/chem_smoke/smoke = new /obj/effect/chem_smoke(src.location)
+ var/obj/effect/effect/chem_smoke/smoke = new /obj/effect/effect/chem_smoke(src.location)
src.total_smoke++
var/direction = src.direction
if(!direction)
@@ -537,7 +537,7 @@ steam.start() -- spawns the effect
// Sleep smoke
/////////////////////////////////////////////
-/obj/effect/sleep_smoke
+/obj/effect/effect/sleep_smoke
name = "smoke"
icon_state = "smoke"
opacity = 1
@@ -549,13 +549,13 @@ steam.start() -- spawns the effect
pixel_x = -32
pixel_y = -32
-/obj/effect/sleep_smoke/New()
+/obj/effect/effect/sleep_smoke/New()
..()
spawn (200+rand(10,30))
del(src)
return
-/obj/effect/sleep_smoke/Move()
+/obj/effect/effect/sleep_smoke/Move()
..()
for(var/mob/living/carbon/M in get_turf(src))
if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS))
@@ -570,7 +570,7 @@ steam.start() -- spawns the effect
M.coughedtime = 0
return
-/obj/effect/sleep_smoke/HasEntered(mob/living/carbon/M as mob )
+/obj/effect/effect/sleep_smoke/HasEntered(mob/living/carbon/M as mob )
..()
if(istype(M, /mob/living/carbon))
if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS))
@@ -586,7 +586,7 @@ steam.start() -- spawns the effect
M.coughedtime = 0
return
-/datum/effect/system/sleep_smoke_spread
+/datum/effect/effect/system/sleep_smoke_spread
var/number = 3
var/cardinals = 0
var/turf/location
@@ -594,7 +594,7 @@ steam.start() -- spawns the effect
var/total_smoke = 0 // To stop it being spammed and lagging!
var/direction
-/datum/effect/system/sleep_smoke_spread/proc/set_up(n = 5, c = 0, loca, direct)
+/datum/effect/effect/system/sleep_smoke_spread/proc/set_up(n = 5, c = 0, loca, direct)
if(n > 20)
n = 20
number = n
@@ -607,10 +607,10 @@ steam.start() -- spawns the effect
direction = direct
-/datum/effect/system/sleep_smoke_spread/proc/attach(atom/atom)
+/datum/effect/effect/system/sleep_smoke_spread/proc/attach(atom/atom)
holder = atom
-/datum/effect/system/sleep_smoke_spread/proc/start()
+/datum/effect/effect/system/sleep_smoke_spread/proc/start()
var/i = 0
for(i=0, i 20)
@@ -618,7 +618,7 @@ steam.start() -- spawns the effect
spawn(0)
if(holder)
src.location = get_turf(holder)
- var/obj/effect/sleep_smoke/smoke = new /obj/effect/sleep_smoke(src.location)
+ var/obj/effect/effect/sleep_smoke/smoke = new /obj/effect/effect/sleep_smoke(src.location)
src.total_smoke++
var/direction = src.direction
if(!direction)
@@ -638,7 +638,7 @@ steam.start() -- spawns the effect
/////////////////////////////////////////////
-/obj/effect/mustard_gas
+/obj/effect/effect/mustard_gas
name = "mustard gas"
icon_state = "mustard"
opacity = 1
@@ -646,13 +646,13 @@ steam.start() -- spawns the effect
mouse_opacity = 0
var/amount = 6.0
-/obj/effect/mustard_gas/New()
+/obj/effect/effect/mustard_gas/New()
..()
spawn (100)
del(src)
return
-/obj/effect/mustard_gas/Move()
+/obj/effect/effect/mustard_gas/Move()
..()
for(var/mob/living/carbon/human/R in get_turf(src))
if (R.internal != null && usr.wear_mask && (R.wear_mask.flags & MASKINTERNALS) && R.wear_suit != null && !istype(R.wear_suit, /obj/item/clothing/suit/labcoat) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket && !istype(R.wear_suit, /obj/item/clothing/suit/armor)))
@@ -666,7 +666,7 @@ steam.start() -- spawns the effect
R.updatehealth()
return
-/obj/effect/mustard_gas/HasEntered(mob/living/carbon/human/R as mob )
+/obj/effect/effect/mustard_gas/HasEntered(mob/living/carbon/human/R as mob )
..()
if (istype(R, /mob/living/carbon/human))
if (R.internal != null && usr.wear_mask && (R.wear_mask.flags & MASKINTERNALS) && R.wear_suit != null && !istype(R.wear_suit, /obj/item/clothing/suit/labcoat) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket && !istype(R.wear_suit, /obj/item/clothing/suit/armor)))
@@ -680,7 +680,7 @@ steam.start() -- spawns the effect
R.updatehealth()
return
-/datum/effect/system/mustard_gas_spread
+/datum/effect/effect/system/mustard_gas_spread
var/number = 3
var/cardinals = 0
var/turf/location
@@ -688,7 +688,7 @@ steam.start() -- spawns the effect
var/total_smoke = 0 // To stop it being spammed and lagging!
var/direction
-/datum/effect/system/mustard_gas_spread/proc/set_up(n = 5, c = 0, loca, direct)
+/datum/effect/effect/system/mustard_gas_spread/proc/set_up(n = 5, c = 0, loca, direct)
if(n > 20)
n = 20
number = n
@@ -700,10 +700,10 @@ steam.start() -- spawns the effect
if(direct)
direction = direct
-/datum/effect/system/mustard_gas_spread/proc/attach(atom/atom)
+/datum/effect/effect/system/mustard_gas_spread/proc/attach(atom/atom)
holder = atom
-/datum/effect/system/mustard_gas_spread/proc/start()
+/datum/effect/effect/system/mustard_gas_spread/proc/start()
var/i = 0
for(i=0, i 20)
@@ -711,7 +711,7 @@ steam.start() -- spawns the effect
spawn(0)
if(holder)
src.location = get_turf(holder)
- var/obj/effect/mustard_gas/smoke = new /obj/effect/mustard_gas(src.location)
+ var/obj/effect/effect/mustard_gas/smoke = new /obj/effect/effect/mustard_gas(src.location)
src.total_smoke++
var/direction = src.direction
if(!direction)
@@ -737,22 +737,22 @@ steam.start() -- spawns the effect
/// and don't call start() in a loop that will be repeated otherwise it'll get spammed!
/////////////////////////////////////////////
-/obj/effect/ion_trails
+/obj/effect/effect/ion_trails
name = "ion trails"
icon_state = "ion_trails"
anchored = 1.0
-/datum/effect/system/ion_trail_follow
+/datum/effect/effect/system/ion_trail_follow
var/atom/holder
var/turf/oldposition
var/processing = 1
var/on = 1
-/datum/effect/system/ion_trail_follow/proc/set_up(atom/atom)
+/datum/effect/effect/system/ion_trail_follow/proc/set_up(atom/atom)
holder = atom
oldposition = get_turf(atom)
-/datum/effect/system/ion_trail_follow/proc/start()
+/datum/effect/effect/system/ion_trail_follow/proc/start()
if(!src.on)
src.on = 1
src.processing = 1
@@ -762,7 +762,7 @@ steam.start() -- spawns the effect
var/turf/T = get_turf(src.holder)
if(T != src.oldposition)
if(istype(T, /turf/space))
- var/obj/effect/ion_trails/I = new /obj/effect/ion_trails(src.oldposition)
+ var/obj/effect/effect/ion_trails/I = new /obj/effect/effect/ion_trails(src.oldposition)
src.oldposition = T
I.dir = src.holder.dir
flick("ion_fade", I)
@@ -779,7 +779,7 @@ steam.start() -- spawns the effect
src.processing = 1
src.start()
-/datum/effect/system/ion_trail_follow/proc/stop()
+/datum/effect/effect/system/ion_trail_follow/proc/stop()
src.processing = 0
src.on = 0
@@ -792,18 +792,18 @@ steam.start() -- spawns the effect
// even if it's carried of thrown.
/////////////////////////////////////////////
-/datum/effect/system/steam_trail_follow
+/datum/effect/effect/system/steam_trail_follow
var/atom/holder
var/turf/oldposition
var/processing = 1
var/on = 1
var/number
-/datum/effect/system/steam_trail_follow/proc/set_up(atom/atom)
+/datum/effect/effect/system/steam_trail_follow/proc/set_up(atom/atom)
holder = atom
oldposition = get_turf(atom)
-/datum/effect/system/steam_trail_follow/proc/start()
+/datum/effect/effect/system/steam_trail_follow/proc/start()
if(!src.on)
src.on = 1
src.processing = 1
@@ -811,7 +811,7 @@ steam.start() -- spawns the effect
src.processing = 0
spawn(0)
if(src.number < 3)
- var/obj/effect/steam/I = new /obj/effect/steam(src.oldposition)
+ var/obj/effect/effect/steam/I = new /obj/effect/effect/steam(src.oldposition)
src.number++
src.oldposition = get_turf(holder)
I.dir = src.holder.dir
@@ -828,7 +828,7 @@ steam.start() -- spawns the effect
src.processing = 1
src.start()
-/datum/effect/system/steam_trail_follow/proc/stop()
+/datum/effect/effect/system/steam_trail_follow/proc/stop()
src.processing = 0
src.on = 0
@@ -838,7 +838,7 @@ steam.start() -- spawns the effect
// Similar to smoke, but spreads out more
// metal foams leave behind a foamed metal wall
-/obj/effect/foam
+/obj/effect/effect/foam
name = "foam"
icon_state = "foam"
opacity = 0
@@ -852,7 +852,7 @@ steam.start() -- spawns the effect
var/metal = 0
-/obj/effect/foam/New(loc, var/ismetal=0)
+/obj/effect/effect/foam/New(loc, var/ismetal=0)
..(loc)
icon_state = "[ismetal ? "m":""]foam"
metal = ismetal
@@ -874,7 +874,7 @@ steam.start() -- spawns the effect
return
// on delete, transfer any reagents to the floor
-/obj/effect/foam/Del()
+/obj/effect/effect/foam/Del()
if(!metal && reagents)
for(var/atom/A in oview(0,src))
if(A == src)
@@ -882,7 +882,7 @@ steam.start() -- spawns the effect
reagents.reaction(A, 1, 1)
..()
-/obj/effect/foam/process()
+/obj/effect/effect/foam/process()
if(--amount < 0)
return
@@ -899,7 +899,7 @@ steam.start() -- spawns the effect
if(!T.Enter(src))
continue
- var/obj/effect/foam/F = locate() in T
+ var/obj/effect/effect/foam/F = locate() in T
if(F)
continue
@@ -914,7 +914,7 @@ steam.start() -- spawns the effect
// foam disolves when heated
// except metal foams
-/obj/effect/foam/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/effect/effect/foam/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(!metal && prob(max(0, exposed_temperature - 475)))
flick("[icon_state]-disolve", src)
@@ -922,7 +922,7 @@ steam.start() -- spawns the effect
del(src)
-/obj/effect/foam/HasEntered(var/atom/movable/AM)
+/obj/effect/effect/foam/HasEntered(var/atom/movable/AM)
if(metal)
return
@@ -938,7 +938,7 @@ steam.start() -- spawns the effect
M.weakened = 2
-/datum/effect/system/foam_spread
+/datum/effect/effect/system/foam_spread
var/amount = 5 // the size of the foam spread.
var/turf/location
var/list/carried_reagents // the IDs of reagents present when the foam was mixed
@@ -947,7 +947,7 @@ steam.start() -- spawns the effect
-/datum/effect/system/foam_spread/proc/set_up(amt=5, loca, var/datum/reagents/carry = null, var/metalfoam = 0)
+/datum/effect/effect/system/foam_spread/proc/set_up(amt=5, loca, var/datum/reagents/carry = null, var/metalfoam = 0)
amount = round(amt/5, 1)
if(istype(loca, /turf/))
location = loca
@@ -967,9 +967,9 @@ steam.start() -- spawns the effect
for(var/datum/reagent/R in carry.reagent_list)
carried_reagents += R.id
-/datum/effect/system/foam_spread/proc/start()
+/datum/effect/effect/system/foam_spread/proc/start()
spawn(0)
- var/obj/effect/foam/F = locate() in location
+ var/obj/effect/effect/foam/F = locate() in location
if(F)
F.amount += amount
return
@@ -1117,13 +1117,13 @@ steam.start() -- spawns the effect
return 1
-/datum/effect/system/reagents_explosion
+/datum/effect/effect/system/reagents_explosion
var/amount // TNT equivalent
var/turf/location
var/flashing = 0 // does explosion creates flash effect?
var/flashing_factor = 0 // factor of how powerful the flash effect relatively to the explosion
-/datum/effect/system/reagents_explosion/proc/set_up (amt, loc, flash = 0, flash_fact = 0)
+/datum/effect/effect/system/reagents_explosion/proc/set_up (amt, loc, flash = 0, flash_fact = 0)
amount = amt
if(istype(loc, /turf/))
location = loc
@@ -1135,9 +1135,9 @@ steam.start() -- spawns the effect
return
-/datum/effect/system/reagents_explosion/proc/start()
+/datum/effect/effect/system/reagents_explosion/proc/start()
if (amount <= 2)
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(2, 1, location)
s.start()
diff --git a/code/game/objects/gibs.dm b/code/game/objects/gibs.dm
index 629a99e7f9..15dcb69af2 100644
--- a/code/game/objects/gibs.dm
+++ b/code/game/objects/gibs.dm
@@ -33,7 +33,7 @@
del(D)
if(sparks)
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(2, 1, location)
s.start()
diff --git a/code/game/objects/grille.dm b/code/game/objects/grille.dm
index ccf6ce7a0f..6c89401cdc 100644
--- a/code/game/objects/grille.dm
+++ b/code/game/objects/grille.dm
@@ -150,7 +150,7 @@
var/obj/structure/cable/C = T.get_cable_node()
if(C)
if (electrocute_mob(user, C, src))
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
return 1
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index cb53bc3bdd..a41fcfe687 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -27,7 +27,7 @@
M.handcuffed = new /obj/item/weapon/handcuffs(M)
else
- if ((usr.mutations & CLOWN) && prob(50))
+ if ((usr.mutations & CLUMSY) && prob(50))
usr << "\red Uh ... how do those things work?!"
if (istype(M, /mob/living/carbon/human))
var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( )
@@ -123,7 +123,7 @@
for(var/a=0, a<5, a++)
spawn(0)
- var/obj/effect/water/W = new /obj/effect/water( get_turf(src) )
+ var/obj/effect/effect/water/W = new /obj/effect/effect/water( get_turf(src) )
var/turf/my_target = pick(the_targets)
var/datum/reagents/R = new/datum/reagents(5)
if(!W) return
diff --git a/code/game/objects/items/item.dm b/code/game/objects/items/item.dm
index 72ddbbf44b..c8d5e17084 100644
--- a/code/game/objects/items/item.dm
+++ b/code/game/objects/items/item.dm
@@ -99,7 +99,7 @@
if(5.0)
t = "huge"
else
- if ((usr.mutations & CLOWN) && prob(50)) t = "funny-looking"
+ if ((usr.mutations & CLUMSY) && prob(50)) t = "funny-looking"
usr << text("This is a []\icon[][]. It is a [] item.", !src.blood_DNA ? "" : "bloody ",src, src.name, t)
if(src.desc)
usr << src.desc
@@ -330,6 +330,12 @@
src.add_fingerprint(user)
return 1
+
+/obj/item/proc/IsShield()
+ return 0
+
+
+
/obj/item/proc/eyestab(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
var/mob/living/carbon/human/H = M
@@ -358,7 +364,7 @@
M.attack_log += "\[[time_stamp()]\] Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])"
src.add_fingerprint(user)
- //if((user.mutations & CLOWN) && prob(50))
+ //if((user.mutations & CLUMSY) && prob(50))
// M = user
/*
M << "\red You stab yourself in the eye."
@@ -377,7 +383,7 @@
"\red You stab yourself in the eyes with [src]!" \
)
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:organs["head"]
+ var/datum/organ/external/affecting = M:get_organ("head")
affecting.take_damage(7)
else
M.take_organ_damage(7)
diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm
index 323d285931..69416e53c0 100644
--- a/code/game/objects/items/weapons/RCD.dm
+++ b/code/game/objects/items/weapons/RCD.dm
@@ -19,7 +19,7 @@ RCD
m_amt = 50000
origin_tech = "engineering=4;materials=2"
var
- datum/effect/system/spark_spread/spark_system
+ datum/effect/effect/system/spark_spread/spark_system
matter = 0
working = 0
mode = 1
@@ -28,7 +28,7 @@ RCD
New()
desc = "A RCD. It currently holds [matter]/30 matter-units."
- src.spark_system = new /datum/effect/system/spark_spread
+ src.spark_system = new /datum/effect/effect/system/spark_spread
spark_system.set_up(5, 0, src)
spark_system.attach(src)
return
diff --git a/code/game/objects/items/weapons/grenades.dm b/code/game/objects/items/weapons/grenades.dm
index 6086c4292a..28090a66ec 100644
--- a/code/game/objects/items/weapons/grenades.dm
+++ b/code/game/objects/items/weapons/grenades.dm
@@ -65,7 +65,7 @@ FLASHBANG
clown_check(var/mob/living/user)
- if((user.mutations & CLOWN) && prob(50))
+ if((user.mutations & CLUMSY) && prob(50))
user << "\red Huh? How does this thing work?!"
src.active = 1
src.icon_state = "empar"
@@ -242,7 +242,7 @@ FLASHBANG
clown_check(var/mob/living/user)
- if ((user.mutations & CLOWN) && prob(50))
+ if ((user.mutations & CLUMSY) && prob(50))
user << "\red Huh? How does this thing work?!"
src.active = 1
src.icon_state = "flashbang1"
diff --git a/code/game/objects/items/weapons/hydroponics.dm b/code/game/objects/items/weapons/hydroponics.dm
index b7a5b5aee0..26486b4b2a 100644
--- a/code/game/objects/items/weapons/hydroponics.dm
+++ b/code/game/objects/items/weapons/hydroponics.dm
@@ -77,8 +77,8 @@ Deathnettle
if(!user.gloves)
user << "\red The nettle burns your bare hand!"
if(istype(user, /mob/living/carbon/human))
- var/organ = (user.hand ? "l_":"r_") + pick("hand","hand","arm")
- var/datum/organ/external/affecting = user.organs[organ]
+ var/organ = ((user.hand ? "l_":"r_") + "arm")
+ var/datum/organ/external/affecting = user.get_organ(organ)
affecting.take_damage(0,force)
else
user.take_organ_damage(0,force)
@@ -96,8 +96,8 @@ Deathnettle
/obj/item/weapon/grown/deathnettle/pickup(mob/living/carbon/human/user as mob)
if(!user.gloves)
if(istype(user, /mob/living/carbon/human))
- var/organ = (user.hand ? "l_":"r_") + pick("hand","hand","arm")
- var/datum/organ/external/affecting = user.organs[organ]
+ var/organ = ((user.hand ? "l_":"r_") + "arm")
+ var/datum/organ/external/affecting = user.get_organ(organ)
affecting.take_damage(0,force)
else
user.take_organ_damage(0,force)
diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm
index 937e256bbb..70aaa51329 100644
--- a/code/game/objects/items/weapons/kitchen.dm
+++ b/code/game/objects/items/weapons/kitchen.dm
@@ -37,7 +37,7 @@ KNIFE
src.icon_state = "fork"
return
else
- if((user.mutations & CLOWN) && prob(50))
+ if((user.mutations & CLUMSY) && prob(50))
M = user
return eyestab(M,user)
@@ -47,7 +47,7 @@ KNIFE
// ROLLING PIN
/obj/item/weapon/kitchen/rollingpin/attack(mob/M as mob, mob/living/user as mob)
- if ((user.mutations & CLOWN) && prob(50))
+ if ((user.mutations & CLUMSY) && prob(50))
user << "\red The [src] slips out of your hand and hits your head."
user.take_organ_damage(10)
user.paralysis += 2
@@ -84,7 +84,7 @@ KNIFE
// KNIFE
/obj/item/weapon/kitchen/utensil/knife/attack(target as mob, mob/living/user as mob)
- if ((user.mutations & CLOWN) && prob(50))
+ if ((user.mutations & CLUMSY) && prob(50))
user << "\red You accidentally cut yourself with the [src]."
user.take_organ_damage(20)
return
@@ -107,7 +107,7 @@ KNIFE
sleep(rand(2,4))
- if((user.mutations & CLOWN) && prob(50)) //What if he's a clown?
+ if((user.mutations & CLUMSY) && prob(50)) //What if he's a clown?
M << "\red You accidentally slam yourself with the [src]!"
M.weakened += 1
user.take_organ_damage(2)
diff --git a/code/game/objects/items/weapons/papers_bins.dm b/code/game/objects/items/weapons/papers_bins.dm
index a2ba05b3da..afc69a3a54 100644
--- a/code/game/objects/items/weapons/papers_bins.dm
+++ b/code/game/objects/items/weapons/papers_bins.dm
@@ -180,7 +180,7 @@ CLIPBOARDS
set category = "Object"
set src in usr
- if ((usr.mutations & CLOWN) && prob(50))
+ if ((usr.mutations & CLUMSY) && prob(50))
usr << text("\red You cut yourself on the paper.")
return
var/n_name = input(usr, "What would you like to label the paper?", "Paper Labelling", null) as text
diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm
index b73b508df4..e402842e3f 100644
--- a/code/game/objects/items/weapons/surgery_tools.dm
+++ b/code/game/objects/items/weapons/surgery_tools.dm
@@ -68,7 +68,7 @@ CIRCULAR SAW
if(M == user && prob(25))
user << "\red You mess up!"
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:organs["head"]
+ var/datum/organ/external/affecting = M:get_organ("head")
affecting.take_damage(15)
M.updatehealth()
else
@@ -154,7 +154,7 @@ CIRCULAR SAW
if(M == user && prob(25))
user << "\red You mess up!"
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:organs["head"]
+ var/datum/organ/external/affecting = M:get_organ("head")
affecting.take_damage(15)
M.updatehealth()
else
@@ -229,7 +229,7 @@ CIRCULAR SAW
if(M == user && prob(25))
user << "\red You mess up!"
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:organs["head"]
+ var/datum/organ/external/affecting = M:get_organ("head")
affecting.take_damage(15)
M.updatehealth()
else
@@ -253,7 +253,7 @@ CIRCULAR SAW
if(!istype(M))
return ..()
- if((user.mutations & CLOWN) && prob(50))
+ if((user.mutations & CLUMSY) && prob(50))
M = user
return eyestab(M,user)
@@ -325,13 +325,13 @@ CIRCULAR SAW
if(M == user && prob(25))
user << "\red You mess up!"
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:organs["head"]
+ var/datum/organ/external/affecting = M:get_organ("head")
affecting.take_damage(15)
else
M.take_organ_damage(15)
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:organs["head"]
+ var/datum/organ/external/affecting = M:get_organ("head")
affecting.take_damage(7)
else
M.take_organ_damage(7)
@@ -370,13 +370,13 @@ CIRCULAR SAW
if(M == user && prob(25))
user << "\red You nick an artery!"
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:organs["head"]
+ var/datum/organ/external/affecting = M:get_organ("head")
affecting.take_damage(75)
else
M.take_organ_damage(75)
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:organs["head"]
+ var/datum/organ/external/affecting = M:get_organ("head")
affecting.take_damage(7)
else
M.take_organ_damage(7)
@@ -425,7 +425,7 @@ CIRCULAR SAW
if(M == user && prob(25))
user << "\red You mess up!"
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:organs["head"]
+ var/datum/organ/external/affecting = M:get_organ("head")
affecting.take_damage(15)
else
M.take_organ_damage(15)
@@ -450,7 +450,7 @@ CIRCULAR SAW
if(!istype(M))
return ..()
- if((user.mutations & CLOWN) && prob(50))
+ if((user.mutations & CLUMSY) && prob(50))
M = user
return eyestab(M,user)
@@ -494,14 +494,14 @@ CIRCULAR SAW
if(M == user && prob(25))
user << "\red You mess up!"
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:organs["head"]
+ var/datum/organ/external/affecting = M:get_organ("head")
affecting.take_damage(40)
M.updatehealth()
else
M.take_organ_damage(40)
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:organs["head"]
+ var/datum/organ/external/affecting = M:get_organ("head")
affecting.take_damage(7)
else
M.take_organ_damage(7)
diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm
index c3b76293ee..6a29f44c74 100644
--- a/code/game/objects/items/weapons/swords_axes_etc.dm
+++ b/code/game/objects/items/weapons/swords_axes_etc.dm
@@ -10,6 +10,11 @@ STUN BATON
// SWORD
+/obj/item/weapon/melee/energy/sword/IsShield()
+ if(active)
+ return 1
+ return 0
+
/obj/item/weapon/melee/energy/sword/attack(target as mob, mob/user as mob)
..()
@@ -17,7 +22,7 @@ STUN BATON
color = pick("red","blue","green","purple")
/obj/item/weapon/melee/energy/sword/attack_self(mob/living/user as mob)
- if ((user.mutations & CLOWN) && prob(50))
+ if ((user.mutations & CLUMSY) && prob(50))
user << "\red You accidentally cut yourself with [src]."
user.take_organ_damage(5,5)
active = !active
@@ -55,7 +60,7 @@ STUN BATON
//Most of the other special functions are handled in their own files.
/obj/item/weapon/melee/energy/blade/New()
- spark_system = new /datum/effect/system/spark_spread()
+ spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src)
spark_system.attach(src)
return
@@ -98,7 +103,7 @@ STUN BATON
/obj/item/weapon/melee/baton/attack_self(mob/user as mob)
src.status = !( src.status )
- if ((usr.mutations & CLOWN) && prob(50))
+ if ((usr.mutations & CLUMSY) && prob(50))
usr << "\red You grab the stunbaton on the wrong side."
usr.paralysis += 60
return
@@ -114,7 +119,7 @@ STUN BATON
return
/obj/item/weapon/melee/baton/attack(mob/M as mob, mob/user as mob)
- if ((usr.mutations & CLOWN) && prob(50))
+ if ((usr.mutations & CLUMSY) && prob(50))
usr << "\red You grab the stunbaton on the wrong side."
usr.weakened += 30
return
@@ -186,7 +191,7 @@ STUN BATON
charges -= 5
/obj/item/weapon/melee/classic_baton/attack(mob/M as mob, mob/living/user as mob)
- if ((user.mutations & CLOWN) && prob(50))
+ if ((user.mutations & CLUMSY) && prob(50))
user << "\red You club yourself over the head."
user.weakened = max(3 * force, user.weakened)
if(ishuman(user))
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index bbc3d98838..ade36179d4 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -39,7 +39,7 @@ WELDINGTOOOL
if(!istype(M)) return ..()
if(user.zone_sel.selecting != "eyes" && user.zone_sel.selecting != "head")
return ..()
- if((user.mutations & CLOWN) && prob(50))
+ if((user.mutations & CLUMSY) && prob(50))
M = user
return eyestab(M,user)
diff --git a/code/game/objects/new_year.dm b/code/game/objects/new_year.dm
index 72fc742aeb..c6394eb112 100644
--- a/code/game/objects/new_year.dm
+++ b/code/game/objects/new_year.dm
@@ -59,7 +59,7 @@
/obj/item/weapon/firbang/afterattack(atom/target as mob|obj|turf|area, mob/user as mob)
if (user.equipped() == src)
- if ((user.mutations & CLOWN) && prob(50))
+ if ((user.mutations & CLUMSY) && prob(50))
user << "\red Huh? How does this thing work?!"
src.state = 1
src.icon_state = "flashbang1"
@@ -94,11 +94,11 @@
playsound(src.loc, 'bang.ogg', 25, 1)
var/turf/T = get_turf(src)
if(T)
- var/datum/effect/system/harmless_smoke_spread/smoke = new
+ var/datum/effect/effect/system/harmless_smoke_spread/smoke = new
smoke.set_up(3, 0, src.loc)
smoke.attach(src)
smoke.start()
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
new /obj/effect/new_year_tree(T)
@@ -107,7 +107,7 @@
/obj/item/weapon/firbang/attack_self(mob/user as mob)
if (!src.state)
- if (user.mutations & CLOWN)
+ if (user.mutations & CLUMSY)
user << "\red Huh? How does this thing work?!"
spawn( 5 )
prime()
diff --git a/code/game/objects/radio/electropack.dm b/code/game/objects/radio/electropack.dm
index 082c29848f..3920b0ab35 100644
--- a/code/game/objects/radio/electropack.dm
+++ b/code/game/objects/radio/electropack.dm
@@ -134,7 +134,7 @@
if (M.moved_recently && M.last_move)
step(M, M.last_move)
M.show_message("\red You feel a sharp shock!")
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, M)
s.start()
diff --git a/code/game/objects/radio/newradio.dm b/code/game/objects/radio/newradio.dm
new file mode 100644
index 0000000000..fc80055b94
--- /dev/null
+++ b/code/game/objects/radio/newradio.dm
@@ -0,0 +1,48 @@
+/obj/item/device/Nradio
+ icon = 'radio.dmi'
+ name = "station bounced radio"
+ suffix = "\[3\]"
+ icon_state = "walkietalkie"
+ item_state = "walkietalkie"
+
+ flags = 450//FFFF what does this even mean likely conduct+onbelt+someothershit
+ throw_speed = 2
+ throw_range = 9
+ w_class = 2
+ g_amt = 25
+ m_amt = 75
+
+ var
+ //General things
+ frequency = 1459 //Default freq
+ broadcasting = 0 //Mike
+ listening = 1 //Speaker
+ secured = 0 //Can you see our wires
+ freerange = 0 // 0 - Sanitize frequencies, 1 - Full range
+
+ datum/radio_frequency/radio_connection = null
+ list/datum/radio_frequency/secure_radio_connections = new
+
+ //Internal things
+ obj/item/weapon/syndicate_uplink/uplink = null //If we have an uplink one of our freqs will activate it
+ wires = WIRE_RECEIVE | WIRE_TRANSMIT //Active wires
+
+ list/channels = list() //see communications.dm for full list. First channes is a "default" for :h
+// "Example" = FREQ_LISTENING|FREQ_BROADCASTING
+
+ last_transmission //What is this
+ obj/item/device/radio/patch_link = null //What is this
+
+ var/const
+ WIRE_TRANSMIT = 1 //sends a signal, like to set off a bomb or electrocute someone, or talk
+ WIRE_RECEIVE = 2 //we can hear things
+ TRANSMISSION_DELAY = 5 // only 2/second/radio antispam protection
+ FREQ_LISTENING = 1
+
+
+ proc
+ set_frequency(new_frequency)
+ radio_controller.remove_object(src, frequency)
+ frequency = new_frequency
+ radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT)
+
diff --git a/code/game/objects/secstorage/sbriefcase.dm b/code/game/objects/secstorage/sbriefcase.dm
index cdec94b4f7..3362984a60 100644
--- a/code/game/objects/secstorage/sbriefcase.dm
+++ b/code/game/objects/secstorage/sbriefcase.dm
@@ -16,7 +16,7 @@
new /obj/item/weapon/pen(src)
/obj/item/weapon/secstorage/sbriefcase/attack(mob/M as mob, mob/living/user as mob)
- if ((user.mutations & CLOWN) && prob(50))
+ if ((user.mutations & CLUMSY) && prob(50))
user << "\red The [src] slips out of your hand and hits your head."
user.take_organ_damage(10)
user.paralysis += 2
diff --git a/code/game/objects/secstorage/secstorage.dm b/code/game/objects/secstorage/secstorage.dm
index 724529eb35..864bb1f631 100644
--- a/code/game/objects/secstorage/secstorage.dm
+++ b/code/game/objects/secstorage/secstorage.dm
@@ -102,7 +102,7 @@
overlays += image('storage.dmi', icon_locking)
locked = 0
if(istype(W, /obj/item/weapon/melee/energy/blade))
- var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
+ var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src.loc)
spark_system.start()
playsound(src.loc, 'blade1.ogg', 50, 1)
diff --git a/code/game/objects/secure_closets.dm b/code/game/objects/secure_closets.dm
index 64837bd705..e5ffb53268 100644
--- a/code/game/objects/secure_closets.dm
+++ b/code/game/objects/secure_closets.dm
@@ -164,7 +164,7 @@
desc = "It appears to be broken."
icon_state = src.icon_broken
if(istype(W, /obj/item/weapon/melee/energy/blade))
- var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
+ var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src.loc)
spark_system.start()
playsound(src.loc, 'blade1.ogg', 50, 1)
diff --git a/code/game/objects/stacks/glass.dm b/code/game/objects/stacks/glass.dm
index 107edfa856..6665ffcf75 100644
--- a/code/game/objects/stacks/glass.dm
+++ b/code/game/objects/stacks/glass.dm
@@ -168,7 +168,7 @@ SHARDS
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!H.shoes)
- var/datum/organ/external/affecting = H.organs[pick("l_foot", "r_foot")]
+ var/datum/organ/external/affecting = H.get_organ(pick("l_leg", "r_leg"))
H.weakened = max(3, H.weakened)
affecting.take_damage(5, 0)
H.UpdateDamageIcon()
diff --git a/code/game/objects/stool.dm b/code/game/objects/stool.dm
index 4cd21ddea6..5f1214fc8d 100644
--- a/code/game/objects/stool.dm
+++ b/code/game/objects/stool.dm
@@ -189,7 +189,7 @@
flick("e_chairs", src)
flick("e_chairos", src.overl)
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(12, 1, src)
s.start()
for(var/mob/living/M in src.loc)
diff --git a/code/game/objects/storage/bible.dm b/code/game/objects/storage/bible.dm
index cc77a59a9f..7230ea9d55 100644
--- a/code/game/objects/storage/bible.dm
+++ b/code/game/objects/storage/bible.dm
@@ -7,17 +7,14 @@
new /obj/item/weapon/spacecash(src)
/obj/item/weapon/storage/bible/proc/bless(mob/living/carbon/M as mob)
- var/mob/living/carbon/human/H = M
- var/heal_amt = 10
- for(var/A in H.organs)
- var/datum/organ/external/affecting = null
- if(!H.organs[A]) continue
- affecting = H.organs[A]
- if(!istype(affecting, /datum/organ/external)) continue
- if(affecting.heal_damage(heal_amt, heal_amt))
- H.UpdateDamageIcon()
- else
- H.UpdateDamage()
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ var/heal_amt = 10
+ for(var/datum/organ/external/affecting in H.organs)
+ if(affecting.heal_damage(heal_amt, heal_amt))
+ H.UpdateDamageIcon()
+ else
+ H.UpdateDamage()
return
/obj/item/weapon/storage/bible/attack(mob/M as mob, mob/living/user as mob)
@@ -38,7 +35,7 @@
user.take_organ_damage(0,10)
return
- if ((user.mutations & CLOWN) && prob(50))
+ if ((user.mutations & CLUMSY) && prob(50))
user << "\red The [src] slips out of your hand and hits your head."
user.take_organ_damage(10)
user.paralysis += 20
diff --git a/code/game/objects/storage/briefcase.dm b/code/game/objects/storage/briefcase.dm
index 3cbdc43412..d29aa0c830 100644
--- a/code/game/objects/storage/briefcase.dm
+++ b/code/game/objects/storage/briefcase.dm
@@ -11,7 +11,7 @@
/obj/item/weapon/storage/briefcase/attack(mob/M as mob, mob/living/user as mob)
//..()
- if ((user.mutations & CLOWN) && prob(50))
+ if ((user.mutations & CLUMSY) && prob(50))
user << "\red The [src] slips out of your hand and hits your head."
user.take_organ_damage(10)
user.paralysis += 2
diff --git a/code/game/objects/storage/lockbox.dm b/code/game/objects/storage/lockbox.dm
index bc618e454c..49b9d3b3fd 100644
--- a/code/game/objects/storage/lockbox.dm
+++ b/code/game/objects/storage/lockbox.dm
@@ -39,7 +39,7 @@
desc = "It appears to be broken."
icon_state = src.icon_broken
if(istype(W, /obj/item/weapon/melee/energy/blade))
- var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
+ var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src.loc)
spark_system.start()
playsound(src.loc, 'blade1.ogg', 50, 1)
diff --git a/code/game/objects/tables_racks.dm b/code/game/objects/tables_racks.dm
index db9eaf1de3..5ca6acab85 100644
--- a/code/game/objects/tables_racks.dm
+++ b/code/game/objects/tables_racks.dm
@@ -144,7 +144,7 @@ TABLE AND RACK OBJECT INTERATIONS
return
if(istype(W, /obj/item/weapon/melee/energy/blade))
- var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
+ var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src.loc)
spark_system.start()
playsound(src.loc, 'blade1.ogg', 50, 1)
@@ -186,7 +186,7 @@ TABLE AND RACK OBJECT INTERATIONS
if(isrobot(user))
return
if(istype(W, /obj/item/weapon/melee/energy/blade))
- var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
+ var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src.loc)
spark_system.start()
playsound(src.loc, 'blade1.ogg', 50, 1)
@@ -256,7 +256,7 @@ TABLE AND RACK OBJECT INTERATIONS
return
if(istype(W, /obj/item/weapon/melee/energy/blade))
- var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
+ var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src.loc)
spark_system.start()
playsound(src.loc, 'blade1.ogg', 50, 1)
diff --git a/code/game/objects/tank.dm b/code/game/objects/tank.dm
index 0d59e73b09..71c68278d0 100644
--- a/code/game/objects/tank.dm
+++ b/code/game/objects/tank.dm
@@ -29,7 +29,7 @@
var/on = 0.0
w_class = 4.0
item_state = "jetpack"
- var/datum/effect/system/ion_trail_follow/ion_trail
+ var/datum/effect/effect/system/ion_trail_follow/ion_trail
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
//volume = 140 //jetpack sould be larger, but then it will never deplete -rastaf0
@@ -400,7 +400,7 @@
/obj/item/weapon/tank/jetpack/New()
..()
- src.ion_trail = new /datum/effect/system/ion_trail_follow()
+ src.ion_trail = new /datum/effect/effect/system/ion_trail_follow()
src.ion_trail.set_up(src)
src.air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
return
@@ -424,7 +424,7 @@
/obj/item/weapon/tank/jetpack/proc/allow_thrust(num, mob/living/user as mob)
if (!( src.on ))
return 0
- if ((num < 0.01 || src.air_contents.total_moles() < num))
+ if ((num < 0.005 || src.air_contents.total_moles() < num))
src.ion_trail.stop()
return 0
diff --git a/code/game/objects/weapons.dm b/code/game/objects/weapons.dm
index dd7eb83bde..c7552ec1e8 100644
--- a/code/game/objects/weapons.dm
+++ b/code/game/objects/weapons.dm
@@ -5,7 +5,7 @@
user << " You have BANNED [M]"
/obj/effect/mine/proc/triggerrad(obj)
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
obj:radiation += 50
@@ -16,7 +16,7 @@
/obj/effect/mine/proc/triggerstun(obj)
obj:stunned += 30
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
spawn(0)
@@ -60,7 +60,7 @@
del(src)
/obj/effect/mine/proc/triggerkick(obj)
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
del(obj:client)
@@ -129,11 +129,11 @@
switch(type)
if("feet")
if(!H.shoes)
- affecting = H.organs[pick("l_foot", "r_foot")]
+ affecting = H.get_organ(pick("l_leg", "r_leg"))
H.weakened = max(3, H.weakened)
if("l_hand", "r_hand")
if(!H.gloves)
- affecting = H.organs[type]
+ affecting = H.get_organ(type)
H.stunned = max(3, H.stunned)
if(affecting)
affecting.take_damage(1, 0)
@@ -153,7 +153,7 @@
user << "\blue You arm the mousetrap."
else
icon_state = "mousetrap"
- if((user.brainloss >= 60 || user.mutations & CLOWN) && prob(50))
+ if((user.brainloss >= 60 || user.mutations & CLUMSY) && prob(50))
var/which_hand = "l_hand"
if(!user.hand)
which_hand = "r_hand"
@@ -170,7 +170,7 @@
/obj/item/weapon/mousetrap/attack_hand(mob/user as mob)
if(armed)
- if((user.brainloss >= 60 || user.mutations & CLOWN) && prob(50))
+ if((user.brainloss >= 60 || user.mutations & CLUMSY) && prob(50))
var/which_hand = "l_hand"
if(!user.hand)
which_hand = "r_hand"
diff --git a/code/game/vials.dm b/code/game/vials.dm
index d6366ea0e7..f7f4483f24 100644
--- a/code/game/vials.dm
+++ b/code/game/vials.dm
@@ -186,7 +186,7 @@
var/i
for(i=0, i<10, i++)
spawn(0)
- var/obj/effect/water/water1 = new /obj/effect/water( mobloc )
+ var/obj/effect/effect/water/water1 = new /obj/effect/effect/water( mobloc )
var/direction = pick(alldirs)
water1.name = "water"
water1.density = 0
@@ -210,7 +210,7 @@
var/c
for(c=0, c= 30)
- var/datum/organ/external/affecting = M:organs["head"]
+ var/datum/organ/external/affecting = M:get_organ("head")
if(affecting)
affecting.take_damage(25, 0)
M:UpdateDamage()
@@ -691,7 +691,7 @@ datum
del (M:head)
M << "\red Your helmet melts into uselessness!"
return
- var/datum/organ/external/affecting = M:organs["head"]
+ var/datum/organ/external/affecting = M:get_organ("head")
affecting.take_damage(35, 0)
M:UpdateDamage()
M:UpdateDamageIcon()
@@ -706,7 +706,7 @@ datum
M.take_organ_damage(min(15, volume * 4)) // same deal as sulphuric acid
else
if(istype(M, /mob/living/carbon/human))
- var/datum/organ/external/affecting = M:organs["head"]
+ var/datum/organ/external/affecting = M:get_organ("head")
affecting.take_damage(30, 0)
M:UpdateDamage()
M:UpdateDamageIcon()
diff --git a/code/modules/chemical/Chemistry-Recipes.dm b/code/modules/chemical/Chemistry-Recipes.dm
index 1db8354831..1f1b79a469 100644
--- a/code/modules/chemical/Chemistry-Recipes.dm
+++ b/code/modules/chemical/Chemistry-Recipes.dm
@@ -28,7 +28,7 @@ datum
result_amount = 2
on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
- var/datum/effect/system/reagents_explosion/e = new()
+ var/datum/effect/effect/system/reagents_explosion/e = new()
e.set_up(round (created_volume/10, 1), location, 0, 0)
e.start()
@@ -277,7 +277,7 @@ datum
result_amount = 2
on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
- var/datum/effect/system/reagents_explosion/e = new()
+ var/datum/effect/effect/system/reagents_explosion/e = new()
e.set_up(round (created_volume/2, 1), location, 0, 0)
e.start()
@@ -299,7 +299,7 @@ datum
result_amount = null
on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(2, 1, location)
s.start()
for(var/mob/living/carbon/M in viewers(world.view, location))
@@ -378,7 +378,7 @@ datum
secondary = 1
on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
- var/datum/effect/system/chem_smoke_spread/S = new /datum/effect/system/chem_smoke_spread
+ var/datum/effect/effect/system/chem_smoke_spread/S = new /datum/effect/effect/system/chem_smoke_spread
S.attach(location)
S.set_up(holder, 10, 0, location)
playsound(location, 'smoke.ogg', 50, 1, -3)
@@ -438,7 +438,7 @@ datum
//for(var/datum/reagent/R in holder.reagent_list)
// world << "[R.name] = [R.volume]"
- var/datum/effect/system/foam_spread/s = new()
+ var/datum/effect/effect/system/foam_spread/s = new()
s.set_up(created_volume, location, holder, 0)
s.start()
holder.clear_reagents()
@@ -460,7 +460,7 @@ datum
for(var/mob/M in viewers(5, location))
M << "\red The solution spews out a metalic foam!"
- var/datum/effect/system/foam_spread/s = new()
+ var/datum/effect/effect/system/foam_spread/s = new()
s.set_up(created_volume/2, location, holder, 1)
s.start()
return
@@ -480,7 +480,7 @@ datum
for(var/mob/M in viewers(5, location))
M << "\red The solution spews out a metalic foam!"
- var/datum/effect/system/foam_spread/s = new()
+ var/datum/effect/effect/system/foam_spread/s = new()
s.set_up(created_volume/2, location, holder, 2)
s.start()
return
@@ -537,7 +537,7 @@ datum
required_other = 2
on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
- var/datum/effect/system/reagents_explosion/e = new()
+ var/datum/effect/effect/system/reagents_explosion/e = new()
e.set_up(round (created_volume/10, 1), location, 0, 0)
e.start()
@@ -759,7 +759,7 @@ datum
//for(var/datum/reagent/R in holder.reagent_list)
// world << "[R.name] = [R.volume]"
- var/datum/effect/system/foam_spread/s = new()
+ var/datum/effect/effect/system/foam_spread/s = new()
s.set_up(created_volume, location, holder, 0)
s.start()
holder.clear_reagents()
diff --git a/code/modules/chemical/Chemistry-Tools.dm b/code/modules/chemical/Chemistry-Tools.dm
index 894e1a0707..8b0cbf183c 100644
--- a/code/modules/chemical/Chemistry-Tools.dm
+++ b/code/modules/chemical/Chemistry-Tools.dm
@@ -225,7 +225,7 @@
G.reagents.trans_to(src, G.reagents.total_volume)
if(src.reagents.total_volume) //The possible reactions didnt use up all reagents.
- var/datum/effect/system/steam_spread/steam = new /datum/effect/system/steam_spread()
+ var/datum/effect/effect/system/steam_spread/steam = new /datum/effect/effect/system/steam_spread()
steam.set_up(10, 0, get_turf(src))
steam.attach(src)
steam.start()
@@ -530,12 +530,12 @@
return
if(2.0)
if (prob(50))
- new /obj/effect/water(src.loc)
+ new /obj/effect/effect/water(src.loc)
del(src)
return
if(3.0)
if (prob(5))
- new /obj/effect/water(src.loc)
+ new /obj/effect/effect/water(src.loc)
del(src)
return
else
@@ -543,7 +543,7 @@
blob_act()
if(prob(50))
- new /obj/effect/water(src.loc)
+ new /obj/effect/effect/water(src.loc)
del(src)
diff --git a/code/modules/clothing/spacesuits/ninja.dm b/code/modules/clothing/spacesuits/ninja.dm
index b15e1dbe4c..ce028fe46a 100644
--- a/code/modules/clothing/spacesuits/ninja.dm
+++ b/code/modules/clothing/spacesuits/ninja.dm
@@ -22,7 +22,7 @@
//Important parts of the suit.
mob/living/carbon/affecting = null//The wearer.
obj/item/weapon/cell/cell//Starts out with a high-capacity cell using New().
- datum/effect/system/spark_spread/spark_system//To create sparks.
+ datum/effect/effect/system/spark_spread/spark_system//To create sparks.
reagent_list[] = list("tricordrazine","dexalinp","spaceacillin","anti_toxin","nutriment","radium","hyronalin")//The reagents ids which are added to the suit at New().
stored_research[]//For stealing station research.
obj/item/weapon/disk/tech_disk/t_disk//To copy design onto disk.
diff --git a/code/modules/critters/critter_AI.dm b/code/modules/critters/critter_AI.dm
index 9703a7d99c..5448e894dd 100644
--- a/code/modules/critters/critter_AI.dm
+++ b/code/modules/critters/critter_AI.dm
@@ -154,24 +154,13 @@
O.show_message("\red [src] [src.attacktext] [src.target]!", 1)
if(ismob(src.target))
-
var/damage = rand(melee_damage_lower, melee_damage_upper)
if(istype(target, /mob/living/carbon/human))
- var/dam_zone = pick("head", "chest", "l_hand", "r_hand", "l_leg", "r_leg", "groin")
- if (dam_zone == "chest")
- if ((((target:wear_suit && target:wear_suit.body_parts_covered & UPPER_TORSO) || (target:w_uniform && target:w_uniform.body_parts_covered & LOWER_TORSO)) && prob(10)))
- if(prob(20))
- target:show_message("\blue You have been protected from a hit to the chest.")
- return
- if (istype(target:organs[text("[]", dam_zone)], /datum/organ/external))
- var/datum/organ/external/temp = target:organs[text("[]", dam_zone)]
- if (temp.take_damage(damage, 0))
- target:UpdateDamageIcon()
- else
- target:UpdateDamage()
- target:updatehealth()
-
+ var/mob/living/carbon/human/H = target
+ var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
+ var/datum/organ/external/affecting = H.get_organ(ran_zone(dam_zone))
+ H.apply_damage(damage, BRUTE, affecting, H.run_armor_check(affecting, "melee"))
else
target:bruteloss += damage
diff --git a/code/modules/critters/hivebots/hivebot.dm b/code/modules/critters/hivebots/hivebot.dm
index 304e928cd8..329660fe24 100644
--- a/code/modules/critters/hivebots/hivebot.dm
+++ b/code/modules/critters/hivebots/hivebot.dm
@@ -40,7 +40,7 @@
src.visible_message("[src] blows apart!")
var/turf/Ts = get_turf(src)
new /obj/effect/decal/cleanable/robot_debris(Ts)
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
del(src)
@@ -198,7 +198,7 @@
New()
..()
- var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread()
+ var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread()
smoke.set_up(5, 0, src.loc)
smoke.start()
for(var/mob/O in viewers(src, null))
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
index 51a1ea9de3..82c89cca20 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
@@ -548,7 +548,7 @@
if (stunned < power)
stunned = power
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm
index 8d708a4461..bc0bed6d3e 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/life.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm
@@ -212,7 +212,7 @@
breath = loc.remove_air(breath_moles)
// Handle chem smoke effect -- Doohl
- for(var/obj/effect/chem_smoke/smoke in view(1, src))
+ for(var/obj/effect/effect/chem_smoke/smoke in view(1, src))
if(smoke.reagents.total_volume)
smoke.reagents.reaction(src, INGEST)
spawn(5)
diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm
index e77b05f5ea..f2535086aa 100644
--- a/code/modules/mob/living/carbon/alien/larva/life.dm
+++ b/code/modules/mob/living/carbon/alien/larva/life.dm
@@ -193,7 +193,7 @@
breath = loc.remove_air(breath_moles)
// Handle chem smoke effect -- Doohl
- for(var/obj/effect/chem_smoke/smoke in view(1, src))
+ for(var/obj/effect/effect/chem_smoke/smoke in view(1, src))
if(smoke.reagents.total_volume)
smoke.reagents.reaction(src, INGEST)
spawn(5)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 7e7d60a74f..b9d51ff603 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -19,7 +19,7 @@
var/d = rand(round(I.force / 4), I.force)
if(istype(src, /mob/living/carbon/human))
var/mob/living/carbon/human/H = src
- var/organ = H.organs["chest"]
+ var/organ = H.get_organ("chest")
if (istype(organ, /datum/organ/external))
var/datum/organ/external/temp = organ
temp.take_damage(d, 0)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 5d62f25011..f093caf2cf 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -264,107 +264,29 @@
if (prob(50) && !shielded)
paralysis += 10
- for(var/organ in organs)
- var/datum/organ/external/temp = organs[text("[]", organ)]
- if (istype(temp, /datum/organ/external))
- switch(temp.name)
- if("head")
- temp.take_damage(b_loss * 0.2, f_loss * 0.2)
- if("chest")
- temp.take_damage(b_loss * 0.4, f_loss * 0.4)
- if("groin")
- temp.take_damage(b_loss * 0.1, f_loss * 0.1)
- if("l_arm")
- temp.take_damage(b_loss * 0.05, f_loss * 0.05)
- if("r_arm")
- temp.take_damage(b_loss * 0.05, f_loss * 0.05)
-/* if("l_hand")
-/ temp.take_damage(b_loss * 0.0225, f_loss * 0.0225)
- if("r_hand")
- temp.take_damage(b_loss * 0.0225, f_loss * 0.0225)*/
- if("l_leg")
- temp.take_damage(b_loss * 0.05, f_loss * 0.05)
- if("r_leg")
- temp.take_damage(b_loss * 0.05, f_loss * 0.05)
-/* if("l_foot")
- temp.take_damage(b_loss * 0.0225, f_loss * 0.0225)
- if("r_foot")
- temp.take_damage(b_loss * 0.0225, f_loss * 0.0225)*/
-
+ for(var/datum/organ/external/temp in organs)
+ switch(temp.name)
+ if("head")
+ temp.take_damage(b_loss * 0.2, f_loss * 0.2)
+ if("chest")
+ temp.take_damage(b_loss * 0.4, f_loss * 0.4)
+ if("l_arm")
+ temp.take_damage(b_loss * 0.05, f_loss * 0.05)
+ if("r_arm")
+ temp.take_damage(b_loss * 0.05, f_loss * 0.05)
+ if("l_leg")
+ temp.take_damage(b_loss * 0.05, f_loss * 0.05)
+ if("r_leg")
+ temp.take_damage(b_loss * 0.05, f_loss * 0.05)
UpdateDamageIcon()
/mob/living/carbon/human/blob_act()
- if (stat == 2)
- return
- var/damage = null
- if (stat != 2)
- damage = rand(30,40)
-
+ if(stat == 2) return
show_message("\red The blob attacks you!")
-
- var/list/zones = list("head","chest","chest", "groin", "l_arm", "r_arm", "l_leg", "r_leg")
-
- var/zone = pick(zones)
-
- var/datum/organ/external/temp = organs["[zone]"]
-
- switch(zone)//This really needs an update badly
- if ("head")
- if ((((head && head.body_parts_covered & HEAD) || (wear_mask && wear_mask.body_parts_covered & HEAD)) && prob(99)))
- if (prob(20))
- temp.take_damage(damage, 0)
- else
- show_message("\red You have been protected from a hit to the head.")
- return
- if (damage > 4.9)
- if (weakened < 10)
- weakened = rand(10, 15)
- for(var/mob/O in viewers(src, null))
- O.show_message(text("\red The blob has weakened []!", src), 1, "\red You hear someone fall.", 2)
- temp.take_damage(damage)
- if ("chest")
- if ((((wear_suit && wear_suit.body_parts_covered & UPPER_TORSO) || (w_uniform && w_uniform.body_parts_covered & UPPER_TORSO)) && prob(85)))
- show_message("\red You have been protected from a hit to the chest.")
- return
- if (damage > 4.9)
- if (prob(50))
- if (weakened < 5)
- weakened = 5
- for(var/mob/O in viewers(src, null))
- O.show_message(text("\red The blob has knocked down []!", src), 1, "\red You hear someone fall.", 2)
- else
- if (stunned < 5)
- stunned = 5
- for(var/mob/O in viewers(src, null))
- if(O.client) O.show_message(text("\red The blob has stunned []!", src), 1)
- if(stat != 2) stat = 1
- temp.take_damage(damage)
- if ("groin")
- if ((((wear_suit && wear_suit.body_parts_covered & LOWER_TORSO) || (w_uniform && w_uniform.body_parts_covered & LOWER_TORSO)) && prob(75)))
- show_message("\red You have been protected from a hit to the lower chest.")
- return
- else
- temp.take_damage(damage, 0)
-
-
- if("l_arm")
- temp.take_damage(damage, 0)
- if("r_arm")
- temp.take_damage(damage, 0)
- if("l_hand")
- temp.take_damage(damage, 0)
- if("r_hand")
- temp.take_damage(damage, 0)
- if("l_leg")
- temp.take_damage(damage, 0)
- if("r_leg")
- temp.take_damage(damage, 0)
- if("l_foot")
- temp.take_damage(damage, 0)
- if("r_foot")
- temp.take_damage(damage, 0)
-
+ var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
+ var/datum/organ/external/affecting = get_organ(ran_zone(dam_zone))
+ apply_damage(rand(30,40), BRUTE, affecting, run_armor_check(affecting, "melee"))
UpdateDamageIcon()
return
@@ -1137,51 +1059,19 @@
*/
last_b_state = stat
-/mob/living/carbon/human/hand_p(mob/M as mob)//update needed
- if (M.a_intent == "hurt")
- if (istype(M.wear_mask, /obj/item/clothing/mask/muzzle))
- return
- if (health > 0)
- if (istype(wear_suit, /obj/item/clothing/suit/space))
- if (prob(25))
- for(var/mob/O in viewers(src, null))
- O.show_message(text("\red [M.name] has attempted to bite []!", src), 1)
- return
- else if (istype(wear_suit, /obj/item/clothing/suit/space/santa))
- if (prob(25))
- for(var/mob/O in viewers(src, null))
- O.show_message(text("\red [M.name] has attempted to bite []!", src), 1)
- return
- else if (istype(wear_suit, /obj/item/clothing/suit/bio_suit))
- if (prob(25))
- for(var/mob/O in viewers(src, null))
- O.show_message(text("\red [M.name] has attempted to bite []!", src), 1)
- return
- else if (istype(wear_suit, /obj/item/clothing/suit/armor))
- if (prob(25))
- for(var/mob/O in viewers(src, null))
- O.show_message(text("\red [M.name] has attempted to bite []!", src), 1)
- return
- else
- for(var/mob/O in viewers(src, null))
- if ((O.client && !( O.blinded )))
- O.show_message(text("\red [M.name] has bit []!", src), 1)
- var/damage = rand(1, 3)
- var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg", "groin")
- if (istype(organs[text("[]", dam_zone)], /datum/organ/external))
- var/datum/organ/external/temp = organs[text("[]", dam_zone)]
- if (temp.take_damage(damage, 0))
- UpdateDamageIcon()
- else
- UpdateDamage()
- updatehealth()
+/mob/living/carbon/human/hand_p(mob/M as mob)
+ var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
+ var/datum/organ/external/affecting = get_organ(ran_zone(dam_zone))
+ var/armor = run_armor_check(affecting, "melee")
+ apply_damage(rand(1,2), BRUTE, affecting, armor)
+ if(armor >= 2) return
- for(var/datum/disease/D in M.viruses)
- if(istype(D, /datum/disease/jungle_fever))
- var/mob/living/carbon/human/H = src
- src = null
- src = H.monkeyize()
- contract_disease(D,1,0)
+ for(var/datum/disease/D in M.viruses)
+ if(istype(D, /datum/disease/jungle_fever))
+ var/mob/living/carbon/human/H = src
+ src = null
+ src = H.monkeyize()
+ contract_disease(D,1,0)
return
@@ -1240,7 +1130,7 @@
if (stunned < power)
stunned = power
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm
index 0baebd8db5..44a868b80e 100644
--- a/code/modules/mob/living/carbon/human/human_attackhand.dm
+++ b/code/modules/mob/living/carbon/human/human_attackhand.dm
@@ -90,7 +90,6 @@
visible_message("\red [M] has weakened [src]!")
apply_effect(4, WEAKEN, armor_block)
UpdateDamageIcon()
- updatehealth()
if("disarm")
@@ -99,7 +98,7 @@
if(w_uniform)
w_uniform.add_fingerprint(M)
- var/datum/organ/external/affecting = organs[ran_zone(M.zone_sel.selecting)]
+ var/datum/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting))
var/randn = rand(1, 100)
if (randn <= 25)
apply_effect(2, WEAKEN, run_armor_check(affecting, "melee"))
diff --git a/code/modules/mob/living/carbon/human/human_attackpaw.dm b/code/modules/mob/living/carbon/human/human_attackpaw.dm
index 03b1e5f2cb..8d01ca3e8f 100644
--- a/code/modules/mob/living/carbon/human/human_attackpaw.dm
+++ b/code/modules/mob/living/carbon/human/human_attackpaw.dm
@@ -10,11 +10,9 @@
O.show_message(text("\red [M.name] has bit []!", src), 1)
var/damage = rand(1, 3)
- var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg", "groin")
+ var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
var/datum/organ/external/affecting = get_organ(ran_zone(dam_zone))
- var/armor_block = run_armor_check(affecting, "melee")
- apply_damage(damage, BRUTE, affecting, armor_block)
- UpdateDamageIcon()
+ apply_damage(damage, BRUTE, affecting, run_armor_check(affecting, "melee"))
for(var/datum/disease/D in M.viruses)
if(istype(D, /datum/disease/jungle_fever))
diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm
index e1a9a0d8ba..648947082e 100644
--- a/code/modules/mob/living/carbon/human/human_damage.dm
+++ b/code/modules/mob/living/carbon/human/human_damage.dm
@@ -29,20 +29,14 @@
body_lying = list()
UpdateDamage()
for(var/datum/organ/external/O in organs)
- if(istype(O, /datum/organ/external))
- var/icon/DI = new /icon('dam_human.dmi', O.damage_state) // the damage icon for whole human
- DI.Blend(new /icon('dam_mask.dmi', O.icon_name), ICON_MULTIPLY) // mask with this organ's pixels
-
- // world << "[O.icon_name] [O.damage_state] \icon[DI]"
-
- body_standing += DI
-
- DI = new /icon('dam_human.dmi', "[O.damage_state]-2") // repeat for lying icons
- DI.Blend(new /icon('dam_mask.dmi', "[O.icon_name]2"), ICON_MULTIPLY)
-
- // world << "[O.r_name]2 [O.d_i_state]-2 \icon[DI]"
-
- body_lying += DI
+ var/icon/DI = new /icon('dam_human.dmi', O.damage_state) // the damage icon for whole human
+ DI.Blend(new /icon('dam_mask.dmi', O.icon_name), ICON_MULTIPLY) // mask with this organ's pixels
+ // world << "[O.icon_name] [O.damage_state] \icon[DI]"
+ body_standing += DI
+ DI = new /icon('dam_human.dmi', "[O.damage_state]-2") // repeat for lying icons
+ DI.Blend(new /icon('dam_mask.dmi', "[O.icon_name]2"), ICON_MULTIPLY)
+ // world << "[O.r_name]2 [O.d_i_state]-2 \icon[DI]"
+ body_lying += DI
/mob/living/carbon/human/proc/get_organ(var/zone)
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index b77604049f..bf7922a094 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -28,9 +28,8 @@ emp_act
//If you don't specify a bodypart, it checks ALL your bodyparts for protection, and averages out the values
for(var/datum/organ/external/organ in organs)
- if(istype(organ))
- armorval += checkarmor(organ, type)
- organnum++
+ armorval += checkarmor(organ, type)
+ organnum++
return armorval/max(organnum, 1)
@@ -48,14 +47,15 @@ emp_act
/mob/living/carbon/human/proc/check_shields(var/damage = 0, var/attack_text = "the attack")
- var/list/hand_held_shields = list("/obj/item/weapon/shield/riot","/obj/item/weapon/melee/energy/sword")
- if(l_hand && is_type_in_list(l_hand, hand_held_shields))//Current base is the prob(50-d/3)
- if(prob(50 - round(damage / 3)))
- show_message("\red You block [attack_text] with your [l_hand.name]!", 4)
+ if(l_hand && istype(l_hand, /obj/item))//Current base is the prob(50-d/3)
+ var/obj/item/I = l_hand
+ if(I.IsShield() && (prob(50 - round(damage / 3))))
+ visible_message("\red [src] blocks [attack_text] with the [l_hand.name]!")
return 1
- if(r_hand && is_type_in_list(r_hand, hand_held_shields))
- if(prob(50 - round(damage / 3)))
- show_message("\red You block [attack_text] with your [l_hand.name]!", 4)
+ if(r_hand && istype(r_hand, /obj/item))
+ var/obj/item/I = r_hand
+ if(I.IsShield() && (prob(50 - round(damage / 3))))
+ visible_message("\red [src] blocks [attack_text] with the [r_hand.name]!")
return 1
return 0
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 7df5a83c22..3f4fa44ed3 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -257,7 +257,7 @@
if(!block)
- for(var/obj/effect/chem_smoke/smoke in view(1, src))
+ for(var/obj/effect/effect/chem_smoke/smoke in view(1, src))
if(smoke.reagents.total_volume)
smoke.reagents.reaction(src, INGEST)
spawn(5)
diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm
index eef527db42..5225b5d926 100644
--- a/code/modules/mob/living/carbon/monkey/life.dm
+++ b/code/modules/mob/living/carbon/monkey/life.dm
@@ -211,7 +211,7 @@
if(!block)
- for(var/obj/effect/chem_smoke/smoke in view(1, src))
+ for(var/obj/effect/effect/chem_smoke/smoke in view(1, src))
if(smoke.reagents.total_volume)
smoke.reagents.reaction(src, INGEST)
spawn(5)
diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm
index a51902cfaa..960e9f9104 100644
--- a/code/modules/mob/living/carbon/monkey/monkey.dm
+++ b/code/modules/mob/living/carbon/monkey/monkey.dm
@@ -364,7 +364,7 @@
if (stunned < power)
stunned = power
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index d7fc4ba07a..095dad7d64 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -22,12 +22,9 @@
return 0
var/mob/living/carbon/human/H = src //make this damage method divide the damage to be done among all the body parts, then burn each body part for that much damage. will have better effect then just randomly picking a body part
var/divided_damage = (burn_amount)/(H.organs.len)
- var/datum/organ/external/affecting = null
var/extradam = 0 //added to when organ is at max dam
- for(var/A in H.organs)
- if(!H.organs[A]) continue
- affecting = H.organs[A]
- if(!istype(affecting, /datum/organ/external)) continue
+ for(var/datum/organ/external/affecting in H.organs)
+ if(!affecting) continue
if(affecting.take_damage(0, divided_damage+extradam))
extradam = 0
else
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 26aeae9034..d7bd5c6d53 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -1,6 +1,6 @@
/mob/living/silicon/robot/New(loc,var/syndie = 0)
- spark_system = new /datum/effect/system/spark_spread()
+ spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src)
spark_system.attach(src)
spawn (1)
@@ -584,7 +584,7 @@
flick("noise", flash)
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index 260b384c78..444242f298 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -1,7 +1,8 @@
-mob/new_player
- var/datum/preferences/preferences
- var/ready = 0
- var/spawning = 0//Referenced when you want to delete the new_player later on in the code.
+/mob/new_player
+ var
+ datum/preferences/preferences = null
+ ready = 0
+ spawning = 0//Referenced when you want to delete the new_player later on in the code.
invisibility = 101
@@ -10,12 +11,8 @@ mob/new_player
canmove = 0
anchored = 1 // don't get pushed around
-// var/list/jobs_restricted_by_gamemode
Login()
- //Next line is commented out because seem it does nothing helpful and on the other hand it calls mob/new_player/Move() to EACH turf in the world. --rastaf0
- //..()
-
if(!preferences)
preferences = new
@@ -25,8 +22,10 @@ mob/new_player
mind.current = src
var/starting_loc = pick(newplayer_start)
+ if(!starting_loc) starting_loc = locate(1,1,1)
loc = starting_loc
sight |= SEE_TURFS
+
var/list/watch_locations = list()
for(var/obj/effect/landmark/landmark in world)
if(landmark.tag == "landmark*new_player")
@@ -103,38 +102,27 @@ mob/new_player
del(src)
return
- verb
- new_player_panel()
- set src = usr
- new_player_panel_proc()
-
- proc
+ verb/new_player_panel()
+ set src = usr
new_player_panel_proc()
- var/output = "New Player Options"
- /*output += " | Refresh
"
- output += "Name: [preferences.be_random_name ? "Random" :preferences.real_name]"*/
+ proc/new_player_panel_proc()
+ var/output = "New Player Options"
+ output +="
"
+ output += "
Setup Character
"
- output +="
"
+ if(!ticker || ticker.current_state <= GAME_STATE_PREGAME)
+ if(!ready) output += "Declare Ready
"
+ else output += "You are ready (Cancel)
"
- /*output += "Preferred jobs:
"
- output += "[preferences.occupation[1]]
"
- output += "[preferences.occupation[2]]
"
- output += "[preferences.occupation[3]]
"*/
+ else
+ output += "Join Game!
"
- output += "
Setup Character
"
- if(!ticker || ticker.current_state <= GAME_STATE_PREGAME)
- if(!ready)
- output += "Declare Ready
"
- else
- output += "You are ready (Cancel)
"
- else
- output += "Join Game!
"
+ output += "
Observe
"
- output += "
Observe
"
-
- src << browse(output,"window=playersetup;size=250x210;can_close=0")
+ src << browse(output,"window=playersetup;size=250x210;can_close=0")
+ return
Stat()
..()
@@ -203,93 +191,37 @@ mob/new_player
LateChoices()
if(href_list["SelectedJob"])
- if (!usr.client.authenticated)
+ if(!usr.client.authenticated)
src << "You are not authorized to enter the game."
return
- if (!enter_allowed)
+ if(!enter_allowed)
usr << "\blue There is an administrative lock on entering the game!"
return
- switch(href_list["SelectedJob"])
- if ("1")
- AttemptLateSpawn("Captain")
- if ("2")
- AttemptLateSpawn("Head of Security")
- if ("3")
- AttemptLateSpawn("Head of Personnel")
- if ("4")
- AttemptLateSpawn("Station Engineer")
- if ("5")
- AttemptLateSpawn("Bartender")
- if ("6")
- AttemptLateSpawn("Scientist")
- if ("7")
- AttemptLateSpawn("Chemist")
- if ("8")
- AttemptLateSpawn("Geneticist")
- if ("9")
- AttemptLateSpawn("Security Officer")
- if ("10")
- AttemptLateSpawn("Medical Doctor")
- if ("11")
- AttemptLateSpawn("Atmospheric Technician")
- if ("12")
- AttemptLateSpawn("Detective")
- if ("13")
- AttemptLateSpawn("Chaplain")
- if ("14")
- AttemptLateSpawn("Janitor")
- if ("15")
- AttemptLateSpawn("Clown")
- if ("16")
- AttemptLateSpawn("Chef")
- if ("17")
- AttemptLateSpawn("Roboticist")
- if ("18")
- AttemptLateSpawn("Assistant")
- if ("19")
- AttemptLateSpawn("Quartermaster")
- if ("20")
- AttemptLateSpawn("Research Director")
- if ("21")
- AttemptLateSpawn("Chief Engineer")
- if ("22")
- AttemptLateSpawn("Botanist")
- if ("23")
- AttemptLateSpawn("Librarian")
- if ("24")
- AttemptLateSpawn("Virologist")
- if ("25")
- AttemptLateSpawn("Lawyer")
- if ("26")
- AttemptLateSpawn("Cargo Technician")
- if ("27")
- AttemptLateSpawn("Chief Medical Officer")
- if ("28")
- AttemptLateSpawn("Warden")
- if ("29")
- AttemptLateSpawn("Shaft Miner")
- if ("30")
- AttemptLateSpawn("Mime")
+ AttemptLateSpawn(href_list["SelectedJob"])
+ return
if(!ready && href_list["preferences"])
preferences.process_link(src, href_list)
else if(!href_list["late_join"])
new_player_panel()
- proc/IsJobAvailable(rank)
- if(((jobMax[rank] < 0) || (countJob(rank) < jobMax[rank])) && !jobban_isbanned(src,rank))
+
+/* proc/IsJobAvailable(rank)
+ if(((occupations[rank] < 0) || (countJob(rank) < occupations[rank])) && !jobban_isbanned(src,rank))
return 1
else
- return 0
+ return 0*/
- proc/AttemptLateSpawn(rank, maxAllowed)
- if(IsJobAvailable(rank, maxAllowed))
+
+ proc/AttemptLateSpawn(rank)
+ var/datum/job/job = job_master.GetJob(rank)
+ if(job && ((job.title == "Assistant") || (job.current_positions < job.total_positions)))
var/mob/living/carbon/human/character = create_character()
var/icon/char_icon = getFlatIcon(character,0)//We're creating out own cache so it's not needed.
- if (character)
- character.Equip_Rank(rank, joined_late=1)
+ if(job_master.AssignRole(character, rank, 1))
+ job_master.EquipRank(character, rank, 1)
if(character.mind)
if(character.mind.assigned_role != "Cyborg")
ManifestLateSpawn(character,char_icon)
@@ -305,6 +237,7 @@ mob/new_player
else
src << alert("[rank] is not available. Please try another.")
+
proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank)
if (ticker.current_state == GAME_STATE_PLAYING)
var/ailist[] = list()
@@ -336,7 +269,7 @@ mob/new_player
M.fields["id"] = G.fields["id"]
S.fields["name"] = G.fields["name"]
S.fields["id"] = G.fields["id"]
- if (H.gender == FEMALE)
+ if(H.gender == FEMALE)
G.fields["sex"] = "Female"
else
G.fields["sex"] = "Male"
@@ -381,102 +314,17 @@ mob/new_player
data_core.locked += L
return
-// This fxn creates positions for assistants based on existing positions. This could be more elegant.
+
proc/LateChoices()
var/dat = ""
dat += "Choose from the following open positions:
"
- if (IsJobAvailable("Captain"))
- dat += "Captain
"
-
- if (IsJobAvailable("Head of Security"))
- dat += "Head of Security
"
-
- if (IsJobAvailable("Head of Personnel"))
- dat += "Head of Personnel
"
-
- if (IsJobAvailable("Research Director"))
- dat += "Research Director
"
-
- if (IsJobAvailable("Chief Engineer"))
- dat += "Chief Engineer
"
-
- if (IsJobAvailable("Station Engineer"))
- dat += "Station Engineer
"
-
- if (IsJobAvailable("Bartender"))
- dat += "Bartender
"
-
- if (IsJobAvailable("Scientist"))
- dat += "Scientist
"
-
- if (IsJobAvailable("Chemist"))
- dat += "Chemist
"
-
- if (IsJobAvailable("Geneticist"))
- dat += "Geneticist
"
-
- if (IsJobAvailable("Security Officer"))
- dat += "Security Officer
"
-
- if (IsJobAvailable("Medical Doctor"))
- dat += "Medical Doctor
"
-
- if (IsJobAvailable("Atmospheric Technician"))
- dat += "Atmospheric Technician
"
-
- if (IsJobAvailable("Detective"))
- dat += "Detective
"
-
- if (IsJobAvailable("Chaplain"))
- dat += "Chaplain
"
-
- if (IsJobAvailable("Janitor"))
- dat += "Janitor
"
-
- if (IsJobAvailable("Clown"))
- dat += "Clown
"
-
- if (IsJobAvailable("Mime"))
- dat += "Mime
"
-
- if (IsJobAvailable("Chef"))
- dat += "Chef
"
-
- if (IsJobAvailable("Roboticist"))
- dat += "Roboticist
"
-
- if (IsJobAvailable("Quartermaster"))
- dat += "Quartermaster
"
-
- if (IsJobAvailable("Botanist"))
- dat += "Botanist
"
-
- if (IsJobAvailable("Librarian"))
- dat += "Librarian
"
-
- if (IsJobAvailable("Virologist"))
- dat += "Virologist
"
-
- if (IsJobAvailable("Lawyer"))
- dat += "Lawyer
"
-
- if (IsJobAvailable("Cargo Technician"))
- dat += "Cargo Technician
"
-
- if (IsJobAvailable("Chief Medical Officer"))
- dat += "Chief Medical Officer
"
-
- if (IsJobAvailable("Warden"))
- dat += "Warden
"
-
- if (IsJobAvailable("Shaft Miner"))
- dat += "Shaft Miner
"
-
- if (!jobban_isbanned(src,"Assistant"))
- dat += "Assistant
"
+ for(var/datum/job/job in job_master.occupations)
+ if(job && ((job.title == "Assistant") || (job.current_positions < job.total_positions)))
+ dat += "[job.title]
"
src << browse(dat, "window=latechoices;size=300x640;can_close=0")
+
proc/create_character()
spawning = 1
var/mob/living/carbon/human/new_character = new(loc)
@@ -489,9 +337,9 @@ mob/new_player
mind.transfer_to(new_character)
mind.original = new_character
-
return new_character
+
Move()
return 0
diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm
index 32556a78d6..ad634bade4 100644
--- a/code/modules/mob/new_player/preferences.dm
+++ b/code/modules/mob/new_player/preferences.dm
@@ -28,354 +28,83 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set
"infested monkey" = ispath(text2path("/datum/game_mode/monkey")),
)
*/
+var/const
+ BE_TRAITOR =(1<<0)
+ BE_OPERATIVE =(1<<1)
+ BE_CHANGELING=(1<<2)
+ BE_WIZARD =(1<<3)
+ BE_MALF =(1<<4)
+ BE_REV =(1<<5)
+ BE_ALIEN =(1<<6)
+ BE_CULTIST =(1<<7)
+ BE_MONKEY =(1<<8)
+ BE_PAI =(1<<9)
datum/preferences
- var/real_name
- var/gender = MALE
- var/age = 30.0
- var/b_type = "A+"
+ var
+ real_name
+ be_random_name = 0
+ gender = MALE
+ age = 30.0
+ b_type = "A+"
- var/be_special //bitfields. See defines in setup.dm. --rastaf0
- var/midis = 1
- var/lastchangelog = 0 // size of last seen changelog file -- rastaf0
- var/ooccolor = "#b82e00"
- var/be_random_name = 0
- var/underwear = 1
- var/bubbles = 0 // 0 if the player doesn't want bubbles to appear
+ //Special role selection
+ be_special = 0
+ //Play admin midis
+ midis = 1
+ //Saved changlog filesize to detect if there was a change
+ lastchangelog = 0
- var/occupation[length(occupations)]
- var/datum/jobs/wanted_jobs = list()
+ //Just like it sounds
+ ooccolor = "#b82e00"
+ underwear = 1
- var/h_style = "Short Hair"
- var/f_style = "Shaved"
+ //Hair type
+ h_style = "Short Hair"
+ //Hair color
+ r_hair = 0
+ g_hair = 0
+ b_hair = 0
- var/r_hair = 0
- var/g_hair = 0
- var/b_hair = 0
+ //Face hair type
+ f_style = "Shaved"
+ //Face hair color
+ r_facial = 0
+ g_facial = 0
+ b_facial = 0
- var/r_facial = 0
- var/g_facial = 0
- var/b_facial = 0
+ //Skin color
+ s_tone = 0
- var/s_tone = 0
- var/r_eyes = 0
- var/g_eyes = 0
- var/b_eyes = 0
+ //Eye color
+ r_eyes = 0
+ g_eyes = 0
+ b_eyes = 0
- var/UI = UI_OLD // saving the whole .DMI in preferences is not a good idea. --rastaf0 //'screen1_old.dmi' // Skie
+ //UI style
+ UI = UI_OLD
+
+ //Mob preview
+ icon/preview_icon = null
+
+ //Jobs, uses bitflags
+ job_civilian_high = 0
+ job_civilian_med = 0
+ job_civilian_low = 0
+
+ job_medsci_high = 0
+ job_medsci_med = 0
+ job_medsci_low = 0
+
+ job_engsec_high = 0
+ job_engsec_med = 0
+ job_engsec_low = 0
- var/icon/preview_icon = null
New()
randomize_name()
- for(var/n in occupation)
- n=0
..()
- //The mob should have a gender you want before running this proc.
- proc/randomize_appearance_for(var/mob/living/carbon/human/H)
- if(H.gender == MALE)
- gender = MALE
- else
- gender = FEMALE
- randomize_skin_tone()
- randomize_hair(gender)
- randomize_hair_color("hair")
- if(gender == MALE)//only for dudes.
- randomize_facial()
- randomize_hair_color("facial")
- randomize_eyes_color()
- underwear = pick(0,1)
- b_type = pick("A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-")
- age = rand(19,35)
- copy_to(H,1)
-
- proc/randomize_name()
- if (gender == MALE)
- real_name = capitalize(pick(first_names_male) + " " + capitalize(pick(last_names)))
- else
- real_name = capitalize(pick(first_names_female) + " " + capitalize(pick(last_names)))
-
- proc/randomize_hair(var/gender)
- //Women are more likely to have longer hair.
- var/temp = gender==FEMALE&&prob(80) ? pick(2,6,8) : rand(1,9)
- switch(temp)
- if(1)
- h_style = "Short Hair"
- if(2)
- h_style = "Long Hair"
- if(3)
- h_style = "Cut Hair"
- if(4)
- h_style = "Mohawk"
- if(5)
- h_style = "Balding"
- if(6)
- h_style = "Fag"
- if(7)
- h_style = "Bedhead"
- if(8)
- h_style = "Dreadlocks"
- else
- h_style = "bald"
-
- proc/randomize_facial()
- var/temp = prob(50) ? 14 : rand(1,13)//50% of not having a beard. Otherwise get a random one.
- switch(temp)
- if(1)
- f_style = "Watson"
- if(2)
- f_style = "Chaplin"
- if(3)
- f_style = "Selleck"
- if(4)
- f_style = "Neckbeard"
- if(5)
- f_style = "Full Beard"
- if(6)
- f_style = "Long Beard"
- if(7)
- f_style = "Van Dyke"
- if(8)
- f_style = "Elvis"
- if(9)
- f_style = "Abe"
- if(10)
- f_style = "Chinstrap"
- if(11)
- f_style = "Hipster"
- if(12)
- f_style = "Goatee"
- if(13)
- f_style = "Hogan"
- else
- f_style = "bald"
-
- proc/randomize_skin_tone()
- var/tone
-
- var/tmp = pickweight ( list ("caucasian" = 55, "afroamerican" = 15, "african" = 10, "latino" = 10, "albino" = 5, "weird" = 5))
- switch (tmp)
- if ("caucasian")
- tone = -45 + 35
- if ("afroamerican")
- tone = -150 + 35
- if ("african")
- tone = -200 + 35
- if ("latino")
- tone = -90 + 35
- if ("albino")
- tone = -1 + 35
- if ("weird")
- tone = -(rand (1, 220)) + 35
-
- s_tone = min(max(tone + rand (-25, 25), -185), 34)
-
- proc/randomize_hair_color(var/target = "hair")
- if (prob (75) && target == "facial") // Chance to inherit hair color
- r_facial = r_hair
- g_facial = g_hair
- b_facial = b_hair
- return
-
- var/red
- var/green
- var/blue
-
- var/col = pick ("blonde", "black", "chestnut", "copper", "brown", "wheat", "old", "punk")
- switch (col)
- if ("blonde")
- red = 255
- green = 255
- blue = 0
- if ("black")
- red = 0
- green = 0
- blue = 0
- if ("chestnut")
- red = 153
- green = 102
- blue = 51
- if ("copper")
- red = 255
- green = 153
- blue = 0
- if ("brown")
- red = 102
- green = 51
- blue = 0
- if ("wheat")
- red = 255
- green = 255
- blue = 153
- if ("old")
- red = rand (100, 255)
- green = red
- blue = red
- if ("punk")
- red = rand (0, 255)
- green = rand (0, 255)
- blue = rand (0, 255)
-
- red = max(min(red + rand (-25, 25), 255), 0)
- green = max(min(green + rand (-25, 25), 255), 0)
- blue = max(min(blue + rand (-25, 25), 255), 0)
-
- switch (target)
- if ("hair")
- r_hair = red
- g_hair = green
- b_hair = blue
- if ("facial")
- r_facial = red
- g_facial = green
- b_facial = blue
-
- proc/randomize_eyes_color()
- var/red
- var/green
- var/blue
-
- var/col = pick ("black", "grey", "brown", "chestnut", "blue", "lightblue", "green", "albino", "weird")
- switch (col)
- if ("black")
- red = 0
- green = 0
- blue = 0
- if ("grey")
- red = rand (100, 200)
- green = red
- blue = red
- if ("brown")
- red = 102
- green = 51
- blue = 0
- if ("chestnut")
- red = 153
- green = 102
- blue = 0
- if ("blue")
- red = 51
- green = 102
- blue = 204
- if ("lightblue")
- red = 102
- green = 204
- blue = 255
- if ("green")
- red = 0
- green = 102
- blue = 0
- if ("albino")
- red = rand (200, 255)
- green = rand (0, 150)
- blue = rand (0, 150)
- if ("weird")
- red = rand (0, 255)
- green = rand (0, 255)
- blue = rand (0, 255)
-
- red = max(min(red + rand (-25, 25), 255), 0)
- green = max(min(green + rand (-25, 25), 255), 0)
- blue = max(min(blue + rand (-25, 25), 255), 0)
-
- r_eyes = red
- g_eyes = green
- b_eyes = blue
-
- proc/update_preview_icon()
- del(preview_icon)
-
- var/g = "m"
- if (gender == MALE)
- g = "m"
- else if (gender == FEMALE)
- g = "f"
-
- preview_icon = new /icon('human.dmi', "body_[g]_s")
-
- // Skin tone
- if (s_tone >= 0)
- preview_icon.Blend(rgb(s_tone, s_tone, s_tone), ICON_ADD)
- else
- preview_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT)
-
- if (underwear > 0)
- preview_icon.Blend(new /icon('human.dmi', "underwear[underwear]_[g]_s"), ICON_OVERLAY)
-
- var/icon/eyes_s = new/icon("icon" = 'human_face.dmi', "icon_state" = "eyes_s")
- eyes_s.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD)
-
- var/h_style_r = null
- switch(h_style)
- if("Short Hair")
- h_style_r = "hair_a"
- if("Long Hair")
- h_style_r = "hair_b"
- if("Cut Hair")
- h_style_r = "hair_c"
- if("Mohawk")
- h_style_r = "hair_d"
- if("Balding")
- h_style_r = "hair_e"
- if("Fag")
- h_style_r = "hair_f"
- if("Bedhead")
- h_style_r = "hair_bedhead"
- if("Dreadlocks")
- h_style_r = "hair_dreads"
- else
- h_style_r = "bald"
-
- var/f_style_r = null
- switch(f_style)
- if ("Watson")
- f_style_r = "facial_watson"
- if ("Chaplin")
- f_style_r = "facial_chaplin"
- if ("Selleck")
- f_style_r = "facial_selleck"
- if ("Neckbeard")
- f_style_r = "facial_neckbeard"
- if ("Full Beard")
- f_style_r = "facial_fullbeard"
- if ("Long Beard")
- f_style_r = "facial_longbeard"
- if ("Van Dyke")
- f_style_r = "facial_vandyke"
- if ("Elvis")
- f_style_r = "facial_elvis"
- if ("Abe")
- f_style_r = "facial_abe"
- if ("Chinstrap")
- f_style_r = "facial_chin"
- if ("Hipster")
- f_style_r = "facial_hip"
- if ("Goatee")
- f_style_r = "facial_gt"
- if ("Hogan")
- f_style_r = "facial_hogan"
- else
- f_style_r = "bald"
-
- var/icon/hair_s = new/icon("icon" = 'human_face.dmi', "icon_state" = "[h_style_r]_s")
- hair_s.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD)
-
- var/icon/facial_s = new/icon("icon" = 'human_face.dmi', "icon_state" = "[f_style_r]_s")
- facial_s.Blend(rgb(r_facial, g_facial, b_facial), ICON_ADD)
-
- var/icon/mouth_s = new/icon("icon" = 'human_face.dmi', "icon_state" = "mouth_[g]_s")
-
- eyes_s.Blend(hair_s, ICON_OVERLAY)
- eyes_s.Blend(mouth_s, ICON_OVERLAY)
- eyes_s.Blend(facial_s, ICON_OVERLAY)
-
- preview_icon.Blend(eyes_s, ICON_OVERLAY)
-
- del(mouth_s)
- del(facial_s)
- del(hair_s)
- del(eyes_s)
proc/ShowChoices(mob/user)
update_preview_icon()
@@ -394,7 +123,6 @@ datum/preferences
dat += "
"
dat += "UI Style: [UI == UI_NEW ? "New" : "Old"]
"
dat += "Play admin midis: [midis == 1 ? "Yes" : "No"]
"
- //dat += "Show chat bubbles: [bubbles == 1 ? "Yes" : "No"]
"
if((user.client) && (user.client.holder) && (user.client.holder.rank) && (user.client.holder.rank == "Game Master"))
dat += "
OOC
"
@@ -440,7 +168,7 @@ datum/preferences
src.be_special = 0
dat += "
"
- if (!IsGuestKey(user.key))
+ if(!IsGuestKey(user.key))
dat += "Load Setup
"
dat += "Save Setup
"
@@ -453,38 +181,35 @@ datum/preferences
var/HTML = ""
HTML += ""
HTML += "Choose occupation chances
Unavailable occupations are in red.
"
- for(var/job in occupations)
- if(!occupation[job])
- occupation[job] = 0
- if(jobban_isbanned(user, job))
- HTML += "[job]
"
+ for(var/datum/job/job in job_master.occupations)
+ var/rank = job.title
+ if(jobban_isbanned(user, rank))
+ HTML += "[rank]
"
continue
- if((occupation["Assistant"] != 0) && (job != "Assistant"))
- HTML += "[job]
"
+ if((job_civilian_low & ASSISTANT) && (rank != "Assistant"))
+ HTML += "[rank]
"
continue
- if((job in command_positions) || (job == "AI"))//Bold head jobs
- HTML += "[job]"
+ if((rank in command_positions) || (rank == "AI"))//Bold head jobs
+ HTML += "[rank]"
else
- HTML += "[job]"
+ HTML += "[rank]"
- if(job == "Assistant")//Assistant is special
- if(occupation[job] != 0)
+ if(rank == "Assistant")//Assistant is special
+ if(job_civilian_low & ASSISTANT)
HTML += "\[Yes]"
else
HTML += "\[No]"
HTML += "
"
continue
- switch(occupation[job])
- if(0)
- HTML += "\[NEVER]"
- if(1)
- HTML += "\[High]"
- if(2)
- HTML += "\[Medium]"
- if(3)
- HTML += "\[Low]"
- else HTML += "*"+occupation[job]+"*"
+ if(GetJobDepartment(job, 1) & job.flag)
+ HTML += "\[High]"
+ else if(GetJobDepartment(job, 2) & job.flag)
+ HTML += "\[Medium]"
+ else if(GetJobDepartment(job, 3) & job.flag)
+ HTML += "\[Low]"
+ else
+ HTML += "\[NEVER]"
HTML += "
"
HTML += "
"
@@ -495,37 +220,118 @@ datum/preferences
user << browse(HTML, "window=mob_occupation;size=320x600")
return
- proc/SetJob(mob/user, job="Captain")
- if((!(occupations.Find(job)) && !(assistant_occupations.Find(job)) && (job != "No Preference")))
+
+ proc/SetJob(mob/user, role)
+ var/datum/job/job = job_master.GetJob(role)
+ if(!job)
user << browse(null, "window=mob_occupation")
ShowChoices(user)
return
- if(job == "Assistant")
- if(occupation[job] == 0)
- occupation[job] = 4
+ if(role == "Assistant")
+ if(job_civilian_low & job.flag)
+ job_civilian_low &= ~job.flag
else
- occupation[job] = 0
+ job_civilian_low |= job.flag
SetChoices(user)
return 1
- if(occupation[job] == 2)//Only one job may be set to "High"
- for(var/j in occupation)
- if(occupation[j] == 1)
- occupation[j] = 2
-
- occupation[job] = (occupation[job]-1)
- if(occupation[job] < 0)
- occupation[job] = 3
+ if(GetJobDepartment(job, 1) & job.flag)
+ SetJobDepartment(job, 1)
+ else if(GetJobDepartment(job, 2) & job.flag)
+ SetJobDepartment(job, 2)
+ else if(GetJobDepartment(job, 3) & job.flag)
+ SetJobDepartment(job, 3)
+ else//job = Never
+ SetJobDepartment(job, 4)
SetChoices(user)
-
return 1
- proc/process_link(mob/user, list/link_tags)
- if (link_tags["occ"])
- if (link_tags["cancel"])
+ proc/GetJobDepartment(var/datum/job/job, var/level)
+ if(!job || !level) return 0
+ switch(job.department_flag)
+ if(CIVILIAN)
+ switch(level)
+ if(1)
+ return job_civilian_high
+ if(2)
+ return job_civilian_med
+ if(3)
+ return job_civilian_low
+ if(MEDSCI)
+ switch(level)
+ if(1)
+ return job_medsci_high
+ if(2)
+ return job_medsci_med
+ if(3)
+ return job_medsci_low
+ if(ENGSEC)
+ switch(level)
+ if(1)
+ return job_engsec_high
+ if(2)
+ return job_engsec_med
+ if(3)
+ return job_engsec_low
+ return 0
+
+
+ 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
+ job_civilian_high = 0
+ job_medsci_high = 0
+ job_engsec_high = 0
+ return 1
+ if(2)//Set current highs to med, then reset them
+ job_civilian_med |= job_civilian_high
+ job_medsci_med |= job_medsci_high
+ job_engsec_med |= job_engsec_high
+ job_civilian_high = 0
+ job_medsci_high = 0
+ job_engsec_high = 0
+
+ switch(job.department_flag)
+ if(CIVILIAN)
+ switch(level)
+ if(2)
+ job_civilian_high = job.flag
+ job_civilian_med &= ~job.flag
+ if(3)
+ job_civilian_med |= job.flag
+ job_civilian_low &= ~job.flag
+ else
+ job_civilian_low |= job.flag
+ if(MEDSCI)
+ switch(level)
+ if(2)
+ job_medsci_high = job.flag
+ job_medsci_med &= ~job.flag
+ if(3)
+ job_medsci_med |= job.flag
+ job_medsci_low &= ~job.flag
+ else
+ job_medsci_low |= job.flag
+ if(ENGSEC)
+ switch(level)
+ if(2)
+ job_engsec_high = job.flag
+ job_engsec_med &= ~job.flag
+ if(3)
+ job_engsec_med |= job.flag
+ job_engsec_low &= ~job.flag
+ else
+ job_engsec_low |= job.flag
+ return 1
+
+
+ proc/process_link(mob/user, list/link_tags)
+ if(link_tags["occ"])
+ if(link_tags["cancel"])
user << browse(null, "window=\ref[user]occupation")
return
else if(link_tags["job"])
@@ -535,7 +341,7 @@ datum/preferences
return 1
- if (link_tags["real_name"])
+ if(link_tags["real_name"])
var/new_name
switch(link_tags["real_name"])
@@ -556,135 +362,132 @@ datum/preferences
new_name = copytext(new_name, 1, 26)
real_name = new_name
- if (link_tags["age"])
+ if(link_tags["age"])
switch(link_tags["age"])
- if ("input")
+ if("input")
var/new_age = input(user, "Please select type in age: 20-45", "Character Generation") as num
if(new_age)
age = max(min(round(text2num(new_age)), 45), 20)
- if ("random")
+ if("random")
age = rand (20, 45)
- if (link_tags["b_type"])
+ if(link_tags["b_type"])
switch(link_tags["b_type"])
- if ("input")
+ if("input")
var/new_b_type = input(user, "Please select a blood type:", "Character Generation") as null|anything in list( "A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-" )
- if (new_b_type)
+ if(new_b_type)
b_type = new_b_type
- if ("random")
+ if("random")
b_type = pickweight ( list ("A+" = 31, "A-" = 7, "B+" = 8, "B-" = 2, "AB+" = 2, "AB-" = 1, "O+" = 40, "O-" = 9))
- if (link_tags["hair"])
+ if(link_tags["hair"])
switch(link_tags["hair"])
- if ("input")
+ if("input")
var/new_hair = input(user, "Please select hair color.", "Character Generation") as color
if(new_hair)
r_hair = hex2num(copytext(new_hair, 2, 4))
g_hair = hex2num(copytext(new_hair, 4, 6))
b_hair = hex2num(copytext(new_hair, 6, 8))
- if ("random")
+ if("random")
randomize_hair_color("hair")
- if (link_tags["facial"])
+ if(link_tags["facial"])
switch(link_tags["facial"])
- if ("input")
+ if("input")
var/new_facial = input(user, "Please select facial hair color.", "Character Generation") as color
if(new_facial)
r_facial = hex2num(copytext(new_facial, 2, 4))
g_facial = hex2num(copytext(new_facial, 4, 6))
b_facial = hex2num(copytext(new_facial, 6, 8))
- if ("random")
+ if("random")
randomize_hair_color("facial")
- if (link_tags["eyes"])
+ if(link_tags["eyes"])
switch(link_tags["eyes"])
- if ("input")
+ if("input")
var/new_eyes = input(user, "Please select eye color.", "Character Generation") as color
if(new_eyes)
r_eyes = hex2num(copytext(new_eyes, 2, 4))
g_eyes = hex2num(copytext(new_eyes, 4, 6))
b_eyes = hex2num(copytext(new_eyes, 6, 8))
- if ("random")
+ if("random")
randomize_eyes_color()
- if (link_tags["s_tone"])
+ if(link_tags["s_tone"])
switch(link_tags["s_tone"])
- if ("random")
+ if("random")
randomize_skin_tone()
if("input")
var/new_tone = input(user, "Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation") as text
- if (new_tone)
+ if(new_tone)
s_tone = max(min(round(text2num(new_tone)), 220), 1)
s_tone = -s_tone + 35
- if (link_tags["h_style"])
+ if(link_tags["h_style"])
switch(link_tags["h_style"])
- if ("random")
- if (gender == FEMALE)
+ if("random")
+ if(gender == FEMALE)
h_style = pickweight ( list ("Cut Hair" = 5, "Short Hair" = 5, "Long Hair" = 5, "Mohawk" = 5, "Balding" = 1, "Fag" = 5, "Bedhead" = 5, "Dreadlocks" = 5, "Bald" = 5))
else
h_style = pickweight ( list ("Cut Hair" = 5, "Short Hair" = 5, "Long Hair" = 5, "Mohawk" = 5, "Balding" = 5, "Fag" = 5, "Bedhead" = 5, "Dreadlocks" = 5, "Bald" = 5))
if("input")
var/new_style = input(user, "Please select hair style", "Character Generation") as null|anything in list( "Cut Hair", "Short Hair", "Long Hair", "Mohawk", "Balding", "Fag", "Bedhead", "Dreadlocks", "Bald" )
- if (new_style)
+ if(new_style)
h_style = new_style
- if (link_tags["ooccolor"])
+ if(link_tags["ooccolor"])
var/ooccolor = input(user, "Please select OOC colour.", "OOC colour") as color
if(ooccolor)
src.ooccolor = ooccolor
- if (link_tags["f_style"])
+ if(link_tags["f_style"])
switch(link_tags["f_style"])
- if ("random")
- if (gender == FEMALE)
+ if("random")
+ if(gender == FEMALE)
f_style = pickweight ( list("Watson" = 1, "Chaplin" = 1, "Selleck" = 1, "Full Beard" = 1, "Long Beard" = 1, "Neckbeard" = 1, "Van Dyke" = 1, "Elvis" = 1, "Abe" = 1, "Chinstrap" = 1, "Hipster" = 1, "Goatee" = 1, "Hogan" = 1, "Shaved" = 100))
else
f_style = pickweight ( list("Watson" = 1, "Chaplin" = 1, "Selleck" = 1, "Full Beard" = 1, "Long Beard" = 1, "Neckbeard" = 1, "Van Dyke" = 1, "Elvis" = 1, "Abe" = 1, "Chinstrap" = 1, "Hipster" = 1, "Goatee" = 1, "Hogan" = 1, "Shaved" = 10))
if("input")
var/new_style = input(user, "Please select facial style", "Character Generation") as null|anything in list("Watson", "Chaplin", "Selleck", "Full Beard", "Long Beard", "Neckbeard", "Van Dyke", "Elvis", "Abe", "Chinstrap", "Hipster", "Goatee", "Hogan", "Shaved")
- if (new_style)
+ if(new_style)
f_style = new_style
- if (link_tags["gender"])
- if (gender == MALE)
+ if(link_tags["gender"])
+ if(gender == MALE)
gender = FEMALE
else
gender = MALE
- if (link_tags["UI"])
- if (UI == UI_OLD)
+ if(link_tags["UI"])
+ if(UI == UI_OLD)
UI = UI_NEW
else
UI = UI_OLD
- if (link_tags["midis"])
+ if(link_tags["midis"])
midis = (midis+1)%2
- if (link_tags["bubbles"])
- bubbles = !bubbles
-
- if (link_tags["underwear"])
+ if(link_tags["underwear"])
if(!IsGuestKey(user.key))
switch(link_tags["underwear"])
- if ("random")
- if (prob (75))
+ if("random")
+ if(prob (75))
underwear = 1
else
underwear = 0
if("input")
- if (underwear == 1)
+ if(underwear == 1)
underwear = 0
else
underwear = 1
- if (link_tags["be_special"])
+ if(link_tags["be_special"])
src.be_special^=(1<= 0)
+ preview_icon.Blend(rgb(s_tone, s_tone, s_tone), ICON_ADD)
+ else
+ preview_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT)
+
+ if (underwear > 0)
+ preview_icon.Blend(new /icon('human.dmi', "underwear[underwear]_[g]_s"), ICON_OVERLAY)
+
+ var/icon/eyes_s = new/icon("icon" = 'human_face.dmi', "icon_state" = "eyes_s")
+ eyes_s.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD)
+
+ var/h_style_r = null
+ switch(h_style)
+ if("Short Hair")
+ h_style_r = "hair_a"
+ if("Long Hair")
+ h_style_r = "hair_b"
+ if("Cut Hair")
+ h_style_r = "hair_c"
+ if("Mohawk")
+ h_style_r = "hair_d"
+ if("Balding")
+ h_style_r = "hair_e"
+ if("Fag")
+ h_style_r = "hair_f"
+ if("Bedhead")
+ h_style_r = "hair_bedhead"
+ if("Dreadlocks")
+ h_style_r = "hair_dreads"
+ else
+ h_style_r = "bald"
+
+ var/f_style_r = null
+ switch(f_style)
+ if ("Watson")
+ f_style_r = "facial_watson"
+ if ("Chaplin")
+ f_style_r = "facial_chaplin"
+ if ("Selleck")
+ f_style_r = "facial_selleck"
+ if ("Neckbeard")
+ f_style_r = "facial_neckbeard"
+ if ("Full Beard")
+ f_style_r = "facial_fullbeard"
+ if ("Long Beard")
+ f_style_r = "facial_longbeard"
+ if ("Van Dyke")
+ f_style_r = "facial_vandyke"
+ if ("Elvis")
+ f_style_r = "facial_elvis"
+ if ("Abe")
+ f_style_r = "facial_abe"
+ if ("Chinstrap")
+ f_style_r = "facial_chin"
+ if ("Hipster")
+ f_style_r = "facial_hip"
+ if ("Goatee")
+ f_style_r = "facial_gt"
+ if ("Hogan")
+ f_style_r = "facial_hogan"
+ else
+ f_style_r = "bald"
+
+ var/icon/hair_s = new/icon("icon" = 'human_face.dmi', "icon_state" = "[h_style_r]_s")
+ hair_s.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD)
+
+ var/icon/facial_s = new/icon("icon" = 'human_face.dmi', "icon_state" = "[f_style_r]_s")
+ facial_s.Blend(rgb(r_facial, g_facial, b_facial), ICON_ADD)
+
+ var/icon/mouth_s = new/icon("icon" = 'human_face.dmi', "icon_state" = "mouth_[g]_s")
+
+ eyes_s.Blend(hair_s, ICON_OVERLAY)
+ eyes_s.Blend(mouth_s, ICON_OVERLAY)
+ eyes_s.Blend(facial_s, ICON_OVERLAY)
+
+ preview_icon.Blend(eyes_s, ICON_OVERLAY)
+
+ del(mouth_s)
+ del(facial_s)
+ del(hair_s)
+ del(eyes_s)
\ No newline at end of file
diff --git a/code/modules/mob/new_player/savefile.dm b/code/modules/mob/new_player/savefile.dm
index 744f436443..1b6561052f 100644
--- a/code/modules/mob/new_player/savefile.dm
+++ b/code/modules/mob/new_player/savefile.dm
@@ -1,5 +1,5 @@
-#define SAVEFILE_VERSION_MIN 2
-#define SAVEFILE_VERSION_MAX 3
+#define SAVEFILE_VERSION_MIN 3
+#define SAVEFILE_VERSION_MAX 4
datum/preferences/proc/savefile_path(mob/user)
return "data/player_saves/[copytext(user.ckey, 1, 2)]/[user.ckey]/preferences.sav"
@@ -9,25 +9,31 @@ datum/preferences/proc/savefile_save(mob/user)
return 0
var/savefile/F = new /savefile(src.savefile_path(user))
- var/version
- F["version"] >> version
-
- if (!isnull(version) && version<=2)
- F["be_syndicate"] << null
- F["be_alien"] << null
- F["UI"] << null
+// var/version
+// F["version"] >> version
F["version"] << SAVEFILE_VERSION_MAX
F["real_name"] << src.real_name
+ F["name_is_always_random"] << src.be_random_name
+
F["gender"] << src.gender
F["age"] << src.age
- for(var/job in uniquelist(occupations + assistant_occupations))
- //world << src.occupation[job]
- F["occupation_"+job] << src.occupation[job]
- //F["occupation_1"] << src.occupation[1]
- //F["occupation_2"] << src.occupation[2]
- //F["occupation_3"] << src.occupation[3]
+
+ //Job data
+ F["job_civilian_high"] << src.job_civilian_high
+ F["job_civilian_med"] << src.job_civilian_med
+ F["job_civilian_low"] << src.job_civilian_low
+
+ F["job_medsci_high"] << src.job_medsci_high
+ F["job_medsci_med"] << src.job_medsci_med
+ F["job_medsci_low"] << src.job_medsci_low
+
+ F["job_engsec_high"] << src.job_engsec_high
+ F["job_engsec_med"] << src.job_engsec_med
+ F["job_engsec_low"] << src.job_engsec_low
+
+ //Body data
F["hair_red"] << src.r_hair
F["hair_green"] << src.g_hair
F["hair_blue"] << src.b_hair
@@ -41,17 +47,13 @@ datum/preferences/proc/savefile_save(mob/user)
F["eyes_green"] << src.g_eyes
F["eyes_blue"] << src.b_eyes
F["blood_type"] << src.b_type
- //F["be_syndicate"] << src.be_syndicate
- F["be_special"] << src.be_special
F["underwear"] << src.underwear
- F["name_is_always_random"] << src.be_random_name
- F["UI"] << src.UI // Skie
- //world << "DEBUG: saving UI as [UI]"
- //F["be_alien"] << src.be_alien // Urist
- F["midis"] << src.midis // Urist
- F["bubbles"] << src.bubbles // Doohl
- F["ooccolor"] << src.ooccolor // Urist
- F["lastchangelog"] << src.lastchangelog // rastaf0
+
+ F["be_special"] << src.be_special
+ F["UI"] << src.UI
+ F["midis"] << src.midis
+ F["ooccolor"] << src.ooccolor
+ F["lastchangelog"] << src.lastchangelog
return 1
@@ -61,14 +63,11 @@ datum/preferences/proc/savefile_save(mob/user)
// returns 1 if loaded (or file was incompatible)
// returns 0 if savefile did not exist
-datum/preferences/proc/savefile_load(mob/user, var/silent = 1)
- if (IsGuestKey(user.key))
- return 0
+datum/preferences/proc/savefile_load(mob/user)
+ if(IsGuestKey(user.key)) return 0
var/path = savefile_path(user)
-
- if (!fexists(path))
- return 0
+ if(!fexists(path)) return 0
var/savefile/F = new /savefile(path)
@@ -77,20 +76,13 @@ datum/preferences/proc/savefile_load(mob/user, var/silent = 1)
if (isnull(version) || version < SAVEFILE_VERSION_MIN || version > SAVEFILE_VERSION_MAX)
fdel(path)
-
-// if (!silent)
-// alert(user, "Your savefile was incompatible with this version and was deleted.")
-
+ alert(user, "Your savefile was incompatible with this version and was deleted.")
return 0
F["real_name"] >> src.real_name
F["gender"] >> src.gender
F["age"] >> src.age
- for(var/job in uniquelist(occupations + assistant_occupations))
- F["occupation_"+job] >> src.occupation[job]
- //F["occupation_1"] >> src.occupation[1]
- //F["occupation_2"] >> src.occupation[2]
- //F["occupation_3"] >> src.occupation[3]
+
F["hair_red"] >> src.r_hair
F["hair_green"] >> src.g_hair
F["hair_blue"] >> src.b_hair
@@ -106,37 +98,25 @@ datum/preferences/proc/savefile_load(mob/user, var/silent = 1)
F["blood_type"] >> src.b_type
F["underwear"] >> src.underwear
F["name_is_always_random"] >> src.be_random_name
- //F["be_alien"] >> src.be_alien // Urist
- F["midis"] >> src.midis // Urist
- F["bubbles"] >> src.bubbles // Doohl
- F["ooccolor"] >> src.ooccolor // Urist
- F["lastchangelog"] >> src.lastchangelog // rastaf0
+ F["midis"] >> src.midis
+ F["ooccolor"] >> src.ooccolor
+ F["lastchangelog"] >> src.lastchangelog
+ F["UI"] >> src.UI
+ F["be_special"] >> src.be_special
+ if(version && (version >= SAVEFILE_VERSION_MAX))
+ F["job_civilian_high"] >> src.job_civilian_high
+ F["job_civilian_med"] >> src.job_civilian_med
+ F["job_civilian_low"] >> src.job_civilian_low
+
+ F["job_medsci_high"] >> src.job_medsci_high
+ F["job_medsci_med"] >> src.job_medsci_med
+ F["job_medsci_low"] >> src.job_medsci_low
+
+ F["job_engsec_high"] >> src.job_engsec_high
+ F["job_engsec_med"] >> src.job_engsec_med
+ F["job_engsec_low"] >> src.job_engsec_low
- if (version<=2) // migration from old preferences file format --rastaf0
- src.UI = 0 // swithing from storing an image file to storing boolean value --rastaf0
- //world << "DEBUG: loading legacy UI as [UI]"
- var/tmp
- F["be_syndicate"] >> tmp
- if (tmp)
- be_special |= BE_TRAITOR
- be_special |= BE_OPERATIVE
- be_special |= BE_CHANGELING
- be_special |= BE_WIZARD
- be_special |= BE_MALF
- be_special |= BE_REV
- F["be_alien"] >> tmp
- F["be_pai"] >> tmp
- if (tmp)
- be_special |= BE_ALIEN
- be_special |= BE_PAI
- del(F)
- fdel(path)
- savefile_save(user)
- else // /migration end
- F["UI"] >> src.UI
- F["be_special"] >> src.be_special
- //world << "DEBUG: loading new UI as [UI]"
return 1
diff --git a/code/modules/mob/screen.dm b/code/modules/mob/screen.dm
index 412931973a..271c808e5a 100644
--- a/code/modules/mob/screen.dm
+++ b/code/modules/mob/screen.dm
@@ -399,7 +399,7 @@
if("hand")
usr:swap_hand()
if("resist")
- if (usr.next_move < world.time)
+ if(usr.next_move < world.time)
return
usr.next_move = world.time + 20
if ((!( usr.stat ) && usr.canmove && !( usr.restrained() )))
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index 8fe2ad8f13..7c49d288e2 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -11,8 +11,7 @@
icon = null
invisibility = 101
for(var/t in organs)
- //organs[text("[]", t)] = null
- del(organs[text("[]", t)])
+ del(t)
var/atom/movable/overlay/animation = new /atom/movable/overlay( loc )
animation.icon_state = "blank"
animation.icon = 'mob.dmi'
@@ -53,7 +52,7 @@
if (monkeyizing)
return
for(var/t in organs)
- del(organs[text("[]", t)])
+ del(t)
return ..()
/mob/living/carbon/AIize()
@@ -155,7 +154,7 @@
icon = null
invisibility = 101
for(var/t in organs)
- del(organs[text("[t]")])
+ del(t)
if(client)
//client.screen -= main_hud1.contents
client.screen -= hud_used.contents
@@ -218,7 +217,7 @@
icon = null
invisibility = 101
for(var/t in organs)
- del(organs[t])
+ del(t)
var/alien_caste = pick("Hunter","Sentinel","Drone")
var/mob/living/carbon/alien/humanoid/new_xeno
@@ -258,7 +257,7 @@
icon = null
invisibility = 101
for(var/t in organs)
- del(organs[t])
+ del(t)
if(reproduce)
var/number = pick(2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,4)
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 68c71fd01a..c95aaf65bc 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -327,7 +327,7 @@
var/turf/T = get_turf_loc(src)
var/obj/structure/cable/N = T.get_cable_node()
if (prob(50) && electrocute_mob(usr, N, N))
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
return
@@ -345,7 +345,7 @@
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
if(do_after(user, 50))
if (prob(50) && electrocute_mob(usr, terminal.powernet, terminal))
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
return
@@ -851,11 +851,11 @@
malfai << "Hack complete. The APC is now under your exclusive control. Discharging cell to fuse interface."
updateicon()
- var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread()
+ var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread()
smoke.set_up(3, 0, src.loc)
smoke.attach(src)
smoke.start()
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
for(var/mob/M in viewers(src))
@@ -880,11 +880,11 @@
cell.corrupt()
src.malfhack = 1
updateicon()
- var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread()
+ var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread()
smoke.set_up(3, 0, src.loc)
smoke.attach(src)
smoke.start()
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
for(var/mob/M in viewers(src))
@@ -1160,7 +1160,7 @@
/obj/machinery/power/apc/proc/shock(mob/user, prb)
if(!prob(prb))
return 0
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
if (electrocute_mob(user, src, src))
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index 3028a81905..db06a85fbe 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -193,7 +193,7 @@
if(!prob(prb))
return 0
if (electrocute_mob(user, powernets[src.netnum], src, siemens_coeff))
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
return 1
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index fd11a05ca2..7c24acb92c 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -222,7 +222,7 @@
else if(status == LIGHT_EMPTY)
user << "You stick \the [W] into the light socket!"
if(has_power() && (W.flags & CONDUCT))
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
//if(!user.mutations & COLD_RESISTANCE)
@@ -282,7 +282,7 @@
else
user << "You try to remove the light [fitting], but you burn your hand on it!"
- var/datum/organ/external/affecting = H.organs["[user.hand ? "l" : "r" ]_hand"]
+ var/datum/organ/external/affecting = H.get_organ("[user.hand ? "l" : "r" ]_arm")
affecting.take_damage( 0, 5 ) // 5 burn damage
@@ -324,7 +324,7 @@
if(status == LIGHT_OK || status == LIGHT_BURNED)
playsound(src.loc, 'Glasshit.ogg', 75, 1)
if(on)
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
status = LIGHT_BROKEN
diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm
index 112525e9fe..f5593cd95e 100644
--- a/code/modules/power/singularity/containment_field.dm
+++ b/code/modules/power/singularity/containment_field.dm
@@ -55,7 +55,7 @@
del(src)
return 0
if(iscarbon(user))
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, user.loc)
s.start()
var/shock_damage = min(rand(30,40),rand(30,40))
@@ -72,7 +72,7 @@
user.throw_at(target, 200, 4)
return
else if(issilicon(user))
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, user.loc)
s.start()
var/shock_damage = rand(15,30)
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index 460d3c947a..336478efb0 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -90,7 +90,7 @@
A.icon_state = "u_laser"
playsound(src.loc, 'emitter.ogg', 25, 1)
if(prob(35))
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
A.dir = src.dir
diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm
index 9a6544f583..686bb6e767 100644
--- a/code/modules/power/smes.dm
+++ b/code/modules/power/smes.dm
@@ -324,7 +324,7 @@
for(var/mob/M in viewers(src))
M.show_message("\red The [src.name] is making strange noises!", 3, "\red You hear sizzling electronics.", 2)
sleep(10*pick(4,5,6,7,10,14))
- var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread()
+ var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread()
smoke.set_up(3, 0, src.loc)
smoke.attach(src)
smoke.start()
@@ -333,7 +333,7 @@
return
if(prob(15)) //Power drain
world << "\red SMES power drain in [src.loc.loc]"
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
if(prob(50))
@@ -342,7 +342,7 @@
emp_act(2)
if(prob(5)) //smoke only
world << "\red SMES smoke in [src.loc.loc]"
- var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread()
+ var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread()
smoke.set_up(3, 0, src.loc)
smoke.attach(src)
smoke.start()
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 68e93cf23f..b674361086 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -44,7 +44,7 @@
if(istype(user, /mob/living))
var/mob/living/M = user
- if ((M.mutations & CLOWN) && prob(50))
+ if ((M.mutations & CLUMSY) && prob(50))
M << "\red The [src.name] blows up in your face."
M.take_organ_damage(0,20)
M.drop_item()
diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm
index 45f7c05046..e739ea24bb 100644
--- a/code/modules/projectiles/guns/energy.dm
+++ b/code/modules/projectiles/guns/energy.dm
@@ -8,7 +8,7 @@
obj/item/weapon/cell/power_supply //What type of power cell this uses
charge_cost = 100 //How much energy is needed to fire.
cell_type = "/obj/item/weapon/cell"
- projectile_type = "/obj/item/projectile"
+ projectile_type = "/obj/item/projectile/energy"
emp_act(severity)
power_supply.use(round(power_supply.maxcharge / severity))
diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm
index b8947625ca..6e61558aa8 100644
--- a/code/modules/projectiles/guns/energy/nuclear.dm
+++ b/code/modules/projectiles/guns/energy/nuclear.dm
@@ -6,6 +6,7 @@
charge_cost = 100 //How much energy is needed to fire.
projectile_type = "/obj/item/projectile/energy/electrode"
+ origin_tech = "combat=3;magnets=2"
var
mode = 0 //0 = stun, 1 = kill
diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm
index 95d4dbf7a4..2332c25a28 100644
--- a/code/modules/projectiles/guns/energy/stun.dm
+++ b/code/modules/projectiles/guns/energy/stun.dm
@@ -5,7 +5,7 @@
icon_state = "taser"
fire_sound = 'Taser.ogg'
charge_cost = 100
- projectile_type = "/obj/item/projectile/electrode"
+ projectile_type = "/obj/item/projectile/energy/electrode"
cell_type = "/obj/item/weapon/cell/crap"
@@ -30,7 +30,7 @@
fire_sound = 'Gunshot.ogg'
origin_tech = "combat=3;materials=3;powerstorage=2"
charge_cost = 125
- projectile_type = "/obj/item/projectile/electrode"
+ projectile_type = "/obj/item/projectile/energy/electrode"
cell_type = "/obj/item/weapon/cell"
@@ -80,6 +80,6 @@
w_class = 4.0
force = 10
m_amt = 200000
- projectile_type = "/obj/item/projectile/largebolt"
+ projectile_type = "/obj/item/projectile/energy/bolt/large"
diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm
index 3b8d7d429f..07ecdcb710 100644
--- a/code/modules/projectiles/projectile/energy.dm
+++ b/code/modules/projectiles/projectile/energy.dm
@@ -1,16 +1,15 @@
/obj/item/projectile/energy
name = "energy"
icon_state = "spark"
-
damage = 0
damage_type = BURN
- nodamage = 1
flag = "energy"
/obj/item/projectile/energy/electrode
name = "electrode"
icon_state = "spark"
+ nodamage = 1
stun = 10
weaken = 10
stutter = 10
@@ -19,6 +18,7 @@
/obj/item/projectile/energy/declone
name = "declown"
icon_state = "declone"
+ nodamage = 1
damage_type = CLONE
irradiate = 40
diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm
index e594eb79de..43f92517bf 100644
--- a/code/modules/research/rdmachines.dm
+++ b/code/modules/research/rdmachines.dm
@@ -40,7 +40,7 @@
return 0
if(!prob(prb))
return 0
- var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
if (electrocute_mob(user, get_area(src), src, 0.7))
diff --git a/code/setup.dm b/code/setup.dm
index 771617bd5d..6607e3985a 100644
--- a/code/setup.dm
+++ b/code/setup.dm
@@ -151,7 +151,7 @@
#define COLD_RESISTANCE 2
#define XRAY 4
#define HULK 8
-#define CLOWN 16
+#define CLUMSY 16
#define FAT 32
#define HUSK 64 //changeling-drained
#define LASER 128
@@ -185,19 +185,6 @@ var/const
GAS_CO2 = 1 << 3
GAS_N2O = 1 << 4
-// bitflags for preferences
-#define BE_TRAITOR (1<<0)
-#define BE_OPERATIVE (1<<1)
-#define BE_CHANGELING (1<<2)
-#define BE_WIZARD (1<<3)
-#define BE_MALF (1<<4)
-#define BE_REV (1<<5)
-#define BE_ALIEN (1<<6)
-#define BE_CULTIST (1<<7)
-#define BE_MONKEY (1<<8)
-#define BE_PAI (1<<9)
-//#define BE_CIVILIAN (1<<15) //well, I must stop here. --rastaf0
-
var/list/accessable_z_levels = list("1" = 10, "3" = 15, "4" = 60, "5" = 15) //This list contains the z-level numbers which can be accessed via space travel and the percentile chances to get there. (Exceptions: extended, sandbox and nuke) -Errorage
@@ -206,6 +193,8 @@ var/list/accessable_z_levels = list("1" = 10, "3" = 15, "4" = 60, "5" = 15) //Th
var/list/global_mutations = list() // list of hidden mutation things
+//Bluh shields
+
//Damage things
#define BRUTE "brute"
@@ -220,4 +209,6 @@ var/list/global_mutations = list() // list of hidden mutation things
#define IRRADIATE "irradiate"
#define STUTTER "stutter"
#define EYE_BLUR "eye_blur"
-#define DROWSY "drowsy"
\ No newline at end of file
+#define DROWSY "drowsy"
+
+
diff --git a/code/game/objects/traps.dm b/code/unused/traps.dm
similarity index 100%
rename from code/game/objects/traps.dm
rename to code/unused/traps.dm
diff --git a/icons/changelog.html b/icons/changelog.html
index 4adb0bc90f..9f2b13fe0b 100644
--- a/icons/changelog.html
+++ b/icons/changelog.html
@@ -66,6 +66,7 @@ should be listed in the changelog upon commit tho. Thanks. -->
Telekenesis now only allows you to pick up objects.
Stun gloves ignore intent.
Moved the loyalty implants to the HoS' locker.
+ Job system redone, remember to setup your prefs.
@@ -83,11 +84,6 @@ should be listed in the changelog upon commit tho. Thanks. -->
Less ponies, gryphons, and Tohou.
- Rolan7 updated:
-
- - The GREY TIDE is no more.
-
-
1 October 2011:
diff --git a/maps/tgstation.2.0.8.dmm b/maps/tgstation.2.0.8.dmm
index 6de015e5e8..5dc4c3977b 100644
--- a/maps/tgstation.2.0.8.dmm
+++ b/maps/tgstation.2.0.8.dmm
@@ -380,7 +380,7 @@
"ahp" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"ahq" = (/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"ahr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
-"ahs" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/table,/obj/item/weapon/storage/body_bag_box,/turf/simulated/floor,/area/security/warden)
+"ahs" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor,/area/security/warden)
"aht" = (/obj/machinery/light,/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor,/area/security/warden)
"ahu" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor,/area/security/warden)
"ahv" = (/obj/structure/table,/obj/item/weapon/storage/lockbox,/turf/simulated/floor,/area/security/warden)
@@ -402,7 +402,7 @@
"ahL" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"ahM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"ahN" = (/obj/structure/closet/l3closet/security,/turf/simulated/floor,/area/security/warden)
-"ahO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/rack,/obj/item/weapon/storage/trackimp_kit,/obj/item/weapon/storage/chemimp_kit,/obj/item/weapon/storage/handcuff_kit,/turf/simulated/floor,/area/security/warden)
+"ahO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/rack,/obj/item/weapon/storage/trackimp_kit,/obj/item/weapon/storage/chemimp_kit,/obj/item/weapon/storage/handcuff_kit,/obj/item/weapon/storage/body_bag_box,/turf/simulated/floor,/area/security/warden)
"ahP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/security/warden)
"ahQ" = (/obj/machinery/door/airlock/security{name = "Warden's Office"; req_access = null; req_access_txt = "3"},/turf/simulated/floor,/area/security/warden)
"ahR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/security/warden)
@@ -2599,7 +2599,7 @@
"aXY" = (/obj/machinery/vending/snack,/turf/simulated/floor,/area/crew_quarters/heads)
"aXZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/crew_quarters/heads)
"aYa" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/crew_quarters/heads)
-"aYb" = (/obj/machinery/camera{c_tag = "Heads of Staff"; dir = 8; network = "SS13"},/obj/structure/table/reinforced,/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor,/area/crew_quarters/heads)
+"aYb" = (/obj/machinery/camera{c_tag = "Heads of Staff"; dir = 8; network = "SS13"},/obj/structure/table/reinforced,/turf/simulated/floor,/area/crew_quarters/heads)
"aYc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/heads)
"aYd" = (/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/central)
"aYe" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=Med"; location = "HOP"},/turf/simulated/floor,/area/hallway/primary/central)
@@ -5612,23 +5612,23 @@
"cdV" = (/mob/living/silicon/decoy{icon_state = "ai-malf"; name = "GLaDOS"},/turf/unsimulated/floor{icon_state = "whiteshiny"},/area/syndicate_mothership)
"cdW" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; freerange = 1; frequency = 1337; listening = 1; name = "Syndicate Ops Intercom"; pixel_y = 0},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "circuit"},/area/syndicate_mothership)
"cdX" = (/turf/unsimulated/wall{icon = 'mineral_walls.dmi'; icon_state = "plasma3"},/area/alien)
-"cdY" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor5"},/area/alien)
+"cdY" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor5"},/area/alien)
"cdZ" = (/turf/unsimulated/wall{icon = 'mineral_walls.dmi'; icon_state = "plasma1"},/area/alien)
"cea" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership)
"ceb" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership)
"cec" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership)
-"ced" = (/obj/item/weapon/paper{info = "Some stuff is missing..."; name = "Insert alien artifacts here."},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor5"},/area/alien)
-"cee" = (/obj/machinery/door/airlock/hatch,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor5"},/area/alien)
+"ced" = (/obj/item/weapon/paper{info = "Some stuff is missing..."; name = "Insert alien artifacts here."},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor5"},/area/alien)
+"cee" = (/obj/machinery/door/airlock/hatch,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor5"},/area/alien)
"cef" = (/turf/space,/area/syndicate_mothership/elite_squad)
"ceg" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_mothership/elite_squad)
-"ceh" = (/obj/machinery/computer/pod{id = "syndicate_elite"; name = "Hull Door Control"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad)
-"cei" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; freerange = 1; frequency = 1337; listening = 0; name = "Syndicate Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad)
-"cej" = (/obj/effect/landmark{name = "Syndicate-Commando"; tag = "Commando"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad)
-"cek" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad)
-"cel" = (/obj/machinery/mech_bay_recharge_port,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad)
-"cem" = (/obj/mecha/combat/marauder/mauler,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership)
-"cen" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership)
-"ceo" = (/obj/structure/closet/acloset,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor5"},/area/alien)
+"ceh" = (/obj/machinery/computer/pod{id = "syndicate_elite"; name = "Hull Door Control"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad)
+"cei" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; freerange = 1; frequency = 1337; listening = 0; name = "Syndicate Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad)
+"cej" = (/obj/effect/landmark{name = "Syndicate-Commando"; tag = "Commando"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad)
+"cek" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad)
+"cel" = (/obj/machinery/mech_bay_recharge_port,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad)
+"cem" = (/obj/mecha/combat/marauder/mauler,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership)
+"cen" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership)
+"ceo" = (/obj/structure/closet/acloset,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor5"},/area/alien)
"cep" = (/turf/unsimulated/wall{icon = 'mineral_walls.dmi'; icon_state = "plasma2"},/area/alien)
"ceq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/syndicate_mothership/elite_squad)
"cer" = (/turf/space,/area/shuttle/alien/base)
@@ -5638,8 +5638,8 @@
"cev" = (/obj/machinery/door/airlock/external{name = "Shuttle Airlock"; req_access_txt = "150"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "syndicate_elite"; name = "Side Hull Door"; opacity = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership)
"cew" = (/turf/unsimulated/floor{name = "plating"},/area/syndicate_mothership/elite_squad)
"cex" = (/obj/machinery/door/airlock/external{req_access_txt = "150"},/turf/unsimulated/floor{name = "plating"},/area/syndicate_mothership/elite_squad)
-"cey" = (/obj/machinery/door/airlock/glass_security{name = "Airlock"; req_access_txt = "150"},/obj/machinery/door/poddoor{id = "syndicate_elite_mech_room"; name = "Mech Room Door"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad)
-"cez" = (/obj/structure/stool/bed/alien,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor5"},/area/alien)
+"cey" = (/obj/machinery/door/airlock/glass_security{name = "Airlock"; req_access_txt = "150"},/obj/machinery/door/poddoor{id = "syndicate_elite_mech_room"; name = "Mech Room Door"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_mothership/elite_squad)
+"cez" = (/obj/structure/stool/bed/alien,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor5"},/area/alien)
"ceA" = (/obj/machinery/computer/pod{id = "syndicate_elite"; name = "Hull Door Control"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership)
"ceB" = (/obj/machinery/computer/syndicate_elite_shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership)
"ceC" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/syndicate_elite/mothership)
@@ -5651,35 +5651,35 @@
"ceI" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_station/start)
"ceJ" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start)
"ceK" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/syndicate_station/start)
-"ceL" = (/obj/structure/table,/obj/machinery/microwave,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"ceM" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"ceN" = (/obj/structure/table,/obj/machinery/light/lamp{pixel_x = 4; pixel_y = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"ceO" = (/obj/machinery/computer/syndicate_station,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"ceP" = (/obj/structure/table,/obj/item/weapon/pen/sleepypen,/obj/item/weapon/paper,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"ceQ" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"ceR" = (/obj/structure/table,/obj/item/weapon/storage/donkpocket_kit{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"ceS" = (/obj/structure/stool{pixel_y = 8},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"ceT" = (/obj/structure/table,/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"ceU" = (/obj/effect/landmark{name = "Syndicate-Gear-Closet"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"ceL" = (/obj/structure/table,/obj/machinery/microwave,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"ceM" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"ceN" = (/obj/structure/table,/obj/machinery/light/lamp{pixel_x = 4; pixel_y = 1},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"ceO" = (/obj/machinery/computer/syndicate_station,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"ceP" = (/obj/structure/table,/obj/item/weapon/pen/sleepypen,/obj/item/weapon/paper,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"ceQ" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"ceR" = (/obj/structure/table,/obj/item/weapon/storage/donkpocket_kit{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"ceS" = (/obj/structure/stool{pixel_y = 8},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"ceT" = (/obj/structure/table,/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"ceU" = (/obj/effect/landmark{name = "Syndicate-Gear-Closet"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
"ceV" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/syndicate_station/start)
-"ceW" = (/obj/machinery/door/window,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"ceW" = (/obj/machinery/door/window,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
"ceX" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/syndicate_station/start)
-"ceY" = (/obj/structure/table,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"ceY" = (/obj/structure/table,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
"ceZ" = (/turf/unsimulated/wall,/area/centcom)
-"cfa" = (/obj/effect/landmark{name = "Nuclear-Closet"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cfa" = (/obj/effect/landmark{name = "Nuclear-Closet"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
"cfb" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "External Airlock"},/area)
"cfc" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom)
"cfd" = (/turf/unsimulated/floor{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/centcom)
"cfe" = (/turf/unsimulated/floor{name = "plating"},/area/centcom)
-"cff" = (/obj/structure/stool/chair{dir = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cff" = (/obj/structure/stool/chair{dir = 4},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
"cfg" = (/obj/effect/securearea{name = "EXTERNAL AIRLOCK"; desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start)
-"cfh" = (/obj/machinery/door/poddoor{id = "syndicate"; name = "Outer Airlock"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cfh" = (/obj/machinery/door/poddoor{id = "syndicate"; name = "Outer Airlock"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
"cfi" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/administration/centcom)
"cfj" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/administration/centcom)
"cfk" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/shuttle/administration/centcom)
"cfl" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/administration/centcom)
-"cfm" = (/obj/structure/table,/obj/item/device/aicard,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"cfn" = (/obj/structure/table,/obj/machinery/computer/pod/old/syndicate{id = "syndicate"; pixel_x = -3; pixel_y = 8},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cfm" = (/obj/structure/table,/obj/item/device/aicard,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cfn" = (/obj/structure/table,/obj/machinery/computer/pod/old/syndicate{id = "syndicate"; pixel_x = -3; pixel_y = 8},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
"cfo" = (/obj/machinery/vending/boozeomat,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/administration/centcom)
"cfp" = (/obj/machinery/vending/coffee,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
"cfq" = (/obj/machinery/vending/cigarette,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
@@ -5687,16 +5687,16 @@
"cfs" = (/turf/simulated/floor/plating,/area/shuttle/administration/centcom)
"cft" = (/obj/structure/table{icon_state = "tabledir"; dir = 2},/obj/item/device/multitool,/obj/item/weapon/cleaner,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
"cfu" = (/obj/structure/table{icon_state = "tabledir"; dir = 2},/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
-"cfv" = (/obj/machinery/door/window{dir = 4; icon = 'windoor.dmi'; req_access_txt = "0"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"cfw" = (/obj/machinery/door/airlock/external,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cfv" = (/obj/machinery/door/window{dir = 4; icon = 'windoor.dmi'; req_access_txt = "0"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cfw" = (/obj/machinery/door/airlock/external,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
"cfx" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
"cfy" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access_txt = "101"},/turf/simulated/floor/plating,/area/shuttle/administration/centcom)
"cfz" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
"cfA" = (/obj/structure/table{icon_state = "tabledir"; dir = 2},/obj/machinery/cell_charger,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
"cfB" = (/turf/unsimulated/wall,/area/centcom/living)
-"cfC" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cfC" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
"cfD" = (/obj/machinery/atmospherics/pipe/simple{dir = 10},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/syndicate_station/start)
-"cfE" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cfE" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
"cfF" = (/obj/machinery/door/window/northright,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
"cfG" = (/obj/structure/table/reinforced{icon_state = "reinf_tabledir"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
"cfH" = (/obj/structure/table/reinforced{icon_state = "reinf_tabledir"},/obj/item/weapon/zippo,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
@@ -5729,16 +5729,16 @@
"cgi" = (/turf/unsimulated/floor{name = "plating"},/area/centcom/suppy)
"cgj" = (/turf/unsimulated/floor{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/centcom/suppy)
"cgk" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/suppy)
-"cgl" = (/obj/machinery/sleeper{icon_state = "sleeper_0-r"; orient = "RIGHT"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start)
-"cgm" = (/obj/effect/landmark{name = "Syndicate-Spawn"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start)
-"cgn" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start)
-"cgo" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/table,/obj/item/stack/medical/bruise_pack,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start)
-"cgp" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/table,/obj/item/stack/medical/ointment,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start)
-"cgq" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/signaler,/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"cgr" = (/obj/structure/table,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/signaler,/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"cgs" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/infra,/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"cgt" = (/obj/structure/table,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"cgu" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cgl" = (/obj/machinery/sleeper{icon_state = "sleeper_0-r"; orient = "RIGHT"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start)
+"cgm" = (/obj/effect/landmark{name = "Syndicate-Spawn"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start)
+"cgn" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start)
+"cgo" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/table,/obj/item/stack/medical/bruise_pack,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start)
+"cgp" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/table,/obj/item/stack/medical/ointment,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start)
+"cgq" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/signaler,/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cgr" = (/obj/structure/table,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/signaler,/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cgs" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/infra,/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cgt" = (/obj/structure/table,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cgu" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
"cgv" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r (EAST)"; icon_state = "propulsion_r"; dir = 4},/turf/space,/area/shuttle/administration/centcom)
"cgw" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/administration/centcom)
"cgx" = (/obj/machinery/vending/cola,/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/living)
@@ -5750,26 +5750,26 @@
"cgD" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6"; icon_state = "swall_s6"; dir = 2},/area/supply/dock)
"cgE" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/supply/dock)
"cgF" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/supply/dock)
-"cgG" = (/obj/machinery/door/window{dir = 4; icon = 'windoor.dmi'; req_access_txt = "0"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start)
-"cgH" = (/obj/machinery/door/window/westright,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"cgI" = (/obj/structure/crate/internals,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cgG" = (/obj/machinery/door/window{dir = 4; icon = 'windoor.dmi'; req_access_txt = "0"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start)
+"cgH" = (/obj/machinery/door/window/westright,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cgI" = (/obj/structure/crate/internals,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
"cgJ" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/administration/centcom)
"cgK" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
"cgL" = (/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
"cgM" = (/turf/unsimulated/floor{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/centcom)
"cgN" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/supply/dock)
"cgO" = (/obj/effect/marker/supplymarker,/turf/simulated/shuttle/floor,/area/supply/dock)
-"cgP" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start)
-"cgQ" = (/obj/machinery/door/window{icon = 'windoor.dmi'; dir = 8},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"cgR" = (/obj/structure/table,/obj/effect/landmark{name = "Syndicate-Bomb"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cgP" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start)
+"cgQ" = (/obj/machinery/door/window{icon = 'windoor.dmi'; dir = 8},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cgR" = (/obj/structure/table,/obj/effect/landmark{name = "Syndicate-Bomb"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
"cgS" = (/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/living)
"cgT" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/supply/dock)
-"cgU" = (/obj/structure/table,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start)
-"cgV" = (/obj/item/weapon/weldingtool,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"cgW" = (/obj/machinery/door/window{dir = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"cgX" = (/obj/item/weapon/crowbar,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"cgY" = (/obj/machinery/atmospherics/pipe/simple{dir = 10},/obj/item/weapon/storage/toolbox/mechanical,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"cgZ" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cgU" = (/obj/structure/table,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start)
+"cgV" = (/obj/item/weapon/weldingtool,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cgW" = (/obj/machinery/door/window{dir = 1},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cgX" = (/obj/item/weapon/crowbar,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cgY" = (/obj/machinery/atmospherics/pipe/simple{dir = 10},/obj/item/weapon/storage/toolbox/mechanical,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"cgZ" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
"cha" = (/obj/machinery/dna_scannernew,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom)
"chb" = (/obj/machinery/computer/cloning,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom)
"chc" = (/obj/machinery/clonepod,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom)
@@ -5782,17 +5782,17 @@
"chj" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living)
"chk" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living)
"chl" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living)
-"chm" = (/obj/effect/landmark{name = "Nuclear-Bomb"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
-"chn" = (/obj/item/clothing/head/helmet/welding,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"chm" = (/obj/effect/landmark{name = "Nuclear-Bomb"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"chn" = (/obj/item/clothing/head/helmet/welding,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
"cho" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom)
"chp" = (/obj/item/weapon/reagent_containers/food/condiment/saltshaker,/obj/structure/table,/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/living)
"chq" = (/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/living)
"chr" = (/obj/structure/secure_closet/meat,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living)
"chs" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living)
-"cht" = (/obj/structure/crate/medical,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start)
-"chu" = (/obj/item/weapon/storage/firstaid/regular{pixel_x = 6; pixel_y = -5},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start)
+"cht" = (/obj/structure/crate/medical,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start)
+"chu" = (/obj/item/weapon/storage/firstaid/regular{pixel_x = 6; pixel_y = -5},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/syndicate_station/start)
"chv" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/syndicate_station/start)
-"chw" = (/obj/item/weapon/extinguisher,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"chw" = (/obj/item/weapon/extinguisher,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
"chx" = (/obj/machinery/optable,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom)
"chy" = (/obj/structure/table/reinforced,/obj/machinery/librarycomp,/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/shuttle/administration/centcom)
"chz" = (/obj/structure/bookcase,/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/shuttle/administration/centcom)
@@ -6062,7 +6062,7 @@
"cmD" = (/obj/machinery/door/airlock/external,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "NTrasen"; name = "Outer Airlock"; opacity = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
"cmE" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/specops/centcom)
"cmF" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/control)
-"cmG" = (/obj/structure/table,/obj/item/assembly/shock_kit{icon = 'assemblies.dmi'},/obj/item/device/assembly/signaler,/obj/item/weapon/handcuffs,/obj/item/weapon/melee/classic_baton,/turf/unsimulated/floor{icon_state = "whiteshiny"},/area/centcom/control)
+"cmG" = (/obj/structure/table,/obj/item/assembly/shock_kit{icon = 'icons/obj/assemblies.dmi'},/obj/item/device/assembly/signaler,/obj/item/weapon/handcuffs,/obj/item/weapon/melee/classic_baton,/turf/unsimulated/floor{icon_state = "whiteshiny"},/area/centcom/control)
"cmH" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (EAST)"; icon_state = "propulsion"; dir = 4},/turf/space,/area/shuttle/specops/centcom)
"cmI" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/turf/unsimulated/floor,/area/shuttle/specops/centcom)
"cmJ" = (/obj/effect/landmark{name = "Commando-Bomb"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
@@ -6106,12 +6106,12 @@
"cnv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/control)
"cnw" = (/obj/structure/table/reinforced{icon_state = "reinf_tabledir"},/obj/machinery/door/window/southleft{name = "Security"; req_access_txt = ""},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
"cnx" = (/obj/machinery/door/poddoor{id = "CentComPort"; name = "Security Doors"},/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/control)
-"cny" = (/obj{anchored = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"; layer = 1; name = "floor"},/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/shuttle/escape/centcom)
+"cny" = (/obj{anchored = 1; icon = 'shuttle.dmi'; icon_state = "floor3"; layer = 1; name = "floor"},/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/shuttle/escape/centcom)
"cnz" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"cnA" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
"cnB" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
"cnC" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
-"cnD" = (/obj{anchored = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"; layer = 1; name = "floor"},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/shuttle/escape/centcom)
+"cnD" = (/obj{anchored = 1; icon = 'shuttle.dmi'; icon_state = "floor3"; layer = 1; name = "floor"},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/shuttle/escape/centcom)
"cnE" = (/obj/structure/stool/chair{dir = 1},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/control)
"cnF" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/escape/centcom)
"cnG" = (/obj/machinery/computer/atmos_alert,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
@@ -6197,7 +6197,7 @@
"cpi" = (/obj/structure/rack,/obj/item/toy/sword,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding)
"cpj" = (/obj/structure/rack,/obj/item/toy/gun,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding)
"cpk" = (/obj/machinery/computer/arcade,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding)
-"cpl" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/holding)
+"cpl" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/centcom/holding)
"cpm" = (/turf/unsimulated/floor{icon = 'beach.dmi'; icon_state = "sand"; name = "sand"},/area/centcom/holding)
"cpn" = (/obj/effect/overlay{anchored = 1; icon = 'icons/misc/beach2.dmi'; icon_state = "palm2"; layer = 10; name = "palm tree"},/obj/effect/overlay{anchored = 1; icon = 'beach.dmi'; icon_state = "coconuts"; name = "coconuts"},/turf/unsimulated/floor{icon = 'beach.dmi'; icon_state = "sand"; name = "sand"},/area/centcom/holding)
"cpo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/control)
@@ -6236,7 +6236,7 @@
"cpV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac)
"cpW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/centcom/evac)
"cpX" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
-"cpY" = (/obj{anchored = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"; layer = 1; name = "floor"},/turf/simulated/shuttle/wall{dir = 3; icon_state = "swall_f10"; layer = 2; tag = "icon-swall_f10"},/area/shuttle/escape/centcom)
+"cpY" = (/obj{anchored = 1; icon = 'shuttle.dmi'; icon_state = "floor"; layer = 1; name = "floor"},/turf/simulated/shuttle/wall{dir = 3; icon_state = "swall_f10"; layer = 2; tag = "icon-swall_f10"},/area/shuttle/escape/centcom)
"cpZ" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"cqa" = (/obj/structure/rack,/obj/item/toy/crayonbox,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding)
"cqb" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding)
@@ -6465,69 +6465,69 @@
"cuq" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/derelict/ship)
"cur" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"; dir = 2},/area/derelict/ship)
"cus" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/derelict/ship)
-"cut" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/derelict/ship)
-"cuu" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cuv" = (/obj/machinery/sleeper,/obj/machinery/light{dir = 1},/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cuw" = (/obj/machinery/sleep_console,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cux" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/derelict/ship)
+"cut" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/derelict/ship)
+"cuu" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cuv" = (/obj/machinery/sleeper,/obj/machinery/light{dir = 1},/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cuw" = (/obj/machinery/sleep_console,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cux" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/derelict/ship)
"cuy" = (/turf/simulated/shuttle/wall{tag = "icon-swall13"; icon_state = "swall13"; dir = 2},/area/derelict/ship)
"cuz" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_r (WEST)"; icon_state = "burst_r"; dir = 8},/turf/space,/area/derelict/ship)
"cuA" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"; dir = 2},/area/derelict/ship)
-"cuB" = (/obj/machinery/computer/med_data,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cuC" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 6; pixel_y = -5},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cuB" = (/obj/machinery/computer/med_data,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cuC" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 6; pixel_y = -5},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cuD" = (/turf/simulated/shuttle/wall{tag = "icon-swall15"; icon_state = "swall15"; dir = 2},/area/derelict/ship)
"cuE" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/derelict/ship)
"cuF" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (EAST)"; icon_state = "heater"; dir = 4},/turf/unsimulated/floor{name = "plating"},/area/derelict/ship)
"cuG" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (WEST)"; icon_state = "propulsion"; dir = 8},/turf/space,/area/derelict/ship)
-"cuH" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/derelict/ship)
-"cuI" = (/obj/item/weapon/scalpel,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cuH" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/derelict/ship)
+"cuI" = (/obj/item/weapon/scalpel,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cuJ" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"; dir = 2},/area/derelict/ship)
"cuK" = (/turf/unsimulated/floor{name = "plating"},/area/derelict/ship)
-"cuL" = (/obj/structure/computerframe{anchored = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cuL" = (/obj/structure/computerframe{anchored = 1},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cuM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/derelict/ship)
"cuN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/derelict/ship)
"cuO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/derelict/ship)
"cuP" = (/obj/machinery/door/airlock/glass{name = "Hibernation Pods"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
-"cuQ" = (/obj/structure/stool/chair{dir = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cuR" = (/obj/structure/table,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cuQ" = (/obj/structure/stool/chair{dir = 1},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cuR" = (/obj/structure/table,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cuS" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/derelict/ship)
-"cuT" = (/obj/item/device/multitool,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cuU" = (/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cuT" = (/obj/item/device/multitool,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cuU" = (/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cuV" = (/obj/machinery/door/unpowered/shuttle,/turf/unsimulated/floor{name = "plating"},/area/derelict/ship)
"cuW" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/derelict/ship)
"cuX" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_l (WEST)"; icon_state = "burst_l"; dir = 8},/turf/space,/area/derelict/ship)
"cuY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{name = "plating"},/area/derelict/ship)
-"cuZ" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/derelict/ship)
-"cva" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cvb" = (/obj/machinery/light_switch{pixel_x = 27},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cvc" = (/obj/machinery/portable_atmospherics/scrubber,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cuZ" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/derelict/ship)
+"cva" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvb" = (/obj/machinery/light_switch{pixel_x = 27},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvc" = (/obj/machinery/portable_atmospherics/scrubber,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cvd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{name = "plating"},/area/derelict/ship)
-"cve" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cvf" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cvg" = (/obj/machinery/door/window,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cvh" = (/obj/machinery/light{dir = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cve" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvf" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvg" = (/obj/machinery/door/window,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvh" = (/obj/machinery/light{dir = 1},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cvi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/derelict/ship)
-"cvj" = (/obj/machinery/light/small{dir = 8},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cvk" = (/obj/structure/table,/obj/item/weapon/tank/oxygen,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvj" = (/obj/machinery/light/small{dir = 8},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvk" = (/obj/structure/table,/obj/item/weapon/tank/oxygen,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cvl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/derelict/ship)
"cvm" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6"; icon_state = "swall_s6"; dir = 2},/area)
"cvn" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"; dir = 2},/area)
"cvo" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area)
"cvp" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area)
-"cvq" = (/obj/structure/table,/obj/item/device/analyzer,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cvr" = (/obj/structure/stool/chair{dir = 8},/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cvs" = (/obj/machinery/light/small{dir = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvq" = (/obj/structure/table,/obj/item/device/analyzer,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvr" = (/obj/structure/stool/chair{dir = 8},/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvs" = (/obj/machinery/light/small{dir = 4},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cvt" = (/obj/machinery/door/airlock/glass{name = "Living Module"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
-"cvu" = (/obj/machinery/door/unpowered/shuttle,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvu" = (/obj/machinery/door/unpowered/shuttle,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cvv" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"; dir = 2},/area)
"cvw" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area)
"cvx" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area)
"cvy" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area)
"cvz" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"; dir = 2},/area)
-"cvA" = (/obj/machinery/door/window/northright,/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cvB" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cvC" = (/obj/machinery/light,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cvD" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvA" = (/obj/machinery/door/window/northright,/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvB" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvC" = (/obj/machinery/light,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvD" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cvE" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area)
"cvF" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"; dir = 2},/area/derelict/ship)
"cvG" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s5"; icon_state = "swall_s5"; dir = 2},/area/derelict/ship)
@@ -6538,27 +6538,27 @@
"cvL" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s5"; icon_state = "swall_s5"; dir = 2},/area)
"cvM" = (/turf/simulated/shuttle/wall{tag = "icon-swall13"; icon_state = "swall13"; dir = 2},/area)
"cvN" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"; dir = 2},/area)
-"cvO" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cvP" = (/obj/item/weapon/shard,/obj/structure/stool/chair,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cvQ" = (/obj/structure/stool/chair,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cvR" = (/obj/structure/cable,/obj/structure/computerframe{anchored = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cvS" = (/obj/structure/cable,/obj/structure/computerframe{anchored = 1},/obj/item/weapon/cable_coil/cut,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cvT" = (/obj/structure/rack,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cvU" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/obj/item/clothing/mask/breath,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cvV" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/syndicate,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cvW" = (/obj/machinery/power/apc{cell_type = 5000; dir = 8; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvO" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvP" = (/obj/item/weapon/shard,/obj/structure/stool/chair,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvQ" = (/obj/structure/stool/chair,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvR" = (/obj/structure/cable,/obj/structure/computerframe{anchored = 1},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvS" = (/obj/structure/cable,/obj/structure/computerframe{anchored = 1},/obj/item/weapon/cable_coil/cut,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvT" = (/obj/structure/rack,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvU" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/obj/item/clothing/mask/breath,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvV" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/syndicate,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cvW" = (/obj/machinery/power/apc{cell_type = 5000; dir = 8; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cvX" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/derelict/ship)
"cvY" = (/obj/item/weapon/card/data/clown,/turf/space,/area)
"cvZ" = (/obj/machinery/door/poddoor{id = "oldship_gun"; name = "Pod Bay Door"},/turf/unsimulated/floor{name = "plating"},/area/derelict/ship)
"cwa" = (/obj/machinery/mass_driver{dir = 8; icon_state = "mass_driver"; id = "oldship_gun"},/turf/unsimulated/floor{name = "plating"},/area/derelict/ship)
"cwb" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{name = "plating"},/area/derelict/ship)
-"cwc" = (/obj/machinery/door/airlock/glass{name = "Pod Bay"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cwd" = (/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cwc" = (/obj/machinery/door/airlock/glass{name = "Pod Bay"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cwd" = (/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cwe" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/derelict/ship)
-"cwf" = (/obj/machinery/computer/pod{id = "oldship_gun"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cwg" = (/obj/machinery/light/small,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cwh" = (/obj/structure/table,/obj/item/weapon/screwdriver,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cwi" = (/obj/structure/table,/obj/item/device/radio,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cwf" = (/obj/machinery/computer/pod{id = "oldship_gun"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cwg" = (/obj/machinery/light/small,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cwh" = (/obj/structure/table,/obj/item/weapon/screwdriver,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cwi" = (/obj/structure/table,/obj/item/device/radio,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cwj" = (/obj/machinery/power/solar/fake,/turf/simulated/floor{icon_state = "solarpanel"},/area)
"cwk" = (/turf/space,/area/turret_protected/AIsatextFP)
"cwl" = (/turf/space,/area/turret_protected/AIsatextFS)
diff --git a/tgstation.dme b/tgstation.dme
index ae447ec7a0..f6feeac525 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -44,6 +44,7 @@
#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"
@@ -155,7 +156,6 @@
#define FILE_DIR "icons/turf"
#define FILE_DIR "interface"
#define FILE_DIR "maps"
-#define FILE_DIR "maps/backup"
#define FILE_DIR "sound"
#define FILE_DIR "sound/ambience"
#define FILE_DIR "sound/announcer"
@@ -386,9 +386,20 @@
#include "code\game\gamemodes\wizard\spells.dm"
#include "code\game\gamemodes\wizard\wizard.dm"
#include "code\game\jobs\access.dm"
+#include "code\game\jobs\job_controller.dm"
#include "code\game\jobs\jobprocs.dm"
#include "code\game\jobs\jobs.dm"
#include "code\game\jobs\whitelist.dm"
+#include "code\game\jobs\job\assistant.dm"
+#include "code\game\jobs\job\captian.dm"
+#include "code\game\jobs\job\civilian.dm"
+#include "code\game\jobs\job\civilian_chaplain.dm"
+#include "code\game\jobs\job\engineering.dm"
+#include "code\game\jobs\job\job.dm"
+#include "code\game\jobs\job\medical.dm"
+#include "code\game\jobs\job\science.dm"
+#include "code\game\jobs\job\security.dm"
+#include "code\game\jobs\job\silicon.dm"
#include "code\game\machinery\ai_slipper.dm"
#include "code\game\machinery\airlock_control.dm"
#include "code\game\machinery\alarm.dm"
@@ -531,7 +542,6 @@
#include "code\game\objects\tank.dm"
#include "code\game\objects\toys.dm"
#include "code\game\objects\transfer_valve.dm"
-#include "code\game\objects\traps.dm"
#include "code\game\objects\washing_machine.dm"
#include "code\game\objects\weapons.dm"
#include "code\game\objects\window.dm"
@@ -849,6 +859,7 @@
#include "code\modules\mob\new_player\hud.dm"
#include "code\modules\mob\new_player\new_player.dm"
#include "code\modules\mob\new_player\preferences.dm"
+#include "code\modules\mob\new_player\preferences_setup.dm"
#include "code\modules\mob\new_player\savefile.dm"
#include "code\modules\mob\organ\organ.dm"
#include "code\modules\mob\organ\organ_external.dm"
@@ -916,7 +927,6 @@
#include "code\modules\research\server.dm"
#include "code\WorkInProgress\buildmode.dm"
#include "code\WorkInProgress\explosion_particles.dm"
-#include "code\WorkInProgress\jobs.dm"
#include "code\WorkInProgress\mapload\dmm_suite.dm"
#include "code\WorkInProgress\mapload\reader.dm"
#include "code\WorkInProgress\recycling\conveyor.dm"