[MIRROR] Datum mat GAGS support and mace migration (#6059)

* Datum mat GAGS support and mace migration

* Mirror!

Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
This commit is contained in:
SkyratBot
2021-06-01 05:49:32 +02:00
committed by GitHub
parent 90d87fa638
commit 4914ae5ae1
27 changed files with 361 additions and 35 deletions
+6 -1
View File
@@ -45,11 +45,16 @@
/// Breakdown flags used when exporting materials.
#define BREAKDOWN_FLAGS_EXPORT (NONE)
/// Flag for atoms, this flag ensures it isn't re-colored by materials. Useful for snowflake icons such as default toolboxes.
/// Applies the material color to the atom's color. Deprecated, use MATERIAL_GREYSCALE instead
#define MATERIAL_COLOR (1<<0)
/// Whether a prefix describing the material should be added to the name
#define MATERIAL_ADD_PREFIX (1<<1)
/// Whether a material's mechanical effects should apply to the atom
#define MATERIAL_NO_EFFECTS (1<<2)
/// Whether a material should affect the stats of the atom
#define MATERIAL_AFFECT_STATISTICS (1<<3)
/// Applies the material greyscale color to the atom's greyscale color.
#define MATERIAL_GREYSCALE (1<<4)
/// Wrapper for fetching material references. Exists exclusively so that people don't need to wrap everything in a list every time.
#define GET_MATERIAL_REF(arguments...) SSmaterials._GetMaterialRef(list(##arguments))
+6
View File
@@ -31,3 +31,9 @@ SUBSYSTEM_DEF(greyscale)
if(istype(colors)) // It's the color list format
colors = colors.Join()
return configurations[type].Generate(colors)
/datum/controller/subsystem/greyscale/proc/ParseColorString(color_string)
. = list()
var/list/split_colors = splittext(color_string, "#")
for(var/color in 2 to length(split_colors))
. += "#[split_colors[color]]"
+7 -7
View File
@@ -8,6 +8,10 @@
/// Reference to the dmi file for this config
var/icon_file
/// An optional var to set that tells the material system what material this configuration is for.
/// Use a typepath here, not an instance.
var/datum/material/material_skin
///////////////////////////////////////////////////////////////////////////////////////////
// Do not set any further vars, the json file specified above is what generates the object
@@ -116,6 +120,8 @@
var/list/color_groups = list()
for(var/datum/greyscale_layer/layer as anything in all_layers)
for(var/id in layer.color_ids)
if(!isnum(id))
continue
color_groups["[id]"] = TRUE
expected_colors = length(color_groups)
@@ -142,7 +148,7 @@
/// Handles the actual icon manipulation to create the spritesheet
/datum/greyscale_config/proc/GenerateBundle(list/colors, list/render_steps)
if(!istype(colors))
colors = ParseColorString(colors)
colors = SSgreyscale.ParseColorString(colors)
if(length(colors) != expected_colors)
CRASH("[DebugName()] expected [expected_colors] color arguments but only received [length(colors)]")
@@ -188,9 +194,3 @@
output["icon"] = GenerateBundle(colors, debug_steps)
return output
/datum/greyscale_config/proc/ParseColorString(color_string)
. = list()
var/list/split_colors = splittext(color_string, "#")
for(var/color in 2 to length(split_colors))
. += "#[split_colors[color]]"
@@ -217,3 +217,43 @@
name = "Flower Worn"
icon_file = 'icons/mob/clothing/head/hydroponics.dmi'
json_config = 'code/datums/greyscale/json_configs/simple_flower_worn.json'
/datum/greyscale_config/cleric_mace
name = "Base Cleric Mace"
icon_file = 'icons/obj/items/cleric_mace.dmi'
json_config = 'code/datums/greyscale/json_configs/items/cleric_mace.json'
/datum/greyscale_config/cleric_mace_lefthand
name = "Base Held Cleric Mace, Left"
icon_file = 'icons/obj/items/cleric_mace.dmi'
json_config = 'code/datums/greyscale/json_configs/items/cleric_mace_lefthand.json'
/datum/greyscale_config/cleric_mace_righthand
name = "Base Held Cleric Mace, Right"
icon_file = 'icons/obj/items/cleric_mace.dmi'
json_config = 'code/datums/greyscale/json_configs/items/cleric_mace_righthand.json'
/datum/greyscale_config/cleric_mace_worn
name = "Base Worn Cleric Mace"
icon_file = 'icons/obj/items/cleric_mace.dmi'
json_config = 'code/datums/greyscale/json_configs/items/cleric_mace_worn.json'
/datum/greyscale_config/cleric_mace/gold
name = "Gold Cleric Mace"
material_skin = /datum/material/gold
json_config = 'code/datums/greyscale/json_configs/items/cleric_mace_gold.json'
/datum/greyscale_config/cleric_mace_lefthand/gold
name = "Gold Held Cleric Mace, Left"
material_skin = /datum/material/gold
json_config = 'code/datums/greyscale/json_configs/items/cleric_mace_lefthand_gold.json'
/datum/greyscale_config/cleric_mace_righthand/gold
name = "Gold Held Cleric Mace, Right"
material_skin = /datum/material/gold
json_config = 'code/datums/greyscale/json_configs/items/cleric_mace_righthand_gold.json'
/datum/greyscale_config/cleric_mace_worn/gold
name = "Gold Worn Cleric Mace"
icon_file = 'icons/obj/items/cleric_mace.dmi'
json_config = 'code/datums/greyscale/json_configs/items/cleric_mace_worn_gold.json'
@@ -0,0 +1,4 @@
/datum/greyscale_config/shimmer
name = "Shimmer Effect"
icon_file = 'icons/effects/shimmer.dmi'
json_config = 'code/datums/greyscale/json_configs/material_effects/shimmer.json'
@@ -0,0 +1,28 @@
{
"default": [
{
"type": "icon_state",
"icon_state": "base",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
"icon_state": "handle",
"blend_mode": "overlay"
}
],
"default_worn": [
{
"type": "icon_state",
"icon_state": "worn_shaft",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
"icon_state": "worn_handle",
"blend_mode": "overlay"
}
]
}
@@ -0,0 +1,46 @@
{
"default": [
{
"type": "reference",
"reference_type": "/datum/greyscale_config/cleric_mace",
"icon_state": "default",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
[
{
"type": "reference",
"reference_type": "/datum/greyscale_config/shimmer",
"blend_mode": "overlay",
"color_ids": [ "#ffffff" ]
},
{
"type": "icon_state",
"icon_state": "shimmer_mask",
"blend_mode": "multiply"
}
]
],
"default_worn": [
{
"type": "reference",
"reference_type": "/datum/greyscale_config/cleric_mace",
"icon_state": "default_worn",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
[
{
"type": "reference",
"reference_type": "/datum/greyscale_config/shimmer",
"blend_mode": "overlay",
"color_ids": [ "#ffffff" ]
},
{
"type": "icon_state",
"icon_state": "shimmer_mask_worn",
"blend_mode": "multiply"
}
]
]
}
@@ -0,0 +1,10 @@
{
"default": [
{
"type": "icon_state",
"icon_state": "inhand_left",
"blend_mode": "overlay",
"color_ids": [ 1 ]
}
]
}
@@ -0,0 +1,24 @@
{
"default": [
{
"type": "reference",
"reference_type": "/datum/greyscale_config/cleric_mace_lefthand",
"icon_state": "default",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
[
{
"type": "reference",
"reference_type": "/datum/greyscale_config/shimmer",
"blend_mode": "overlay",
"color_ids": [ "#ffffff" ]
},
{
"type": "icon_state",
"icon_state": "shimmer_mask_lefthand",
"blend_mode": "multiply"
}
]
]
}
@@ -0,0 +1,10 @@
{
"default": [
{
"type": "icon_state",
"icon_state": "inhand_right",
"blend_mode": "overlay",
"color_ids": [ 1 ]
}
]
}
@@ -0,0 +1,24 @@
{
"default": [
{
"type": "reference",
"reference_type": "/datum/greyscale_config/cleric_mace_righthand",
"icon_state": "default",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
[
{
"type": "reference",
"reference_type": "/datum/greyscale_config/shimmer",
"blend_mode": "overlay",
"color_ids": [ "#ffffff" ]
},
{
"type": "icon_state",
"icon_state": "shimmer_mask_righthand",
"blend_mode": "multiply"
}
]
]
}
@@ -0,0 +1,15 @@
{
"default": [
{
"type": "icon_state",
"icon_state": "worn_shaft",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
"icon_state": "worn_handle",
"blend_mode": "overlay"
}
]
}
@@ -0,0 +1,23 @@
{
"default": [
{
"type": "reference",
"reference_type": "/datum/greyscale_config/cleric_mace_worn",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
[
{
"type": "reference",
"reference_type": "/datum/greyscale_config/shimmer",
"blend_mode": "overlay",
"color_ids": [ "#ffffff" ]
},
{
"type": "icon_state",
"icon_state": "shimmer_mask_worn",
"blend_mode": "multiply"
}
]
]
}
@@ -0,0 +1,10 @@
{
"": [
{
"type": "icon_state",
"icon_state": "animation",
"blend_mode": "overlay",
"color_ids": [ 1 ]
}
]
}
+12 -4
View File
@@ -15,8 +15,11 @@
/datum/greyscale_layer/New(icon_file, list/json_data)
color_ids = json_data["color_ids"]
for(var/i in color_ids)
if(!isnum(i))
CRASH("Color ids must be a positive integer starting from 1, '[i]' is not valid. Make sure it is not quoted in the json configuration.")
if(isnum(i))
continue
if(istext(i) && i[1] == "#")
continue
CRASH("Color ids must be a color string or positive integer starting from 1, '[i]' is not valid.")
blend_mode = blend_modes[lowertext(json_data["blend_mode"])]
if(isnull(blend_mode))
CRASH("Greyscale config for [icon_file] is missing a blend mode on a layer.")
@@ -26,7 +29,10 @@
/datum/greyscale_layer/proc/Generate(list/colors, list/render_steps)
var/list/processed_colors = list()
for(var/i in color_ids)
processed_colors += colors[i]
if(isnum(i))
processed_colors += colors[i]
else
processed_colors += i
return InternalGenerate(processed_colors, render_steps)
/datum/greyscale_layer/proc/InternalGenerate(list/colors, list/render_steps)
@@ -60,13 +66,15 @@
/// A layer created by using another greyscale icon's configuration
/datum/greyscale_layer/reference
layer_type = "reference"
var/icon_state
var/datum/greyscale_config/reference_config
/datum/greyscale_layer/reference/New(icon_file, list/json_data)
. = ..()
icon_state = json_data["icon_state"] || ""
reference_config = SSgreyscale.configurations[json_data["reference_type"]]
if(!reference_config)
CRASH("An unknown greyscale configuration was given to a reference layer: [json_data["reference_type"]]")
/datum/greyscale_layer/reference/InternalGenerate(list/colors, list/render_steps)
return reference_config.Generate(colors.Join(), render_steps)
return icon(reference_config.Generate(colors.Join(), render_steps), icon_state)
+45 -7
View File
@@ -14,7 +14,10 @@ Simple datum which is instanced once per type and is used for every object of sa
var/id
///Base color of the material, is used for greyscale. Item isn't changed in color if this is null.
///Deprecated, use greyscale_color instead.
var/color
///Determines the color palette of the material. Formatted the same as atom/var/greyscale_colors
var/greyscale_colors
///Base alpha of the material, is used for greyscale icons.
var/alpha = 255
///Bitflags that influence how SSmaterials handles this material.
@@ -71,6 +74,10 @@ Simple datum which is instanced once per type and is used for every object of sa
ADD_KEEP_TOGETHER(source, MATERIAL_SOURCE(src))
source.add_filter("material_texture_[name]",1,layering_filter(icon=cached_texture_filter_icon,blend_mode=BLEND_INSET_OVERLAY))
if(material_flags & MATERIAL_GREYSCALE)
var/config_path = get_greyscale_config_for(source.greyscale_config)
source.set_greyscale(greyscale_colors, config_path)
if(alpha < 255)
source.opacity = FALSE
if(material_flags & MATERIAL_ADD_PREFIX)
@@ -108,17 +115,29 @@ Simple datum which is instanced once per type and is used for every object of sa
for(var/i in current_armor)
temp_armor_list[i] = current_armor[i] * armor_modifiers[i]
o.armor = getArmor(arglist(temp_armor_list))
if(!isitem(o))
return
var/obj/item/I = o
var/obj/item/item = o
if(material_flags & MATERIAL_GREYSCALE)
var/worn_path = get_greyscale_config_for(item.greyscale_config_worn)
var/lefthand_path = get_greyscale_config_for(item.greyscale_config_inhand_left)
var/righthand_path = get_greyscale_config_for(item.greyscale_config_inhand_right)
item.set_greyscale(
new_worn_config = worn_path,
new_inhand_left = lefthand_path,
new_inhand_right = righthand_path
)
if(!item_sound_override)
return
I.hitsound = item_sound_override
I.usesound = item_sound_override
I.mob_throw_hit_sound = item_sound_override
I.equip_sound = item_sound_override
I.pickup_sound = item_sound_override
I.drop_sound = item_sound_override
item.hitsound = item_sound_override
item.usesound = item_sound_override
item.mob_throw_hit_sound = item_sound_override
item.equip_sound = item_sound_override
item.pickup_sound = item_sound_override
item.drop_sound = item_sound_override
/datum/material/proc/on_applied_turf(turf/T, amount, material_flags)
if(isopenturf(T))
@@ -132,6 +151,14 @@ Simple datum which is instanced once per type and is used for every object of sa
T.AddElement(/datum/element/turf_z_transparency, TRUE)
return
/datum/material/proc/get_greyscale_config_for(datum/greyscale_config/config_path)
if(!config_path)
return
for(var/datum/greyscale_config/path as anything in subtypesof(config_path))
if(type != initial(path.material_skin))
continue
return path
///This proc is called when the material is removed from an object.
/datum/material/proc/on_removed(atom/source, amount, material_flags)
if(material_flags & MATERIAL_COLOR) //Prevent changing things with pre-set colors, to keep colored toolboxes their looks for example
@@ -142,6 +169,9 @@ Simple datum which is instanced once per type and is used for every object of sa
REMOVE_KEEP_TOGETHER(source, MATERIAL_SOURCE(src))
source.alpha = initial(source.alpha)
if(material_flags & MATERIAL_GREYSCALE)
source.set_greyscale(initial(source.greyscale_colors), initial(source.greyscale_config))
if(material_flags & MATERIAL_ADD_PREFIX)
source.name = initial(source.name)
@@ -162,6 +192,14 @@ Simple datum which is instanced once per type and is used for every object of sa
o.force = initial(o.force)
o.throwforce = initial(o.throwforce)
if(isitem(o) && (material_flags & MATERIAL_GREYSCALE))
var/obj/item/item = o
item.set_greyscale(
new_worn_config = initial(item.greyscale_config_worn),
new_inhand_left = initial(item.greyscale_config_inhand_left),
new_inhand_right = initial(item.greyscale_config_inhand_right)
)
/datum/material/proc/on_removed_turf(turf/T, amount, material_flags)
if(alpha < 255)
T.RemoveElement(/datum/element/turf_z_transparency, FALSE)
+6
View File
@@ -31,6 +31,7 @@
name = "plasteel"
desc = "The heavy duty result of infusing iron with plasma."
color = "#706374"
greyscale_colors = "#706374"
init_flags = MATERIAL_INIT_MAPLOAD
value_per_unit = 0.135
strength_modifier = 1.25
@@ -63,6 +64,7 @@
name = "plastitanium"
desc = "The extremely heat resistant result of infusing titanium with plasma."
color = "#3a313a"
greyscale_colors = "#3a313a"
init_flags = MATERIAL_INIT_MAPLOAD
value_per_unit = 0.225
strength_modifier = 0.9 // It's a lightweight alloy.
@@ -80,6 +82,7 @@
name = "plasmaglass"
desc = "Plasma-infused silicate. It is much more durable and heat resistant than either of its component materials."
color = "#ff80f4"
greyscale_colors = "#ff80f4"
alpha = 150
init_flags = MATERIAL_INIT_MAPLOAD
integrity_modifier = 0.5
@@ -98,6 +101,7 @@
name = "titanium glass"
desc = "A specialized silicate-titanium alloy that is commonly used in shuttle windows."
color = "#cfbee0"
greyscale_colors = "#cfbee0"
alpha = 150
init_flags = MATERIAL_INIT_MAPLOAD
armor_modifiers = list(MELEE = 1.2, BULLET = 1.2, LASER = 0.8, ENERGY = 0.8, BOMB = 0.5, BIO = 1.2, RAD = 1, FIRE = 0.8, ACID = 2)
@@ -115,6 +119,7 @@
name = "plastitanium glass"
desc = "A specialized silicate-plastitanium alloy."
color = "#5d3369"
greyscale_colors = "#5d3369"
alpha = 150
init_flags = MATERIAL_INIT_MAPLOAD
integrity_modifier = 1.1
@@ -135,6 +140,7 @@
name = "alien alloy"
desc = "An extremely dense alloy similar to plasteel in composition. It requires exotic metallurgical processes to create."
color = "#6041aa"
greyscale_colors = "#6041aa"
init_flags = MATERIAL_INIT_MAPLOAD
strength_modifier = 1.5 // It's twice the density of plasteel and just as durable. Getting hit with it is going to HURT.
integrity_modifier = 1.5
+28
View File
@@ -3,6 +3,7 @@
name = "iron"
desc = "Common iron ore often found in sedimentary and igneous layers of the crust."
color = "#878687"
greyscale_colors = "#878687"
categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/iron
value_per_unit = 0.0025
@@ -16,6 +17,7 @@
name = "glass"
desc = "Glass forged by melting sand."
color = "#88cdf1"
greyscale_colors = "#88cdf1"
alpha = 150
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
integrity_modifier = 0.1
@@ -39,6 +41,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "silver"
desc = "Silver"
color = list(255/255, 284/255, 302/255,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0)
greyscale_colors = "#e3f1f8"
categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/mineral/silver
value_per_unit = 0.025
@@ -53,6 +56,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "gold"
desc = "Gold"
color = list(340/255, 240/255, 50/255,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0) //gold is shiny, but not as bright as bananium
greyscale_colors = "#dbdd4c"
strength_modifier = 1.2
categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/mineral/gold
@@ -69,6 +73,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "diamond"
desc = "Highly pressurized carbon"
color = list(48/255, 272/255, 301/255,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0)
greyscale_colors = "#71c8f7"
categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/mineral/diamond
alpha = 132
@@ -85,6 +90,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "uranium"
desc = "Uranium"
color = rgb(48, 237, 26)
greyscale_colors = rgb(48, 237, 26)
categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/mineral/uranium
value_per_unit = 0.05
@@ -109,6 +115,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "plasma"
desc = "Isn't plasma a state of matter? Oh whatever."
color = list(298/255, 46/255, 352/255,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0)
greyscale_colors = "#c162ec"
categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/mineral/plasma
shard_type = /obj/item/shard/plasma
@@ -137,6 +144,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "bluespace crystal"
desc = "Crystals with bluespace properties"
color = list(119/255, 217/255, 396/255,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0)
greyscale_colors = "#4e7dff"
alpha = 200
categories = list(MAT_CATEGORY_ORE = TRUE)
beauty_modifier = 0.5
@@ -153,6 +161,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "bananium"
desc = "Material with hilarious properties"
color = list(460/255, 464/255, 0, 0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0) //obnoxiously bright yellow
greyscale_colors = "#ffff00"
categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/mineral/bananium
value_per_unit = 0.5
@@ -179,6 +188,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "titanium"
desc = "Titanium"
color = "#b3c0c7"
greyscale_colors = "#b3c0c7"
strength_modifier = 1.3
categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/mineral/titanium
@@ -194,6 +204,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "runite"
desc = "Runite"
color = "#3F9995"
greyscale_colors = "#3F9995"
strength_modifier = 1.3
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/mineral/runite
@@ -210,6 +221,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "plastic"
desc = "Plastic"
color = "#caccd9"
greyscale_colors = "#caccd9"
strength_modifier = 0.85
sheet_type = /obj/item/stack/sheet/plastic
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
@@ -227,6 +239,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "biomass"
desc = "Organic matter"
color = "#735b4d"
greyscale_colors = "#735b4d"
strength_modifier = 0.8
value_per_unit = 0.025
@@ -234,6 +247,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "wood"
desc = "Flexible, durable, but flamable. Hard to come across in space."
color = "#bb8e53"
greyscale_colors = "#bb8e53"
strength_modifier = 0.5
sheet_type = /obj/item/stack/sheet/mineral/wood
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
@@ -266,6 +280,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "adamantine"
desc = "A powerful material made out of magic, I mean science!"
color = "#6d7e8e"
greyscale_colors = "#6d7e8e"
strength_modifier = 1.5
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/mineral/adamantine
@@ -282,6 +297,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "mythril"
desc = "How this even exists is byond me"
color = "#f2d5d7"
greyscale_colors = "#f2d5d7"
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/mineral/mythril
value_per_unit = 0.75
@@ -308,6 +324,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "hot ice"
desc = "A weird kind of ice, feels warm to the touch"
color = "#88cdf1"
greyscale_colors = "#88cdf1"
alpha = 150
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/hot_ice
@@ -331,6 +348,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "Metal Hydrogen"
desc = "Solid metallic hydrogen. Some say it should be impossible"
color = "#f2d5d7"
greyscale_colors = "#f2d5d7"
alpha = 150
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/mineral/metal_hydrogen
@@ -348,6 +366,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "sand"
desc = "You know, it's amazing just how structurally sound sand can be."
color = "#EDC9AF"
greyscale_colors = "#EDC9AF"
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/sandblock
value_per_unit = 0.001
@@ -367,6 +386,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "sandstone"
desc = "Bialtaakid 'ant taerif ma hdha."
color = "#B77D31"
greyscale_colors = "#B77D31"
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/mineral/sandstone
value_per_unit = 0.0025
@@ -379,6 +399,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "snow"
desc = "There's no business like snow business."
color = "#FFFFFF"
greyscale_colors = "#FFFFFF"
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/mineral/snow
value_per_unit = 0.0025
@@ -395,6 +416,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "runed metal"
desc = "Mir'ntrath barhah Nar'sie."
color = "#3C3434"
greyscale_colors = "#3C3434"
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/runed_metal
value_per_unit = 0.75
@@ -411,6 +433,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "bronze"
desc = "Clock Cult? Never heard of it."
color = "#92661A"
greyscale_colors = "#92661A"
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/bronze
value_per_unit = 0.025
@@ -421,6 +444,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "paper"
desc = "Ten thousand folds of pure starchy power."
color = "#E5DCD5"
greyscale_colors = "#E5DCD5"
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/paperframes
value_per_unit = 0.0025
@@ -446,6 +470,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "cardboard"
desc = "They say cardboard is used by hobos to make incredible things."
color = "#5F625C"
greyscale_colors = "#5F625C"
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/cardboard
value_per_unit = 0.003
@@ -469,6 +494,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "bone"
desc = "Man, building with this will make you the coolest caveman on the block."
color = "#e3dac9"
greyscale_colors = "#e3dac9"
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/bone
value_per_unit = 0.05
@@ -479,6 +505,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "bamboo"
desc = "If it's good enough for pandas, it's good enough for you."
color = "#339933"
greyscale_colors = "#339933"
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/mineral/bamboo
value_per_unit = 0.0025
@@ -491,6 +518,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
name = "zaukerite"
desc = "A light absorbing crystal"
color = COLOR_ALMOST_BLACK
greyscale_colors = COLOR_ALMOST_BLACK
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/mineral/zaukerite
value_per_unit = 0.45
+1
View File
@@ -2,6 +2,7 @@
name = "hauntium"
desc = "very scary!"
color = list(460/255, 464/255, 460/255, 0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0)
greyscale_colors = "#FFFFFF"
alpha = 100
categories = list(MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/hauntium
+1
View File
@@ -6,6 +6,7 @@
desc = "Meat"
id = /datum/material/meat // So the bespoke versions are categorized under this
color = rgb(214, 67, 67)
greyscale_colors = rgb(214, 67, 67)
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/meat
value_per_unit = 0.05
+1
View File
@@ -4,6 +4,7 @@
name = "pizza"
desc = "~Jamme, jamme, n'coppa, jamme ja! Jamme, jamme, n'coppa jamme ja, funi-culi funi-cala funi-culi funi-cala!! Jamme jamme ja funiculi funicula!~"
color = "#FF9F23"
greyscale_colors = "#FF9F23"
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/pizza
value_per_unit = 0.05
+12 -15
View File
@@ -681,13 +681,18 @@
/obj/item/melee/cleric_mace
name = "cleric mace"
desc = "The grandson of the club, yet the grandfather of the baseball bat. Most notably used by holy orders in days past."
icon = 'icons/obj/items_and_weapons.dmi'
icon_state = "mace_greyscale"
inhand_icon_state = "mace_greyscale"
worn_icon_state = "mace"
lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS //Material type changes the prefix as well as the color.
icon = 'icons/obj/items/cleric_mace.dmi'
icon_state = "default"
inhand_icon_state = "default"
worn_icon_state = "default_worn"
greyscale_config = /datum/greyscale_config/cleric_mace
greyscale_config_inhand_left = /datum/greyscale_config/cleric_mace_lefthand
greyscale_config_inhand_right = /datum/greyscale_config/cleric_mace_righthand
greyscale_config_worn = /datum/greyscale_config/cleric_mace
greyscale_colors = "#FFFFFF"
material_flags = MATERIAL_ADD_PREFIX | MATERIAL_GREYSCALE | MATERIAL_AFFECT_STATISTICS //Material type changes the prefix as well as the color.
custom_materials = list(/datum/material/iron = 12000) //Defaults to an Iron Mace.
slot_flags = ITEM_SLOT_BELT
force = 14
@@ -697,11 +702,3 @@
armour_penetration = 50
attack_verb_continuous = list("smacks", "strikes", "cracks", "beats")
attack_verb_simple = list("smack", "strike", "crack", "beat")
var/overlay_state = "mace_handle"
var/mutable_appearance/overlay
/obj/item/melee/cleric_mace/Initialize()
. = ..()
overlay = mutable_appearance(icon, overlay_state)
overlay.appearance_flags = RESET_COLOR | RESET_ALPHA | KEEP_APART
add_overlay(overlay)
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

+2 -1
View File
@@ -772,8 +772,9 @@
#include "code\datums\elements\food\processable.dm"
#include "code\datums\elements\food\venue_price.dm"
#include "code\datums\greyscale\_greyscale_config.dm"
#include "code\datums\greyscale\greyscale_configs.dm"
#include "code\datums\greyscale\layer.dm"
#include "code\datums\greyscale\config_types\greyscale_configs.dm"
#include "code\datums\greyscale\config_types\material_effects.dm"
#include "code\datums\helper_datums\events.dm"
#include "code\datums\helper_datums\getrev.dm"
#include "code\datums\helper_datums\icon_snapshot.dm"