mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-10 07:41:16 +01:00
959 lines
34 KiB
Plaintext
959 lines
34 KiB
Plaintext
///Has no special properties.
|
|
/datum/material/iron
|
|
name = "iron"
|
|
desc = "Common iron ore often found in sedimentary and igneous layers of the crust."
|
|
color = "#B6BEC2"
|
|
mat_flags = MATERIAL_SILO_STORED | MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_METAL | MATERIAL_CLASS_RIGID
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 6,
|
|
MATERIAL_HARDNESS = 6,
|
|
MATERIAL_FLEXIBILITY = 2,
|
|
MATERIAL_REFLECTIVITY = 3,
|
|
MATERIAL_ELECTRICAL = 6,
|
|
MATERIAL_THERMAL = 7,
|
|
MATERIAL_CHEMICAL = 3,
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/iron
|
|
ore_type = /obj/item/stack/ore/iron
|
|
material_reagent = /datum/reagent/iron
|
|
value_per_unit = 5 / SHEET_MATERIAL_AMOUNT
|
|
mat_rust_resistance = RUST_RESISTANCE_BASIC
|
|
mineral_rarity = MATERIAL_RARITY_COMMON
|
|
points_per_unit = 1 / SHEET_MATERIAL_AMOUNT
|
|
points_per_boulder_unit = 1 / SHEET_MATERIAL_AMOUNT
|
|
minimum_value_override = 0
|
|
tradable = TRUE
|
|
tradable_base_quantity = MATERIAL_QUANTITY_COMMON
|
|
|
|
/datum/material/iron/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
|
|
. = ..()
|
|
if(!HAS_TRAIT(victim, TRAIT_ROCK_EATER))
|
|
victim.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = 5)
|
|
return TRUE
|
|
|
|
///Breaks extremely easily but is transparent.
|
|
/datum/material/glass
|
|
name = "glass"
|
|
desc = "Glass forged by melting sand."
|
|
color = "#6292AF"
|
|
alpha = 150
|
|
mat_flags = MATERIAL_SILO_STORED | MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_CRYSTAL | MATERIAL_CLASS_RIGID
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 4,
|
|
MATERIAL_HARDNESS = 4,
|
|
MATERIAL_FLEXIBILITY = 0,
|
|
MATERIAL_REFLECTIVITY = 7,
|
|
MATERIAL_ELECTRICAL = 0,
|
|
MATERIAL_THERMAL = 4,
|
|
MATERIAL_CHEMICAL = 8,
|
|
)
|
|
material_reagent = /datum/reagent/silicon
|
|
sheet_type = /obj/item/stack/sheet/glass
|
|
ore_type = /obj/item/stack/ore/glass/basalt
|
|
shard_type = /obj/item/shard
|
|
debris_type = /obj/effect/decal/cleanable/glass
|
|
value_per_unit = 5 / SHEET_MATERIAL_AMOUNT
|
|
minimum_value_override = 0
|
|
tradable = TRUE
|
|
tradable_base_quantity = MATERIAL_QUANTITY_COMMON
|
|
mineral_rarity = MATERIAL_RARITY_COMMON
|
|
points_per_unit = 1 / SHEET_MATERIAL_AMOUNT
|
|
points_per_boulder_unit = 1 / SHEET_MATERIAL_AMOUNT
|
|
texture_layer_icon_state = "shine"
|
|
|
|
/datum/material/glass/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
|
|
. = ..()
|
|
if(!HAS_TRAIT(victim, TRAIT_ROCK_EATER))
|
|
victim.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = 5, sharpness = TRUE) //cronch
|
|
return TRUE
|
|
|
|
/datum/material/glass/on_main_applied(atom/source, mat_amount, multiplier)
|
|
. = ..()
|
|
if(isobj(source) && !isstack(source) && (source.material_flags & MATERIAL_AFFECT_STATISTICS))
|
|
source.AddElement(/datum/element/can_shatter, shard_type, round(mat_amount / SHEET_MATERIAL_AMOUNT * multiplier), SFX_SHATTER)
|
|
|
|
/datum/material/glass/on_main_removed(atom/source, mat_amount, multiplier)
|
|
. = ..()
|
|
if(isobj(source) && !isstack(source) && (source.material_flags & MATERIAL_AFFECT_STATISTICS))
|
|
source.RemoveElement(/datum/element/can_shatter, shard_type, round(mat_amount / SHEET_MATERIAL_AMOUNT * multiplier), SFX_SHATTER)
|
|
|
|
/// Has no special properties. Could be good against vampires in the future perhaps.
|
|
/datum/material/silver
|
|
name = "silver"
|
|
desc = "A precious metal known for being hated by oversized bats and dogs."
|
|
color = "#B5BCBB"
|
|
mat_flags = MATERIAL_SILO_STORED | MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_METAL | MATERIAL_CLASS_RIGID
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 7,
|
|
MATERIAL_HARDNESS = 4,
|
|
MATERIAL_FLEXIBILITY = 3,
|
|
MATERIAL_REFLECTIVITY = 8,
|
|
MATERIAL_ELECTRICAL = 9,
|
|
MATERIAL_THERMAL = 4,
|
|
MATERIAL_CHEMICAL = 4,
|
|
MATERIAL_VAMPIRES_BANE = 5,
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/mineral/silver
|
|
ore_type = /obj/item/stack/ore/silver
|
|
material_reagent = /datum/reagent/silver
|
|
value_per_unit = 50 / SHEET_MATERIAL_AMOUNT
|
|
tradable = TRUE
|
|
tradable_base_quantity = MATERIAL_QUANTITY_UNCOMMON
|
|
mineral_rarity = MATERIAL_RARITY_SEMIPRECIOUS
|
|
points_per_unit = 16 / SHEET_MATERIAL_AMOUNT
|
|
points_per_boulder_unit = 3.5 / SHEET_MATERIAL_AMOUNT
|
|
texture_layer_icon_state = "shine"
|
|
|
|
/datum/material/silver/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
|
|
. = ..()
|
|
if(!HAS_TRAIT(victim, TRAIT_ROCK_EATER))
|
|
victim.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = 5)
|
|
return TRUE
|
|
|
|
///Slight force increase
|
|
/datum/material/gold
|
|
name = "gold"
|
|
desc = "All that glitters is not gold."
|
|
color = "#E6BB45"
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 9,
|
|
MATERIAL_HARDNESS = 3,
|
|
MATERIAL_FLEXIBILITY = 3,
|
|
MATERIAL_REFLECTIVITY = 6,
|
|
MATERIAL_ELECTRICAL = 8,
|
|
MATERIAL_THERMAL = 8,
|
|
MATERIAL_CHEMICAL = 2,
|
|
)
|
|
mat_flags = MATERIAL_SILO_STORED | MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_METAL | MATERIAL_CLASS_RIGID
|
|
sheet_type = /obj/item/stack/sheet/mineral/gold
|
|
ore_type = /obj/item/stack/ore/gold
|
|
material_reagent = /datum/reagent/gold
|
|
value_per_unit = 125 / SHEET_MATERIAL_AMOUNT
|
|
tradable = TRUE
|
|
tradable_base_quantity = MATERIAL_QUANTITY_RARE
|
|
mineral_rarity = MATERIAL_RARITY_PRECIOUS
|
|
points_per_unit = 18 / SHEET_MATERIAL_AMOUNT
|
|
points_per_boulder_unit = 4 / SHEET_MATERIAL_AMOUNT
|
|
texture_layer_icon_state = "shine"
|
|
|
|
/datum/material/gold/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
|
|
. = ..()
|
|
if(!HAS_TRAIT(victim, TRAIT_ROCK_EATER))
|
|
victim.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = 5)
|
|
return TRUE
|
|
|
|
///Has no special properties
|
|
/datum/material/diamond
|
|
name = "diamond"
|
|
desc = "Highly pressurized carbon."
|
|
color = "#C9D8F2"
|
|
mat_flags = MATERIAL_SILO_STORED | MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_CRYSTAL | MATERIAL_CLASS_RIGID
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 4, // Wow these are light
|
|
MATERIAL_HARDNESS = 9,
|
|
MATERIAL_FLEXIBILITY = 0,
|
|
MATERIAL_REFLECTIVITY = 10,
|
|
MATERIAL_ELECTRICAL = 0, // Did you know they're also an *extremely* potent insulator, only beaten by some synthetic compounds?
|
|
MATERIAL_THERMAL = 9,
|
|
MATERIAL_CHEMICAL = 4,
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/mineral/diamond
|
|
ore_type = /obj/item/stack/ore/diamond
|
|
material_reagent = /datum/reagent/carbon
|
|
alpha = 132
|
|
starlight_color = COLOR_BLUE_LIGHT
|
|
value_per_unit = 500 / SHEET_MATERIAL_AMOUNT
|
|
tradable = TRUE
|
|
tradable_base_quantity = MATERIAL_QUANTITY_EXOTIC
|
|
mineral_rarity = MATERIAL_RARITY_RARE
|
|
points_per_unit = 50 / SHEET_MATERIAL_AMOUNT
|
|
points_per_boulder_unit = 10 / SHEET_MATERIAL_AMOUNT
|
|
|
|
/datum/material/diamond/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
|
|
. = ..()
|
|
if(!HAS_TRAIT(victim, TRAIT_ROCK_EATER))
|
|
victim.apply_damage(15, BRUTE, BODY_ZONE_HEAD, wound_bonus = 7)
|
|
return TRUE
|
|
|
|
/// Is slightly radioactive
|
|
/datum/material/uranium
|
|
name = "uranium"
|
|
desc = "Very spicy rocks."
|
|
color = "#2C992C"
|
|
mat_flags = MATERIAL_SILO_STORED | MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_METAL | MATERIAL_CLASS_RIGID
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 9,
|
|
MATERIAL_HARDNESS = 5,
|
|
MATERIAL_FLEXIBILITY = 1,
|
|
MATERIAL_REFLECTIVITY = 0, // Its a bar of glowing stone
|
|
MATERIAL_ELECTRICAL = 6,
|
|
MATERIAL_THERMAL = 6,
|
|
MATERIAL_CHEMICAL = 6,
|
|
MATERIAL_BEAUTY = 0.3, // Overriden cause its ~shiny~
|
|
MATERIAL_RADIOACTIVITY = 4,
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/mineral/uranium
|
|
ore_type = /obj/item/stack/ore/uranium
|
|
material_reagent = /datum/reagent/uranium
|
|
value_per_unit = 100 / SHEET_MATERIAL_AMOUNT
|
|
tradable = TRUE
|
|
tradable_base_quantity = MATERIAL_QUANTITY_RARE
|
|
mineral_rarity = MATERIAL_RARITY_SEMIPRECIOUS
|
|
points_per_unit = 30 / SHEET_MATERIAL_AMOUNT
|
|
points_per_boulder_unit = 3.5 / SHEET_MATERIAL_AMOUNT
|
|
|
|
/// Adds firestacks on hit (Still needs support to turn into gas on destruction)
|
|
/datum/material/plasma
|
|
name = "plasma"
|
|
desc = "Isn't plasma a state of matter? Oh whatever."
|
|
color = "#BA3692"
|
|
mat_flags = MATERIAL_SILO_STORED | MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_CRYSTAL | MATERIAL_CLASS_RIGID
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 6,
|
|
MATERIAL_HARDNESS = 4,
|
|
MATERIAL_FLEXIBILITY = 0,
|
|
MATERIAL_REFLECTIVITY = 8,
|
|
MATERIAL_ELECTRICAL = 10,
|
|
MATERIAL_THERMAL = 8,
|
|
MATERIAL_CHEMICAL = 0,
|
|
MATERIAL_FLAMMABILITY = 10, // Literally sets itself on fire from any excitement
|
|
MATERIAL_FIRESTACKER = 1,
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/mineral/plasma
|
|
ore_type = /obj/item/stack/ore/plasma
|
|
material_reagent = /datum/reagent/toxin/plasma
|
|
value_per_unit = 200 / SHEET_MATERIAL_AMOUNT
|
|
mineral_rarity = MATERIAL_RARITY_PRECIOUS
|
|
points_per_unit = 15 / SHEET_MATERIAL_AMOUNT
|
|
points_per_boulder_unit = 2 / SHEET_MATERIAL_AMOUNT
|
|
|
|
/datum/material/plasma/on_applied(atom/source, mat_amount, multiplier, from_slot)
|
|
. = ..()
|
|
source.AddComponent(/datum/component/combustible_flooder, GAS_PLASMA, mat_amount * 0.05 * multiplier) //Empty temp arg, fully dependent on whatever ignited it.
|
|
if(istype(source, /obj/item/fishing_rod))
|
|
ADD_TRAIT(source, TRAIT_ROD_LAVA_USABLE, REF(src))
|
|
|
|
/datum/material/plasma/on_removed(atom/source, mat_amount, multiplier, from_slot)
|
|
. = ..()
|
|
qdel(source.GetComponent(/datum/component/combustible_flooder))
|
|
if(istype(source, /obj/item/fishing_rod))
|
|
ADD_TRAIT(source, TRAIT_ROD_LAVA_USABLE, REF(src))
|
|
|
|
/// Can cause bluespace effects on use. (Teleportation)
|
|
/datum/material/bluespace
|
|
name = "bluespace crystal"
|
|
desc = "Crystals with bluespace properties."
|
|
color = "#2E50B7"
|
|
alpha = 200
|
|
starlight_color = COLOR_BLUE
|
|
mat_flags = MATERIAL_SILO_STORED | MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_CRYSTAL | MATERIAL_CLASS_RIGID
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 2,
|
|
MATERIAL_HARDNESS = 8,
|
|
MATERIAL_FLEXIBILITY = 0,
|
|
MATERIAL_REFLECTIVITY = 10,
|
|
MATERIAL_ELECTRICAL = 10,
|
|
MATERIAL_THERMAL = 4,
|
|
MATERIAL_CHEMICAL = 4,
|
|
MATERIAL_BEAUTY = 0.5, // Absolutely mesmerizing
|
|
MATERIAL_TELEPORTING = 5,
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/bluespace_crystal
|
|
ore_type = /obj/item/stack/ore/bluespace_crystal
|
|
material_reagent = /datum/reagent/bluespace
|
|
value_per_unit = 300 / SHEET_MATERIAL_AMOUNT
|
|
mineral_rarity = MATERIAL_RARITY_RARE
|
|
points_per_unit = 50 / SHEET_MATERIAL_AMOUNT
|
|
points_per_boulder_unit = 10 / SHEET_MATERIAL_AMOUNT
|
|
tradable = TRUE
|
|
tradable_base_quantity = MATERIAL_QUANTITY_EXOTIC
|
|
texture_layer_icon_state = "shine"
|
|
|
|
/datum/material/bluespace/on_main_applied(atom/source, mat_amount, multiplier)
|
|
. = ..()
|
|
if(istype(source, /obj/item/fishing_rod))
|
|
RegisterSignal(source, COMSIG_ROD_BEGIN_FISHING, PROC_REF(on_begin_fishing))
|
|
|
|
/datum/material/bluespace/proc/on_begin_fishing(obj/item/fishing_rod/rod, datum/fishing_challenge/challenge)
|
|
SIGNAL_HANDLER
|
|
if(prob(67))
|
|
return
|
|
var/list/elegible_fish_sources = assoc_to_values(GLOB.preset_fish_sources)
|
|
for(var/datum/fish_source/source as anything in elegible_fish_sources)
|
|
if(source.fish_source_flags & FISH_SOURCE_FLAG_NO_BLUESPACE_ROD)
|
|
elegible_fish_sources -= source
|
|
var/datum/fish_source/new_source = pick(elegible_fish_sources)
|
|
challenge.register_reward_signals(new_source)
|
|
|
|
/datum/material/bluespace/on_main_removed(atom/source, mat_amount, multiplier)
|
|
. = ..()
|
|
if(istype(source, /obj/item/fishing_rod))
|
|
UnregisterSignal(source, COMSIG_ROD_BEGIN_FISHING)
|
|
|
|
///Honks and slips
|
|
/datum/material/bananium
|
|
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 //It's literally perfect I can't change it
|
|
greyscale_color = "#FFF269"
|
|
mat_flags = MATERIAL_SILO_STORED | MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_METAL | MATERIAL_CLASS_RIGID
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 4,
|
|
MATERIAL_HARDNESS = 6,
|
|
MATERIAL_FLEXIBILITY = 2,
|
|
MATERIAL_REFLECTIVITY = 4,
|
|
MATERIAL_ELECTRICAL = 1, // ...Rubbery?
|
|
MATERIAL_THERMAL = 6,
|
|
MATERIAL_CHEMICAL = 6,
|
|
MATERIAL_BEAUTY = 0.5, // Honk
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/mineral/bananium
|
|
ore_type = /obj/item/stack/ore/bananium
|
|
material_reagent = /datum/reagent/consumable/banana
|
|
value_per_unit = 1000 / SHEET_MATERIAL_AMOUNT
|
|
mineral_rarity = MATERIAL_RARITY_UNDISCOVERED
|
|
points_per_unit = 60 / SHEET_MATERIAL_AMOUNT
|
|
points_per_boulder_unit = 15 / SHEET_MATERIAL_AMOUNT
|
|
|
|
/datum/material/bananium/on_applied(atom/source, mat_amount, multiplier, from_slot)
|
|
. = ..()
|
|
source.LoadComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 50 * multiplier, falloff_exponent = 20)
|
|
source.AddComponent(/datum/component/slippery, min(mat_amount / 10 * multiplier, 80 * multiplier))
|
|
|
|
/datum/material/bananium/on_main_applied(atom/source, mat_amount, multiplier)
|
|
. = ..()
|
|
if(istype(source, /obj/item/fishing_rod))
|
|
RegisterSignal(source, COMSIG_ROD_BEGIN_FISHING, PROC_REF(on_begin_fishing))
|
|
|
|
/datum/material/bananium/proc/on_begin_fishing(obj/item/fishing_rod/rod, datum/fishing_challenge/challenge)
|
|
SIGNAL_HANDLER
|
|
if(prob(40))
|
|
RegisterSignal(challenge, COMSIG_FISHING_CHALLENGE_ROLL_REWARD, PROC_REF(roll_funny_fish))
|
|
|
|
/datum/material/bananium/proc/roll_funny_fish(datum/source, obj/item/fishing_rod/rod, mob/fisherman, atom/location, list/rewards)
|
|
SIGNAL_HANDLER
|
|
var/static/list/funny_fish = list(
|
|
/obj/item/fish/clownfish = 5,
|
|
/obj/item/fish/clownfish/lube = 3,
|
|
/obj/item/fish/soul = 2,
|
|
/obj/item/fish/skin_crab = 2,
|
|
/obj/item/fish/donkfish = 2,
|
|
)
|
|
rewards += pick_weight(funny_fish)
|
|
|
|
/datum/material/bananium/on_removed(atom/source, mat_amount, multiplier, from_slot)
|
|
. = ..()
|
|
qdel(source.GetComponent(/datum/component/slippery))
|
|
qdel(source.GetComponent(/datum/component/squeak))
|
|
|
|
/datum/material/bananium/on_main_removed(atom/source, mat_amount, multiplier)
|
|
. = ..()
|
|
if(istype(source, /obj/item/fishing_rod))
|
|
UnregisterSignal(source, COMSIG_ROD_BEGIN_FISHING)
|
|
|
|
///Mediocre force increase
|
|
/datum/material/titanium
|
|
name = "titanium"
|
|
desc = "Titanium"
|
|
color = "#EFEFEF"
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 5,
|
|
MATERIAL_HARDNESS = 7,
|
|
MATERIAL_FLEXIBILITY = 2,
|
|
MATERIAL_REFLECTIVITY = 8,
|
|
MATERIAL_ELECTRICAL = 5,
|
|
MATERIAL_THERMAL = 4,
|
|
MATERIAL_CHEMICAL = 6,
|
|
)
|
|
mat_flags = MATERIAL_SILO_STORED | MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_METAL | MATERIAL_CLASS_RIGID
|
|
sheet_type = /obj/item/stack/sheet/mineral/titanium
|
|
ore_type = /obj/item/stack/ore/titanium
|
|
value_per_unit = 125 / SHEET_MATERIAL_AMOUNT
|
|
points_per_boulder_unit = 3 / SHEET_MATERIAL_AMOUNT
|
|
tradable = TRUE
|
|
tradable_base_quantity = MATERIAL_QUANTITY_UNCOMMON
|
|
mat_rust_resistance = RUST_RESISTANCE_TITANIUM
|
|
mineral_rarity = MATERIAL_RARITY_SEMIPRECIOUS
|
|
texture_layer_icon_state = "shine"
|
|
|
|
/datum/material/titanium/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
|
|
. = ..()
|
|
if(!HAS_TRAIT(victim, TRAIT_ROCK_EATER))
|
|
victim.apply_damage(15, BRUTE, BODY_ZONE_HEAD, wound_bonus = 7)
|
|
return TRUE
|
|
|
|
/datum/material/runite
|
|
name = "runite"
|
|
desc = "Runite"
|
|
color = "#526F77"
|
|
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_METAL | MATERIAL_CLASS_RIGID
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 9,
|
|
MATERIAL_HARDNESS = 9,
|
|
MATERIAL_FLEXIBILITY = 1,
|
|
MATERIAL_REFLECTIVITY = 0,
|
|
MATERIAL_ELECTRICAL = 1,
|
|
MATERIAL_THERMAL = 0,
|
|
MATERIAL_CHEMICAL = 9,
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/mineral/runite
|
|
value_per_unit = 600 / SHEET_MATERIAL_AMOUNT
|
|
mineral_rarity = MATERIAL_RARITY_UNDISCOVERED
|
|
points_per_unit = 100 / SHEET_MATERIAL_AMOUNT
|
|
points_per_boulder_unit = 20 / SHEET_MATERIAL_AMOUNT
|
|
|
|
/datum/material/runite/on_applied(atom/source, mat_amount, multiplier, from_slot)
|
|
. = ..()
|
|
if(istype(source, /obj/item/fishing_rod))
|
|
ADD_TRAIT(source, TRAIT_ROD_REMOVE_FISHING_DUD, REF(src)) //light-absorbing, environment-cancelling fishing rod.
|
|
|
|
/datum/material/runite/on_removed(atom/source, mat_amount, multiplier, from_slot)
|
|
. = ..()
|
|
if(istype(source, /obj/item/fishing_rod))
|
|
REMOVE_TRAIT(source, TRAIT_ROD_REMOVE_FISHING_DUD, REF(src)) //light-absorbing, environment-cancelling fishing rod.
|
|
|
|
/datum/material/runite/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
|
|
. = ..()
|
|
if(!HAS_TRAIT(victim, TRAIT_ROCK_EATER))
|
|
victim.apply_damage(20, BRUTE, BODY_ZONE_HEAD, wound_bonus = 10)
|
|
return TRUE
|
|
|
|
///Force decrease
|
|
/datum/material/plastic
|
|
name = "plastic"
|
|
desc = "Plastic"
|
|
color = "#BFB9AC"
|
|
mat_flags = MATERIAL_SILO_STORED | MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_POLYMER | MATERIAL_CLASS_RIGID
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 3,
|
|
MATERIAL_HARDNESS = 2,
|
|
MATERIAL_FLEXIBILITY = 5,
|
|
MATERIAL_REFLECTIVITY = 3,
|
|
MATERIAL_ELECTRICAL = 1,
|
|
MATERIAL_THERMAL = 4,
|
|
MATERIAL_CHEMICAL = 4,
|
|
MATERIAL_FLAMMABILITY = 4,
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/plastic
|
|
ore_type = /obj/item/stack/ore/slag // No plastic or coal ore, so we use slag.
|
|
material_reagent = /datum/reagent/plastic_polymers
|
|
value_per_unit = 25 / SHEET_MATERIAL_AMOUNT
|
|
mineral_rarity = MATERIAL_RARITY_UNDISCOVERED // Nobody's found oil on lavaland yet.
|
|
points_per_unit = 4 / SHEET_MATERIAL_AMOUNT
|
|
points_per_boulder_unit = 4 / SHEET_MATERIAL_AMOUNT
|
|
|
|
/// Force decrease and mushy sound effect. (Not yet implemented)
|
|
/datum/material/biomass
|
|
name = "biomass"
|
|
desc = "Organic matter."
|
|
color = "#735b4d"
|
|
value_per_unit = 50 / SHEET_MATERIAL_AMOUNT
|
|
|
|
/datum/material/wood
|
|
name = "wood"
|
|
desc = "Flexible, durable, but flammable. Hard to come across in space."
|
|
color = "#855932"
|
|
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_ORGANIC | MATERIAL_CLASS_RIGID
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 2,
|
|
MATERIAL_HARDNESS = 4,
|
|
MATERIAL_FLEXIBILITY = 4,
|
|
MATERIAL_REFLECTIVITY = 1,
|
|
MATERIAL_ELECTRICAL = 8,
|
|
MATERIAL_THERMAL = 3,
|
|
MATERIAL_CHEMICAL = 1,
|
|
MATERIAL_FLAMMABILITY = 6,
|
|
MATERIAL_BEAUTY = 0.1, // Pretty patterns
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/mineral/wood
|
|
material_reagent = /datum/reagent/cellulose
|
|
value_per_unit = 20 / SHEET_MATERIAL_AMOUNT
|
|
texture_layer_icon_state = "woodgrain"
|
|
|
|
/datum/material/wood/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
|
|
. = ..()
|
|
if(!HAS_TRAIT(victim, TRAIT_ROCK_EATER))
|
|
victim.apply_damage(5, BRUTE, BODY_ZONE_HEAD)
|
|
return TRUE
|
|
|
|
/// Stronk force increase
|
|
/datum/material/adamantine
|
|
name = "adamantine"
|
|
desc = "A powerful material made out of magic, I mean science!"
|
|
color = "#2B7A74"
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 7,
|
|
MATERIAL_HARDNESS = 9,
|
|
MATERIAL_FLEXIBILITY = 3,
|
|
MATERIAL_REFLECTIVITY = 6,
|
|
MATERIAL_ELECTRICAL = 6,
|
|
MATERIAL_THERMAL = 1,
|
|
MATERIAL_CHEMICAL = 9,
|
|
)
|
|
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_METAL | MATERIAL_CLASS_RIGID
|
|
sheet_type = /obj/item/stack/sheet/mineral/adamantine
|
|
value_per_unit = 500 / SHEET_MATERIAL_AMOUNT
|
|
mineral_rarity = MATERIAL_RARITY_UNDISCOVERED // Doesn't naturally spawn on lavaland.
|
|
points_per_unit = 100 / SHEET_MATERIAL_AMOUNT
|
|
points_per_boulder_unit = 20 / SHEET_MATERIAL_AMOUNT // If it ever needs it, we'll give it
|
|
|
|
/datum/material/adamantine/on_applied(atom/source, mat_amount, multiplier, from_slot)
|
|
. = ..()
|
|
if(istype(source, /obj/item/fishing_rod))
|
|
ADD_TRAIT(source, TRAIT_ROD_REMOVE_FISHING_DUD, REF(src)) // light-absorbing, environment-cancelling fishing rod.
|
|
|
|
/datum/material/adamantine/on_removed(atom/source, mat_amount, multiplier, from_slot)
|
|
. = ..()
|
|
if(istype(source, /obj/item/fishing_rod))
|
|
REMOVE_TRAIT(source, TRAIT_ROD_REMOVE_FISHING_DUD, REF(src)) // light-absorbing, environment-cancelling fishing rod.
|
|
|
|
/datum/material/adamantine/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
|
|
. = ..()
|
|
if(!HAS_TRAIT(victim, TRAIT_ROCK_EATER))
|
|
victim.apply_damage(20, BRUTE, BODY_ZONE_HEAD, wound_bonus = 10)
|
|
return TRUE
|
|
|
|
/// RPG Magic.
|
|
/datum/material/mythril
|
|
name = "mythril"
|
|
desc = "How this even exists is byond me"
|
|
color = "#f2d5d7"
|
|
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_METAL | MATERIAL_CLASS_RIGID
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 4,
|
|
MATERIAL_HARDNESS = 10,
|
|
MATERIAL_FLEXIBILITY = 4,
|
|
MATERIAL_REFLECTIVITY = 8,
|
|
MATERIAL_ELECTRICAL = 6,
|
|
MATERIAL_THERMAL = 4,
|
|
MATERIAL_CHEMICAL = 9,
|
|
MATERIAL_BEAUTY = 0.5,
|
|
MATERIAL_INTEGRITY = 2, // This is magic, I ain't gotta explain shit
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/mineral/mythril
|
|
value_per_unit = 1500 / SHEET_MATERIAL_AMOUNT
|
|
mineral_rarity = MATERIAL_RARITY_UNDISCOVERED // Doesn't naturally spawn on lavaland.
|
|
points_per_unit = 100 / SHEET_MATERIAL_AMOUNT
|
|
points_per_boulder_unit = 20 / SHEET_MATERIAL_AMOUNT
|
|
|
|
/datum/material/mythril/on_applied(atom/source, mat_amount, multiplier, from_slot)
|
|
. = ..()
|
|
if(isitem(source))
|
|
source.AddComponent(/datum/component/fantasy)
|
|
ADD_TRAIT(source, TRAIT_INNATELY_FANTASTICAL_ITEM, REF(src)) // DO THIS LAST OR WE WILL NEVER GET OUR BONUSES!!!
|
|
|
|
/datum/material/mythril/on_removed(atom/source, mat_amount, multiplier, from_slot)
|
|
. = ..()
|
|
if(isitem(source))
|
|
REMOVE_TRAIT(source, TRAIT_INNATELY_FANTASTICAL_ITEM, REF(src)) // DO THIS FIRST OR WE WILL NEVER GET OUR BONUSES DELETED!!!
|
|
qdel(source.GetComponent(/datum/component/fantasy))
|
|
|
|
/datum/material/mythril/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
|
|
. = ..()
|
|
if(!HAS_TRAIT(victim, TRAIT_ROCK_EATER))
|
|
victim.apply_damage(20, BRUTE, BODY_ZONE_HEAD, wound_bonus = 10)
|
|
return TRUE
|
|
|
|
//formed when freon react with o2, emits a lot of plasma when heated
|
|
/datum/material/hot_ice
|
|
name = "hot ice"
|
|
desc = "A weird kind of ice, feels warm to the touch"
|
|
color = "#88cdf1"
|
|
alpha = 150
|
|
starlight_color = COLOR_BLUE_LIGHT
|
|
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_CRYSTAL
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 4,
|
|
MATERIAL_HARDNESS = 2,
|
|
MATERIAL_FLEXIBILITY = 0,
|
|
MATERIAL_REFLECTIVITY = 8,
|
|
MATERIAL_ELECTRICAL = 9,
|
|
MATERIAL_THERMAL = 8,
|
|
MATERIAL_CHEMICAL = 4,
|
|
MATERIAL_FLAMMABILITY = 10,
|
|
MATERIAL_FIRESTACKER = 1,
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/hot_ice
|
|
material_reagent = /datum/reagent/toxin/hot_ice
|
|
value_per_unit = 400 / SHEET_MATERIAL_AMOUNT
|
|
|
|
/datum/material/hot_ice/on_applied(atom/source, mat_amount, multiplier, from_slot)
|
|
. = ..()
|
|
source.AddComponent(/datum/component/combustible_flooder, GAS_PLASMA, mat_amount * 1.5 * multiplier, (mat_amount * 0.2 + 300) * multiplier)
|
|
|
|
/datum/material/hot_ice/on_removed(atom/source, mat_amount, multiplier, from_slot)
|
|
. = ..()
|
|
qdel(source.GetComponent(/datum/component/combustible_flooder))
|
|
|
|
// It's basically adamantine, but it isn't!
|
|
/datum/material/metalhydrogen
|
|
name = "Metal Hydrogen"
|
|
desc = "Solid metallic hydrogen. Some say it should be impossible"
|
|
color = "#62708A"
|
|
starlight_color = COLOR_MODERATE_BLUE
|
|
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_METAL | MATERIAL_CLASS_RIGID
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 3,
|
|
MATERIAL_HARDNESS = 10,
|
|
MATERIAL_FLEXIBILITY = 1,
|
|
MATERIAL_REFLECTIVITY = 8,
|
|
MATERIAL_ELECTRICAL = 2,
|
|
MATERIAL_THERMAL = 2,
|
|
MATERIAL_CHEMICAL = 8,
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/mineral/metal_hydrogen
|
|
material_reagent = /datum/reagent/hydrogen
|
|
value_per_unit = 700 / SHEET_MATERIAL_AMOUNT
|
|
|
|
/datum/material/metalhydrogen/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
|
|
. = ..()
|
|
if(!HAS_TRAIT(victim, TRAIT_ROCK_EATER))
|
|
victim.apply_damage(15, BRUTE, BODY_ZONE_HEAD, wound_bonus = 7)
|
|
return TRUE
|
|
|
|
//I don't like sand. It's coarse, and rough, and irritating, and it gets everywhere.
|
|
/datum/material/sand
|
|
name = "sand"
|
|
desc = "You know, it's amazing just how structurally sound sand can be."
|
|
color = "#EDC9AF"
|
|
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_AMORPHOUS
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 3,
|
|
MATERIAL_HARDNESS = 0,
|
|
MATERIAL_FLEXIBILITY = 0,
|
|
MATERIAL_REFLECTIVITY = 7,
|
|
MATERIAL_ELECTRICAL = 1,
|
|
MATERIAL_THERMAL = 8,
|
|
MATERIAL_CHEMICAL = 4,
|
|
)
|
|
ore_type = /obj/item/stack/ore/glass
|
|
material_reagent = /datum/reagent/silicon
|
|
value_per_unit = 2 / SHEET_MATERIAL_AMOUNT
|
|
turf_sound_override = FOOTSTEP_SAND
|
|
texture_layer_icon_state = "sand"
|
|
mat_rust_resistance = RUST_RESISTANCE_BASIC
|
|
|
|
/datum/material/sand/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
|
|
. = ..()
|
|
victim.adjust_disgust(17)
|
|
return TRUE
|
|
|
|
//And now for our lavaland dwelling friends, sand, but in stone form! Truly revolutionary.
|
|
/datum/material/sandstone
|
|
name = "sandstone"
|
|
desc = "Bialtaakid 'ant taerif ma hdha."
|
|
color = "#ECD5A8"
|
|
mat_flags = MATERIAL_BASIC_RECIPES
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 4,
|
|
MATERIAL_HARDNESS = 3,
|
|
MATERIAL_FLEXIBILITY = 0,
|
|
MATERIAL_REFLECTIVITY = 2,
|
|
MATERIAL_ELECTRICAL = 2,
|
|
MATERIAL_THERMAL = 6,
|
|
MATERIAL_CHEMICAL = 6,
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/mineral/sandstone
|
|
material_reagent = /datum/reagent/silicon
|
|
value_per_unit = 5 / SHEET_MATERIAL_AMOUNT
|
|
turf_sound_override = FOOTSTEP_WOOD
|
|
texture_layer_icon_state = "brick"
|
|
mat_rust_resistance = RUST_RESISTANCE_BASIC
|
|
|
|
/datum/material/snow
|
|
name = "snow"
|
|
desc = "There's no business like snow business."
|
|
color = COLOR_WHITE
|
|
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_AMORPHOUS
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 2,
|
|
MATERIAL_HARDNESS = 1,
|
|
MATERIAL_FLEXIBILITY = 0,
|
|
MATERIAL_REFLECTIVITY = 6,
|
|
MATERIAL_ELECTRICAL = 6,
|
|
MATERIAL_THERMAL = 6,
|
|
MATERIAL_CHEMICAL = 1,
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/mineral/snow
|
|
material_reagent = /datum/reagent/consumable/ice
|
|
turf_sound_override = FOOTSTEP_SAND
|
|
texture_layer_icon_state = "sand"
|
|
mat_rust_resistance = RUST_RESISTANCE_ORGANIC
|
|
|
|
/datum/material/runedmetal
|
|
name = "runed metal"
|
|
desc = "Mir'ntrath barhah Nar'sie."
|
|
color = "#504742"
|
|
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_METAL | MATERIAL_CLASS_RIGID
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 7,
|
|
MATERIAL_HARDNESS = 7,
|
|
MATERIAL_FLEXIBILITY = 3,
|
|
MATERIAL_REFLECTIVITY = 2,
|
|
MATERIAL_ELECTRICAL = 5,
|
|
MATERIAL_THERMAL = 1,
|
|
MATERIAL_CHEMICAL = 8,
|
|
)
|
|
material_reagent = list(/datum/reagent/iron = 1, /datum/reagent/fuel/unholywater = 2)
|
|
sheet_type = /obj/item/stack/sheet/runed_metal
|
|
value_per_unit = 1500 / SHEET_MATERIAL_AMOUNT
|
|
texture_layer_icon_state = "runed"
|
|
|
|
/datum/material/runedmetal/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
|
|
. = ..()
|
|
if(!HAS_TRAIT(victim, TRAIT_ROCK_EATER))
|
|
victim.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = 5)
|
|
return TRUE
|
|
|
|
/datum/material/bronze
|
|
name = "bronze"
|
|
desc = "Clock Cult? Never heard of it."
|
|
color = "#876223"
|
|
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_METAL | MATERIAL_CLASS_RIGID
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 8, // Bronze is *very* dense, almost as dense as lead
|
|
MATERIAL_HARDNESS = 5,
|
|
MATERIAL_FLEXIBILITY = 3,
|
|
MATERIAL_REFLECTIVITY = 7,
|
|
MATERIAL_ELECTRICAL = 8,
|
|
MATERIAL_THERMAL = 8,
|
|
MATERIAL_CHEMICAL = 5,
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/bronze
|
|
material_reagent = list(/datum/reagent/iron = 0.75, /datum/reagent/copper = 0.25)
|
|
value_per_unit = 50 / SHEET_MATERIAL_AMOUNT
|
|
|
|
/datum/material/paper
|
|
name = "paper"
|
|
desc = "Ten thousand folds of pure starchy power."
|
|
color = "#E5DCD5"
|
|
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_ORGANIC
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 0,
|
|
MATERIAL_HARDNESS = 0,
|
|
MATERIAL_FLEXIBILITY = 8,
|
|
MATERIAL_REFLECTIVITY = 1,
|
|
MATERIAL_ELECTRICAL = 4,
|
|
MATERIAL_THERMAL = 4,
|
|
MATERIAL_CHEMICAL = 0,
|
|
MATERIAL_FLAMMABILITY = 8,
|
|
MATERIAL_BEAUTY = 0.3, // Origami is beautiful
|
|
)
|
|
material_reagent = /datum/reagent/cellulose
|
|
sheet_type = /obj/item/stack/sheet/paperframes
|
|
value_per_unit = 5 / SHEET_MATERIAL_AMOUNT
|
|
turf_sound_override = FOOTSTEP_SAND
|
|
texture_layer_icon_state = "paper"
|
|
|
|
/datum/material/paper/on_main_applied(atom/source, mat_amount, multiplier)
|
|
. = ..()
|
|
if(!isobj(source) || !(source.material_flags & MATERIAL_AFFECT_STATISTICS))
|
|
return
|
|
var/obj/paper = source
|
|
paper.obj_flags |= UNIQUE_RENAME
|
|
if(istype(paper, /obj/item/fishing_rod))
|
|
RegisterSignal(paper, COMSIG_ROD_BEGIN_FISHING, PROC_REF(on_begin_fishing))
|
|
|
|
/datum/material/paper/proc/on_begin_fishing(obj/item/fishing_rod/rod, datum/fishing_challenge/challenge)
|
|
SIGNAL_HANDLER
|
|
if(prob(40)) //consider the default reward and it's 15%
|
|
RegisterSignal(challenge, COMSIG_FISHING_CHALLENGE_ROLL_REWARD, PROC_REF(roll_stickman))
|
|
|
|
/datum/material/paper/proc/roll_stickman(datum/source, obj/item/fishing_rod/rod, mob/fisherman, atom/location, list/rewards)
|
|
SIGNAL_HANDLER
|
|
rewards += pick(/mob/living/basic/stickman, /mob/living/basic/stickman/dog, /mob/living/basic/stickman/ranged)
|
|
|
|
/datum/material/paper/on_main_removed(atom/source, mat_amount, multiplier)
|
|
. = ..()
|
|
if(istype(source, /obj/item/fishing_rod) && (source.material_flags & MATERIAL_AFFECT_STATISTICS))
|
|
UnregisterSignal(source, COMSIG_ROD_BEGIN_FISHING)
|
|
|
|
/datum/material/cardboard
|
|
name = "cardboard"
|
|
desc = "They say cardboard is used by hobos to make incredible things."
|
|
color = "#5F625C"
|
|
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_ORGANIC
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 1,
|
|
MATERIAL_HARDNESS = 0,
|
|
MATERIAL_FLEXIBILITY = 6,
|
|
MATERIAL_REFLECTIVITY = 1,
|
|
MATERIAL_ELECTRICAL = 4,
|
|
MATERIAL_THERMAL = 4,
|
|
MATERIAL_CHEMICAL = 2,
|
|
MATERIAL_FLAMMABILITY = 6,
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/cardboard
|
|
material_reagent = /datum/reagent/cellulose
|
|
value_per_unit = 6 / SHEET_MATERIAL_AMOUNT
|
|
|
|
/datum/material/cardboard/on_main_applied(atom/source, mat_amount, multiplier)
|
|
. = ..()
|
|
if(isobj(source) && source.material_flags & MATERIAL_AFFECT_STATISTICS)
|
|
var/obj/cardboard = source
|
|
cardboard.obj_flags |= UNIQUE_RENAME
|
|
|
|
/datum/material/bone
|
|
name = "bone"
|
|
desc = "Man, building with this will make you the coolest caveman on the block."
|
|
color = "#e3dac9"
|
|
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_ORGANIC | MATERIAL_CLASS_RIGID
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 3,
|
|
MATERIAL_HARDNESS = 5,
|
|
MATERIAL_FLEXIBILITY = 2,
|
|
MATERIAL_REFLECTIVITY = 4,
|
|
MATERIAL_ELECTRICAL = 3,
|
|
MATERIAL_THERMAL = 4,
|
|
MATERIAL_CHEMICAL = 2,
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/bone
|
|
material_reagent = /datum/reagent/bone_dust
|
|
value_per_unit = 100 / SHEET_MATERIAL_AMOUNT
|
|
|
|
/datum/material/bone/on_main_applied(atom/source, mat_amount, multiplier)
|
|
. = ..()
|
|
if(istype(source, /obj/item/fishing_rod))
|
|
RegisterSignal(source, COMSIG_ROD_BEGIN_FISHING, PROC_REF(on_begin_fishing))
|
|
else if(istype(source, /obj/item/fish))
|
|
ADD_TRAIT(source, TRAIT_FISH_MADE_OF_BONE, REF(src))
|
|
|
|
/datum/material/bone/proc/on_begin_fishing(obj/item/fishing_rod/rod, datum/fishing_challenge/challenge)
|
|
SIGNAL_HANDLER
|
|
if(prob(40))
|
|
RegisterSignal(challenge, COMSIG_FISHING_CHALLENGE_ROLL_REWARD, PROC_REF(roll_bones))
|
|
|
|
/datum/material/bone/proc/roll_bones(datum/source, obj/item/fishing_rod/rod, mob/fisherman, atom/location, list/rewards)
|
|
SIGNAL_HANDLER
|
|
var/static/list/bones = list(
|
|
/obj/item/fish/boned = 65,
|
|
/obj/item/fish/mastodon = 8,
|
|
/mob/living/basic/skeleton = 6,
|
|
/mob/living/basic/skeleton/ice = 6,
|
|
/mob/living/basic/skeleton/templar = 6,
|
|
/obj/item/instrument/trumpet/spectral/one_doot = 3,
|
|
/obj/item/instrument/saxophone/spectral/one_doot = 3,
|
|
/obj/item/instrument/trombone/spectral/one_doot = 3,
|
|
)
|
|
rewards += pick_weight(bones)
|
|
|
|
/datum/material/bone/on_main_removed(atom/source, mat_amount, multiplier)
|
|
. = ..()
|
|
if(istype(source, /obj/item/fishing_rod))
|
|
UnregisterSignal(source, COMSIG_ROD_BEGIN_FISHING)
|
|
else if(istype(source, /obj/item/fish))
|
|
REMOVE_TRAIT(source, TRAIT_FISH_MADE_OF_BONE, REF(src))
|
|
|
|
/datum/material/bamboo
|
|
name = "bamboo"
|
|
desc = "If it's good enough for pandas, it's good enough for you."
|
|
color = "#87a852"
|
|
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_ORGANIC | MATERIAL_CLASS_RIGID
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 3, // Denser and bendier than wood, but pretty much the same otherwise
|
|
MATERIAL_HARDNESS = 4,
|
|
MATERIAL_FLEXIBILITY = 5,
|
|
MATERIAL_REFLECTIVITY = 1,
|
|
MATERIAL_ELECTRICAL = 6,
|
|
MATERIAL_THERMAL = 3,
|
|
MATERIAL_CHEMICAL = 1,
|
|
MATERIAL_FLAMMABILITY = 6,
|
|
MATERIAL_BEAUTY = 0.2, // Prettier patterns
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/mineral/bamboo
|
|
material_reagent = /datum/reagent/cellulose
|
|
value_per_unit = 5 / SHEET_MATERIAL_AMOUNT
|
|
turf_sound_override = FOOTSTEP_WOOD
|
|
texture_layer_icon_state = "bamboo"
|
|
|
|
/datum/material/zaukerite
|
|
name = "zaukerite"
|
|
desc = "A light absorbing crystal"
|
|
color = COLOR_ALMOST_BLACK
|
|
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_CRYSTAL | MATERIAL_CLASS_RIGID
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 1,
|
|
MATERIAL_HARDNESS = 9,
|
|
MATERIAL_FLEXIBILITY = 0,
|
|
MATERIAL_REFLECTIVITY = 0,
|
|
MATERIAL_ELECTRICAL = 1,
|
|
MATERIAL_THERMAL = 9,
|
|
MATERIAL_CHEMICAL = 0,
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/mineral/zaukerite
|
|
material_reagent = /datum/reagent/toxin/plasma
|
|
value_per_unit = 900 / SHEET_MATERIAL_AMOUNT
|
|
|
|
/datum/material/zaukerite/on_applied(atom/source, mat_amount, multiplier, from_slot)
|
|
. = ..()
|
|
if(istype(source, /obj/item/fishing_rod))
|
|
ADD_TRAIT(source, TRAIT_ROD_IGNORE_ENVIRONMENT, REF(src)) //light-absorbing, environment-cancelling fishing rod.
|
|
|
|
/datum/material/zaukerite/on_removed(atom/source, mat_amount, multiplier, from_slot)
|
|
. = ..()
|
|
if(istype(source, /obj/item/fishing_rod))
|
|
REMOVE_TRAIT(source, TRAIT_ROD_IGNORE_ENVIRONMENT, REF(src)) //light-absorbing, environment-cancelling fishing rod.
|
|
|
|
/datum/material/zaukerite/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
|
|
. = ..()
|
|
if(!HAS_TRAIT(victim, TRAIT_ROCK_EATER))
|
|
victim.apply_damage(30, BURN, BODY_ZONE_HEAD, wound_bonus = 5)
|
|
return TRUE
|
|
|
|
/// Evil and very unstable version of bluespace crystals
|
|
/datum/material/telecrystal
|
|
name = "telecrystal"
|
|
desc = "An ominous-looking gemstone capable of transporting objects vast distances through bluespace."
|
|
color = "#BD1B28"
|
|
alpha = 200
|
|
starlight_color = COLOR_SYNDIE_RED
|
|
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_CRYSTAL | MATERIAL_CLASS_RIGID
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 1,
|
|
MATERIAL_HARDNESS = 4,
|
|
MATERIAL_FLEXIBILITY = 0,
|
|
MATERIAL_REFLECTIVITY = 10,
|
|
MATERIAL_ELECTRICAL = 10,
|
|
MATERIAL_THERMAL = 2,
|
|
MATERIAL_CHEMICAL = 8,
|
|
MATERIAL_BEAUTY = -0.5, // very evil bad no good
|
|
MATERIAL_TELEPORTING = 8,
|
|
MATERIAL_PENETRATING = TRUE,
|
|
)
|
|
sheet_type = /obj/item/stack/sheet/telepolycrystal
|
|
material_reagent = list(/datum/reagent/bluespace = 1, /datum/reagent/medicine/stimulants = 1) // We don't have liquid telecrystals and I don't wanna risk it
|
|
value_per_unit = 1200 / SHEET_MATERIAL_AMOUNT
|
|
texture_layer_icon_state = "shine"
|
|
|
|
/datum/material/telecrystal/on_main_applied(atom/source, mat_amount, multiplier)
|
|
. = ..()
|
|
if(istype(source, /obj/item/fishing_rod))
|
|
RegisterSignal(source, COMSIG_ROD_BEGIN_FISHING, PROC_REF(on_begin_fishing))
|
|
|
|
/datum/material/telecrystal/on_main_removed(atom/source, mat_amount, multiplier)
|
|
. = ..()
|
|
if(istype(source, /obj/item/fishing_rod))
|
|
UnregisterSignal(source, COMSIG_ROD_BEGIN_FISHING)
|
|
|
|
/datum/material/telecrystal/proc/on_begin_fishing(obj/item/fishing_rod/rod, datum/fishing_challenge/challenge)
|
|
SIGNAL_HANDLER
|
|
// Oops, all chainsawfish!
|
|
challenge.register_reward_signals(GLOB.preset_fish_sources[/datum/fish_source/portal/syndicate])
|
|
|
|
/datum/material/rock
|
|
name = "rock"
|
|
desc = "Marble maybe?"
|
|
color = "#919191"
|
|
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_RIGID
|
|
mat_properties = list(
|
|
MATERIAL_DENSITY = 2,
|
|
MATERIAL_HARDNESS = 4,
|
|
MATERIAL_FLEXIBILITY = 0,
|
|
MATERIAL_REFLECTIVITY = 0,
|
|
MATERIAL_ELECTRICAL = 0,
|
|
MATERIAL_THERMAL = 1,
|
|
MATERIAL_CHEMICAL = 0,
|
|
MATERIAL_BEAUTY = 0.8,
|
|
)
|
|
texture_layer_icon_state = "sand"
|