mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-30 03:22:41 +00:00
* Most materials can be used to build most things * Fixes the merge conflict * Makes it so our vis_overlay1 is initialized first. It's awful but it works * Properly fixes the CI issues with the plasma airlocks Co-authored-by: Y0SH1M4S73R <legoboyo@earthlink.net> Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
433 lines
14 KiB
Plaintext
433 lines
14 KiB
Plaintext
/*
|
|
* False Walls
|
|
*/
|
|
/obj/structure/falsewall
|
|
name = "wall"
|
|
desc = "A huge chunk of metal used to separate rooms."
|
|
anchored = TRUE
|
|
//icon = 'icons/turf/walls/wall.dmi' //ORIGINAL
|
|
icon = 'modular_skyrat/modules/aesthetics/walls/icons/wall.dmi' //SKYRAT EDIT CHANGE - AESTHETICS
|
|
icon_state = "wall-0"
|
|
base_icon_state = "wall"
|
|
layer = LOW_OBJ_LAYER
|
|
density = TRUE
|
|
opacity = TRUE
|
|
max_integrity = 100
|
|
smoothing_flags = SMOOTH_BITMASK
|
|
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS)
|
|
canSmoothWith = list(SMOOTH_GROUP_WALLS)
|
|
can_be_unanchored = FALSE
|
|
can_atmos_pass = ATMOS_PASS_DENSITY
|
|
rad_insulation = RAD_MEDIUM_INSULATION
|
|
material_flags = MATERIAL_EFFECTS
|
|
var/mineral = /obj/item/stack/sheet/iron
|
|
var/mineral_amount = 2
|
|
var/walltype = /turf/closed/wall
|
|
var/girder_type = /obj/structure/girder/displaced
|
|
var/opening = FALSE
|
|
|
|
|
|
/obj/structure/falsewall/Initialize(mapload)
|
|
. = ..()
|
|
var/obj/item/stack/initialized_mineral = new mineral // Okay this kinda sucks.
|
|
set_custom_materials(initialized_mineral.mats_per_unit, mineral_amount)
|
|
qdel(initialized_mineral)
|
|
air_update_turf(TRUE, TRUE)
|
|
|
|
/obj/structure/falsewall/attack_hand(mob/user, list/modifiers)
|
|
if(opening)
|
|
return
|
|
. = ..()
|
|
if(.)
|
|
return
|
|
|
|
opening = TRUE
|
|
update_appearance()
|
|
if(!density)
|
|
var/srcturf = get_turf(src)
|
|
for(var/mob/living/obstacle in srcturf) //Stop people from using this as a shield
|
|
opening = FALSE
|
|
return
|
|
addtimer(CALLBACK(src, /obj/structure/falsewall/proc/toggle_open), 5)
|
|
|
|
/obj/structure/falsewall/proc/toggle_open()
|
|
if(!QDELETED(src))
|
|
set_density(!density)
|
|
set_opacity(density)
|
|
opening = FALSE
|
|
update_appearance()
|
|
air_update_turf(TRUE, !density)
|
|
|
|
/obj/structure/falsewall/update_icon(updates=ALL)//Calling icon_update will refresh the smoothwalls if it's closed, otherwise it will make sure the icon is correct if it's open
|
|
. = ..()
|
|
if(!density || !(updates & UPDATE_SMOOTHING))
|
|
return
|
|
|
|
if(opening)
|
|
smoothing_flags = NONE
|
|
clear_smooth_overlays()
|
|
else
|
|
smoothing_flags = SMOOTH_BITMASK
|
|
QUEUE_SMOOTH(src)
|
|
|
|
/obj/structure/falsewall/update_icon_state()
|
|
if(opening)
|
|
icon_state = "fwall_[density ? "opening" : "closing"]"
|
|
return ..()
|
|
icon_state = density ? "[base_icon_state]-[smoothing_junction]" : "fwall_open"
|
|
return ..()
|
|
|
|
/obj/structure/falsewall/proc/ChangeToWall(delete = 1)
|
|
var/turf/T = get_turf(src)
|
|
T.PlaceOnTop(walltype)
|
|
if(delete)
|
|
qdel(src)
|
|
return T
|
|
|
|
/obj/structure/falsewall/tool_act(mob/living/user, obj/item/tool)
|
|
if(!opening)
|
|
return ..()
|
|
to_chat(user, span_warning("You must wait until the door has stopped moving!"))
|
|
return TOOL_ACT_TOOLTYPE_SUCCESS
|
|
|
|
/obj/structure/falsewall/screwdriver_act(mob/living/user, obj/item/tool)
|
|
if(!density)
|
|
to_chat(user, span_warning("You can't reach, close it first!"))
|
|
return
|
|
var/turf/loc_turf = get_turf(src)
|
|
if(loc_turf.density)
|
|
to_chat(user, span_warning("[src] is blocked!"))
|
|
return TOOL_ACT_TOOLTYPE_SUCCESS
|
|
if(!isfloorturf(loc_turf))
|
|
to_chat(user, span_warning("[src] bolts must be tightened on the floor!"))
|
|
return TOOL_ACT_TOOLTYPE_SUCCESS
|
|
user.visible_message(span_notice("[user] tightens some bolts on the wall."), span_notice("You tighten the bolts on the wall."))
|
|
ChangeToWall()
|
|
return TOOL_ACT_TOOLTYPE_SUCCESS
|
|
|
|
|
|
/obj/structure/falsewall/welder_act(mob/living/user, obj/item/tool)
|
|
if(tool.use_tool(src, user, 0 SECONDS, volume=50))
|
|
dismantle(user, TRUE)
|
|
return TOOL_ACT_TOOLTYPE_SUCCESS
|
|
return
|
|
|
|
/obj/structure/falsewall/attackby(obj/item/W, mob/user, params)
|
|
if(!opening)
|
|
to_chat(user, span_warning("You must wait until the door has stopped moving!"))
|
|
return
|
|
return ..()
|
|
|
|
/obj/structure/falsewall/proc/dismantle(mob/user, disassembled=TRUE, obj/item/tool = null)
|
|
user.visible_message(span_notice("[user] dismantles the false wall."), span_notice("You dismantle the false wall."))
|
|
if(tool)
|
|
tool.play_tool_sound(src, 100)
|
|
else
|
|
playsound(src, 'sound/items/welder.ogg', 100, TRUE)
|
|
deconstruct(disassembled)
|
|
|
|
/obj/structure/falsewall/deconstruct(disassembled = TRUE)
|
|
if(!(flags_1 & NODECONSTRUCT_1))
|
|
if(disassembled)
|
|
new girder_type(loc)
|
|
if(mineral_amount)
|
|
for(var/i in 1 to mineral_amount)
|
|
new mineral(loc)
|
|
qdel(src)
|
|
|
|
/obj/structure/falsewall/get_dumping_location()
|
|
return null
|
|
|
|
/obj/structure/falsewall/examine_status(mob/user) //So you can't detect falsewalls by examine.
|
|
to_chat(user, span_notice("The outer plating is <b>welded</b> firmly in place."))
|
|
return null
|
|
|
|
/*
|
|
* False R-Walls
|
|
*/
|
|
|
|
/obj/structure/falsewall/reinforced
|
|
name = "reinforced wall"
|
|
desc = "A huge chunk of reinforced metal used to separate rooms."
|
|
//icon = 'icons/turf/walls/reinforced_wall.dmi'
|
|
icon = 'modular_skyrat/modules/aesthetics/walls/icons/reinforced_wall.dmi' //SKYRAT EDIT CHANGE - AESTHETICS
|
|
icon_state = "reinforced_wall-0"
|
|
base_icon_state = "reinforced_wall"
|
|
walltype = /turf/closed/wall/r_wall
|
|
mineral = /obj/item/stack/sheet/plasteel
|
|
smoothing_flags = SMOOTH_BITMASK
|
|
|
|
/obj/structure/falsewall/reinforced/examine_status(mob/user)
|
|
to_chat(user, span_notice("The outer <b>grille</b> is fully intact."))
|
|
return null
|
|
|
|
/obj/structure/falsewall/reinforced/attackby(obj/item/tool, mob/user)
|
|
..()
|
|
if(tool.tool_behaviour == TOOL_WIRECUTTER)
|
|
dismantle(user, TRUE, tool)
|
|
|
|
/*
|
|
* Uranium Falsewalls
|
|
*/
|
|
|
|
/obj/structure/falsewall/uranium
|
|
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
|
|
walltype = /turf/closed/wall/mineral/uranium
|
|
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()
|
|
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
|
|
*/
|
|
|
|
/obj/structure/falsewall/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
|
|
walltype = /turf/closed/wall/mineral/gold
|
|
smoothing_flags = SMOOTH_BITMASK
|
|
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_GOLD_WALLS)
|
|
canSmoothWith = list(SMOOTH_GROUP_GOLD_WALLS)
|
|
|
|
/obj/structure/falsewall/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
|
|
walltype = /turf/closed/wall/mineral/silver
|
|
smoothing_flags = SMOOTH_BITMASK
|
|
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SILVER_WALLS)
|
|
canSmoothWith = list(SMOOTH_GROUP_SILVER_WALLS)
|
|
|
|
/obj/structure/falsewall/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
|
|
walltype = /turf/closed/wall/mineral/diamond
|
|
smoothing_flags = SMOOTH_BITMASK
|
|
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_DIAMOND_WALLS)
|
|
canSmoothWith = list(SMOOTH_GROUP_DIAMOND_WALLS)
|
|
max_integrity = 800
|
|
|
|
/obj/structure/falsewall/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
|
|
walltype = /turf/closed/wall/mineral/plasma
|
|
smoothing_flags = SMOOTH_BITMASK
|
|
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASMA_WALLS)
|
|
canSmoothWith = list(SMOOTH_GROUP_PLASMA_WALLS)
|
|
|
|
/obj/structure/falsewall/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
|
|
walltype = /turf/closed/wall/mineral/bananium
|
|
smoothing_flags = SMOOTH_BITMASK
|
|
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BANANIUM_WALLS)
|
|
canSmoothWith = list(SMOOTH_GROUP_BANANIUM_WALLS)
|
|
|
|
|
|
/obj/structure/falsewall/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
|
|
walltype = /turf/closed/wall/mineral/sandstone
|
|
smoothing_flags = SMOOTH_BITMASK
|
|
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SANDSTONE_WALLS)
|
|
canSmoothWith = list(SMOOTH_GROUP_SANDSTONE_WALLS)
|
|
|
|
/obj/structure/falsewall/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
|
|
walltype = /turf/closed/wall/mineral/wood
|
|
smoothing_flags = SMOOTH_BITMASK
|
|
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WOOD_WALLS)
|
|
canSmoothWith = list(SMOOTH_GROUP_WOOD_WALLS)
|
|
|
|
/obj/structure/falsewall/bamboo
|
|
name = "bamboo wall"
|
|
desc = "A wall with bamboo finish. Zen."
|
|
icon = 'icons/turf/walls/bamboo_wall.dmi'
|
|
icon_state = "bamboo"
|
|
mineral = /obj/item/stack/sheet/mineral/bamboo
|
|
walltype = /turf/closed/wall/mineral/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)
|
|
|
|
/obj/structure/falsewall/iron
|
|
name = "rough iron wall"
|
|
desc = "A wall with rough metal 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
|
|
walltype = /turf/closed/wall/mineral/iron
|
|
base_icon_state = "iron_wall"
|
|
smoothing_flags = SMOOTH_BITMASK
|
|
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_IRON_WALLS)
|
|
canSmoothWith = list(SMOOTH_GROUP_IRON_WALLS)
|
|
|
|
/obj/structure/falsewall/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
|
|
walltype = /turf/closed/wall/mineral/abductor
|
|
smoothing_flags = SMOOTH_BITMASK
|
|
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_ABDUCTOR_WALLS)
|
|
canSmoothWith = list(SMOOTH_GROUP_ABDUCTOR_WALLS)
|
|
|
|
/obj/structure/falsewall/titanium
|
|
name = "wall"
|
|
desc = "A light-weight titanium wall used in shuttles."
|
|
icon = 'icons/turf/walls/shuttle_wall.dmi'
|
|
icon_state = "shuttle_wall-0"
|
|
base_icon_state = "shuttle_wall"
|
|
mineral = /obj/item/stack/sheet/mineral/titanium
|
|
walltype = /turf/closed/wall/mineral/titanium
|
|
smoothing_flags = SMOOTH_BITMASK
|
|
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_TITANIUM_WALLS)
|
|
canSmoothWith = list(SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
|
|
|
|
/obj/structure/falsewall/plastitanium
|
|
name = "wall"
|
|
desc = "An evil wall of plasma and titanium."
|
|
icon = 'icons/turf/walls/plastitanium_wall.dmi'
|
|
icon_state = "plastitanium_wall-0"
|
|
base_icon_state = "plastitanium_wall"
|
|
mineral = /obj/item/stack/sheet/mineral/plastitanium
|
|
walltype = /turf/closed/wall/mineral/plastitanium
|
|
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
|