diff --git a/code/ATMOSPHERICS/pipes.dm b/code/ATMOSPHERICS/pipes.dm
index ca699cd1257..8964822c2fd 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 e47ab0face6..ba59cc63772 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 6724489ece9..03a334e7e9b 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 0a32c7940ae..46c15db0aa9 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 a709b1d498d..9aa15f3bcf0 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 0dcfa85ad95..ebcf1457b69 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 92f72fd33e0..d1bf9e743d4 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 1ea86a6c652..0bd140df58a 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 20bb3931ff0..7f7fffb76c4 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 74cb097fb68..63bc6aefed5 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 b112c4d1682..ba5ab8d69f8 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 0e228ca0b9d..cc8b8291d04 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 d6594aed8c9..e9243daad0f 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 4cc896eeca3..26b440ad898 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 88fb058ed31..c7b1521d058 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 c7e2d5d9f3d..bd35e122292 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 c10fe51bb44..c2223f9d17e 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 f953e03f751..f491818969a 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 920ca87c51d..bbc1e54c331 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 42440b10275..ca48e48201d 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 00000000000..84513bef214
--- /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 00000000000..c21bec3d2e8
--- /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 00000000000..5a1271e0ea4
--- /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 00000000000..5a84c6a8553
--- /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 00000000000..21378012d24
--- /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 00000000000..1931a976797
--- /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 00000000000..24096fcdb1a
--- /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 00000000000..f9afec98a7c
--- /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 00000000000..dfc90deeca9
--- /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 00000000000..f18aa2323f9
--- /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 00000000000..0f5bd67c08e
--- /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 6cd37230d4f..38ad667f7d7 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 fac6eeac191..b60b6357cd5 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 d43f381fa79..f73e2be7fb9 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 288950e1be0..d1f4c52b1ef 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 96937e958a8..f6cbab25230 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 78b273263ff..0e4f95eabb5 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 3b7ceb766c8..37d8c28d0cd 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 a16eb184b75..827a7548bfe 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 e451dabdf8c..d04d4575e77 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 1cbf5e4c7eb..384a6287372 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 b71e00d9bc7..f373d91f7d1 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 5efb6eb72aa..d1a78b37389 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 e171a17399b..f05d34a3fdc 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 d2144c54ba9..9ac7e268a6b 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 71609954899..fc730443457 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 9b9a1cf8a84..d91c2b56bca 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 65d833806fa..41be21bae5f 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 2a7cfda27ee..525a0d61546 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 26ea1e78ced..4e07cd66a5d 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 613aa21abb0..b7ff8c2d9f1 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 f37548c9857..60b8d6933c2 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 1dd6ea93204..74dfd1b5cae 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 18d51d8ab3c..241b13ba0d8 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 c8d7c20b6bd..414ccaf849e 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 6fd1583feb7..353e40c2b11 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 1596bc76e31..47ff4e6a988 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 b62a7a76f82..653fb8d244d 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 92c01e9c2b6..ad6eacc5b26 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 c660cafc029..da37b28f3de 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 250696eb4a7..b4cbf555d1a 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 9cfe7784e81..9072b405d65 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 2efe2bf108b..c08ffa32e74 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 bd3fdcb2db6..185f80a2560 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 e79b645ff98..d75b661f8c4 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 468d92f9e5d..ec37ca8e23b 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 8dc006f256a..9cc0356d0f6 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 629a99e7f96..15dcb69af2e 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 ccf6ce7a0f7..6c89401cdcc 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 cb53bc3bdd8..a41fcfe6871 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 72ddbbf44bf..c8d5e170840 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 323d2859319..69416e53c06 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 6086c4292ab..28090a66ec6 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 b7a5b5aee05..26486b4b2a7 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 937e256bbb8..70aaa51329a 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 a2ba05b3dab..afc69a3a545 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 b73b508df45..e402842e3f0 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 c3b76293ee8..6a29f44c745 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 bbc3d988381..ade36179d48 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 72fc742aeb1..c6394eb1121 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 082c29848f8..3920b0ab354 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 00000000000..fc80055b943
--- /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 cdec94b4f71..3362984a608 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 724529eb351..864bb1f6310 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 64837bd7059..e5ffb532689 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 107edfa856c..6665ffcf75f 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 4cd21ddea6d..5f1214fc8db 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 cc77a59a9f1..7230ea9d55f 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 3cbdc434126..d29aa0c830b 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 bc618e454cc..49b9d3b3fda 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 db9eaf1de38..5ca6acab859 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 0d59e73b099..71c68278d0a 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 dd7eb83bde7..c7552ec1e81 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 d6366ea0e73..f7f4483f243 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 1db83548317..1f1b79a4697 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 894e1a0707f..8b0cbf183c9 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 b15e1dbe4c0..ce028fe46ac 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 9703a7d99c3..5448e894dd3 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 304e928cd8a..329660fe248 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 51a1ea9de32..82c89cca204 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 8d708a4461e..bc0bed6d3ee 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 e77b05f5ea6..f2535086aaf 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 7e7d60a74f0..b9d51ff603e 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 5d62f250118..f093caf2cf1 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 0baebd8db5d..44a868b80e5 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 03b1e5f2cb6..8d01ca3e8f2 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 e1a9a0d8ba0..648947082e0 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 b77604049fe..bf7922a0949 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 7df5a83c222..3f4fa44ed33 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 eef527db42d..5225b5d926c 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 a51902cfaad..960e9f91045 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 d7fc4ba07a7..095dad7d64e 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 26aeae9034c..d7bd5c6d532 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 260b384c781..444242f298c 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 32556a78d69..ad634bade44 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 744f4364436..1b6561052f0 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 412931973a5..271c808e5a0 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 8fe2ad8f136..7c49d288e27 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 68c71fd01a2..c95aaf65bc5 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 3028a819052..db06a85fbec 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 fd11a05ca2c..7c24acb92c4 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 112525e9fef..f5593cd95eb 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 460d3c947a5..336478efb0f 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 9a6544f583b..686bb6e7671 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 68e93cf23f4..b6743610865 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 45f7c05046f..e739ea24bbf 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 b8947625caa..6e61558aa85 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 95d4dbf7a41..2332c25a285 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 3b8d7d429f8..07ecdcb710b 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 e594eb79def..43f92517bf2 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 771617bd5d1..6607e3985a7 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 4adb0bc90f9..9f2b13fe0b3 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 6de015e5e82..5dc4c3977b6 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 ae447ec7a0c..f6feeac525e 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"