diff --git a/baystation12.dme b/baystation12.dme
index fe5eb63ea31..93c52ecd482 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -822,6 +822,7 @@
#include "code\modules\clothing\under\jobs\security.dm"
#include "code\modules\customitems\item_defines.dm"
#include "code\modules\customitems\item_spawning.dm"
+#include "code\modules\customitems\definitions\base.dm"
#include "code\modules\DetectiveWork\detective_work.dm"
#include "code\modules\DetectiveWork\evidence.dm"
#include "code\modules\DetectiveWork\footprints_and_rag.dm"
diff --git a/code/game/dna/dna_misc.dm b/code/game/dna/dna_misc.dm
index fd5d0f59a1e..a9dc0c0e487 100644
--- a/code/game/dna/dna_misc.dm
+++ b/code/game/dna/dna_misc.dm
@@ -272,7 +272,7 @@
M.sdisabilities = 0
var/old_mutations = M.mutations
M.mutations = list()
-
+ M.pass_flags = 0
// M.see_in_dark = 2
// M.see_invisible = 0
@@ -293,6 +293,7 @@
if(probinj(45,inj) || (mRemote in old_mutations))
M << "\blue Your mind expands"
M.mutations.Add(mRemote)
+ M.verbs += /mob/living/carbon/human/proc/remoteobserve
if(ismuton(REGENERATEBLOCK,M))
if(probinj(45,inj) || (mRegen in old_mutations))
M << "\blue You feel strange"
@@ -305,10 +306,12 @@
if(probinj(45,inj) || (mRemotetalk in old_mutations))
M << "\blue You expand your mind outwards"
M.mutations.Add(mRemotetalk)
+ M.verbs += /mob/living/carbon/human/proc/remotesay
if(ismuton(MORPHBLOCK,M))
if(probinj(45,inj) || (mMorph in old_mutations))
M.mutations.Add(mMorph)
M << "\blue Your skin feels strange"
+ M.verbs += /mob/living/carbon/human/proc/morph
if(ismuton(BLENDBLOCK,M))
if(probinj(45,inj) || (mBlend in old_mutations))
M.mutations.Add(mBlend)
@@ -316,7 +319,7 @@
if(ismuton(HALLUCINATIONBLOCK,M))
if(probinj(45,inj) || (mHallucination in old_mutations))
M.mutations.Add(mHallucination)
- M << "\blue Your mind says 'Hello'"
+ M << "\red Your mind says 'Hello'"
if(ismuton(NOPRINTSBLOCK,M))
if(probinj(45,inj) || (mFingerprints in old_mutations))
M.mutations.Add(mFingerprints)
@@ -329,6 +332,7 @@
if(probinj(45,inj) || (mSmallsize in old_mutations))
M << "\blue Your skin feels rubbery"
M.mutations.Add(mSmallsize)
+ M.pass_flags |= 1
@@ -556,4 +560,14 @@
if(M)
M.update_icon = 1 //queue a full icon update at next life() call
return null
+
+
+/proc/togglemut(mob/M as mob, var/block)
+ if(!M) return
+ var/newdna
+ M.dna.check_integrity()
+ newdna = setblock(M.dna.struc_enzymes,block,toggledblock(getblock(M.dna.struc_enzymes,block,3)),3)
+ M.dna.struc_enzymes = newdna
+ return
+
/////////////////////////// DNA MISC-PROCS
\ No newline at end of file
diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
index 7ede79586b2..01f6f8d10a4 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -445,7 +445,7 @@ var/global/datum/controller/occupations/job_master
H.equip_to_slot_or_del(new /obj/item/device/radio/headset(H), slot_ears)
//Gives glasses to the vision impaired
- if(H.disabilities & NEARSIGHTED)
+ if(H.disabilities & DISABILITY_FLAG_NEARSIGHTED)
var/equipped = H.equip_to_slot_or_del(new /obj/item/clothing/glasses/regular(H), slot_glasses)
if(equipped != 1)
var/obj/item/clothing/glasses/G = H.glasses
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 2f47a344b42..cbf7bdfa9ec 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -399,6 +399,15 @@
//START HUMAN
var/mob/living/carbon/human/H = M
+
+ if(istype(src, /obj/item/clothing/under) || istype(src, /obj/item/clothing/suit))
+ if(FAT in H.mutations)
+ testing("[M] TOO FAT TO WEAR [src]!")
+ if(!(flags & ONESIZEFITSALL))
+ if(!disable_warning)
+ H << "\red You're too fat to wear the [name]."
+ return 0
+
switch(slot)
if(slot_l_hand)
if(H.l_hand)
diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm
index f5b63f677c9..55bcddb161e 100644
--- a/code/game/objects/items/weapons/storage/bible.dm
+++ b/code/game/objects/items/weapons/storage/bible.dm
@@ -22,7 +22,7 @@
new /obj/item/weapon/spacecash(src)
new /obj/item/weapon/spacecash(src)
//BS12 EDIT
-/* // All cult functionality moved to Null Rod
+ // All cult functionality moved to Null Rod
/obj/item/weapon/storage/bible/proc/bless(mob/living/carbon/M as mob)
if(ishuman(M))
var/mob/living/carbon/human/H = M
@@ -87,7 +87,7 @@
O.show_message(text("\red [] smacks []'s lifeless corpse with [].", user, M, src), 1)
playsound(src.loc, "punch", 25, 1, -1)
return
-*/
+
/obj/item/weapon/storage/bible/afterattack(atom/A, mob/user as mob)
/* if (istype(A, /turf/simulated/floor))
user << "\blue You hit the floor with the bible."
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 33807cee239..d803cb7c0a4 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -258,9 +258,10 @@ datum/preferences
dat += "Secondary Language:
[language]
"
dat += "Blood Type: [b_type]
"
dat += "Skin Tone: [-s_tone + 35]/220
"
- //dat += "Skin pattern: Adjust
"
- dat += "Needs Glasses: [disabilities == 0 ? "No" : "Yes"]
"
- dat += "Limbs: Adjust
"
+ dat += "Skin pattern: Adjust
"
+ dat += "
Handicaps
"
+ dat += "\t\[Set Disabilities\]
"
+ dat += "\tLimbs: Adjust
"
//display limbs below
var/ind = 0
@@ -463,22 +464,32 @@ datum/preferences
user << browse(HTML, "window=mob_occupation;size=[width]x[height]")
return
+ proc/ShowDisabilityState(mob/user,flag,label)
+ if(flag==DISABILITY_FLAG_FAT && species!="Human")
+ return "
[species] cannot be fat."
+ return "[label]: [disabilities & flag ? "Yes" : "No"]"
+
proc/SetDisabilities(mob/user)
var/HTML = ""
- HTML += ""
- HTML += "Choose disabilities
"
- HTML += "Need Glasses? [disabilities & (1<<0) ? "Yes" : "No"]
"
- HTML += "Seizures? [disabilities & (1<<1) ? "Yes" : "No"]
"
- HTML += "Coughing? [disabilities & (1<<2) ? "Yes" : "No"]
"
- HTML += "Tourettes/Twitching? [disabilities & (1<<3) ? "Yes" : "No"]
"
- HTML += "Nervousness? [disabilities & (1<<4) ? "Yes" : "No"]
"
- HTML += "Deafness? [disabilities & (1<<5) ? "Yes" : "No"]
"
+ // AUTOFIXED BY fix_string_idiocy.py
+ // C:\Users\Rob\Documents\Projects\vgstation13\code\modules\client\preferences.dm:474: HTML += ""
+ HTML += {"
+ Choose disabilities"}
+ // END AUTOFIX
+ HTML += ShowDisabilityState(user,DISABILITY_FLAG_NEARSIGHTED,"Needs Glasses")
+ HTML += ShowDisabilityState(user,DISABILITY_FLAG_FAT,"Obese")
+ HTML += ShowDisabilityState(user,DISABILITY_FLAG_EPILEPTIC,"Seizures")
+ HTML += ShowDisabilityState(user,DISABILITY_FLAG_DEAF,"Deaf")
- HTML += "
"
- HTML += "\[Done\]"
- HTML += "
"
+ // AUTOFIXED BY fix_string_idiocy.py
+ // C:\Users\Rob\Documents\Projects\vgstation13\code\modules\client\preferences.dm:481: HTML += ""
+ HTML += {"
+ \[Done\]
+ \[Reset\]
+ "}
+ // END AUTOFIX
user << browse(null, "window=preferences")
user << browse(HTML, "window=disabil;size=350x300")
return
@@ -682,6 +693,24 @@ datum/preferences
else
SetChoices(user)
return 1
+ else if(href_list["preference"] == "disabilities")
+
+ switch(href_list["task"])
+ if("close")
+ user << browse(null, "window=disabil")
+ ShowChoices(user)
+ if("reset")
+ disabilities=0
+ SetDisabilities(user)
+ if("input")
+ var/dflag=text2num(href_list["disability"])
+ if(dflag >= 0)
+ if(!(dflag==DISABILITY_FLAG_FAT && species!="Human"))
+ disabilities ^= text2num(href_list["disability"]) //MAGIC
+ SetDisabilities(user)
+ else
+ SetDisabilities(user)
+ return 1
else if(href_list["preference"] == "skills")
if(href_list["cancel"])
user << browse(null, "window=show_skills")
@@ -988,15 +1017,6 @@ datum/preferences
flavor_text = msg
- if("disabilities")
- if(text2num(href_list["disabilities"]) >= -1)
- if(text2num(href_list["disabilities"]) >= 0)
- disabilities ^= (1< underwear_m.len || underwear < 1)
underwear = 1 //I'm sure this is 100% unnecessary, but I'm paranoid... sue me.
character.underwear = underwear
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 6343b12e8ad..69a8508630d 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -77,6 +77,7 @@ BLIND // can't see anything
slot_flags = SLOT_GLOVES
attack_verb = list("challenged")
var/pickpocket = 0 //Master pickpocket?
+ var/clipped = 0
species_restricted = list("exclude","Unathi","Tajaran")
/obj/item/clothing/gloves/examine()
diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm
index f3cd86c3d5d..12d6c8aa417 100644
--- a/code/modules/clothing/under/jobs/civilian.dm
+++ b/code/modules/clothing/under/jobs/civilian.dm
@@ -6,7 +6,7 @@
icon_state = "ba_suit"
item_state = "ba_suit"
_color = "ba_suit"
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/captain //Alright, technically not a 'civilian' but its better then giving a .dm file for a single define.
@@ -15,7 +15,7 @@
icon_state = "captain"
item_state = "caparmor"
_color = "captain"
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/cargo
@@ -24,6 +24,7 @@
icon_state = "qm"
item_state = "lb_suit"
_color = "qm"
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/cargotech
@@ -32,7 +33,7 @@
icon_state = "cargotech"
item_state = "lb_suit"
_color = "cargo"
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/chaplain
@@ -41,7 +42,7 @@
icon_state = "chaplain"
item_state = "bl_suit"
_color = "chapblack"
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/chef
@@ -49,7 +50,7 @@
name = "chef's uniform"
icon_state = "chef"
_color = "chef"
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/clown
@@ -58,7 +59,7 @@
icon_state = "clown"
item_state = "clown"
_color = "clown"
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/head_of_personnel
@@ -67,7 +68,7 @@
icon_state = "hop"
item_state = "b_suit"
_color = "hop"
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/head_of_personnel_whimsy
desc = "A blue jacket and red tie, with matching red cuffs! Snazzy. Wearing this makes you feel more important than your job title does."
@@ -75,7 +76,7 @@
icon_state = "hopwhimsy"
item_state = "hopwhimsy"
_color = "hopwhimsy"
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/hydroponics
@@ -85,7 +86,7 @@
item_state = "g_suit"
_color = "hydroponics"
permeability_coefficient = 0.50
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/internalaffairs
@@ -94,7 +95,7 @@
icon_state = "internalaffairs"
item_state = "internalaffairs"
_color = "internalaffairs"
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/janitor
@@ -103,37 +104,41 @@
icon_state = "janitor"
_color = "janitor"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/lawyer
desc = "Slick threads."
name = "Lawyer suit"
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/lawyer/black
icon_state = "lawyer_black"
item_state = "lawyer_black"
_color = "lawyer_black"
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/lawyer/female
icon_state = "black_suit_fem"
item_state = "black_suit_fem"
_color = "black_suit_fem"
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/lawyer/red
icon_state = "lawyer_red"
item_state = "lawyer_red"
_color = "lawyer_red"
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/lawyer/blue
icon_state = "lawyer_blue"
item_state = "lawyer_blue"
_color = "lawyer_blue"
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/lawyer/bluesuit
@@ -142,6 +147,7 @@
icon_state = "bluesuit"
item_state = "bluesuit"
_color = "bluesuit"
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/lawyer/purpsuit
@@ -149,6 +155,7 @@
icon_state = "lawyer_purp"
item_state = "lawyer_purp"
_color = "lawyer_purp"
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/lawyer/oldman
name = "Old Man's Suit"
@@ -156,6 +163,7 @@
icon_state = "oldman"
item_state = "oldman"
_color = "oldman"
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/librarian
@@ -164,6 +172,7 @@
icon_state = "red_suit"
item_state = "red_suit"
_color = "red_suit"
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/mime
name = "mime's outfit"
@@ -171,11 +180,12 @@
icon_state = "mime"
item_state = "mime"
_color = "mime"
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/miner
desc = "It's a snappy jumpsuit with a sturdy set of overalls. It is very dirty."
name = "shaft miner's jumpsuit"
icon_state = "miner"
item_state = "miner"
- _color = "miner"
\ No newline at end of file
+ _color = "miner"
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
\ No newline at end of file
diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm
index fac888f31ca..9de181ea060 100644
--- a/code/modules/clothing/under/jobs/engineering.dm
+++ b/code/modules/clothing/under/jobs/engineering.dm
@@ -6,7 +6,7 @@
item_state = "g_suit"
_color = "chief"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/atmospheric_technician
desc = "It's a jumpsuit worn by atmospheric technicians."
@@ -14,7 +14,7 @@
icon_state = "atmos"
item_state = "atmos_suit"
_color = "atmos"
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/engineer
desc = "It's an orange high visibility jumpsuit worn by engineers. It has minor radiation shielding."
@@ -23,11 +23,12 @@
item_state = "engi_suit"
_color = "engine"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/roboticist
desc = "It's a slimming black with reinforced seams; great for industrial work."
name = "roboticist's jumpsuit"
icon_state = "robotics"
item_state = "robotics"
- _color = "robotics"
\ No newline at end of file
+ _color = "robotics"
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
\ No newline at end of file
diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm
index e525af666f9..a8efb153010 100644
--- a/code/modules/clothing/under/jobs/medsci.dm
+++ b/code/modules/clothing/under/jobs/medsci.dm
@@ -8,7 +8,7 @@
item_state = "g_suit"
_color = "director"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/scientist
desc = "It's made of a special fiber that provides minor protection against biohazards. It has markings that denote the wearer as a scientist."
@@ -18,7 +18,7 @@
_color = "toxinswhite"
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0)
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/chemist
@@ -29,6 +29,7 @@
_color = "chemistrywhite"
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/*
* Medical
@@ -41,6 +42,7 @@
_color = "cmo"
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/geneticist
desc = "It's made of a special fiber that gives special protection against biohazards. It has a genetics rank stripe on it."
@@ -50,7 +52,7 @@
_color = "geneticswhite"
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/virologist
desc = "It's made of a special fiber that gives special protection against biohazards. It has a virologist rank stripe on it."
@@ -60,6 +62,7 @@
_color = "virologywhite"
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/nursesuit
desc = "It's a jumpsuit commonly worn by nursing staff in the medical department."
@@ -69,6 +72,7 @@
_color = "nursesuit"
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/nurse
desc = "A dress commonly worn by the nursing staff in the medical department."
@@ -78,6 +82,7 @@
_color = "nurse"
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/orderly
desc = "A white suit to be worn by orderly people who love orderly things."
@@ -87,6 +92,7 @@
_color = "orderly"
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/medical
desc = "It's made of a special fiber that provides minor protection against biohazards. It has a cross on the chest denoting that the wearer is trained medical personnel."
@@ -96,28 +102,28 @@
_color = "medical"
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/medical/blue
name = "medical scrubs"
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in baby blue."
icon_state = "scrubsblue"
_color = "scrubsblue"
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/medical/green
name = "medical scrubs"
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in dark green."
icon_state = "scrubsgreen"
_color = "scrubsgreen"
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/medical/purple
name = "medical scrubs"
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in deep purple."
icon_state = "scrubspurple"
_color = "scrubspurple"
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
@@ -133,6 +139,7 @@
_color = "genetics_new"
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/chemist_new
desc = "It's made of a special fiber which provides minor protection against biohazards."
@@ -142,6 +149,7 @@
_color = "chemist_new"
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/scientist_new
desc = "Made of a special fiber that gives special protection against biohazards and small explosions."
@@ -151,6 +159,7 @@
_color = "scientist_new"
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0)
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/under/rank/virologist_new
desc = "Made of a special fiber that gives increased protection against biohazards."
@@ -159,4 +168,5 @@
item_state = "w_suit"
_color = "virologist_new"
permeability_coefficient = 0.50
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
\ No newline at end of file
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
\ No newline at end of file
diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm
index 33f3635a38e..81a18a24037 100644
--- a/code/modules/clothing/under/jobs/security.dm
+++ b/code/modules/clothing/under/jobs/security.dm
@@ -15,7 +15,7 @@
item_state = "r_suit"
_color = "warden"
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
siemens_coefficient = 0.9
/obj/item/clothing/under/rank/security
@@ -25,7 +25,7 @@
item_state = "r_suit"
_color = "secred"
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
siemens_coefficient = 0.9
/obj/item/clothing/under/rank/dispatch
@@ -35,7 +35,7 @@
item_state = "dispatch"
_color = "dispatch"
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
siemens_coefficient = 0.9
/obj/item/clothing/under/rank/security2
@@ -45,7 +45,7 @@
item_state = "r_suit"
_color = "redshirt2"
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
siemens_coefficient = 0.9
/obj/item/clothing/under/rank/security/corp
@@ -68,7 +68,7 @@
item_state = "det"
_color = "detective"
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
siemens_coefficient = 0.9
@@ -90,7 +90,7 @@
item_state = "r_suit"
_color = "hosred"
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
- flags = FPRINT | TABLEPASS
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
siemens_coefficient = 0.8
/obj/item/clothing/under/rank/head_of_security/corp
@@ -134,6 +134,7 @@
item_state = "jensen"
_color = "jensen"
siemens_coefficient = 0.6
+ flags = FPRINT | TABLEPASS | ONESIZEFITSALL
/obj/item/clothing/suit/armor/hos/jensen
name = "armored trenchcoat"
diff --git a/code/modules/customitems/definitions/N3X15.dm b/code/modules/customitems/definitions/N3X15.dm
new file mode 100644
index 00000000000..6f0b5ad0538
--- /dev/null
+++ b/code/modules/customitems/definitions/N3X15.dm
@@ -0,0 +1,27 @@
+/**
+* N3X15's Testing Shit
+*
+* Used to test this on /fail/station. Not used, so left out. A decent example though.
+*/
+
+/obj/item/clothing/suit/storage/labcoat/custom/N3X15
+ icon = 'icons/mob/custom/N3X15/suits.dmi'
+ custom = 1
+
+/obj/item/clothing/suit/storage/labcoat/custom/N3X15/robotics
+ name = "Robotics Research Labcoat"
+ desc = "A suit that protects against nothing, but looks fashionable. Well, apart from the crappy portrait drawn on the back with permanent marker."
+ base_icon_state = "labcoat_tox"
+
+
+
+/obj/item/clothing/under/custom/N3X15
+ icon = 'icons/mob/custom/N3X15/suits.dmi' // Cheating.
+ custom = 1
+
+/obj/item/clothing/under/custom/N3X15/robotics
+ desc = "It's slimming black with reinforced seams; great for industrial work."
+ name = "roboticist's jumpsuit"
+ icon_state = "robotics"
+ item_state = "robotics"
+ color = "robotics"
\ No newline at end of file
diff --git a/code/modules/customitems/definitions/base.dm b/code/modules/customitems/definitions/base.dm
new file mode 100644
index 00000000000..75d11d07aab
--- /dev/null
+++ b/code/modules/customitems/definitions/base.dm
@@ -0,0 +1,23 @@
+////////////////////////////////////////////////////////////////////////////////
+// ALL CUSTOM ITEMS MUST USE THEIR OWN DMI SO IT DOESN'T FUCK UP THE TREE.
+//
+// FOR FUCK'S SAKE, DO NOT ADD IN YOUR TERRIBLE FUCKING CUSTOM ITEMS TO BASE DMIS.
+//
+// GOOD IDEA:
+//
+// icons/
+// mob/
+// custom/
+// N3X15.dmi
+//
+//
+// FUCKING NO:
+//
+// icons/
+// mob/
+// head.dmi
+//
+// *** IF I SEE THIS SORT OF SHIT IN THE TREE I WILL NOT ACCEPT YOUR PULL. ***
+////////////////////////////////////////////////////////////////////////////////
+
+/obj/item/var/custom=0 // Set to override DMI locations in creature overlays, etc.
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm
index c2e9eb786f0..7d2cc2ba2a2 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/life.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm
@@ -267,12 +267,12 @@
if(prob(round((50 - nutrition) / 100)))
src << "\blue You feel fit again!"
mutations.Remove(FAT)
-/* else
+ else
if(nutrition > 500)
if(prob(5 + round((nutrition - 200) / 2)))
src << "\red You suddenly feel blubbery!"
mutations.Add(FAT)
- FUCK YOU FATCODE -Hawk */
+
if (nutrition > 0)
nutrition -= HUNGER_FACTOR
diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm
index c617d615f01..daf2722ff4c 100644
--- a/code/modules/mob/living/carbon/alien/larva/life.dm
+++ b/code/modules/mob/living/carbon/alien/larva/life.dm
@@ -186,12 +186,12 @@
if(prob(round((50 - nutrition) / 100)))
src << "\blue You feel fit again!"
mutations.Add(FAT)
-/* else
+ else
if(nutrition > 500)
if(prob(5 + round((nutrition - max_grown) / 2)))
src << "\red You suddenly feel blubbery!"
mutations.Add(FAT)
-FUCK YOU MORE FAT CODE -Hawk*/
+
if (nutrition > 0)
nutrition-= HUNGER_FACTOR
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 77b6b7d92b4..d30a62e0f84 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -174,8 +174,8 @@
if (disabilities & NERVOUS)
if (prob(10))
stuttering = max(10, stuttering)
- // No. -- cib
- /*if (getBrainLoss() >= 60 && stat != 2)
+
+ if (getBrainLoss() >= 60 && stat != 2)
if (prob(3))
switch(pick(1,2,3))
if(1)
@@ -184,7 +184,7 @@
say(pick("FUS RO DAH","fucking 4rries!", "stat me", ">my face", "roll it easy!", "waaaaaagh!!!", "red wonz go fasta", "FOR TEH EMPRAH", "lol2cat", "dem dwarfs man, dem dwarfs", "SPESS MAHREENS", "hwee did eet fhor khayosss", "lifelike texture ;_;", "luv can bloooom", "PACKETS!!!"))
if(3)
emote("drool")
- */
+
if(stat != 2)
var/rn = rand(0, 200)
@@ -883,24 +883,24 @@
else if (light_amount < 2) //heal in the dark
heal_overall_damage(1,1)
-/* //The fucking FAT mutation is the dumbest shit ever. It makes the code so difficult to work with
- if(FAT in mutations)
- if(overeatduration < 100)
- src << "\blue You feel fit again!"
- mutations.Remove(FAT)
- update_mutantrace(0)
- update_mutations(0)
- update_inv_w_uniform(0)
- update_inv_wear_suit()
- else
- if(overeatduration > 500)
- src << "\red You suddenly feel blubbery!"
- mutations.Add(FAT)
- update_mutantrace(0)
- update_mutations(0)
- update_inv_w_uniform(0)
- update_inv_wear_suit()
-*/
+
+ if(species.flags & CAN_BE_FAT)
+ if(FAT in mutations)
+ if(overeatduration < 100)
+ src << "\blue You feel fit again!"
+ mutations.Remove(FAT)
+ update_mutantrace(0)
+ update_mutations(0)
+ update_inv_w_uniform(0)
+ update_inv_wear_suit()
+ else
+ if(overeatduration > 500)
+ src << "\red You suddenly feel blubbery!"
+ mutations.Add(FAT)
+ update_mutantrace(0)
+ update_mutations(0)
+ update_inv_w_uniform(0)
+ update_inv_wear_suit()
// nutrition decrease
if (nutrition > 0 && stat != 2)
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 8ef6070debb..657e44d4c39 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -231,7 +231,7 @@ proc/get_damage_icon_part(damage_state, body_part)
if(gender == FEMALE) g = "f"
var/datum/organ/external/chest = get_organ("chest")
- stand_icon = chest.get_icon(g)
+ stand_icon = chest.get_icon(g,fat)
if(!skeleton)
if(husk)
stand_icon.ColorTone(husk_color_mod)
@@ -248,7 +248,7 @@ proc/get_damage_icon_part(damage_state, body_part)
if(!istype(part, /datum/organ/external/chest) && !(part.status & ORGAN_DESTROYED))
var/icon/temp
if (istype(part, /datum/organ/external/groin) || istype(part, /datum/organ/external/head))
- temp = part.get_icon(g)
+ temp = part.get_icon(g,fat)
else
temp = part.get_icon()
@@ -498,9 +498,21 @@ proc/get_damage_icon_part(damage_state, body_part)
var/image/lying = image("icon_state" = "[t_color]_l")
var/image/standing = image("icon_state" = "[t_color]_s")
+ if(FAT in mutations)
+ if(w_uniform.flags&ONESIZEFITSALL)
+ lying.icon = 'icons/mob/uniform_fat.dmi'
+ standing.icon = 'icons/mob/uniform_fat.dmi'
+ else
+ src << "\red You burst out of \the [w_uniform]!"
+ drop_from_inventory(w_uniform)
+ return
+ else
+ lying.icon = 'icons/mob/uniform.dmi'
+ standing.icon = 'icons/mob/uniform.dmi'
- lying.icon = 'icons/mob/uniform.dmi'
- standing.icon = 'icons/mob/uniform.dmi'
+ if(w_uniform.custom)
+ lying.icon = w_uniform.icon
+ standing.icon = w_uniform.icon
if(w_uniform.blood_DNA)
lying.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "uniformblood2")
@@ -568,8 +580,11 @@ proc/get_damage_icon_part(damage_state, body_part)
/mob/living/carbon/human/update_inv_glasses(var/update_icons=1)
if(glasses)
- overlays_lying[GLASSES_LAYER] = image("icon" = 'icons/mob/eyes.dmi', "icon_state" = "[glasses.icon_state]2")
- overlays_standing[GLASSES_LAYER] = image("icon" = 'icons/mob/eyes.dmi', "icon_state" = "[glasses.icon_state]")
+ var/dmi='icons/mob/eyes.dmi'
+ if(glasses.custom)
+ dmi = glasses.icon
+ overlays_lying[GLASSES_LAYER] = image("icon" = dmi, "icon_state" = "[glasses.icon_state]2")
+ overlays_standing[GLASSES_LAYER] = image("icon" = dmi, "icon_state" = "[glasses.icon_state]")
else
overlays_lying[GLASSES_LAYER] = null
overlays_standing[GLASSES_LAYER] = null
@@ -577,8 +592,11 @@ proc/get_damage_icon_part(damage_state, body_part)
/mob/living/carbon/human/update_inv_ears(var/update_icons=1)
if(ears)
- overlays_lying[EARS_LAYER] = image("icon" = 'icons/mob/ears.dmi', "icon_state" = "[ears.icon_state]2")
- overlays_standing[EARS_LAYER] = image("icon" = 'icons/mob/ears.dmi', "icon_state" = "[ears.icon_state]")
+ var/dmi='icons/mob/ears.dmi'
+ if(ears.custom)
+ dmi = ears.icon
+ overlays_lying[EARS_LAYER] = image("icon" = dmi, "icon_state" = "[ears.icon_state]2")
+ overlays_standing[EARS_LAYER] = image("icon" = dmi, "icon_state" = "[ears.icon_state]")
else
overlays_lying[EARS_LAYER] = null
overlays_standing[EARS_LAYER] = null
@@ -586,8 +604,11 @@ proc/get_damage_icon_part(damage_state, body_part)
/mob/living/carbon/human/update_inv_shoes(var/update_icons=1)
if(shoes)
- var/image/lying = image("icon" = 'icons/mob/feet.dmi', "icon_state" = "[shoes.icon_state]2")
- var/image/standing = image("icon" = 'icons/mob/feet.dmi', "icon_state" = "[shoes.icon_state]")
+ var/dmi='icons/mob/feet.dmi'
+ if(shoes.custom)
+ dmi = shoes.icon
+ var/image/lying = image("icon" = dmi, "icon_state" = "[shoes.icon_state]2")
+ var/image/standing = image("icon" = dmi, "icon_state" = "[shoes.icon_state]")
if(shoes.blood_DNA)
lying.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "shoeblood2")
standing.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "shoeblood")
@@ -601,9 +622,13 @@ proc/get_damage_icon_part(damage_state, body_part)
/mob/living/carbon/human/update_inv_s_store(var/update_icons=1)
if(s_store)
var/t_state = s_store.item_state
- if(!t_state) t_state = s_store.icon_state
- overlays_lying[SUIT_STORE_LAYER] = image("icon" = 'icons/mob/belt_mirror.dmi', "icon_state" = "[t_state]2")
- overlays_standing[SUIT_STORE_LAYER] = image("icon" = 'icons/mob/belt_mirror.dmi', "icon_state" = "[t_state]")
+ if(!t_state)
+ t_state = s_store.icon_state
+ var/dmi='icons/mob/belt_mirror.dmi'
+ if(s_store.custom)
+ dmi = s_store.icon
+ overlays_lying[SUIT_STORE_LAYER] = image("icon" = dmi, "icon_state" = "[t_state]2")
+ overlays_standing[SUIT_STORE_LAYER] = image("icon" = dmi, "icon_state" = "[t_state]")
s_store.screen_loc = ui_sstore1 //TODO
else
overlays_lying[SUIT_STORE_LAYER] = null
@@ -620,8 +645,11 @@ proc/get_damage_icon_part(damage_state, body_part)
lying = image("icon" = head:mob2)
standing = image("icon" = head:mob)
else
- lying = image("icon" = 'icons/mob/head.dmi', "icon_state" = "[head.icon_state]2")
- standing = image("icon" = 'icons/mob/head.dmi', "icon_state" = "[head.icon_state]")
+ var/dmi='icons/mob/head.dmi'
+ if(head.custom)
+ dmi = head.icon
+ lying = image("icon" = dmi, "icon_state" = "[head.icon_state]2")
+ standing = image("icon" = dmi, "icon_state" = "[head.icon_state]")
if(head.blood_DNA)
lying.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "helmetblood2")
standing.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "helmetblood")
@@ -636,9 +664,13 @@ proc/get_damage_icon_part(damage_state, body_part)
if(belt)
belt.screen_loc = ui_belt //TODO
var/t_state = belt.item_state
- if(!t_state) t_state = belt.icon_state
- overlays_lying[BELT_LAYER] = image("icon" = 'icons/mob/belt.dmi', "icon_state" = "[t_state]2")
- overlays_standing[BELT_LAYER] = image("icon" = 'icons/mob/belt.dmi', "icon_state" = "[t_state]")
+ if(!t_state)
+ t_state = belt.icon_state
+ var/dmi='icons/mob/belt.dmi'
+ if(belt.custom)
+ dmi = belt.icon
+ overlays_lying[BELT_LAYER] = image("icon" = dmi, "icon_state" = "[t_state]2")
+ overlays_standing[BELT_LAYER] = image("icon" = dmi, "icon_state" = "[t_state]")
else
overlays_lying[BELT_LAYER] = null
overlays_standing[BELT_LAYER] = null
@@ -648,8 +680,12 @@ proc/get_damage_icon_part(damage_state, body_part)
/mob/living/carbon/human/update_inv_wear_suit(var/update_icons=1)
if( wear_suit && istype(wear_suit, /obj/item/clothing/suit) ) //TODO check this
wear_suit.screen_loc = ui_oclothing //TODO
- var/image/lying = image("icon" = 'icons/mob/suit.dmi', "icon_state" = "[wear_suit.icon_state]2")
- var/image/standing = image("icon" = 'icons/mob/suit.dmi', "icon_state" = "[wear_suit.icon_state]")
+ var/dmi='icons/mob/suit.dmi'
+ if(wear_suit.custom)
+ dmi = wear_suit.icon
+
+ var/image/lying = image("icon" = dmi, "icon_state" = "[wear_suit.icon_state]2")
+ var/image/standing = image("icon" = dmi, "icon_state" = "[wear_suit.icon_state]")
if( istype(wear_suit, /obj/item/clothing/suit/straight_jacket) )
drop_from_inventory(handcuffed)
@@ -657,9 +693,21 @@ proc/get_damage_icon_part(damage_state, body_part)
drop_r_hand()
if(wear_suit.blood_DNA)
- var/obj/item/clothing/suit/S = wear_suit
- lying.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "[S.blood_overlay_type]blood2")
- standing.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "[S.blood_overlay_type]blood")
+ var/t_state
+ if( istype(wear_suit, /obj/item/clothing/suit/armor/vest || /obj/item/clothing/suit/wcoat) )
+ t_state = "armor"
+ else if( istype(wear_suit, /obj/item/clothing/suit/storage/det_suit || /obj/item/clothing/suit/storage/labcoat) )
+ t_state = "coat"
+ else
+ t_state = "suit"
+ lying.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "[t_state]blood2")
+ standing.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "[t_state]blood")
+
+ if(wear_suit.blood_DNA)
+ var/obj/item/clothing/suit/S = wear_suit
+ lying.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "[S.blood_overlay_type]blood2")
+ standing.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "[S.blood_overlay_type]blood")
+
overlays_lying[SUIT_LAYER] = lying
overlays_standing[SUIT_LAYER] = standing
@@ -683,8 +731,11 @@ proc/get_damage_icon_part(damage_state, body_part)
/mob/living/carbon/human/update_inv_wear_mask(var/update_icons=1)
if( wear_mask && ( istype(wear_mask, /obj/item/clothing/mask) || istype(wear_mask, /obj/item/clothing/tie) ) )
wear_mask.screen_loc = ui_mask //TODO
- var/image/lying = image("icon" = 'icons/mob/mask.dmi', "icon_state" = "[wear_mask.icon_state]2")
- var/image/standing = image("icon" = 'icons/mob/mask.dmi', "icon_state" = "[wear_mask.icon_state]")
+ var/dmi='icons/mob/mask.dmi'
+ if(wear_mask.custom)
+ dmi = wear_mask.icon
+ var/image/lying = image("icon" = dmi, "icon_state" = "[wear_mask.icon_state]2")
+ var/image/standing = image("icon" = dmi, "icon_state" = "[wear_mask.icon_state]")
if( !istype(wear_mask, /obj/item/clothing/mask/cigarette) && wear_mask.blood_DNA )
lying.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "maskblood2")
standing.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "maskblood")
@@ -699,8 +750,11 @@ proc/get_damage_icon_part(damage_state, body_part)
/mob/living/carbon/human/update_inv_back(var/update_icons=1)
if(back)
back.screen_loc = ui_back //TODO
- overlays_lying[BACK_LAYER] = image("icon" = 'icons/mob/back.dmi', "icon_state" = "[back.icon_state]2")
- overlays_standing[BACK_LAYER] = image("icon" = 'icons/mob/back.dmi', "icon_state" = "[back.icon_state]")
+ var/dmi='icons/mob/back.dmi'
+ if(back.custom)
+ dmi = back.icon
+ overlays_lying[BACK_LAYER] = image("icon" = dmi, "icon_state" = "[back.icon_state]2")
+ overlays_standing[BACK_LAYER] = image("icon" = dmi, "icon_state" = "[back.icon_state]")
else
overlays_lying[BACK_LAYER] = null
overlays_standing[BACK_LAYER] = null
@@ -745,8 +799,12 @@ proc/get_damage_icon_part(damage_state, body_part)
if(r_hand)
r_hand.screen_loc = ui_rhand //TODO
var/t_state = r_hand.item_state
- if(!t_state) t_state = r_hand.icon_state
- overlays_standing[R_HAND_LAYER] = image("icon" = 'icons/mob/items_righthand.dmi', "icon_state" = "[t_state]")
+ if(!t_state)
+ t_state = r_hand.icon_state
+ var/dmi='icons/mob/items_righthand.dmi'
+ if(r_hand.custom)
+ dmi=r_hand.icon
+ overlays_standing[R_HAND_LAYER] = image("icon" = dmi, "icon_state" = "[t_state]")
if (handcuffed) drop_r_hand()
else
overlays_standing[R_HAND_LAYER] = null
@@ -757,8 +815,12 @@ proc/get_damage_icon_part(damage_state, body_part)
if(l_hand)
l_hand.screen_loc = ui_lhand //TODO
var/t_state = l_hand.item_state
- if(!t_state) t_state = l_hand.icon_state
- overlays_standing[L_HAND_LAYER] = image("icon" = 'icons/mob/items_lefthand.dmi', "icon_state" = "[t_state]")
+ if(!t_state)
+ t_state = l_hand.icon_state
+ var/dmi='icons/mob/items_lefthand.dmi'
+ if(l_hand.custom)
+ dmi=l_hand.icon
+ overlays_standing[L_HAND_LAYER] = image("icon" = dmi, "icon_state" = "[t_state]")
if (handcuffed) drop_l_hand()
else
overlays_standing[L_HAND_LAYER] = null
diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm
index 788f3d2c0e0..1cabc617bf9 100644
--- a/code/modules/mob/living/carbon/species.dm
+++ b/code/modules/mob/living/carbon/species.dm
@@ -40,7 +40,7 @@
name = "Human"
primitive = /mob/living/carbon/monkey
- flags = HAS_SKIN_TONE | HAS_LIPS | HAS_UNDERWEAR
+ flags = HAS_SKIN_TONE | HAS_LIPS | HAS_UNDERWEAR | CAN_BE_FAT
/datum/species/unathi
name = "Unathi"
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index 2cf09e364da..5181c5c22a3 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -381,10 +381,23 @@
new_character.dna.ready_dna(new_character)
new_character.dna.b_type = client.prefs.b_type
- if(client.prefs.disabilities)
+ if(client.prefs.disabilities & DISABILITY_FLAG_NEARSIGHTED)
new_character.dna.struc_enzymes = setblock(new_character.dna.struc_enzymes,GLASSESBLOCK,toggledblock(getblock(new_character.dna.struc_enzymes,GLASSESBLOCK,3)),3)
new_character.disabilities |= NEARSIGHTED
+ if(client.prefs.disabilities & DISABILITY_FLAG_FAT)
+ new_character.mutations += FAT
+ new_character.overeatduration = 600 // Max overeat
+
+ if(client.prefs.disabilities & DISABILITY_FLAG_EPILEPTIC)
+ new_character.dna.struc_enzymes = setblock(new_character.dna.struc_enzymes,EPILEPSYBLOCK,toggledblock(getblock(new_character.dna.struc_enzymes,EPILEPSYBLOCK,3)),3)
+ new_character.disabilities |= EPILEPSY
+
+ if(client.prefs.disabilities & DISABILITY_FLAG_DEAF)
+ new_character.dna.struc_enzymes = setblock(new_character.dna.struc_enzymes,DEAFBLOCK,toggledblock(getblock(new_character.dna.struc_enzymes,DEAFBLOCK,3)),3)
+ new_character.sdisabilities |= DEAF
+
+
new_character.key = key //Manually transfer the key to log them in
return new_character
diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm
index 86ed744fcca..c188b372b2a 100644
--- a/code/modules/mob/new_player/preferences_setup.dm
+++ b/code/modules/mob/new_player/preferences_setup.dm
@@ -144,7 +144,10 @@ datum/preferences
else
icobase = 'icons/mob/human_races/r_human.dmi'
- preview_icon = new /icon(icobase, "torso_[g]")
+ var/fat=""
+ if(disabilities&DISABILITY_FLAG_FAT && current_species.flags & CAN_BE_FAT)
+ fat="_fat"
+ preview_icon = new /icon(icobase, "torso_[g][fat]")
preview_icon.Blend(new /icon(icobase, "groin_[g]"), ICON_OVERLAY)
preview_icon.Blend(new /icon(icobase, "head_[g]"), ICON_OVERLAY)
@@ -185,8 +188,11 @@ datum/preferences
eyes_s.Blend(facial_s, ICON_OVERLAY)
var/icon/clothes_s = null
+ var/uniform_dmi='icons/mob/uniform.dmi'
+ if(disabilities&DISABILITY_FLAG_FAT)
+ uniform_dmi='icons/mob/uniform_fat.dmi'
if(job_civilian_low & ASSISTANT)//This gives the preview icon clothes depending on which job(if any) is set to 'high'
- clothes_s = new /icon('icons/mob/uniform.dmi', "grey_s")
+ clothes_s = new /icon(uniform_dmi, "grey_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if(backbag == 2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
@@ -196,7 +202,7 @@ datum/preferences
else if(job_civilian_high)//I hate how this looks, but there's no reason to go through this switch if it's empty
switch(job_civilian_high)
if(HOP)
- clothes_s = new /icon('icons/mob/uniform.dmi', "hop_s")
+ clothes_s = new /icon(uniform_dmi, "hop_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "armor"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/head.dmi', "helmet"), ICON_OVERLAY)
@@ -208,7 +214,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(BARTENDER)
- clothes_s = new /icon('icons/mob/uniform.dmi', "ba_suit_s")
+ clothes_s = new /icon(uniform_dmi, "ba_suit_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "armor"), ICON_OVERLAY)
switch(backbag)
@@ -219,7 +225,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(BOTANIST)
- clothes_s = new /icon('icons/mob/uniform.dmi', "hydroponics_s")
+ clothes_s = new /icon(uniform_dmi, "hydroponics_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "ggloves"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "apron"), ICON_OVERLAY)
@@ -231,7 +237,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(CHEF)
- clothes_s = new /icon('icons/mob/uniform.dmi', "chef_s")
+ clothes_s = new /icon(uniform_dmi, "chef_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/head.dmi', "chef"), ICON_OVERLAY)
switch(backbag)
@@ -242,7 +248,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(JANITOR)
- clothes_s = new /icon('icons/mob/uniform.dmi', "janitor_s")
+ clothes_s = new /icon(uniform_dmi, "janitor_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
switch(backbag)
if(2)
@@ -252,7 +258,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(LIBRARIAN)
- clothes_s = new /icon('icons/mob/uniform.dmi', "red_suit_s")
+ clothes_s = new /icon(uniform_dmi, "red_suit_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
switch(backbag)
if(2)
@@ -262,7 +268,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(QUARTERMASTER)
- clothes_s = new /icon('icons/mob/uniform.dmi', "qm_s")
+ clothes_s = new /icon(uniform_dmi, "qm_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/eyes.dmi', "sun"), ICON_OVERLAY)
@@ -275,7 +281,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(CARGOTECH)
- clothes_s = new /icon('icons/mob/uniform.dmi', "cargotech_s")
+ clothes_s = new /icon(uniform_dmi, "cargotech_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY)
switch(backbag)
@@ -286,7 +292,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(MINER)
- clothes_s = new /icon('icons/mob/uniform.dmi', "miner_s")
+ clothes_s = new /icon(uniform_dmi, "miner_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY)
switch(backbag)
@@ -297,7 +303,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(LAWYER)
- clothes_s = new /icon('icons/mob/uniform.dmi', "internalaffairs_s")
+ clothes_s = new /icon(uniform_dmi, "internalaffairs_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/items_righthand.dmi', "briefcase"), ICON_UNDERLAY)
@@ -309,7 +315,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(CHAPLAIN)
- clothes_s = new /icon('icons/mob/uniform.dmi', "chapblack_s")
+ clothes_s = new /icon(uniform_dmi, "chapblack_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
switch(backbag)
if(2)
@@ -319,12 +325,12 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(CLOWN)
- clothes_s = new /icon('icons/mob/uniform.dmi', "clown_s")
+ clothes_s = new /icon(uniform_dmi, "clown_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "clown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/mask.dmi', "clown"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "clownpack"), ICON_OVERLAY)
if(MIME)
- clothes_s = new /icon('icons/mob/uniform.dmi', "mime_s")
+ clothes_s = new /icon(uniform_dmi, "mime_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "lgloves"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/mask.dmi', "mime"), ICON_OVERLAY)
@@ -341,7 +347,7 @@ datum/preferences
else if(job_medsci_high)
switch(job_medsci_high)
if(RD)
- clothes_s = new /icon('icons/mob/uniform.dmi', "director_s")
+ clothes_s = new /icon(uniform_dmi, "director_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/items_righthand.dmi', "clipboard"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
@@ -353,7 +359,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(SCIENTIST)
- clothes_s = new /icon('icons/mob/uniform.dmi', "toxinswhite_s")
+ clothes_s = new /icon(uniform_dmi, "toxinswhite_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_tox_open"), ICON_OVERLAY)
switch(backbag)
@@ -364,7 +370,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(CHEMIST)
- clothes_s = new /icon('icons/mob/uniform.dmi', "chemistrywhite_s")
+ clothes_s = new /icon(uniform_dmi, "chemistrywhite_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_chem_open"), ICON_OVERLAY)
switch(backbag)
@@ -375,7 +381,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(CMO)
- clothes_s = new /icon('icons/mob/uniform.dmi', "cmo_s")
+ clothes_s = new /icon(uniform_dmi, "cmo_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/items_lefthand.dmi', "firstaid"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_cmo_open"), ICON_OVERLAY)
@@ -387,7 +393,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(DOCTOR)
- clothes_s = new /icon('icons/mob/uniform.dmi', "medical_s")
+ clothes_s = new /icon(uniform_dmi, "medical_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/items_lefthand.dmi', "firstaid"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
@@ -399,7 +405,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(GENETICIST)
- clothes_s = new /icon('icons/mob/uniform.dmi', "geneticswhite_s")
+ clothes_s = new /icon(uniform_dmi, "geneticswhite_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_gen_open"), ICON_OVERLAY)
switch(backbag)
@@ -410,7 +416,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(VIROLOGIST)
- clothes_s = new /icon('icons/mob/uniform.dmi', "virologywhite_s")
+ clothes_s = new /icon(uniform_dmi, "virologywhite_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/mask.dmi', "sterile"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_vir_open"), ICON_OVERLAY)
@@ -422,7 +428,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(ROBOTICIST)
- clothes_s = new /icon('icons/mob/uniform.dmi', "robotics_s")
+ clothes_s = new /icon(uniform_dmi, "robotics_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/items_righthand.dmi', "toolbox_blue"), ICON_OVERLAY)
@@ -438,7 +444,7 @@ datum/preferences
else if(job_engsec_high)
switch(job_engsec_high)
if(CAPTAIN)
- clothes_s = new /icon('icons/mob/uniform.dmi', "captain_s")
+ clothes_s = new /icon(uniform_dmi, "captain_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/head.dmi', "captain"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/mask.dmi', "cigaron"), ICON_OVERLAY)
@@ -452,7 +458,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(HOS)
- clothes_s = new /icon('icons/mob/uniform.dmi', "hosred_s")
+ clothes_s = new /icon(uniform_dmi, "hosred_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/head.dmi', "helmet"), ICON_OVERLAY)
@@ -465,7 +471,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(WARDEN)
- clothes_s = new /icon('icons/mob/uniform.dmi', "warden_s")
+ clothes_s = new /icon(uniform_dmi, "warden_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/head.dmi', "helmet"), ICON_OVERLAY)
@@ -478,7 +484,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(DETECTIVE)
- clothes_s = new /icon('icons/mob/uniform.dmi', "detective_s")
+ clothes_s = new /icon(uniform_dmi, "detective_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/mask.dmi', "cigaron"), ICON_OVERLAY)
@@ -492,7 +498,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(OFFICER)
- clothes_s = new /icon('icons/mob/uniform.dmi', "secred_s")
+ clothes_s = new /icon(uniform_dmi, "secred_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/head.dmi', "helmet"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "armor"), ICON_OVERLAY)
@@ -504,7 +510,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(CHIEF)
- clothes_s = new /icon('icons/mob/uniform.dmi', "chief_s")
+ clothes_s = new /icon(uniform_dmi, "chief_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
@@ -518,7 +524,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(ENGINEER)
- clothes_s = new /icon('icons/mob/uniform.dmi', "engine_s")
+ clothes_s = new /icon(uniform_dmi, "engine_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "orange"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/head.dmi', "hardhat0_yellow"), ICON_OVERLAY)
@@ -530,7 +536,7 @@ datum/preferences
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(ATMOSTECH)
- clothes_s = new /icon('icons/mob/uniform.dmi', "atmos_s")
+ clothes_s = new /icon(uniform_dmi, "atmos_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
@@ -543,14 +549,14 @@ datum/preferences
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(AI)//Gives AI and borgs assistant-wear, so they can still customize their character
- clothes_s = new /icon('icons/mob/uniform.dmi', "grey_s")
+ clothes_s = new /icon(uniform_dmi, "grey_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if(backbag == 2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
else if(backbag == 3 || backbag == 4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(CYBORG)
- clothes_s = new /icon('icons/mob/uniform.dmi', "grey_s")
+ clothes_s = new /icon(uniform_dmi, "grey_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if(backbag == 2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm
index 492da3aa1f8..fc9b3aff6b0 100644
--- a/code/modules/organs/organ_external.dm
+++ b/code/modules/organs/organ_external.dm
@@ -44,6 +44,7 @@
// how often wounds should be updated, a higher number means less often
var/wound_update_accuracy = 1
+ var/has_fat=0 // Has a _fat variant
/datum/organ/external/New(var/datum/organ/external/P)
if(P)
@@ -588,11 +589,19 @@
return 1
return 0
-/datum/organ/external/get_icon(gender="")
+/datum/organ/external/get_icon(gender="",isFat=0)
+ //stand_icon = new /icon(icobase, "torso_[g][fat?"_fat":""]")
+ if(gender)
+ gender="_[gender]"
+ var/fat=""
+ if(isFat && has_fat)
+ fat="_fat"
+ var/icon_state="[icon_name][gender][fat]"
+ //testing("[src].get_icon('[gender]', '[fat]') = /icon([owner.race_icon], [icon_state])")
if (status & ORGAN_MUTATED)
- return new /icon(owner.deform_icon, "[icon_name][gender ? "_[gender]" : ""]")
+ return new /icon(owner.deform_icon, icon_state)
else
- return new /icon(owner.race_icon, "[icon_name][gender ? "_[gender]" : ""]")
+ return new /icon(owner.race_icon, icon_state)
/datum/organ/external/proc/is_usable()
@@ -609,6 +618,7 @@
max_damage = 75
min_broken_damage = 55
body_part = UPPER_TORSO
+ has_fat=1
/datum/organ/external/groin
diff --git a/code/setup.dm b/code/setup.dm
index 9b11e9a9cf0..a482123178a 100644
--- a/code/setup.dm
+++ b/code/setup.dm
@@ -71,7 +71,7 @@
#define DOOR_CRUSH_DAMAGE 10
// Factor of how fast mob nutrition decreases
-#define HUNGER_FACTOR 0.05
+#define HUNGER_FACTOR 0.15
// How many units of reagent are consumed per tick, by default.
#define REAGENTS_METABOLISM 0.2
@@ -306,6 +306,12 @@ var/MAX_EXPLOSION_RANGE = 14
#define STRUCDNASIZE 27
#define UNIDNASIZE 13
+// Used in preferences.
+#define DISABILITY_FLAG_NEARSIGHTED 1
+#define DISABILITY_FLAG_FAT 2
+#define DISABILITY_FLAG_EPILEPTIC 4
+#define DISABILITY_FLAG_DEAF 8
+
// Generic mutations:
#define TK 1
#define COLD_RESISTANCE 2
@@ -719,6 +725,7 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse
#define HAS_UNDERWEAR 1024
#define HAS_TAIL 2048
#define IS_PLANT 4096
+#define CAN_BE_FAT 8192
//Language flags.
#define WHITELISTED 1 // Language is available if the speaker is whitelisted.