diff --git a/code/__DEFINES/materials.dm b/code/__DEFINES/materials.dm
index 0e5234792af..3c4a78ea7a5 100644
--- a/code/__DEFINES/materials.dm
+++ b/code/__DEFINES/materials.dm
@@ -12,3 +12,4 @@
#define MATERIAL_COLOR (1<<0)
#define MATERIAL_ADD_PREFIX (1<<1)
#define MATERIAL_NO_EFFECTS (1<<2)
+#define MATERIAL_AFFECT_STATISTICS (1<<3)
diff --git a/code/datums/materials/_material.dm b/code/datums/materials/_material.dm
index 37fd67eff5f..b5ba7246967 100644
--- a/code/datums/materials/_material.dm
+++ b/code/datums/materials/_material.dm
@@ -1,6 +1,6 @@
/*! Material datum
-Simple datum which is instanced once per type and is used for every object of said material. It has a variety of variables that define behavior. Subtyping from this makes it easier to create your own materials.
+Simple datum which is instanced once per type and is used for every object of said material. It has a variety of variables that define behavior. Subtyping from this makes it easier to create your own materials.
*/
@@ -27,7 +27,7 @@ Simple datum which is instanced once per type and is used for every object of sa
///Armor modifiers, multiplies an items normal armor vars by these amounts.
var/armor_modifiers = list("melee" = 1, "bullet" = 1, "laser" = 1, "energy" = 1, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 1, "acid" = 1)
///How beautiful is this material per unit
- var/beauty_modifier = 0
+ var/beauty_modifier = 0
///This proc is called when the material is added to an object.
/datum/material/proc/on_applied(atom/source, amount, material_flags)
@@ -48,20 +48,21 @@ Simple datum which is instanced once per type and is used for every object of sa
///This proc is called when the material is added to an object specifically.
/datum/material/proc/on_applied_obj(var/obj/o, amount, material_flags)
- var/new_max_integrity = CEILING(o.max_integrity * integrity_modifier, 1)
- o.modify_max_integrity(new_max_integrity)
- o.force *= strength_modifier
- o.throwforce *= strength_modifier
+ if(material_flags & MATERIAL_AFFECT_STATISTICS)
+ var/new_max_integrity = CEILING(o.max_integrity * integrity_modifier, 1)
+ o.modify_max_integrity(new_max_integrity)
+ o.force *= strength_modifier
+ o.throwforce *= strength_modifier
- var/list/temp_armor_list = list() //Time to add armor modifiers!
+ var/list/temp_armor_list = list() //Time to add armor modifiers!
- if(!istype(o.armor))
- return
- var/list/current_armor = o.armor?.getList()
+ if(!istype(o.armor))
+ return
+ var/list/current_armor = o.armor?.getList()
- for(var/i in current_armor)
- temp_armor_list[i] = current_armor[i] * armor_modifiers[i]
- o.armor = getArmor(arglist(temp_armor_list))
+ for(var/i in current_armor)
+ temp_armor_list[i] = current_armor[i] * armor_modifiers[i]
+ o.armor = getArmor(arglist(temp_armor_list))
///This proc is called when the material is removed from an object.
/datum/material/proc/on_removed(atom/source, material_flags)
@@ -72,13 +73,14 @@ Simple datum which is instanced once per type and is used for every object of sa
if(material_flags & MATERIAL_ADD_PREFIX)
source.name = initial(source.name)
-
+
if(istype(source, /obj)) //objs
on_removed_obj(source, material_flags)
///This proc is called when the material is removed from an object specifically.
/datum/material/proc/on_removed_obj(var/obj/o, amount, material_flags)
- var/new_max_integrity = initial(o.max_integrity)
- o.modify_max_integrity(new_max_integrity)
- o.force = initial(o.force)
- o.throwforce = initial(o.throwforce)
+ if(material_flags & MATERIAL_AFFECT_STATISTICS)
+ var/new_max_integrity = initial(o.max_integrity)
+ o.modify_max_integrity(new_max_integrity)
+ o.force = initial(o.force)
+ o.throwforce = initial(o.throwforce)
diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm
index c21f5d6d2cc..8bec5d3c4c5 100644
--- a/code/game/objects/structures/beds_chairs/chair.dm
+++ b/code/game/objects/structures/beds_chairs/chair.dm
@@ -124,7 +124,7 @@
///Material chair
/obj/structure/chair/greyscale
- material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR
+ material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS
item_chair = /obj/item/chair/greyscale
buildstacktype = null //Custom mats handle this
@@ -340,7 +340,7 @@
smash(user)
/obj/item/chair/greyscale
- material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR
+ material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS
origin_type = /obj/structure/chair/greyscale
/obj/item/chair/stool
diff --git a/code/game/objects/structures/table_frames.dm b/code/game/objects/structures/table_frames.dm
index 7ba036843a6..11f8d557058 100644
--- a/code/game/objects/structures/table_frames.dm
+++ b/code/game/objects/structures/table_frames.dm
@@ -41,7 +41,7 @@
make_new_table(material.tableVariant)
else
if(material.get_amount() < 1)
- to_chat(user, "You need one metal sheet to do this!")
+ to_chat(user, "You need one sheet to do this!")
return
to_chat(user, "You start adding [material] to [src]...")
if(do_after(user, 20, target = src) && material.use(1))
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 2297bd11db0..6224460b686 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -205,7 +205,7 @@
/obj/structure/table/greyscale
icon = 'icons/obj/smooth_structures/table_greyscale.dmi'
icon_state = "table"
- material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR
+ material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS
buildstack = null //No buildstack, so generate from mat datums
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 9ca3810c6c1..69cc2b182e6 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -139,7 +139,7 @@
contents += secret
/obj/structure/toilet/greyscale
- material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR
+ material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS
buildstacktype = null
/obj/structure/urinal
@@ -398,7 +398,7 @@
/obj/structure/sink/greyscale
icon_state = "sink_greyscale"
- material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR
+ material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS
buildstacktype = null
//Shower Curtains//
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index cc9c882b211..3c27644dd2d 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -273,7 +273,7 @@
icon_state = "knight_greyscale"
item_state = "knight_greyscale"
armor = list("melee" = 35, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 10, "bio" = 10, "rad" = 10, "fire" = 40, "acid" = 40)
- material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR//Can change color and add prefix
+ material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS //Can change color and add prefix
/obj/item/clothing/head/helmet/skull
name = "skull helmet"
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index cfa8dca5238..b28b1266b49 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -247,7 +247,7 @@
desc = "A classic suit of armour, able to be made from many different materials."
icon_state = "knight_greyscale"
item_state = "knight_greyscale"
- material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR//Can change color and add prefix
+ material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS//Can change color and add prefix
armor = list("melee" = 35, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 10, "bio" = 10, "rad" = 10, "fire" = 40, "acid" = 40)
/obj/item/clothing/suit/armor/vest/durathread
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index 7fbea8d0465..396b5767412 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -322,7 +322,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
throwforce = 2
w_class = WEIGHT_CLASS_TINY
custom_materials = list(/datum/material/iron = 400)
- material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR
+ material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS
var/string_attached
var/list/sideslist = list("heads","tails")
var/cooldown = 0