Files

72 lines
2.5 KiB
Plaintext

/obj/structure/barricade
name = "barricade"
desc = "This space is blocked off by a barricade."
icon = 'icons/obj/structures.dmi'
icon_state = "barricade"
pass_flags_self = ATOM_PASS_TABLE
anchored = TRUE
density = TRUE
integrity = 200
integrity_max = 200
material_parts = /datum/prototype/material/wood_plank
/obj/structure/barricade/Initialize(mapload, datum/prototype/material/material_like)
if(!isnull(material_like))
var/resolved_material = RSmaterials.fetch_or_defer(material_like)
switch(resolved_material)
if(REPOSITORY_FETCH_DEFER)
// todo: handle
else
set_primary_material(resolved_material)
return ..()
/obj/structure/barricade/update_material_single(datum/prototype/material/material)
. = ..()
name = "[material.display_name] barricade"
desc = "This space is blocked off by a barricade made of [material.display_name]."
color = material.icon_colour
set_multiplied_integrity(material.relative_integrity)
/obj/structure/barricade/attackby(obj/item/I, mob/living/user, list/params, clickchain_flags, damage_multiplier)
if(user.a_intent == INTENT_HARM)
return ..()
if(istype(I, /obj/item/stack/material))
var/obj/item/stack/material/stack = I
if(INTERACTING_WITH(user, src))
return CLICKCHAIN_DO_NOT_PROPAGATE
if(stack.material.id != get_primary_material_id())
user.action_feedback(SPAN_WARNING("[stack] is not the right material to fix this!"), src)
return CLICKCHAIN_DO_NOT_PROPAGATE
if(integrity == integrity_max)
user.action_feedback(SPAN_WARNING("[src] does not need repairs!"), src)
return CLICKCHAIN_DO_NOT_PROPAGATE
user.visible_action_feedback(
target = src,
hard_range = MESSAGE_RANGE_CONSTRUCTION,
visible_hard = "[user] begins to repair [src].",
)
if(!do_after(user, 2 SECONDS, src, mobility_flags = MOBILITY_CAN_USE))
return CLICKCHAIN_DO_NOT_PROPAGATE
if(!stack.use(1))
return CLICKCHAIN_DO_NOT_PROPAGATE
set_integrity(integrity_max)
user.visible_action_feedback(
target = src,
hard_range = MESSAGE_RANGE_CONSTRUCTION,
visible_hard = "[user] repairs [src]."
)
return CLICKCHAIN_DO_NOT_PROPAGATE | CLICKCHAIN_DID_SOMETHING
/obj/structure/barricade/deconstructed(method)
. = ..()
switch(method)
if(ATOM_DECONSTRUCT_DISASSEMBLED)
else
visible_message(SPAN_WARNING("[src] falls apart."))
/obj/structure/barricade/drop_products(method, atom/where)
. = ..()
var/datum/prototype/material/primary = get_primary_material()
primary.place_dismantled_product(where, method == ATOM_DECONSTRUCT_DISASSEMBLED? 5 : 3)