diff --git a/code/datums/spells/mind_transfer.dm b/code/datums/spells/mind_transfer.dm
index e1b9d3174a8..c08318ed3b7 100644
--- a/code/datums/spells/mind_transfer.dm
+++ b/code/datums/spells/mind_transfer.dm
@@ -4,10 +4,10 @@
school = "transmutation"
charge_max = 600
- clothes_req = 1
+ clothes_req = 0
invocation = "GIN'YU CAPAN"
invocation_type = "whisper"
- range = 7
+ range = 1
var/list/protected_roles = list("Wizard","Changeling","Cultist") //which roles are immune to the spell
var/list/compatible_mobs = list(/mob/living/carbon/human,/mob/living/carbon/monkey) //which types of mobs are affected by the spell. NOTE: change at your own risk
var/base_spell_loss_chance = 20 //base probability of the wizard losing a spell in the process
diff --git a/code/datums/spells/wizard.dm b/code/datums/spells/wizard.dm
index a187e54f361..671036683a5 100644
--- a/code/datums/spells/wizard.dm
+++ b/code/datums/spells/wizard.dm
@@ -54,7 +54,7 @@
invocation_type = "shout"
range = 1
- destroys = "disintegrate"
+ destroys = "gib"
sparks_spread = 1
sparks_amt = 4
diff --git a/code/defines/obj.dm b/code/defines/obj.dm
index 2bbc91c689e..7ee52ef1bcc 100644
--- a/code/defines/obj.dm
+++ b/code/defines/obj.dm
@@ -9,18 +9,17 @@
var/unacidable = 0 //universal "unacidabliness" var, here so you can use it in any obj.
animate_movement = 2
var/throwforce = 1
- proc
- handle_internal_lifeform(mob/lifeform_inside_me, breath_request)
- //Return: (NONSTANDARD)
- // null if object handles breathing logic for lifeform
- // datum/air_group to tell lifeform to process using that breath return
- //DEFAULT: Take air from turf to give to have mob process
- if(breath_request>0)
- return remove_air(breath_request)
- else
- return null
+ proc/handle_internal_lifeform(mob/lifeform_inside_me, breath_request)
+ //Return: (NONSTANDARD)
+ // null if object handles breathing logic for lifeform
+ // datum/air_group to tell lifeform to process using that breath return
+ //DEFAULT: Take air from turf to give to have mob process
+ if(breath_request>0)
+ return remove_air(breath_request)
+ else
+ return null
- initialize()
+ proc/initialize()
/obj/signpost
icon = 'stationobjs.dmi'
diff --git a/code/defines/obj/clothing/head.dm b/code/defines/obj/clothing/head.dm
index 8b46f54130a..fbc4fe96da6 100644
--- a/code/defines/obj/clothing/head.dm
+++ b/code/defines/obj/clothing/head.dm
@@ -13,7 +13,7 @@
desc = "A hood with radiation protective properties. Label: Made with lead, do not eat insulation"
radiation_protection = 0.35
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH
- armor = list(melee = 0, bullet = 0, laser = 2, taser = 2, bomb = 0, bio = 0, rad = 100)
+ armor = list(melee = 0, bullet = 0, laser = 2, taser = 2, bomb = 0, bio = 60, rad = 100)
/obj/item/clothing/head/bomb_hood
name = "bomb hood"
@@ -153,30 +153,6 @@
armor = list(melee = 75, bullet = 10, laser = 50, taser = 10, bomb = 25, bio = 10, rad = 0)
protective_temperature = 500
heat_transfer_coefficient = 0.10
- var/obj/item/clothing/glasses/hud/security/shud = null
-
-
- attackby(obj/item/weapon/W as obj, mob/user as mob)
- if((istype(W,/obj/item/clothing/glasses/hud/security)) && (!istype(src, /obj/item/clothing/head/helmet/space)) && (!shud))
- user.remove_from_mob(W)
- shud = W
- W.loc = src
- user << "You attach the [W.name] to the [src.name]."
- desc = "Standard Security gear. This helmet has a [shud.name] attached to it."
- return
- ..()
-
-
- attack_self(mob/user as mob)
- if(shud)
- shud.loc = get_turf(src)
- user << "You take the [shud.name] off of the [src.name]."
- shud = null
- desc = "Standard Security gear."
- return
- ..()
-
-
/obj/item/clothing/head/secsoft
name = "Soft Cap"
@@ -195,38 +171,6 @@
permeability_coefficient = 0.01
armor = list(melee = 0, bullet = 0, laser = 2, taser = 2, bomb = 0, bio = 25, rad = 25)
-/obj/item/clothing/head/helmet/space/engineering
- name = "Engineering space helmet"
- desc = "A special helmet designed for work in a hazardous, low-pressure environment. Painted in Engineering Orange to designate its department of origin."
- icon_state = "helm_engineering0"
- item_state = "helm-orange"
- var/brightness_on = 4
- var/on = 0
- radiation_protection = 0.25
- armor = list(melee = 40, bullet = 30, laser = 20, taser = 5, bomb = 35, bio = 50, rad = 50)
-
-/obj/item/clothing/head/helmet/space/command
- name = "Command space helmet"
- desc = "A special helmet designed to work in a hazardous, low-pressure environment. Painted in Command Blue to designate its department of origin."
- icon_state = "helm-command"
- item_state = "helm-command"
- radiation_protection = 0.25
- armor = list(melee = 40, bullet = 30, laser = 20, taser = 5, bomb = 35, bio = 50, rad = 50)
-
-/obj/item/clothing/head/helmet/space/command/chief_engineer
- name = "Chief engineer space helmet"
- desc = "A special helmet designed to work in a hazardous, low-pressure environment. Bears the insignia of the chief engineer."
- icon_state = "helm_ce0"
- item_state = "helm-ce"
- var/brightness_on = 4
- var/on = 0
-
-/obj/item/clothing/head/helmet/space/command/chief_medical_officer
- name = "Chief medical offier space helmet"
- desc = "A special helmet designed to work in a hazardous, low-pressure environment. Bears the insignia of the chief medical officer."
- icon_state = "helm-cmo"
- item_state = "helm-cmo"
-
/obj/item/clothing/head/helmet/space/capspace
name = "space helmet"
icon_state = "capspace"
@@ -237,13 +181,6 @@
permeability_coefficient = 0.01
armor = list(melee = 60, bullet = 50, laser = 50, taser = 25, bomb = 50, bio = 20, rad = 20)
-/obj/item/clothing/head/helmet/space/rig
- desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding."
- name = "rig helmet"
- icon_state = "rig"
- item_state = "rig_helm"
- radiation_protection = 0.25
- armor = list(melee = 40, bullet = 30, laser = 20, taser = 5, bomb = 35, bio = 50, rad = 50)
/obj/item/clothing/head/helmet/space/syndicate
name = "red space helmet"
@@ -275,15 +212,15 @@
icon_state = "syndicate-helm-green-dark"
item_state = "syndicate-helm-green-dark"
-/*/obj/item/clothing/head/helmet/space/syndicate/orange
+/obj/item/clothing/head/helmet/space/syndicate/orange
name = "Orange Space Helmet"
icon_state = "syndicate-helm-orange"
- item_state = "syndicate-helm-orange"*/ //As I said: Best used for engineering suits
+ item_state = "syndicate-helm-orange"
-/*/obj/item/clothing/head/helmet/space/syndicate/blue
+/obj/item/clothing/head/helmet/space/syndicate/blue
name = "Blue Space Helmet"
icon_state = "syndicate-helm-blue"
- item_state = "syndicate-helm-blue"*/
+ item_state = "syndicate-helm-blue"
/obj/item/clothing/head/helmet/space/syndicate/black
name = "Black Space Helmet"
@@ -300,10 +237,10 @@
icon_state = "syndicate-helm-black-blue"
item_state = "syndicate-helm-black-blue"
-/*/obj/item/clothing/head/helmet/space/syndicate/black/med
+/obj/item/clothing/head/helmet/space/syndicate/black/med
name = "Black Space Helmet"
icon_state = "syndicate-helm-black-med"
- item_state = "syndicate-helm-black"*/
+ item_state = "syndicate-helm-black"
/obj/item/clothing/head/helmet/space/syndicate/black/orange
name = "Black Space Helmet"
@@ -315,10 +252,10 @@
icon_state = "syndicate-helm-black-red"
item_state = "syndicate-helm-black-red"
-/*/obj/item/clothing/head/helmet/space/syndicate/black/engie
+obj/item/clothing/head/helmet/space/syndicate/black/engie
name = "Black Space Helmet"
icon_state = "syndicate-helm-black-engie"
- item_state = "syndicate-helm-black"*/
+ item_state = "syndicate-helm-black"
/obj/item/clothing/head/syndicatefake
name = "red space helmet replica"
diff --git a/code/defines/obj/clothing/suit.dm b/code/defines/obj/clothing/suit.dm
index c2498e645e8..a99263bc083 100644
--- a/code/defines/obj/clothing/suit.dm
+++ b/code/defines/obj/clothing/suit.dm
@@ -451,51 +451,33 @@
slowdown = 3
armor = list(melee = 20, bullet = 15, laser = 10, taser = 3, bomb = 15, bio = 30, rad = 40)
-/obj/item/clothing/suit/space/engineering
- name = "Engineering space suit"
- desc = "Much like its generic counterpart, the spacesuit is painted a bright orange color to designate its department of origin."
- icon_state = "suit-orange"
- item_state = "suit-orange"
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/satchel,/obj/item/device/t_scanner)
+
+/obj/item/clothing/head/helmet/space/rig
+ name = "Rig helmet"
+ desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding."
+ icon_state = "rig-engineering"
+ item_state = "rig_helm"
armor = list(melee = 40, bullet = 30, laser = 20, taser = 5, bomb = 35, bio = 50, rad = 50)
- slowdown = 2
- radiation_protection = 0.50
-
-/obj/item/clothing/suit/space/command
- name = "Command space suit"
- desc = "Much like its generic counterpart, the spacesuit is painted a dark blue color to designate its department of origin."
- icon_state = "suit-command"
- item_state = "suit-command"
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/gun/energy)
- armor = list(melee = 40, bullet = 30, laser = 20, taser = 5, bomb = 35, bio = 50, rad = 50)
- slowdown = 2
- radiation_protection = 0.25
-
-/obj/item/clothing/suit/space/command/chief_engineer
- name = "Chief engineer suit"
- desc = "Much like its generic counterpart, the spacesuit is painted a black and dark yellow color to designate its department of origin."
- icon_state = "suit-ce"
- item_state = "syndicate-black"
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/satchel,/obj/item/device/t_scanner,/obj/item/weapon/gun/energy)
- radiation_protection = 0.50
-
-/obj/item/clothing/suit/space/command/chief_medical_officer
- name = "Chief medical officer suit"
- desc = "Much like its generic counterpart, the spacesuit is marked with the red cross to designate its department of origin."
- icon_state = "suit-cmo"
- item_state = "syndicate-black"
- radiation_protection = 0.25
+ allowed = list(/obj/item/device/flashlight)
+/obj/item/clothing/head/helmet/space/rig/mining
+ icon_state = "rig-mining"
+ item_state = "rig_helm"
/obj/item/clothing/suit/space/rig
name = "Rig suit"
desc = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding."
- icon_state = "rig"
+ icon_state = "rig-engineering"
item_state = "rig_suit"
radiation_protection = 0.50
slowdown = 2
armor = list(melee = 40, bullet = 30, laser = 20, taser = 5, bomb = 35, bio = 50, rad = 50)
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/satchel)
+ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/satchel,/obj/item/device/t_scanner)
+
+/obj/item/clothing/suit/space/rig/mining
+ icon_state = "rig-mining"
+ item_state = "rig_suit"
+
/obj/item/clothing/suit/space/syndicate
name = "red space suit"
@@ -531,15 +513,15 @@
icon_state = "syndicate-green-dark"
item_state = "syndicate-green-dark"
-/*/obj/item/clothing/suit/space/syndicate/orange
+/obj/item/clothing/suit/space/syndicate/orange
name = "Orange Space Suit"
icon_state = "syndicate-orange"
- item_state = "syndicate-orange"*/ //Best used as an engineering suit, nyoro~n ;3 As is the other stuff below
+ item_state = "syndicate-orange"
-/*/obj/item/clothing/suit/space/syndicate/blue
+/obj/item/clothing/suit/space/syndicate/blue
name = "Blue Space Suit"
icon_state = "syndicate-blue"
- item_state = "syndicate-blue"*/
+ item_state = "syndicate-blue"
/obj/item/clothing/suit/space/syndicate/black
name = "Black Space Suit"
@@ -556,10 +538,10 @@
icon_state = "syndicate-black-blue"
item_state = "syndicate-black-blue"
-/*/obj/item/clothing/suit/space/syndicate/black/med
+/obj/item/clothing/suit/space/syndicate/black/med
name = "Green Space Suit"
icon_state = "syndicate-black-med"
- item_state = "syndicate-black"*/
+ item_state = "syndicate-black"
/obj/item/clothing/suit/space/syndicate/black/orange
name = "Black and Orange Space Suit"
@@ -571,10 +553,10 @@
icon_state = "syndicate-black-red"
item_state = "syndicate-black-red"
-/*/obj/item/clothing/suit/space/syndicate/black/engie
+/obj/item/clothing/suit/space/syndicate/black/engie
name = "Black Engineering Space Suit"
icon_state = "syndicate-black-engie"
- item_state = "syndicate-black"*/
+ item_state = "syndicate-black"
/obj/item/clothing/suit/syndicatefake
name = "red space suit replica"
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index 1a043f563df..5d115a53304 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -26,6 +26,16 @@
m_amt = 1000
origin_tech = "materials=2"
+/obj/item/weapon/sord
+ name = "SORD"
+ desc = "This thing is so unspeakably shitty you are having a hard time even holding it."
+ icon_state = "sord"
+ item_state = "sord"
+ flags = FPRINT | ONBELT | TABLEPASS
+ force = 2
+ throwforce = 1
+ w_class = 3
+
/obj/item/weapon/bodybag
name = "body bag"
desc = "Bag mixed with a bit of body."
diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm
index 7e439c6ccfc..9f5925f0b58 100644
--- a/code/game/gamemodes/cult/cult.dm
+++ b/code/game/gamemodes/cult/cult.dm
@@ -1,5 +1,3 @@
-
-
/datum/game_mode
var
list/datum/mind/cult = list()
@@ -11,7 +9,7 @@
/proc/is_convertable_to_cult(datum/mind/mind)
if(!istype(mind)) return 0
- if(istype(mind.current, /mob/living/carbon/human) && !(mind.assigned_role in list("Captain", "Head of Security", "Security Officer", "Detective", "Chaplain", "Warden"))) return 0
+ if(istype(mind.current, /mob/living/carbon/human) && (mind.assigned_role in list("Captain", "Head of Security", "Security Officer", "Detective", "Chaplain", "Warden"))) return 0
for(var/obj/item/weapon/implant/loyalty/L in mind.current)
if(L && L.implanted)
return 0
diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index a3378a795fa..7ce7bc636ef 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -258,7 +258,6 @@ datum/objective/steal
"a pair of magboots" = /obj/item/clothing/shoes/magboots,
"the station blueprints" = /obj/item/blueprints,
"thermal optics" = /obj/item/clothing/glasses/thermal,
- "a mining rig suit" = /obj/item/clothing/suit/space/rig,
"a nasa voidsuit" = /obj/item/clothing/suit/space/nasavoid,
"28 moles of plasma (full tank)" = /obj/item/weapon/tank,
)
diff --git a/code/game/jobs/jobprocs.dm b/code/game/jobs/jobprocs.dm
index 502eb9e86fa..8671e364007 100644
--- a/code/game/jobs/jobprocs.dm
+++ b/code/game/jobs/jobprocs.dm
@@ -325,7 +325,7 @@
src.equip_if_possible(new /obj/item/clothing/head/helmet/warden(src), slot_head)
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/clothing/glasses/sunglasses(src), slot_glasses)
+ 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)
@@ -354,7 +354,7 @@
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(src.back), slot_in_backpack)
- src.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(src), slot_glasses)
+ 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)
diff --git a/code/game/machinery/computer/explosive.dm b/code/game/machinery/computer/explosive.dm
index 8f7428b12f3..72d269acddd 100644
--- a/code/game/machinery/computer/explosive.dm
+++ b/code/game/machinery/computer/explosive.dm
@@ -74,15 +74,15 @@
if(href_list["inject1"])
var/obj/item/weapon/implant/I = locate(href_list["inject1"])
- I.trigger(1)
+ I.activate(1)
else if(href_list["inject5"])
var/obj/item/weapon/implant/I = locate(href_list["inject5"])
- I.trigger(5)
+ I.activate(5)
else if(href_list["inject10"])
var/obj/item/weapon/implant/I = locate(href_list["inject10"])
- I.trigger(10)
+ I.activate(10)
else if(href_list["lock"])
if(src.allowed(usr))
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index 7208eeedbc5..1bc044eb5d2 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -32,29 +32,11 @@
HELMET = new /obj/item/clothing/head/helmet/space/
MASK = new /obj/item/clothing/mask/breath
-/obj/machinery/suit_storage_unit/engineering_unit
- SUIT = new /obj/item/clothing/suit/space/engineering
- HELMET = new /obj/item/clothing/head/helmet/space/engineering
- MASK = new /obj/item/clothing/mask/breath
-
-/obj/machinery/suit_storage_unit/chief_engineer_unit
- SUIT = new /obj/item/clothing/suit/space/command/chief_engineer
- HELMET = new /obj/item/clothing/head/helmet/space/command/chief_engineer
- MASK = new /obj/item/clothing/mask/breath
-
-/obj/machinery/suit_storage_unit/chief_medical_officer_unit
- SUIT = new /obj/item/clothing/suit/space/command/chief_medical_officer
- HELMET = new /obj/item/clothing/head/helmet/space/command/chief_medical_officer
- MASK = new /obj/item/clothing/mask/breath
-
-/obj/machinery/suit_storage_unit/command_unit
- SUIT = new /obj/item/clothing/suit/space/command
- HELMET = new /obj/item/clothing/head/helmet/space/command
- MASK = new /obj/item/clothing/mask/breath
/obj/machinery/suit_storage_unit/New()
src.update_icon()
+
/obj/machinery/suit_storage_unit/update_icon()
var/hashelmet = 0
var/hassuit = 0
@@ -67,6 +49,7 @@
hashuman = 1
icon_state = text("suitstorage[][][][][][][][][]",hashelmet,hassuit,hashuman,src.isopen,src.islocked,src.isUV,src.ispowered,src.isbroken,src.issuperUV)
+
/obj/machinery/suit_storage_unit/power_change()
if( powered() )
src.ispowered = 1
@@ -81,6 +64,7 @@
src.dump_everything()
src.update_icon()
+
/obj/machinery/suit_storage_unit/ex_act(severity)
switch(severity)
if(1.0)
@@ -89,13 +73,14 @@
del(src)
return
if(2.0)
- if (prob(50))
+ if(prob(50))
src.dump_everything()
del(src)
return
else
return
+
/obj/machinery/suit_storage_unit/attack_hand(mob/user as mob)
var/dat
if(..())
@@ -156,6 +141,7 @@
onclose(user, "suit_storage_unit")
return
+
/obj/machinery/suit_storage_unit/Topic(href, href_list) //I fucking HATE this proc
if(..())
return
@@ -202,6 +188,7 @@
src.add_fingerprint(usr)
return
+
/obj/machinery/suit_storage_unit/proc/toggleUV(mob/user as mob)
var/protected = 0
var/mob/living/carbon/human/H = user
@@ -227,6 +214,7 @@
src.issuperUV = 1
return
+
/obj/machinery/suit_storage_unit/proc/togglesafeties(mob/user as mob)
var/protected = 0
var/mob/living/carbon/human/H = user
@@ -247,6 +235,7 @@
user << "You push the button. The coloured LED next to it changes."
src.safetieson = !src.safetieson
+
/obj/machinery/suit_storage_unit/proc/dispense_helmet(mob/user as mob)
if(!src.HELMET)
return //Do I even need this sanity check? Nyoro~n
@@ -255,6 +244,7 @@
src.HELMET = null
return
+
/obj/machinery/suit_storage_unit/proc/dispense_suit(mob/user as mob)
if(!src.SUIT)
return
@@ -263,6 +253,7 @@
src.SUIT = null
return
+
/obj/machinery/suit_storage_unit/proc/dispense_mask(mob/user as mob)
if(!src.MASK)
return
@@ -271,6 +262,7 @@
src.MASK = null
return
+
/obj/machinery/suit_storage_unit/proc/dump_everything()
src.islocked = 0 //locks go free
if(src.SUIT)
@@ -286,6 +278,7 @@
src.eject_occupant(OCCUPANT)
return
+
/obj/machinery/suit_storage_unit/proc/toggle_open(mob/user as mob)
if(src.islocked || src.isUV)
user << "Unable to open unit."
@@ -296,6 +289,7 @@
src.isopen = !src.isopen
return
+
/obj/machinery/suit_storage_unit/proc/toggle_lock(mob/user as mob)
if(src.OCCUPANT && src.safetieson)
user << "The Unit's safety protocols disallow locking when a biological form is detected inside its compartments."
@@ -305,6 +299,7 @@
src.islocked = !src.islocked
return
+
/obj/machinery/suit_storage_unit/proc/start_UV(mob/user as mob)
if(src.isUV || src.isopen) //I'm bored of all these sanity checks
return
@@ -383,11 +378,13 @@
user << "Test. You gave him 8 damage"
return*/
+
/obj/machinery/suit_storage_unit/proc/cycletimeleft()
if(src.cycletime_left >= 1)
src.cycletime_left--
return src.cycletime_left
+
/obj/machinery/suit_storage_unit/proc/eject_occupant(mob/user as mob)
if (src.islocked)
return
@@ -412,6 +409,7 @@
src.update_icon()
return
+
/obj/machinery/suit_storage_unit/verb/get_out()
set name = "Eject Suit Storage Unit"
set category = "Object"
@@ -425,6 +423,7 @@
src.update_icon()
return
+
/obj/machinery/suit_storage_unit/verb/move_inside()
set name = "Hide in Suit Storage Unit"
set category = "Object"
@@ -463,6 +462,7 @@
src.OCCUPANT = null //Testing this as a backup sanity test
return
+
/obj/machinery/suit_storage_unit/attackby(obj/item/I as obj, mob/user as mob)
if(!src.ispowered)
return
@@ -551,9 +551,11 @@
src.updateUsrDialog()
return
+
/obj/machinery/suit_storage_unit/attack_ai(mob/user as mob)
return src.attack_hand(user)
+
/obj/machinery/suit_storage_unit/attack_paw(mob/user as mob)
user << "The console controls are far too complicated for your tiny brain!"
return
diff --git a/code/game/objects/closets/secure/security.dm b/code/game/objects/closets/secure/security.dm
index 98f70dcf93b..9d10345c459 100644
--- a/code/game/objects/closets/secure/security.dm
+++ b/code/game/objects/closets/secure/security.dm
@@ -8,7 +8,7 @@
new /obj/item/device/flash(src)
new /obj/item/clothing/suit/armor/vest(src)
new /obj/item/clothing/head/helmet(src)
- new /obj/item/clothing/glasses/sunglasses(src)
+ new /obj/item/clothing/glasses/sunglasses/sechud(src)
new /obj/item/weapon/melee/baton(src)
return
@@ -30,6 +30,7 @@
new /obj/item/clothing/gloves/black( src )
new /obj/item/weapon/storage/lglo_kit( src )
new /obj/item/weapon/fcardholder( src )
+ new /obj/item/weapon/clipboard( src )
new /obj/item/device/detective_scanner( src )
return
@@ -56,7 +57,7 @@
new /obj/item/device/flash( src )
new /obj/item/clothing/under/rank/head_of_security( src )
new /obj/item/clothing/shoes/brown( src )
- new /obj/item/clothing/glasses/sunglasses( src )
+ new /obj/item/clothing/glasses/sunglasses/sechud( src )
new /obj/item/clothing/suit/armor/hos( src )
new /obj/item/clothing/head/helmet( src )
new /obj/item/weapon/storage/flashbang_kit(src)
diff --git a/code/game/objects/devices/flash.dm b/code/game/objects/devices/flash.dm
index 39eec630f2f..ba536cdaeed 100644
--- a/code/game/objects/devices/flash.dm
+++ b/code/game/objects/devices/flash.dm
@@ -46,22 +46,28 @@
flick("e_flash", M.flash)
if(ishuman(M))
- var/revsafe = 0
- for(var/obj/item/weapon/implant/loyalty/L in M)
- if(L && L.implanted)
- revsafe = 1
- break
- if(M.mind.has_been_rev)
- revsafe = 1
- if(!revsafe)
- if(user.mind in ticker.mode.head_revolutionaries)
- ticker.mode.add_revolutionary(M.mind)
+ if(user.mind in ticker.mode.head_revolutionaries)
+ var/revsafe = 0
+ for(var/obj/item/weapon/implant/loyalty/L in M)
+ if(L && L.implanted)
+ revsafe = 1
+ break
+ if(M.mind.has_been_rev)
+ revsafe = 2
+ if(!revsafe)
M.mind.has_been_rev = 1
+ ticker.mode.add_revolutionary(M.mind)
+ else if(revsafe == 1)
+ user << "\red Something seems to be blocking the flash!"
+ else
+ user << "\red This mind seems resistant to the flash!"
else
flashfail = 1
- else if(isrobot(M))
+ else if(issilicon(M))
M.weakened = max(user.weakened, rand(5,10))
+
+ if(isrobot(user))
spawn(0)
var/atom/movable/overlay/animation = new(user.loc)
animation.layer = user.layer + 1
diff --git a/code/game/objects/devices/flashlight.dm b/code/game/objects/devices/flashlight.dm
index 9d393c1a500..d84299e05cb 100644
--- a/code/game/objects/devices/flashlight.dm
+++ b/code/game/objects/devices/flashlight.dm
@@ -104,6 +104,7 @@
user.sd_SetLuminosity(user.luminosity - brightness_on)
src.sd_SetLuminosity(brightness_on)
+/*
/obj/item/clothing/head/helmet/space/engineering/verb/toggle()
set name = "Toggle Helmet Light"
set category = "Object"
@@ -164,3 +165,4 @@
usr.sd_SetLuminosity(usr.luminosity - brightness_on)
src.sd_SetLuminosity(brightness_on)
+*/
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm
index 57aa1762977..6b21bf726c7 100644
--- a/code/game/objects/items/weapons/implants/implant.dm
+++ b/code/game/objects/items/weapons/implants/implant.dm
@@ -7,11 +7,16 @@
allow_reagents = 0
proc
trigger(emote, source as mob)
+ activate()
implanted(source as mob)
get_data()
- trigger()
+ trigger(emote, source as mob)
+ return
+
+
+ activate()
return
@@ -81,30 +86,6 @@ ID (1-100):
+
"}
return dat
- Topic(href, href_list)
- ..()
- if (usr.stat)
- return
- var/obj/item/weapon/implantpad/IP = (locate(/obj/item/weapon/implantpad) in usr)
- if(IP)
- if(IP.case)
- if(IP.case.imp == src)
- usr.machine = src
- if (href_list["id"])
- src.id += text2num(href_list["id"])
- src.id = min(100, src.id)
- src.id = max(1, src.id)
- if (istype(src.loc, /mob))
- attack_self(src.loc)
- else
- for(var/mob/M in viewers(1, src))
- if (M.client)
- src.attack_self(M)
- src.add_fingerprint(usr)
- return
- usr << browse(null, "window=implantpad")
- return
-
/obj/item/weapon/implant/explosive
@@ -126,6 +107,11 @@ ID (1-100):
return dat
+ activate(var/cause)
+ if((!cause) || (!src.imp_in)) return 0
+ //explode here
+
+
/obj/item/weapon/implant/chem
name = "chem"
@@ -158,10 +144,10 @@ the implant may become unstable and either pre-maturely inject the subject or si
R.my_atom = src
- trigger(var/number = 0)
- if((!number) || (!src.imp_in)) return 0
+ activate(var/cause)
+ if((!cause) || (!src.imp_in)) return 0
var/mob/living/carbon/R = src.imp_in
- src.reagents.trans_to(R, number)
+ src.reagents.trans_to(R, cause)
R << "You hear a faint *beep*."
if(!src.reagents.total_volume)
R << "You hear a faint click from your chest."
diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm
index 7a4dd84d770..62910591e24 100644
--- a/code/game/objects/items/weapons/implants/implantchair.dm
+++ b/code/game/objects/items/weapons/implants/implantchair.dm
@@ -41,11 +41,12 @@
else
health_text = "[round(src.occupant.health,0.1)]"
- var/dat = {"Implanter Status
- Current occupant: [src.occupant ? "
Name: [src.occupant]
Health: [health_text]
" : "None"]
- Implants: [src.implant_list.len ? "[implant_list.len]" : "Replenish"]
- [src.ready ? "Implant" : "Recharging"]
- "}
+ var/dat ="Implanter Status
"
+
+ dat +="Current occupant: [src.occupant ? "
Name: [src.occupant]
Health: [health_text]
" : "None"]
"
+ dat += "Implants: [src.implant_list.len ? "[implant_list.len]" : "Replenish"]
"
+ if(src.occupant)
+ dat += "[src.ready ? "Implant" : "Recharging"]
"
user.machine = src
user << browse(dat, "window=implant")
onclose(user, "implant")
@@ -54,11 +55,12 @@
Topic(href, href_list)
if((get_dist(src, usr) <= 1) || istype(usr, /mob/living/silicon/ai))
if(href_list["implant"])
- injecting = 1
- go_out()
- ready = 0
- spawn(injection_cooldown)
- ready = 1
+ if(src.occupant)
+ injecting = 1
+ go_out()
+ ready = 0
+ spawn(injection_cooldown)
+ ready = 1
if(href_list["replenish"])
ready = 0
diff --git a/code/game/objects/items/weapons/implants/implantpad.dm b/code/game/objects/items/weapons/implants/implantpad.dm
index 24a5443737e..dfa54a6bf32 100644
--- a/code/game/objects/items/weapons/implants/implantpad.dm
+++ b/code/game/objects/items/weapons/implants/implantpad.dm
@@ -74,17 +74,17 @@
onclose(user, "implantpad")
return
-/*
+
Topic(href, href_list)
..()
if (usr.stat)
return
- if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))))
+ if ((usr.contents.Find(src)) || ((in_range(src, usr) && istype(src.loc, /turf))))
usr.machine = src
- if (href_list["id"])
+ if (href_list["tracking_id"])
if ((istype(src.case, /obj/item/weapon/implantcase) && istype(src.case.imp, /obj/item/weapon/implant/tracking)))
var/obj/item/weapon/implant/tracking/T = src.case.imp
- T.id += text2num(href_list["id"])
+ T.id += text2num(href_list["tracking_id"])
T.id = min(100, T.id)
T.id = max(1, T.id)
if (istype(src.loc, /mob))
@@ -98,4 +98,4 @@
else
usr << browse(null, "window=implantpad")
return
- return*/
\ No newline at end of file
+ return
\ No newline at end of file
diff --git a/code/game/objects/tank.dm b/code/game/objects/tank.dm
index d8e9ac7a0de..cf5f5c8064f 100644
--- a/code/game/objects/tank.dm
+++ b/code/game/objects/tank.dm
@@ -36,13 +36,13 @@
name = "Void Jetpack (oxygen)"
desc = "It works well in a void."
icon_state = "voidjetpack0"
- item_state = "jetpack"
+ item_state = "jetpack-void"
/obj/item/weapon/tank/jetpack/black_jetpack
name = "Black Jetpack (oxygen)"
desc = "A black model of jetpacks."
icon_state = "black_jetpack0"
- item_state = "black_jetpack"
+ item_state = "jetpack-black"
/obj/item/weapon/tank/oxygen
name = "Gas Tank (Oxygen)"
diff --git a/code/game/shuttle_engines.dm b/code/game/shuttle_engines.dm
index 6c6ca67acfb..044110247ab 100644
--- a/code/game/shuttle_engines.dm
+++ b/code/game/shuttle_engines.dm
@@ -35,8 +35,3 @@
/obj/structure/shuttle/engine/router
name = "router"
icon_state = "router"
-/obj/machinery/shuttle/engine/heater
-/obj/machinery/shuttle/engine/propulsion
-/obj/item/clothing/suit/armor/powered
-/obj/item/clothing/head/helmet/powered
-/obj/machinery/shuttle/engine/propulsion/burst
\ No newline at end of file
diff --git a/code/defines/obj/clothing/glasses.dm b/code/modules/clothing/glasses/glasses.dm
similarity index 64%
rename from code/defines/obj/clothing/glasses.dm
rename to code/modules/clothing/glasses/glasses.dm
index 28a18918652..341b1050cae 100644
--- a/code/defines/obj/clothing/glasses.dm
+++ b/code/modules/clothing/glasses/glasses.dm
@@ -1,16 +1,31 @@
-// GLASSES
-
/obj/item/clothing/glasses
name = "glasses"
icon = 'glasses.dmi'
w_class = 2.0
flags = GLASSESCOVERSEYES
+ var
+ vision_flags = 0
+ darkness_view = 0//Base human is 2
+ invisa_view = 0
+
+/*
+SEE_SELF // can see self, no matter what
+SEE_MOBS // can see all mobs, no matter what
+SEE_OBJS // can see all objs, no matter what
+SEE_TURFS // can see all turfs (and areas), no matter what
+SEE_PIXELS// if an object is located on an unlit area, but some of its pixels are
+ // in a lit area (via pixel_x,y or smooth movement), can see those pixels
+BLIND // can't see anything
+*/
+
/obj/item/clothing/glasses/blindfold
name = "blindfold"
desc = "Makes you like...blind."
icon_state = "blindfold"
item_state = "blindfold"
+ vision_flags = BLIND
+
/obj/item/clothing/glasses/meson
name = "Optical Meson Scanner"
@@ -18,6 +33,9 @@
icon_state = "meson"
item_state = "glasses"
origin_tech = "magnets=2;engineering=2"
+ vision_flags = SEE_TURFS
+ darkness_view = -2
+
/obj/item/clothing/glasses/night
name = "Night Vision Goggles"
@@ -25,13 +43,18 @@
icon_state = "night"
item_state = "glasses"
origin_tech = "magnets=2"
+ vision_flags = SEE_TURFS
+ darkness_view = 3
+
/obj/item/clothing/glasses/material
name = "Optical Material Scanner"
- desc = "Veru confusing glasses."
+ desc = "Very confusing glasses."
icon_state = "material"
item_state = "glasses"
origin_tech = "magnets=3;engineering=3"
+ vision_flags = SEE_OBJS
+
/obj/item/clothing/glasses/regular
name = "Prescription Glasses"
@@ -39,19 +62,33 @@
icon_state = "glasses"
item_state = "glasses"
+
/obj/item/clothing/glasses/gglasses
name = "Green Glasses"
desc = "Forest green glasses, like the kind you'd wear when hatching a nasty scheme."
icon_state = "gglasses"
item_state = "gglasses"
+
/obj/item/clothing/glasses/sunglasses
desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes."
name = "Sunglasses"
icon_state = "sun"
item_state = "sunglasses"
protective_temperature = 1300
-// var/already_worn = 0
+ darkness_view = -1
+
+/obj/item/clothing/glasses/sunglasses/sechud
+ name = "HUDSunglasses"
+ desc = "Sunglasses with a HUD."
+ icon_state = "sunhud"
+ var/obj/item/clothing/glasses/hud/security/hud = null
+
+ New()
+ ..()
+ src.hud = new/obj/item/clothing/glasses/hud/security(src)
+ return
+
/obj/item/clothing/glasses/thermal
name = "Optical Thermal Scanner"
@@ -59,6 +96,8 @@
icon_state = "thermal"
item_state = "glasses"
origin_tech = "magnets=3"
+ vision_flags = SEE_MOBS
+ invisa_view = 2
/obj/item/clothing/glasses/thermal/monocle
name = "Thermoncle"
@@ -66,30 +105,12 @@
icon_state = "thermoncle"
flags = null //doesn't protect eyes because it's a monocle, duh
+
/obj/item/clothing/glasses/thermal/eyepatch
name = "Optical Thermal Eyepatch"
desc = "An eyepatch with built-in thermal optics"
icon_state = "eyepatch"
item_state = "eyepatch"
-/proc/RoundHealth(health)
- switch(health)
- if(100 to INFINITY)
- return "health100"
- if(70 to 100)
- return "health80"
- if(50 to 70)
- return "health60"
- if(30 to 50)
- return "health40"
- if(20 to 30)
- return "health25"
- if(5 to 15)
- return "health10"
- if(1 to 5)
- return "health1"
- if(-99 to 0)
- return "health0"
- else
- return "health-100"
- return "0"
\ No newline at end of file
+
+
diff --git a/code/game/objects/items/clothing/hud.dm b/code/modules/clothing/glasses/hud.dm
similarity index 62%
rename from code/game/objects/items/clothing/hud.dm
rename to code/modules/clothing/glasses/hud.dm
index ad1dfc36ec6..26985353656 100644
--- a/code/game/objects/items/clothing/hud.dm
+++ b/code/modules/clothing/glasses/hud.dm
@@ -14,8 +14,54 @@
name = "Health Scanner HUD"
desc = "A heads-up display that scans the humans in view and provides accurate data about their health status."
icon_state = "healthhud"
+ proc
+ RoundHealth(health)
+ RoundHealth(health)
+ switch(health)
+ if(100 to INFINITY)
+ return "health100"
+ if(70 to 100)
+ return "health80"
+ if(50 to 70)
+ return "health60"
+ if(30 to 50)
+ return "health40"
+ if(20 to 30)
+ return "health25"
+ if(5 to 15)
+ return "health10"
+ if(1 to 5)
+ return "health1"
+ if(-99 to 0)
+ return "health0"
+ else
+ return "health-100"
+ return "0"
+
+
+ process_hud(var/mob/M)
+ if(!M) return
+ if(!M.client) return
+ var/client/C = M.client
+ var/icon/tempHud = 'hud.dmi'
+ for(var/mob/living/carbon/human/patient in view(M))
+ var/foundVirus = 0
+ for(var/datum/disease/D in patient.viruses)
+ if(!D.hidden[SCANNER])
+ foundVirus++
+ if(patient.virus2)
+ foundVirus++
+ C.images += image(tempHud,patient,"hud[RoundHealth(patient.health)]")
+ if(patient.stat == 2)
+ C.images += image(tempHud,patient,"huddead")
+ else if(patient.alien_egg_flag)
+ C.images += image(tempHud,patient,"hudxeno")
+ else if(foundVirus)
+ C.images += image(tempHud,patient,"hudill")
+ else
+ C.images += image(tempHud,patient,"hudhealthy")
/obj/item/clothing/glasses/hud/security
@@ -23,6 +69,7 @@
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status."
icon_state = "securityhud"
+
process_hud(var/mob/M)
if(!M) return
if(!M.client) return
diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm
index 3a895400855..1e874f496ea 100644
--- a/code/modules/mob/living/carbon/human/death.dm
+++ b/code/modules/mob/living/carbon/human/death.dm
@@ -15,8 +15,7 @@
src << browse(null, "window=spideros")//Just in case.
var/location = loc
explosion(location, 1, 2, 3, 4)
- //src.flags = 0
- //reagents.handle_reactions() //No magic stomach for corpses.
+
canmove = 0
if(src.client)
src.blind.layer = 0
@@ -27,13 +26,10 @@
hand = 1
drop_item()
hand = h
- if (istype(wear_suit, /obj/item/clothing/suit/armor/a_i_a_ptank))
- var/obj/item/clothing/suit/armor/a_i_a_ptank/A = wear_suit
- bombers += "[key] has detonated a suicide bomb. Temp = [A.part4.air_contents.temperature-T0C]."
- // world << "Detected that [src.key] is wearing a bomb" debug stuff
- if(A.status && prob(90))
- // world << "Bomb has ignited?"
- A.part4.ignite()
+ //This is where the suicide assemblies checks would go
+ for (var/obj/item/weapon/implant/I in src)
+ if (I.implanted)
+ I.activate(10)
if (client)
spawn(10)
@@ -44,27 +40,9 @@
if(mind)
mind.store_memory("Time of death: [tod]", 0)
sql_report_death(src)
- //src.icon_state = "dead"
+ //Calls the rounds wincheck, mainly for wizard, malf, and changeling now
ticker.mode.check_win()
-
- /*
- if (ticker.mode.name == "Corporate Restructuring" && ticker.target != src)
- src.unlock_medal("Expendable", 1)
-
- //For restructuring
- if (ticker.mode.name == "Corporate Restructuring" || ticker.mode.name == "revolution")
- ticker.check_win()
-
- if (ticker.mode.name == "wizard" && src == ticker.killer)
- world << "Research Station Victory"
- world << "The Wizard has been killed! The wizards federation has been taught an important lesson."
- ticker.processing = 0
- sleep(100)
- world << "\blue Rebooting due to end of game"
- world.Reboot()
- */ //TODO: FIX
-
//Traitor's dead! Oh no!
if (ticker.mode.name == "traitor" && src.mind && src.mind.special_role == "traitor")
message_admins("\red Traitor [key_name_admin(src)] has died.")
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 4ed97a7e388..10881a3c3b4 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -87,43 +87,6 @@
..() //for organs
-/*
-................................................ ..........................._,-~"¯¯"~-,
-.................................................. ................__„-~"¯¯:::,-~~-,_::::"-
-.................................................. ..........„~"¯::::::::::::::"::::::::::::::::::::::\
-.................................................. .__„„„-"::::::::::::::::::::::::::::::::::::::::::::::"~-,
-..........................................__-~"::,-':::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::~-,
-..........................._______~"___-~"::::::::::::::::::::::::::::::::::::::::::::: ::: :: :::::::::::"-,
-......................,~"::::::::::::::¯¯::::::::: ::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::,: |
-....................:/:::::::::::::::::__-~":::::::::::::::::::::::::::::::::::::::::::::::::_,-~":'\'-,:\:|:\|::\|\::\:|
-...................,'::::::::,-~~"~"_::',::|::::::::::::::::::::::::::::::::::: :: :::,~ ':\'-,::',"-\::'':"::::::::\|:|/
-..............._,-'"~----":::/,~"¯"-:|::|::|:::::::::::::::::::::::::::::::::::,~"::\'-,:\;;'-';;;;;;;;;;;,-'::\::|/
-............,-'::::::::::::::::'-\~"O¯_/::,'::|:::::::::::::::::::::::::::::::::,-',::\'-,:|::";;;;;;;;;;;;,-':\:'-,::\
-............|:::::::::::::::::-,_'~'::::,-'::,':::::::::::::::::::::::::::::,-':\'-,:\'-,';;';;;;;;;;;;;;;,-':\:::'\-,|''
-............|::,-~"::::::::::::::"~~":::,-'::::::::::::::::::::::::_,-~':\'-,|:"'";;;;;;;;;;;;;;,-'¯::'-,:',\|
-.........../::/::::::::::::::::::::::::::::::::::::::::::::_,„-~"¯\:\'-,|;''-';;;;;;;;;;;;;;;;;;,-'--,::\-:\:\|
-........./::::|:::::::::::::::::::::::::::::::::::::::::,-';;'-';;;;',/;\/;;;;;;;;;;;;;;;;;;;;,-,|:::\-,:|\|..\|
-......./:::::::\:::::::::::::::::::::::::::::::::::::,-';;;;;;;;;;;;;;;;;;;;;;;;;;;,-~'''("-,\:::|\:|::''
-......,':::::::,'::::::::::::::::::::::::::::::::: :,-'/;;;;;;;;;;;;;;;;;;;;;;;;;,--'::::::/"~'
-.....,'::::::::|:::::::::::::::::::::::::::::,„-~"::|;;;;;;;;;;;;;;;;;;;;;,-'::::::::,'::::/
-..../:::::::::|:::::::::::::„---~~""¯¯¯::',:::::,';;;;;;;;;;;;;;;;;;;,'::::::::: :: |_,-'
-..,'::::::::::::",:,-~"¯::::::::"-,::::::::::|:::/;;;;;;;;;;;;;;;;;;;,':::::::|::::,'
-./:::::::::::::::|:::::::::::::::::::"-,:::::::\:::|¯¯¯"""~-,~,_/::::::::,':::/
-::::::::::::::::::::::::::::::::::::::"~-,_::|::\: : : : : : |: : \::::::::/:/
-::::::::::::::::::::::::::::::",:::::::::::::"-':::\: : : : : : |: : :\::::::\ APRIL FOOLS LOVE UHANGAY
-::::::::::::::::::::::::::::::::",:::::::::::::: ::::\: : : : : : \: : : |:::::;;\
-::::::::::::::::::"-,:::::::::::::::",:::::::::::::::/|\ ,: : : : : : : |::::,'/|::::|
-:::::::::::::::::::::"-,:::::::::::::::"-,_::::::::::\|:/|,: : : : : : : |::: |'-,/|:::|
-::::::::::::::::::::::::"~-,_::::::::::::::"~-,_:::"-,/|/\::::::::::: \::: \"-/|::|
-:::::::::::::::::::::::::::::::"~-,__:::::::::::',"-,:::"_|/\:|\: : : : \::\":/|\|
-::::::::::::::::::::::::::::::::::::::::"~-,_:::::\:::\:::"~/_:|:|\: : : '-,\::"::,'\
-:::::::::::::::::::::::::::::::::::::::::::::::"-,_:'-,::\:::::::"-,|:||\,-, : '-,\:::|-'-
-:::::::::::::::::::::::::::::::::::::::::::::::::: ::,-,'"-:"~,:::::"/_/::|-/\--';;\:::/: ||\-,
-:::::::::::::::::::::::::::::::::::::::::::::::::: :/...'-,::::::"~„::::"-,/_:|:/\:/|/|/|_/:|
-:::::::::::::::::::::::::::::::::::::::::::::::::: |......"-,::::::::"~-:::::""~~~"¯:::|
-:::::::::::::::::::::::::::::::::::::::::::::::::: |........."-,_::::::::::::::::::::::::::::/
-:::::::::::::::::::::::::::::::::::::::::::::::::\ .............."~--„_____„„-~~"
-*/
/mob/living/carbon/human
proc
@@ -138,6 +101,7 @@
oxyloss = max(oxyloss, 0)
fireloss = max(fireloss, 0)
+
update_mind()
if(!mind && client)
mind = new
@@ -147,6 +111,7 @@
mind.assigned_role = "Assistant"
mind.key = key
+
handle_disabilities()
if (disabilities & 2)
if ((prob(1) && paralysis < 1 && r_epil < 1))
@@ -193,8 +158,8 @@
if(3)
emote("drool")
- handle_mutations_and_radiation()
+ handle_mutations_and_radiation()
if(fireloss)
if(mutations & COLD_RESISTANCE || (prob(1) && prob(75)))
heal_organ_damage(0,1)
@@ -320,9 +285,8 @@
//if (internals) //should be unnecessary, uncomment if it isn't. -raftaf0
// internals.icon_state = "internal1"
return internal.remove_air_volume(volume_needed)
- else
- if (internals)
- internals.icon_state = "internal0"
+ else if(internals)
+ internals.icon_state = "internal0"
return null
update_canmove()
@@ -826,49 +790,44 @@
if(!druggy)
see_invisible = 0
- else if (istype(glasses, /obj/item/clothing/glasses/meson))
+ else if(istype(glasses, /obj/item/clothing/glasses/meson))
sight |= SEE_TURFS
if(!druggy)
see_invisible = 0
- else if (istype(glasses, /obj/item/clothing/glasses/night))
+ else if(istype(glasses, /obj/item/clothing/glasses/night))
see_in_dark = 5
if(!druggy)
see_invisible = 0
- else if (istype(glasses, /obj/item/clothing/glasses/thermal))
+ else if(istype(glasses, /obj/item/clothing/glasses/thermal))
sight |= SEE_MOBS
if(!druggy)
see_invisible = 2
- else if (istype(glasses, /obj/item/clothing/glasses/material))
+ else if(istype(glasses, /obj/item/clothing/glasses/material))
sight |= SEE_OBJS
if (!druggy)
see_invisible = 0
- else if (istype(glasses, /obj/item/clothing/glasses/hud/health))
+ else if(istype(glasses, /obj/item/clothing/glasses/hud/health))
if(client)
-
- var/icon/tempHud = 'hud.dmi'
- for(var/mob/living/carbon/human/patient in view(src))
-
- var/foundVirus = 0
- for(var/datum/disease/D in patient.viruses)
- if(!D.hidden[SCANNER])
- foundVirus++
-
- if(patient.virus2)
- foundVirus++
-
- client.images += image(tempHud,patient,"hud[RoundHealth(patient.health)]")
- if(patient.stat == 2)
- client.images += image(tempHud,patient,"huddead")
- else if(patient.alien_egg_flag)
- client.images += image(tempHud,patient,"hudxeno")
- else if(foundVirus)
- client.images += image(tempHud,patient,"hudill")
- else
- client.images += image(tempHud,patient,"hudhealthy")
+ glasses:process_hud(src)
if (!druggy)
see_invisible = 0
- else if (stat != 2)
+ else if(istype(glasses, /obj/item/clothing/glasses/hud/security))
+ if(client)
+ glasses:process_hud(src)
+ if (!druggy)
+ see_invisible = 0
+
+ else if(istype(glasses, /obj/item/clothing/glasses/sunglasses))
+ see_in_dark = 1
+ if(istype(glasses, /obj/item/clothing/glasses/sunglasses/sechud))
+ if(client)
+ if(glasses:hud)
+ glasses:hud:process_hud(src)
+ if (!druggy)
+ see_invisible = 0
+
+ else if(stat != 2)
sight &= ~SEE_TURFS
sight &= ~SEE_MOBS
sight &= ~SEE_OBJS
@@ -887,23 +846,23 @@
if(!seer)
see_invisible = 0
- else if (istype(glasses, /obj/item/clothing/glasses/sunglasses))
- see_in_dark = 1
- else if (istype(head, /obj/item/clothing/head/helmet/welding))
+ else if(istype(head, /obj/item/clothing/head/helmet/welding))
if(!head:up && tinted_weldhelh)
see_in_dark = 1
- if(istype(glasses, /obj/item/clothing/glasses/hud/security))
- if(client)
- glasses:process_hud(src)
- if(!druggy)
- see_invisible = 0
- else if((istype(head, /obj/item/clothing/head/helmet)) && (!istype(head, /obj/item/clothing/head/helmet/space)))
- if(client)
- if(head:shud)
- head:shud:process_hud(src)
- if(!druggy)
- see_invisible = 0
+/*
+ if (istype(glasses, /obj/item/clothing/glasses))
+ sight = glasses.vision_flags
+ see_in_dark = 2 + glasses.darkness_view
+ see_invisible = invisa_view
+
+ if(istype(glasses, /obj/item/clothing/glasses/hud))
+ if(client)
+ glasses:process_hud(src)
+*/
+//Should finish this up later
+
+
if (sleep) sleep.icon_state = text("sleep[]", sleeping)
if (rest) rest.icon_state = text("rest[]", resting)
diff --git a/code/modules/mob/living/silicon/pai/hud.dm b/code/modules/mob/living/silicon/pai/hud.dm
index 6a038e46777..4f664e0b4ab 100644
--- a/code/modules/mob/living/silicon/pai/hud.dm
+++ b/code/modules/mob/living/silicon/pai/hud.dm
@@ -48,4 +48,26 @@
else if(foundVirus)
client.images += image(tempHud,patient,"hudill")
else
- client.images += image(tempHud,patient,"hudhealthy")
\ No newline at end of file
+ client.images += image(tempHud,patient,"hudhealthy")
+
+/mob/living/silicon/pai/proc/RoundHealth(health)
+ switch(health)
+ if(100 to INFINITY)
+ return "health100"
+ if(70 to 100)
+ return "health80"
+ if(50 to 70)
+ return "health60"
+ if(30 to 50)
+ return "health40"
+ if(20 to 30)
+ return "health25"
+ if(5 to 15)
+ return "health10"
+ if(1 to 5)
+ return "health1"
+ if(-99 to 0)
+ return "health0"
+ else
+ return "health-100"
+ return "0"
\ No newline at end of file
diff --git a/icons/mob/eyes.dmi b/icons/mob/eyes.dmi
index 322f7acec6f..a8b337101ae 100644
Binary files a/icons/mob/eyes.dmi and b/icons/mob/eyes.dmi differ
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index 6c1704e0124..33aedc2fe3e 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi
index 1872a6916ef..53b42da8bb3 100644
Binary files a/icons/mob/items_lefthand.dmi and b/icons/mob/items_lefthand.dmi differ
diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi
index e66440deadb..a06e108fb80 100644
Binary files a/icons/mob/items_righthand.dmi and b/icons/mob/items_righthand.dmi differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index e8bf4e3a40f..15316c98abc 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/obj/clothing/glasses.dmi b/icons/obj/clothing/glasses.dmi
index 8e122252418..00e8aaa8d2f 100644
Binary files a/icons/obj/clothing/glasses.dmi and b/icons/obj/clothing/glasses.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index 169d7905f63..89b933e9860 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index b2cbab68122..2e2c9fe140f 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi
index 06cced8a352..bf8e2b275c8 100644
Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ
diff --git a/maps/tgstation.2.0.8.dmm b/maps/tgstation.2.0.8.dmm
index 63b14bc6376..829003ee2c2 100644
--- a/maps/tgstation.2.0.8.dmm
+++ b/maps/tgstation.2.0.8.dmm
@@ -525,7 +525,7 @@
"ake" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor,/area/security/hos)
"akf" = (/obj/disposalpipe/segment,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor,/area/security/hos)
"akg" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/security/main)
-"akh" = (/obj/table,/obj/item/device/timer,/obj/item/clothing/glasses/hud/security,/turf/simulated/floor,/area/security/main)
+"akh" = (/obj/table,/obj/item/device/timer,/turf/simulated/floor,/area/security/main)
"aki" = (/obj/table,/obj/item/device/radio,/turf/simulated/floor,/area/security/main)
"akj" = (/obj/stool/chair{dir = 8},/obj/landmark/start{name = "Security Officer"},/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/security/main)
"akk" = (/obj/machinery/camera{c_tag = "Security"; dir = 8; network = "SS13"},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/closet/wardrobe/red,/turf/simulated/floor,/area/security/main)
@@ -563,7 +563,7 @@
"akQ" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/simulated/floor,/area/security/warden)
"akR" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/security/warden)
"akS" = (/obj/stool/chair{dir = 4},/obj/landmark/start{name = "Warden"},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_x = 25; pixel_y = 20},/turf/simulated/floor,/area/security/warden)
-"akT" = (/obj/table/reinforced,/obj/machinery/door/window/westright{name = "Warden's Desk"; req_access_txt = "3"},/obj/machinery/door/window/eastleft{name = "Warden's Desk"},/obj/window/reinforced,/obj/item/clothing/mask/gas/emergency,/obj/item/clothing/glasses/thermal,/obj/item/clothing/glasses/hud/security,/turf/simulated/floor,/area/security/warden)
+"akT" = (/obj/table/reinforced,/obj/machinery/door/window/westright{name = "Warden's Desk"; req_access_txt = "3"},/obj/machinery/door/window/eastleft{name = "Warden's Desk"},/obj/window/reinforced,/obj/item/clothing/glasses/thermal,/turf/simulated/floor,/area/security/warden)
"akU" = (/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/main)
"akV" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main)
"akW" = (/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main)
@@ -573,7 +573,7 @@
"ala" = (/obj/disposalpipe/segment,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main)
"alb" = (/obj/closet/extinguisher{pixel_x = -5; pixel_y = 30},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/main)
"alc" = (/obj/table,/obj/item/weapon/paper/sop,/turf/simulated/floor,/area/security/main)
-"ald" = (/obj/table,/obj/item/device/flash,/obj/item/clothing/glasses/hud/security,/turf/simulated/floor,/area/security/main)
+"ald" = (/obj/table,/obj/item/device/flash,/turf/simulated/floor,/area/security/main)
"ale" = (/obj/stool/chair{dir = 4},/turf/simulated/floor,/area/security/main)
"alf" = (/obj/machinery/computer/secure_data,/turf/simulated/floor,/area/security/main)
"alg" = (/obj/grille,/obj/window/reinforced{dir = 4},/obj/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/security/brig)
@@ -1249,7 +1249,7 @@
"aya" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall/r_wall,/area/maintenance/fpmaint)
"ayb" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/embedded_controller/radio/airlock_controller{airpump_tag = "EVA_airlock_pump"; exterior_door_tag = "EVA_airlock_exterior"; id_tag = "EVA_airlock_control"; interior_door_tag = "EVA_airlock_interior"; pixel_x = -24; pixel_y = 0; sensor_tag = "EVA_airlock_sensor"},/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"ayc" = (/obj/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/jetpack,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/ai_monitored/storage/eva)
-"ayd" = (/obj/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/jetpack/black_jetpack,/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva)
+"ayd" = (/obj/rack{dir = 8; layer = 2.9},/obj/machinery/atmospherics/pipe/simple,/obj/item/weapon/tank/jetpack,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aye" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/ai_monitored/storage/eva)
"ayf" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor,/area/ai_monitored/storage/eva)
"ayg" = (/obj/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva)
@@ -1363,8 +1363,8 @@
"aAk" = (/obj/machinery/atmospherics/pipe/simple,/obj/disposalpipe/segment{dir = 4},/obj/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"aAl" = (/obj/disposalpipe/segment{dir = 4},/obj/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/obj/rack{dir = 1},/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"aAm" = (/obj/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva)
-"aAn" = (/obj/machinery/suit_storage_unit/engineering_unit{name = "Engineering Suit Storage Unit"},/obj/disposalpipe/segment{dir = 4},/obj/machinery/camera{c_tag = "EVA South-East"; dir = 1},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/ai_monitored/storage/eva)
-"aAo" = (/obj/machinery/suit_storage_unit/engineering_unit{name = "Engineering Suit Storage Unit"},/obj/disposalpipe/segment{dir = 4},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/ai_monitored/storage/eva)
+"aAn" = (/obj/disposalpipe/segment{dir = 4},/obj/machinery/camera{c_tag = "EVA South-East"; dir = 1},/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/ai_monitored/storage/eva)
+"aAo" = (/obj/disposalpipe/segment{dir = 4},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple,/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aAp" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/ai_monitored/storage/eva)
"aAq" = (/obj/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor,/area/ai_monitored/storage/eva)
"aAr" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/disposalpipe/segment{dir = 4},/obj/machinery/light,/obj/machinery/camera{c_tag = "EVA South-East"; dir = 1},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/ai_monitored/storage/eva)
@@ -1492,7 +1492,7 @@
"aCJ" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
"aCK" = (/obj/machinery/atmospherics/pipe/manifold,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
"aCL" = (/obj/reagent_dispensers/watertank,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva)
-"aCM" = (/obj/machinery/suit_storage_unit/command_unit{name = "Command Suit Storage Unit"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
+"aCM" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
"aCN" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore)
"aCO" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore)
"aCP" = (/obj/machinery/atmospherics/pipe/simple{dir = 5},/obj/disposalpipe/segment{dir = 1},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
@@ -5303,7 +5303,7 @@
"bXY" = (/obj/machinery/field_generator,/turf/simulated/floor/plating,/area/engine/engineering)
"bXZ" = (/obj/machinery/emitter,/turf/simulated/floor/plating,/area/engine/engineering)
"bYa" = (/obj/machinery/power/apc{cell_type = 10000; dir = 1; name = "Engineering APC"; pixel_x = 0; pixel_y = 25},/obj/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "yellow"},/area/engine/engineering)
-"bYb" = (/obj/window/reinforced{dir = 4},/obj/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/machinery/suit_storage_unit/engineering_unit{pixel_x = 0},/turf/simulated/floor,/area/engine/engineering)
+"bYb" = (/obj/window/reinforced{dir = 4},/obj/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/turf/simulated/floor,/area/engine/engineering)
"bYc" = (/obj/machinery/power/smes,/obj/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engine/engine_smes)
"bYd" = (/obj/machinery/power/smes,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/engine/engine_smes)
"bYe" = (/obj/machinery/power/smes,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/engine_smes)
@@ -5317,7 +5317,7 @@
"bYm" = (/obj/machinery/computer/atmos_alert,/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor,/area/engine/chiefs_office)
"bYn" = (/obj/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor,/area/engine/chiefs_office)
"bYo" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/portable_atmospherics/canister/oxygen,/obj/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor,/area/engine/chiefs_office)
-"bYp" = (/obj/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/obj/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/suit_storage_unit/chief_engineer_unit,/turf/simulated/floor,/area/engine/chiefs_office)
+"bYp" = (/obj/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/obj/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/turf/simulated/floor,/area/engine/chiefs_office)
"bYq" = (/obj/machinery/power/apc{dir = 1; name = "CE office APC"; pixel_x = 0; pixel_y = 25},/obj/secure_closet/engineering_chief{req_access_txt = "0"},/obj/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/engine/chiefs_office)
"bYr" = (/obj/grille,/obj/window/reinforced{dir = 4},/obj/window/reinforced,/obj/window/reinforced{dir = 8},/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable,/turf/simulated/floor/plating,/area/engine/chiefs_office)
"bYs" = (/turf/simulated/floor,/area/engine/engineering)
@@ -5445,7 +5445,7 @@
"caK" = (/obj/machinery/power/apc{dir = 8; name = "Aft Maintenance APC"; pixel_x = -25; pixel_y = 0},/obj/cable,/turf/simulated/floor/plating,/area/maintenance/aft)
"caL" = (/obj/table,/obj/machinery/cell_charger,/obj/machinery/camera{c_tag = "Engineering SMES Room"; dir = 4; network = "SS13"},/turf/simulated/floor,/area/engine/engineering)
"caM" = (/obj/table,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/module/power_control,/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/simulated/floor,/area/engine/engineering)
-"caN" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/rack{dir = 8; layer = 2.9},/obj/item/clothing/head/helmet/welding{pixel_x = -3; pixel_y = 5},/turf/simulated/floor,/area/engine/engineering)
+"caN" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/turf/simulated/floor,/area/engine/engineering)
"caO" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/table,/obj/item/weapon/book/manual/engineering_singularity_safety,/obj/item/clothing/gloves/yellow,/turf/simulated/floor,/area/engine/engineering)
"caP" = (/obj/machinery/dispenser,/turf/simulated/floor,/area/engine/engineering)
"caQ" = (/obj/grille,/obj/window/reinforced{dir = 8},/obj/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/manifold{dir = 8},/turf/simulated/floor/plating,/area/engine/engineering)
@@ -7796,8 +7796,8 @@
"cTV" = (/turf/simulated/floor,/area/mine/storage)
"cTW" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor,/area/mine/storage)
"cTX" = (/obj/grille,/obj/window/reinforced{dir = 8},/obj/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/storage)
-"cTY" = (/obj/rack,/obj/item/clothing/suit/space/rig,/obj/item/clothing/head/helmet/space/rig,/obj/item/clothing/mask/breath,/turf/simulated/floor,/area/mine/eva)
-"cTZ" = (/obj/rack,/obj/item/clothing/suit/space/rig,/obj/item/clothing/head/helmet/space/rig,/obj/item/clothing/mask/breath,/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/mine/eva)
+"cTY" = (/obj/rack,/obj/item/clothing/suit/space/rig/mining,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/mining,/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/mine/eva)
+"cTZ" = (/obj/rack,/obj/item/clothing/suit/space/rig/mining,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/mining,/turf/simulated/floor,/area/mine/eva)
"cUa" = (/obj/reagent_dispensers/fueltank,/turf/simulated/floor,/area/mine/eva)
"cUb" = (/obj/table,/obj/item/weapon/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/mine/west_outpost)
"cUc" = (/obj/machinery/door/airlock/glass{name = "Mining Outpost Break Room"; req_access_txt = "54"},/turf/simulated/floor,/area/mine/west_outpost)
@@ -9232,7 +9232,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSacSacO
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRZcOJcOJcOJcOJcOJcOJcOJcOJcSacSacSacSacSacSacSacOJcOJcOJcOJcOJcOJcSacSacSacSacSacSacSacSacSacQncQncQncQncQncQncQncQncTecTfcTgcQncQncQncPQcOQcOQcOQcOQcOQcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOQcOQcOQcPQcPQcPQcPQcPQcPQcPQcOQcOQcOQcOQcOQcOQcOQcOQcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOQcOQcPQcTccThcTicTjcThcTicTccQncQncQncQncQncQncQncQncQncQncQnaaacOPaaaaaaaaaaaaaaaaaaaaacOQcOQcOQcOQcOQcPQcPQcQncRBcQncQncQncSgcShcSicQncQncQncQncQncQncQncRGcRGcPQcOQcOQcOQcOQcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSacSacOJcOJcOJcOJcOJcOJcSacSacSacSacSacSacSacOJcOJcOJcOJcOJcOJcSacSacSacSacQncQncTkcTkcTkcTkcTkcTkcTlcTmcTmcTncTkcTkcTkcTkcQncQncQncPQcOQcOQcOQcOQcOQcOQcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOQcOQcOQcOQcPQcPQcQncQncQncQncQncPQcPQcPQcPQcPQcOQcOQcOQcOQcOQcOQcOQcOAcOAcOAcOAcOAcOAcOAcOQcOQcPQcTccTocTpcTjcTocTpcTccTqcTqcTqcTrcTscTtcTqcQncQncQncQncQnaaaaaaaaaaaaaaaaaaaaaaaaaaacOQcOQcOQcPQcPQcQncQncQncQncQncQncSjcSkcTucQncQncQncQncQncQncQncQncQncPQcPQcOQcOQcOQcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRZcSacOJcOJcOJcOJcOJcOJcSacSacSacSacSacSacSacOJcOJcOJcOJcOJcSacSacPQcQncQncQncTkcTvcTwcTxcTycTzcTAcTBcTBcTBcTCcTDcTwcTCcQncQncQncPQcPQcPQcPQcOQcOQcOQcOQcOQcOQcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOQcOQcOQcPQcPQcQncQncQncQncQncQncQncQncQncQncPQcPQcPQcPQcPQcOQcOQcOQcOQcOAcOAcOAcOAcOAcOQcOQcOQcPQcTccTjcTEcTjcTjcTEcTjcTFcTFcTGcTHcTHcTHcTIcQncQncQncQncQncQnaaaaaaaaaaaaaaaaaaaaaaaaaaacPQcPQcPQcQncQncQncQncQncQncQncQncTJcTKcTLcTMcTKcTKcQncQncQncQncQncQncPQcOQcOQcOQcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRZcSacSacOJcOJcOJcSacSacSacSacSacSacSacSacOJcOJcOJcSacSacOQcPQcQncQncQncTkcTNcTwcTOcTPcTwcTwcTwcTwcTwcTQcTwcTwcTQcQncQncQncQncQncQncPQcPQcPQcOQcOQcOQcOQcOQcOQcOQcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOQcOQcPQcPQcRmcQncQncQncQncQncQncQncQncQncQncQncQncQncQncQncPQcPQcOQcOQcOQcOQcOQcOQcOQcOQcOQcOQcOQcPQcTccTRcTpcTScTTcTUcTjcTFcTFcTVcTVcTVcTWcTXcQncQncQncQncQncQnaaaaaaaaaaaaaaaaaaaaaaaaaaacQncQncQncQncQncQncQncQncQncQncQncTJcTYcTZcTYcUacTKcQncQncQncQncQncRYcRmcPQcOQcOQcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRZcSacSacOJcOJcOJcSacSacSacSacSacSacSacSacOJcOJcOJcSacSacOQcPQcQncQncQncTkcTNcTwcTOcTPcTwcTwcTwcTwcTwcTQcTwcTwcTQcQncQncQncQncQncQncPQcPQcPQcOQcOQcOQcOQcOQcOQcOQcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOQcOQcPQcPQcRmcQncQncQncQncQncQncQncQncQncQncQncQncQncQncQncPQcPQcOQcOQcOQcOQcOQcOQcOQcOQcOQcOQcOQcPQcTccTRcTpcTScTTcTUcTjcTFcTFcTVcTVcTVcTWcTXcQncQncQncQncQncQnaaaaaaaaaaaaaaaaaaaaaaaaaaacQncQncQncQncQncQncQncQncQncQncQncTJcTYcTZcTZcUacTKcQncQncQncQncQncRYcRmcPQcOQcOQcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSacSacOJcOJcOJcSacSacSacSacSacSacSacSacSacSacSacSacSacOQcPQcQncQncQncTkcUbcTwcTwcUccTwcTwcTwcTwcTwcTCcUdcUdcTCcQncQncQncQncQncQncQncQncPQcPQcPQcPQcOQcOQcOQcOQcOQcOQcOAcOAcOAcOAcOAcOAcOAcOAcOAcOQcOQcPQcPQcQncRBcQncQncQncQncQncQncQncQncQncQncQncQncQncQncQncQncPQcPQcPQcPQcOQcOQcOQcOQcOQcOQcOQcOQcPQcTccUecUfcUgcUhcUicTjcTFcTFcUjcUkcUlcUmcUncQncQncQncQncQncOPaaaaaacOPaaaaaaaaaaaacOPaaaaaaaaacQncQncQncQncQncUocUocUpcUqcTJcUrcUscUscUtcTKcTKcTKcTKcQncQncQncQncPQcPQcOQcOQcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSacRZcSacSacSacSacSacSacSacSacSacSacSacSacSacSacOQcPQcPQcQncQncTkcUucTwcTwcTycTwcTwcTwcTwcUvcTkcTkcTkcTkcSgcSicQncQncQncQncQncQncQncQncQncPQcOQcOQcOQcOQcOQcOQcOQcOAcOAcOAcOAcOAcOAcOAcOQcOQcOQcPQcQncQncQncQncQncQncQncQncQncQncQncSgcSicQncQncQncQncQncQncQncQncQncPQcPQcOQcOQcOQcOQcOQcTccTccTccTccUwcUxcUycUwcUzcTjcUAcUAcUAcUAcUBcUCcTqcUDcUEcQncQnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOPcQncQncUFcUqcUGcUGcUHcUIcUJcUKcUKcULcUMcUKcUNcUOcQncQncQncQncRocPQcOQcOQcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSacSacRZcSacSacSacRZcSacSacSacSacSacOQcOQcPQcQncQncTkcUdcTwcTwcTPcUPcUQcURcTwcUScUTcUUcUVcUWcSycSzcUXcSBcSBcSBcSBcSBcSCcQncQncQncRGcOQcOQcOQcOQcOQcOQcOQcOQcOAcOAcOAcOQcOQcOQcOQcPQcPQcQncQncSGcSrcSrcSrcSrcSrcSrcSrcSxcSycSzcSAcSBcSBcSBcSCcQncQncQncQncQncPQcOQcOQcOQcOQcOQcTccUYcUZcVacUGcVbcVccVdcUGcUGcVecVfcUGcVdcVccVbcVecUGcVgcVhcVicVjcVkcVkcVkcVkcVkcVkcVkcVkcVkcVkcVkcVkcVkcVlcUpcVmcVncVocUGcVpcVqcVrcVscUKcUKcUKcVtcUKcUKcVtcQncQncQncQncRocPQcOQcOQcOAcOAcOAcOAcOAcOAcOAcOAcOAcOAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/tgstation.dme b/tgstation.dme
index c33c945d774..3c99cbada2b 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -80,6 +80,8 @@
#define FILE_DIR "code/modules/admin/verbs"
#define FILE_DIR "code/modules/assembly"
#define FILE_DIR "code/modules/chemical"
+#define FILE_DIR "code/modules/clothing"
+#define FILE_DIR "code/modules/clothing/glasses"
#define FILE_DIR "code/modules/critters"
#define FILE_DIR "code/modules/critters/hivebots"
#define FILE_DIR "code/modules/food"
@@ -272,7 +274,6 @@
#include "code\defines\obj\clothing\costume.dm"
#include "code\defines\obj\clothing\ears.dm"
#include "code\defines\obj\clothing\gimmick.dm"
-#include "code\defines\obj\clothing\glasses.dm"
#include "code\defines\obj\clothing\gloves.dm"
#include "code\defines\obj\clothing\head.dm"
#include "code\defines\obj\clothing\jumpsuit.dm"
@@ -566,7 +567,6 @@
#include "code\game\objects\items\robot_parts.dm"
#include "code\game\objects\items\shock_kit.dm"
#include "code\game\objects\items\trash.dm"
-#include "code\game\objects\items\clothing\hud.dm"
#include "code\game\objects\items\clothing\powerarmor.dm"
#include "code\game\objects\items\clothing\powerarmorcomponents.dm"
#include "code\game\objects\items\weapons\AI_modules.dm"
@@ -676,6 +676,8 @@
#include "code\modules\chemical\Chemistry-Reagents.dm"
#include "code\modules\chemical\Chemistry-Recipes.dm"
#include "code\modules\chemical\Chemistry-Tools.dm"
+#include "code\modules\clothing\glasses\glasses.dm"
+#include "code\modules\clothing\glasses\hud.dm"
#include "code\modules\critters\adefine.dm"
#include "code\modules\critters\critterAI.dm"
#include "code\modules\critters\critters.dm"