Most materials can be used to build most things (#66181)

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
This commit is contained in:
Y0SH1M4S73R
2022-04-28 13:31:35 -07:00
committed by GitHub
co-authored by Mothblocks
parent 41795ef760
commit e657e6c4f7
24 changed files with 631 additions and 116 deletions
@@ -86,3 +86,6 @@
/// generally called before temporary non-parallel animate()s on the atom (animation_duration)
#define COMSIG_ATOM_TEMPORARY_ANIMATION_START "atom_temp_animate_start"
/// from internal loop in /atom/proc/propagate_radiation_pulse: (atom/pulse_source)
#define COMSIG_ATOM_PROPAGATE_RAD_PULSE "atom_propagate_radiation_pulse"
+6
View File
@@ -62,5 +62,11 @@
else
return PERCEIVED_RADIATION_DANGER_LOW
/// A common proc used to send COMSIG_ATOM_PROPAGATE_RAD_PULSE to adjacent atoms
/// Only used for uranium (false/tram)walls to spread their radiation pulses
/atom/proc/propagate_radiation_pulse()
for(var/atom/atom in orange(1,src))
SEND_SIGNAL(atom, COMSIG_ATOM_PROPAGATE_RAD_PULSE, src)
#undef MEDIUM_RADIATION_THRESHOLD_RANGE
#undef EXTREME_RADIATION_CHANCE
+1
View File
@@ -26,6 +26,7 @@ SUBSYSTEM_DEF(materials)
new /datum/stack_recipe("Toilet", /obj/structure/toilet/greyscale, one_per_turf = TRUE, on_floor = TRUE, applies_mats = TRUE),
new /datum/stack_recipe("Sink Frame", /obj/structure/sinkframe, one_per_turf = TRUE, on_floor = TRUE, applies_mats = TRUE),
new /datum/stack_recipe("Material floor tile", /obj/item/stack/tile/material, 1, 4, 20, applies_mats = TRUE),
new /datum/stack_recipe("Material airlock assembly", /obj/structure/door_assembly/door_assembly_material, 4, time = 50, one_per_turf = TRUE, on_floor = TRUE, applies_mats = TRUE),
)
///List of stackcrafting recipes for materials using rigid recipes
var/list/rigid_stack_recipes = list(
@@ -512,3 +512,8 @@
name = "Worn Skull Bandana Up"
icon_file = 'icons/mob/clothing/mask.dmi'
json_config = 'code/datums/greyscale/json_configs/bandskull_worn_up.json'
/datum/greyscale_config/material_airlock
name = "Material Airlock"
icon_file = 'icons/obj/doors/airlocks/material/material.dmi'
json_config = 'code/datums/greyscale/json_configs/material_airlock.json'
@@ -0,0 +1,114 @@
{
"closed": [
{
"type": "icon_state",
"icon_state": "base_closed",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
"icon_state": "frame_closed",
"blend_mode": "overlay"
}
],
"open": [
{
"type": "icon_state",
"icon_state": "base_open",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
"icon_state": "frame_open",
"blend_mode": "overlay"
}
],
"opening": [
{
"type": "icon_state",
"icon_state": "base_opening",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
"icon_state": "frame_opening",
"blend_mode": "overlay"
}
],
"closing": [
{
"type": "icon_state",
"icon_state": "base_closing",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
"icon_state": "frame_closing",
"blend_mode": "overlay"
}
],
"construction": [
{
"type": "icon_state",
"icon_state": "base_construction",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
"icon_state": "frame_construction",
"blend_mode": "overlay"
}
],
"fill_closed": [
{
"type": "icon_state",
"icon_state": "fill_closed",
"blend_mode": "overlay",
"color_ids": [ 1 ]
}
],
"fill_open": [
{
"type": "icon_state",
"icon_state": "fill_open",
"blend_mode": "overlay",
"color_ids": [ 1 ]
}
],
"fill_opening": [
{
"type": "icon_state",
"icon_state": "fill_opening",
"blend_mode": "overlay",
"color_ids": [ 1 ]
}
],
"fill_closing": [
{
"type": "icon_state",
"icon_state": "fill_closing",
"blend_mode": "overlay",
"color_ids": [ 1 ]
}
],
"fill_construction": [
{
"type": "icon_state",
"icon_state": "fill_construction",
"blend_mode": "overlay",
"color_ids": [ 1 ]
}
],
"" : [
{
"type": "icon_state",
"icon_state": "fill_open",
"blend_mode": "overlay"
}
]
}
+2
View File
@@ -92,6 +92,8 @@ Simple datum which is instanced once per type and is used for every object of sa
else if(istype(source, /turf)) //turfs
on_applied_turf(source, amount, material_flags)
source.update_appearance()
source.mat_update_desc(src)
///This proc is called when a material updates an object's description
+3 -3
View File
@@ -82,7 +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"
greyscale_colors = "#ff80f496"
alpha = 150
init_flags = MATERIAL_INIT_MAPLOAD
integrity_modifier = 0.5
@@ -101,7 +101,7 @@
name = "titanium glass"
desc = "A specialized silicate-titanium alloy that is commonly used in shuttle windows."
color = "#cfbee0"
greyscale_colors = "#cfbee0"
greyscale_colors = "#cfbee096"
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, FIRE = 0.8, ACID = 2)
@@ -119,7 +119,7 @@
name = "plastitanium glass"
desc = "A specialized silicate-plastitanium alloy."
color = "#5d3369"
greyscale_colors = "#5d3369"
greyscale_colors = "#5d336996"
alpha = 150
init_flags = MATERIAL_INIT_MAPLOAD
integrity_modifier = 1.1
+15 -15
View File
@@ -17,7 +17,7 @@
name = "glass"
desc = "Glass forged by melting sand."
color = "#88cdf1"
greyscale_colors = "#88cdf1"
greyscale_colors = "#88cdf196"
alpha = 150
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
integrity_modifier = 0.1
@@ -73,7 +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"
greyscale_colors = "#71c8f784"
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
@@ -157,7 +157,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"
greyscale_colors = "#4e7dffC8"
alpha = 200
categories = list(MAT_CATEGORY_ORE = TRUE)
beauty_modifier = 0.5
@@ -337,9 +337,9 @@ 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"
greyscale_colors = "#88cdf196"
alpha = 150
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/hot_ice
value_per_unit = 0.2
beauty_modifier = 0.2
@@ -361,9 +361,9 @@ 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"
greyscale_colors = "#f2d5d796"
alpha = 150
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/mineral/metal_hydrogen
value_per_unit = 0.35
beauty_modifier = 0.35
@@ -400,7 +400,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
desc = "Bialtaakid 'ant taerif ma hdha."
color = "#B77D31"
greyscale_colors = "#B77D31"
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/mineral/sandstone
value_per_unit = 0.0025
armor_modifiers = list(MELEE = 0.5, BULLET = 0.5, LASER = 1.25, ENERGY = 0.5, BOMB = 0.5, BIO = 0.25, FIRE = 1.5, ACID = 1.5)
@@ -430,7 +430,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
desc = "Mir'ntrath barhah Nar'sie."
color = "#3C3434"
greyscale_colors = "#3C3434"
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/runed_metal
value_per_unit = 0.75
armor_modifiers = list(MELEE = 1.2, BULLET = 1.2, LASER = 1, ENERGY = 1, BOMB = 1.2, BIO = 1.2, FIRE = 1.5, ACID = 1.5)
@@ -447,7 +447,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
desc = "Clock Cult? Never heard of it."
color = "#92661A"
greyscale_colors = "#92661A"
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/bronze
value_per_unit = 0.025
armor_modifiers = list(MELEE = 1, BULLET = 1, LASER = 1, ENERGY = 1, BOMB = 1, BIO = 1, FIRE = 1.5, ACID = 1.5)
@@ -458,7 +458,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
desc = "Ten thousand folds of pure starchy power."
color = "#E5DCD5"
greyscale_colors = "#E5DCD5"
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/paperframes
value_per_unit = 0.0025
armor_modifiers = list(MELEE = 0.1, BULLET = 0.1, LASER = 0.1, ENERGY = 0.1, BOMB = 0.1, BIO = 0.1, FIRE = 0, ACID = 1.5)
@@ -484,7 +484,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
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)
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/cardboard
value_per_unit = 0.003
armor_modifiers = list(MELEE = 0.25, BULLET = 0.25, LASER = 0.25, ENERGY = 0.25, BOMB = 0.25, BIO = 0.25, FIRE = 0, ACID = 1.5)
@@ -508,7 +508,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
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)
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/bone
value_per_unit = 0.05
armor_modifiers = list(MELEE = 1.2, BULLET = 0.75, LASER = 0.75, ENERGY = 1.2, BOMB = 1, BIO = 1, FIRE = 1.5, ACID = 1.5)
@@ -519,7 +519,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
desc = "If it's good enough for pandas, it's good enough for you."
color = "#87a852"
greyscale_colors = "#87a852"
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/mineral/bamboo
value_per_unit = 0.0025
armor_modifiers = list(MELEE = 0.5, BULLET = 0.5, LASER = 0.5, ENERGY = 0.5, BOMB = 0.5, BIO = 0.51, FIRE = 0.5, ACID = 1.5)
@@ -532,7 +532,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
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)
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/mineral/zaukerite
value_per_unit = 0.45
armor_modifiers = list(MELEE = 0.9, BULLET = 0.9, LASER = 1.75, ENERGY = 1.75, BOMB = 0.5, BIO = 1, FIRE = 0.1, ACID = 1)
+2 -2
View File
@@ -2,9 +2,9 @@
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"
greyscale_colors = "#FFFFFF64"
alpha = 100
categories = list(MAT_CATEGORY_ITEM_MATERIAL=TRUE)
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/hauntium
value_per_unit = 0.05
beauty_modifier = 0.25
+10 -8
View File
@@ -1360,6 +1360,15 @@
if(atom_integrity < (0.75 * max_integrity))
update_appearance()
/obj/machinery/door/airlock/proc/prepare_deconstruction_assembly(obj/structure/door_assembly/assembly)
assembly.heat_proof_finished = heat_proof //tracks whether there's rglass in
assembly.set_anchored(TRUE)
assembly.glass = glass
assembly.state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
assembly.created_name = name
assembly.previous_assembly = previous_airlock
assembly.update_name()
assembly.update_appearance()
/obj/machinery/door/airlock/deconstruct(disassembled = TRUE, mob/user)
if(!(flags_1 & NODECONSTRUCT_1))
@@ -1369,14 +1378,7 @@
else
A = new /obj/structure/door_assembly(loc)
//If you come across a null assemblytype, it will produce the default assembly instead of disintegrating.
A.heat_proof_finished = heat_proof //tracks whether there's rglass in
A.set_anchored(TRUE)
A.glass = glass
A.state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
A.created_name = name
A.previous_assembly = previous_airlock
A.update_name()
A.update_appearance()
prepare_deconstruction_assembly(A)
if(!disassembled)
A?.update_integrity(A.max_integrity * 0.5)
@@ -593,6 +593,34 @@
damage_deflection = 5
armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0)
//////////////////////////////////
/*
Material Airlocks
*/
/obj/machinery/door/airlock/material
name = "airlock"
material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_GREYSCALE | MATERIAL_AFFECT_STATISTICS
greyscale_config = /datum/greyscale_config/material_airlock
assemblytype = /obj/structure/door_assembly/door_assembly_material
/obj/machinery/door/airlock/material/close(forced, force_crush)
. = ..()
if(!.)
return
for(var/datum/material/mat in custom_materials)
if(mat.alpha < 255)
set_opacity(FALSE)
break
/obj/machinery/door/airlock/material/prepare_deconstruction_assembly(obj/structure/door_assembly/assembly)
assembly.set_custom_materials(custom_materials)
..()
/obj/machinery/door/airlock/material/glass
opacity = FALSE
glass = TRUE
//////////////////////////////////
/*
Misc Airlocks
@@ -281,7 +281,6 @@ GLOBAL_LIST_INIT(bananium_recipes, list ( \
merge_type = /obj/item/stack/sheet/mineral/titanium
material_type = /datum/material/titanium
walltype = /turf/closed/wall/mineral/titanium
tram_wall_type = /obj/structure/tramwall/titanium
GLOBAL_LIST_INIT(titanium_recipes, list ( \
new/datum/stack_recipe("titanium tile", /obj/item/stack/tile/mineral/titanium, 1, 4, 20), \
@@ -315,7 +314,6 @@ GLOBAL_LIST_INIT(titanium_recipes, list ( \
merge_type = /obj/item/stack/sheet/mineral/plastitanium
material_flags = NONE
walltype = /turf/closed/wall/mineral/plastitanium
tram_wall_type = /obj/structure/tramwall/plastitanium
GLOBAL_LIST_INIT(plastitanium_recipes, list ( \
new/datum/stack_recipe("plastitanium tile", /obj/item/stack/tile/mineral/plastitanium, 1, 4, 20), \
@@ -483,6 +481,7 @@ GLOBAL_LIST_INIT(metalhydrogen_recipes, list(
resistance_flags = FIRE_PROOF | LAVA_PROOF | ACID_PROOF | INDESTRUCTIBLE
point_value = 100
mats_per_unit = list(/datum/material/metalhydrogen = MINERAL_MATERIAL_AMOUNT)
material_type = /datum/material/metalhydrogen
merge_type = /obj/item/stack/sheet/mineral/metal_hydrogen
/obj/item/stack/sheet/mineral/metal_hydrogen/get_main_recipes()
@@ -143,7 +143,6 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
matter_amount = 4
cost = 500
source = /datum/robot_energy_storage/iron
tram_wall_type = /obj/structure/tramwall
/obj/item/stack/sheet/iron/examine(mob/user)
. = ..()
@@ -16,7 +16,6 @@
var/point_value = 0 //turn-in value for the gulag stacker - loosely relative to its rarity.
///What type of wall does this sheet spawn
var/walltype
var/tram_wall_type
/obj/item/stack/sheet/Initialize(mapload, new_amount, merge = TRUE, list/mat_override=null, mat_amt=1)
. = ..()
+37 -32
View File
@@ -17,6 +17,7 @@
var/heat_proof_finished = 0 //whether to heat-proof the finished airlock
var/previous_assembly = /obj/structure/door_assembly
var/noglass = FALSE //airlocks with no glass version, also cannot be modified with sheets
var/nomineral = FALSE //airlock with glass version, but cannot be modified with sheets
var/material_type = /obj/item/stack/sheet/iron
var/material_amt = 4
@@ -40,11 +41,11 @@
. += span_notice("The maintenance panel is <b>wired</b>, but the circuit slot is <i>empty</i>.")
if(AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER)
. += span_notice("The circuit is <b>connected loosely</b> to its slot, but the maintenance panel is <i>unscrewed and open</i>.")
if(!mineral && !glass && !noglass)
if(!mineral && !nomineral && !glass && !noglass)
. += span_notice("There is a small <i>paper</i> placard on the assembly[doorname]. There are <i>empty</i> slots for glass windows and mineral covers.")
else if(!mineral && glass && !noglass)
else if(!mineral && !nomineral && glass && !noglass)
. += span_notice("There is a small <i>paper</i> placard on the assembly[doorname]. There are <i>empty</i> slots for mineral covers.")
else if(mineral && !glass && !noglass)
else if(!glass && !noglass)
. += span_notice("There is a small <i>paper</i> placard on the assembly[doorname]. There are <i>empty</i> slots for glass windows.")
else
. += span_notice("There is a small <i>paper</i> placard on the assembly[doorname].")
@@ -202,7 +203,7 @@
name = "near finished window airlock assembly"
G.use(1)
glass = TRUE
if(!mineral)
if(!nomineral && !mineral)
if(istype(G, /obj/item/stack/sheet/mineral) && G.sheettype)
var/M = G.sheettype
var/mineralassembly = text2path("/obj/structure/door_assembly/door_assembly_[M]")
@@ -245,39 +246,43 @@
if(W.use_tool(src, user, 40, volume=100))
if(loc && state == AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER)
to_chat(user, span_notice("You finish the airlock."))
var/obj/machinery/door/airlock/door
if(glass)
door = new glass_type( loc )
else
door = new airlock_type( loc )
door.setDir(dir)
door.unres_sides = electronics.unres_sides
//door.req_access = req_access
door.electronics = electronics
door.heat_proof = heat_proof_finished
door.security_level = 0
if(electronics.one_access)
door.req_one_access = electronics.accesses
else
door.req_access = electronics.accesses
if(created_name)
door.name = created_name
else if(electronics.passed_name)
door.name = sanitize(electronics.passed_name)
else
door.name = base_name
if(electronics.passed_cycle_id)
door.closeOtherId = electronics.passed_cycle_id
door.update_other_id()
door.previous_airlock = previous_assembly
electronics.forceMove(door)
door.update_appearance()
qdel(src)
finish_door()
else
return ..()
update_name()
update_appearance()
/obj/structure/door_assembly/proc/finish_door()
var/obj/machinery/door/airlock/door
if(glass)
door = new glass_type( loc )
else
door = new airlock_type( loc )
door.setDir(dir)
door.unres_sides = electronics.unres_sides
//door.req_access = req_access
door.electronics = electronics
door.heat_proof = heat_proof_finished
door.security_level = 0
if(electronics.one_access)
door.req_one_access = electronics.accesses
else
door.req_access = electronics.accesses
if(created_name)
door.name = created_name
else if(electronics.passed_name)
door.name = sanitize(electronics.passed_name)
else
door.name = base_name
if(electronics.passed_cycle_id)
door.closeOtherId = electronics.passed_cycle_id
door.update_other_id()
door.previous_airlock = previous_assembly
electronics.forceMove(door)
door.update_appearance()
qdel(src)
return door
/obj/structure/door_assembly/update_overlays()
. = ..()
if(!glass)
@@ -258,3 +258,35 @@
/obj/structure/door_assembly/door_assembly_bronze/seethru
airlock_type = /obj/machinery/door/airlock/bronze/seethru
/obj/structure/door_assembly/door_assembly_material
name = "airlock assembly"
airlock_type = /obj/machinery/door/airlock/material
glass_type = /obj/machinery/door/airlock/material/glass
greyscale_config = /datum/greyscale_config/material_airlock
nomineral = TRUE
material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_GREYSCALE | MATERIAL_AFFECT_STATISTICS
/obj/structure/door_assembly/door_assembly_material/deconstruct(disassembled = TRUE)
if(!(flags_1 & NODECONSTRUCT_1))
var/turf/T = get_turf(src)
for(var/material in custom_materials)
var/datum/material/material_datum = material
var/material_count = FLOOR(custom_materials[material_datum] / MINERAL_MATERIAL_AMOUNT, 1)
if(!disassembled)
material_count = rand(FLOOR(material_count/2, 1), material_count)
new material_datum.sheet_type(T, material_count)
if(glass)
if(disassembled)
if(heat_proof_finished)
new /obj/item/stack/sheet/rglass(T)
else
new /obj/item/stack/sheet/glass(T)
else
new /obj/item/shard(T)
qdel(src)
/obj/structure/door_assembly/door_assembly_material/finish_door()
var/obj/machinery/door/airlock/door = ..()
door.set_custom_materials(custom_materials)
return door
+88 -17
View File
@@ -179,34 +179,42 @@
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_URANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_URANIUM_WALLS)
/// Mutex to prevent infinite recursion when propagating radiation pulses
var/active = null
/// The last time a radiation pulse was performed
var/last_event = 0
/obj/structure/falsewall/uranium/Initialize(mapload)
. = ..()
RegisterSignal(src, COMSIG_ATOM_PROPAGATE_RAD_PULSE, .proc/radiate)
/obj/structure/falsewall/uranium/attackby(obj/item/W, mob/user, params)
radiate()
return ..()
/obj/structure/falsewall/uranium/attack_hand(mob/user, list/modifiers)
radiate()
. = ..()
return ..()
/obj/structure/falsewall/uranium/proc/radiate()
if(!active)
if(world.time > last_event+15)
active = 1
radiation_pulse(
src,
max_range = 2,
threshold = RAD_LIGHT_INSULATION,
chance = URANIUM_IRRADIATION_CHANCE,
minimum_exposure_time = URANIUM_RADIATION_MINIMUM_EXPOSURE_TIME,
)
for(var/turf/closed/wall/mineral/uranium/T in orange(1,src))
T.radiate()
last_event = world.time
active = null
return
return
SIGNAL_HANDLER
if(active)
return
if(world.time <= last_event + 1.5 SECONDS)
return
active = TRUE
radiation_pulse(
src,
max_range = 3,
threshold = RAD_LIGHT_INSULATION,
chance = URANIUM_IRRADIATION_CHANCE,
minimum_exposure_time = URANIUM_RADIATION_MINIMUM_EXPOSURE_TIME,
)
propagate_radiation_pulse()
last_event = world.time
active = FALSE
/*
* Other misc falsewall types
*/
@@ -357,3 +365,66 @@
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
/obj/structure/falsewall/material
name = "wall"
desc = "A huge chunk of material used to separate rooms."
icon = 'icons/turf/walls/materialwall.dmi'
icon_state = "materialwall-0"
base_icon_state = "materialwall"
walltype = /turf/closed/wall/material
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_MATERIAL_WALLS)
canSmoothWith = list(SMOOTH_GROUP_MATERIAL_WALLS)
material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS
/obj/structure/falsewall/material/deconstruct(disassembled = TRUE)
if(!(flags_1 & NODECONSTRUCT_1))
if(disassembled)
new girder_type(loc)
for(var/material in custom_materials)
var/datum/material/material_datum = material
new material_datum.sheet_type(loc, FLOOR(custom_materials[material_datum] / MINERAL_MATERIAL_AMOUNT, 1))
qdel(src)
/obj/structure/falsewall/material/mat_update_desc(mat)
desc = "A huge chunk of [mat] used to separate rooms."
/obj/structure/falsewall/material/toggle_open()
if(!QDELETED(src))
set_density(!density)
var/mat_opacity = TRUE
for(var/datum/material/mat in custom_materials)
if(mat.alpha < 255)
mat_opacity = FALSE
break
set_opacity(density && mat_opacity)
opening = FALSE
update_appearance()
air_update_turf(TRUE, !density)
/obj/structure/falsewall/material/ChangeToWall(delete = 1)
var/turf/current_turf = get_turf(src)
var/turf/closed/wall/material/new_wall = current_turf.PlaceOnTop(/turf/closed/wall/material)
new_wall.set_custom_materials(custom_materials)
if(delete)
qdel(src)
return current_turf
/obj/structure/falsewall/material/update_icon(updates)
. = ..()
for(var/datum/material/mat in custom_materials)
if(mat.alpha < 255)
update_transparency_underlays()
return
/obj/structure/falsewall/material/proc/update_transparency_underlays()
underlays.Cut()
var/girder_icon_state = "displaced"
if(opening)
girder_icon_state += "_[density ? "opening" : "closing"]"
else if(!density)
girder_icon_state += "_open"
var/mutable_appearance/girder_underlay = mutable_appearance('icons/obj/structures.dmi', girder_icon_state, layer = LOW_OBJ_LAYER-0.01)
girder_underlay.appearance_flags = RESET_ALPHA | RESET_COLOR
underlays += girder_underlay
+23 -10
View File
@@ -129,7 +129,7 @@
if(sheets.get_amount() < amount)
return
sheets.use(2)
var/obj/structure/tramwall/tram_wall = new sheets.tram_wall_type(loc)
var/obj/structure/tramwall/tram_wall = new(loc)
transfer_fingerprints_to(tram_wall)
qdel(src)
return
@@ -199,9 +199,6 @@
var/M = sheets.sheettype
var/amount = construction_cost["exotic_material"]
if(state == GIRDER_TRAM)
if(!sheets.tram_wall_type)
balloon_alert(user, "need titanium, plastitanium, or iron!")
return
if(sheets.get_amount() < amount)
balloon_alert(user, "need [amount] sheets!")
return
@@ -210,15 +207,22 @@
if(sheets.get_amount() < amount)
return
sheets.use(amount)
var/obj/structure/tramwall/tram_wall = new sheets.tram_wall_type(loc)
var/obj/structure/tramwall/tram_wall
var/tram_wall_type = text2path("/obj/structure/tramwall/[M]")
if(tram_wall_type)
tram_wall = new tram_wall_type(loc)
else
var/obj/structure/tramwall/material/mat_tram_wall = new(loc)
var/list/material_list = list()
material_list[GET_MATERIAL_REF(sheets.material_type)] = MINERAL_MATERIAL_AMOUNT * 2
if(material_list)
mat_tram_wall.set_custom_materials(material_list)
tram_wall = mat_tram_wall
transfer_fingerprints_to(tram_wall)
qdel(src)
return
if(state == GIRDER_DISPLACED)
var/falsewall_type = text2path("/obj/structure/falsewall/[M]")
if(!falsewall_type)
balloon_alert(user, "need comptatiable sheets!")
return
if(sheets.get_amount() < amount)
balloon_alert(user, "need [amount] sheets!")
return
@@ -227,8 +231,17 @@
if(sheets.get_amount() < amount)
return
sheets.use(amount)
var/obj/structure/falsewall/FW = new falsewall_type (loc)
transfer_fingerprints_to(FW)
var/obj/structure/falsewall/falsewall
if(falsewall_type)
falsewall = new falsewall_type (loc)
else
var/obj/structure/falsewall/material/mat_falsewall = new(loc)
var/list/material_list = list()
material_list[GET_MATERIAL_REF(sheets.material_type)] = MINERAL_MATERIAL_AMOUNT * 2
if(material_list)
mat_falsewall.set_custom_materials(material_list)
falsewall = mat_falsewall
transfer_fingerprints_to(falsewall)
qdel(src)
return
else
+230 -2
View File
@@ -23,7 +23,7 @@
var/mineral_amount = 2
var/tram_wall_type = /obj/structure/tramwall
var/girder_type = /obj/structure/girder/tram
var/slicing_duration = 100
/obj/structure/tramwall/Initialize(mapload)
. = ..()
@@ -38,7 +38,7 @@
return FALSE
to_chat(user, span_notice("You begin slicing through the outer plating..."))
if(welder.use_tool(src, user, 10 SECONDS, volume=100))
if(welder.use_tool(src, user, slicing_duration, volume=100))
to_chat(user, span_notice("You remove the outer plating."))
dismantle(user, TRUE)
else
@@ -96,3 +96,231 @@
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
/obj/structure/tramwall/gold
name = "gold wall"
desc = "A wall with gold plating. Swag!"
icon = 'icons/turf/walls/gold_wall.dmi'
icon_state = "gold_wall-0"
base_icon_state = "gold_wall"
mineral = /obj/item/stack/sheet/mineral/gold
tram_wall_type = /obj/structure/tramwall/gold
explosion_block = 0 //gold is a soft metal you dingus.
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_GOLD_WALLS)
canSmoothWith = list(SMOOTH_GROUP_GOLD_WALLS)
custom_materials = list(/datum/material/gold = 4000)
/obj/structure/tramwall/silver
name = "silver wall"
desc = "A wall with silver plating. Shiny!"
icon = 'icons/turf/walls/silver_wall.dmi'
icon_state = "silver_wall-0"
base_icon_state = "silver_wall"
mineral = /obj/item/stack/sheet/mineral/silver
tram_wall_type = /obj/structure/tramwall/silver
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SILVER_WALLS)
canSmoothWith = list(SMOOTH_GROUP_SILVER_WALLS)
custom_materials = list(/datum/material/silver = 4000)
/obj/structure/tramwall/diamond
name = "diamond wall"
desc = "A wall with diamond plating. You monster."
icon = 'icons/turf/walls/diamond_wall.dmi'
icon_state = "diamond_wall-0"
base_icon_state = "diamond_wall"
mineral = /obj/item/stack/sheet/mineral/diamond
tram_wall_type = /obj/structure/tramwall/diamond
slicing_duration = 200 //diamond wall takes twice as much time to slice
max_integrity = 800
explosion_block = 3
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_DIAMOND_WALLS)
canSmoothWith = list(SMOOTH_GROUP_DIAMOND_WALLS)
custom_materials = list(/datum/material/diamond = 4000)
/obj/structure/tramwall/bananium
name = "bananium wall"
desc = "A wall with bananium plating. Honk!"
icon = 'icons/turf/walls/bananium_wall.dmi'
icon_state = "bananium_wall-0"
base_icon_state = "bananium_wall"
mineral = /obj/item/stack/sheet/mineral/bananium
tram_wall_type = /obj/structure/tramwall/bananium
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BANANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_BANANIUM_WALLS)
custom_materials = list(/datum/material/bananium = 4000)
/obj/structure/tramwall/sandstone
name = "sandstone wall"
desc = "A wall with sandstone plating. Rough."
icon = 'icons/turf/walls/sandstone_wall.dmi'
icon_state = "sandstone_wall-0"
base_icon_state = "sandstone_wall"
mineral = /obj/item/stack/sheet/mineral/sandstone
tram_wall_type = /obj/structure/tramwall/sandstone
explosion_block = 0
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SANDSTONE_WALLS)
canSmoothWith = list(SMOOTH_GROUP_SANDSTONE_WALLS)
custom_materials = list(/datum/material/sandstone = 4000)
/obj/structure/tramwall/uranium
article = "a"
name = "uranium wall"
desc = "A wall with uranium plating. This is probably a bad idea."
icon = 'icons/turf/walls/uranium_wall.dmi'
icon_state = "uranium_wall-0"
base_icon_state = "uranium_wall"
mineral = /obj/item/stack/sheet/mineral/uranium
tram_wall_type = /obj/structure/tramwall/uranium
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_URANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_URANIUM_WALLS)
custom_materials = list(/datum/material/uranium = 4000)
/// Mutex to prevent infinite recursion when propagating radiation pulses
var/active = null
/// The last time a radiation pulse was performed
var/last_event = 0
/obj/structure/tramwall/uranium/attackby(obj/item/W, mob/user, params)
radiate()
return ..()
/obj/structure/tramwall/uranium/attack_hand(mob/user, list/modifiers)
radiate()
return ..()
/obj/structure/tramwall/uranium/proc/radiate()
SIGNAL_HANDLER
if(active)
return
if(world.time <= last_event + 1.5 SECONDS)
return
active = TRUE
radiation_pulse(
src,
max_range = 3,
threshold = RAD_LIGHT_INSULATION,
chance = URANIUM_IRRADIATION_CHANCE,
minimum_exposure_time = URANIUM_RADIATION_MINIMUM_EXPOSURE_TIME,
)
propagate_radiation_pulse()
last_event = world.time
active = FALSE
/obj/structure/tramwall/plasma
name = "plasma wall"
desc = "A wall with plasma plating. This is definitely a bad idea."
icon = 'icons/turf/walls/plasma_wall.dmi'
icon_state = "plasma_wall-0"
base_icon_state = "plasma_wall"
mineral = /obj/item/stack/sheet/mineral/plasma
tram_wall_type = /obj/structure/tramwall/plasma
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASMA_WALLS)
canSmoothWith = list(SMOOTH_GROUP_PLASMA_WALLS)
custom_materials = list(/datum/material/plasma = 4000)
/obj/structure/tramwall/wood
name = "wooden wall"
desc = "A wall with wooden plating. Stiff."
icon = 'icons/turf/walls/wood_wall.dmi'
icon_state = "wood_wall-0"
base_icon_state = "wood_wall"
mineral = /obj/item/stack/sheet/mineral/wood
tram_wall_type = /obj/structure/tramwall/wood
explosion_block = 0
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WOOD_WALLS)
canSmoothWith = list(SMOOTH_GROUP_WOOD_WALLS)
custom_materials = list(/datum/material/wood = 4000)
/obj/structure/tramwall/wood/attackby(obj/item/W, mob/user)
if(W.get_sharpness() && W.force)
var/duration = ((4.8 SECONDS) / W.force) * 2 //In seconds, for now.
if(istype(W, /obj/item/hatchet) || istype(W, /obj/item/fireaxe))
duration /= 4 //Much better with hatchets and axes.
if(do_after(user, duration * (1 SECONDS), target=src)) //Into deciseconds.
dismantle(user, disassembled = FALSE, tool = W)
return
return ..()
/obj/structure/tramwall/bamboo
name = "bamboo wall"
desc = "A wall with a bamboo finish."
icon = 'icons/turf/walls/bamboo_wall.dmi'
icon_state = "bamboo"
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BAMBOO_WALLS)
canSmoothWith = list(SMOOTH_GROUP_BAMBOO_WALLS)
mineral = /obj/item/stack/sheet/mineral/bamboo
tram_wall_type = /obj/structure/tramwall/bamboo
/obj/structure/tramwall/iron
name = "rough iron wall"
desc = "A wall with rough iron plating."
icon = 'icons/turf/walls/iron_wall.dmi'
icon_state = "iron_wall-0"
base_icon_state = "iron_wall"
mineral = /obj/item/stack/rods
mineral_amount = 5
tram_wall_type = /obj/structure/tramwall/iron
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_IRON_WALLS)
canSmoothWith = list(SMOOTH_GROUP_IRON_WALLS)
custom_materials = list(/datum/material/iron = 5000)
/obj/structure/tramwall/abductor
name = "alien wall"
desc = "A wall with alien alloy plating."
icon = 'icons/turf/walls/abductor_wall.dmi'
icon_state = "abductor_wall-0"
base_icon_state = "abductor_wall"
mineral = /obj/item/stack/sheet/mineral/abductor
tram_wall_type = /obj/structure/tramwall/abductor
slicing_duration = 200 //alien wall takes twice as much time to slice
explosion_block = 3
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_ABDUCTOR_WALLS)
canSmoothWith = list(SMOOTH_GROUP_ABDUCTOR_WALLS)
custom_materials = list(/datum/material/alloy/alien = 4000)
/obj/structure/tramwall/material
name = "wall"
desc = "A huge chunk of material used to separate rooms."
icon = 'icons/turf/walls/materialwall.dmi'
icon_state = "materialwall-0"
base_icon_state = "materialwall"
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_MATERIAL_WALLS)
canSmoothWith = list(SMOOTH_GROUP_MATERIAL_WALLS)
material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS
/obj/structure/tramwall/material/deconstruct(disassembled = TRUE)
if(!(flags_1 & NODECONSTRUCT_1))
if(disassembled)
new girder_type(loc)
for(var/material in custom_materials)
var/datum/material/material_datum = material
new material_datum.sheet_type(loc, FLOOR(custom_materials[material_datum] / MINERAL_MATERIAL_AMOUNT, 1))
qdel(src)
/obj/structure/tramwall/material/mat_update_desc(mat)
desc = "A huge chunk of [mat] used to separate rooms."
/obj/structure/tramwall/material/update_icon(updates)
. = ..()
for(var/datum/material/material in custom_materials)
if(material.alpha < 255)
update_transparency_underlays()
return
/obj/structure/tramwall/material/proc/update_transparency_underlays()
underlays.Cut()
var/mutable_appearance/girder_underlay = mutable_appearance('icons/obj/structures.dmi', "girder", layer = LOW_OBJ_LAYER-0.01)
girder_underlay.appearance_flags = RESET_ALPHA | RESET_COLOR
underlays += girder_underlay
+31 -23
View File
@@ -6,8 +6,6 @@
canSmoothWith = null
rcd_memory = null
material_flags = MATERIAL_EFFECTS
var/last_event = 0
var/active = null
/turf/closed/wall/mineral/gold
name = "gold wall"
@@ -88,35 +86,45 @@
canSmoothWith = list(SMOOTH_GROUP_URANIUM_WALLS)
custom_materials = list(/datum/material/uranium = 4000)
/// Mutex to prevent infinite recursion when propagating radiation pulses
var/active = null
/// The last time a radiation pulse was performed
var/last_event = 0
/turf/closed/wall/mineral/uranium/Initialize(mapload)
. = ..()
RegisterSignal(src, COMSIG_ATOM_PROPAGATE_RAD_PULSE, .proc/radiate)
/turf/closed/wall/mineral/uranium/proc/radiate()
if(!active)
if(world.time > last_event+15)
active = 1
radiation_pulse(
src,
max_range = 3,
threshold = RAD_LIGHT_INSULATION,
chance = URANIUM_IRRADIATION_CHANCE,
minimum_exposure_time = URANIUM_RADIATION_MINIMUM_EXPOSURE_TIME,
)
for(var/turf/closed/wall/mineral/uranium/T in orange(1,src))
T.radiate()
last_event = world.time
active = null
return
return
SIGNAL_HANDLER
if(active)
return
if(world.time <= last_event + 1.5 SECONDS)
return
active = TRUE
radiation_pulse(
src,
max_range = 3,
threshold = RAD_LIGHT_INSULATION,
chance = URANIUM_IRRADIATION_CHANCE,
minimum_exposure_time = URANIUM_RADIATION_MINIMUM_EXPOSURE_TIME,
)
propagate_radiation_pulse()
last_event = world.time
active = FALSE
/turf/closed/wall/mineral/uranium/attack_hand(mob/user, list/modifiers)
radiate()
. = ..()
return ..()
/turf/closed/wall/mineral/uranium/attackby(obj/item/W, mob/user, params)
radiate()
..()
return ..()
/turf/closed/wall/mineral/uranium/Bumped(atom/movable/AM)
radiate()
..()
return ..()
/turf/closed/wall/mineral/uranium/hulk_recoil(obj/item/bodypart/arm, mob/living/carbon/human/hulkman, damage = 41)
return ..()
@@ -151,10 +159,10 @@
/turf/closed/wall/mineral/wood/attackby(obj/item/W, mob/user)
if(W.get_sharpness() && W.force)
var/duration = (48/W.force) * 2 //In seconds, for now.
var/duration = ((4.8 SECONDS)/W.force) * 2 //In seconds, for now.
if(istype(W, /obj/item/hatchet) || istype(W, /obj/item/fireaxe))
duration /= 4 //Much better with hatchets and axes.
if(do_after(user, duration*10, target=src)) //Into deciseconds.
if(do_after(user, duration * (1 SECONDS), target=src)) //Into deciseconds.
dismantle_wall(FALSE,FALSE)
return
return ..()
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 KiB

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 960 B

After

Width:  |  Height:  |  Size: 1.2 KiB