mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-06 15:02:29 +00:00
* Removes unused clockwork cult icons (#64006) and also moves them over to the sprite repo there were still some used, so the fluff pieces got added to obj/fluff.dmi, and also there was one sprite for the wall girder, the toy wrist watch and the null rod, so those got moved into their respective files. moved the clothing to their respective files aswell. Why It's Good For The Game almost all of these sprites are completely unused, aswell as the gamemode being removed from the code anyways, so they can rest in sprite purgatory * Removes unused clockwork cult icons * Fixes one of the floor that had no texture Co-authored-by: Seth Scherer <supernovaa41@gmx.com> Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
446 lines
15 KiB
Plaintext
446 lines
15 KiB
Plaintext
/obj/structure/girder
|
|
name = "girder"
|
|
icon_state = "girder"
|
|
desc = "A large structural assembly made out of metal; It requires a layer of iron before it can be considered a wall."
|
|
anchored = TRUE
|
|
density = TRUE
|
|
var/state = GIRDER_NORMAL
|
|
var/girderpasschance = 20 // percentage chance that a projectile passes through the girder.
|
|
var/can_displace = TRUE //If the girder can be moved around by wrenching it
|
|
var/next_beep = 0 //Prevents spamming of the construction sound
|
|
max_integrity = 200
|
|
rad_insulation = RAD_VERY_LIGHT_INSULATION
|
|
|
|
/obj/structure/girder/examine(mob/user)
|
|
. = ..()
|
|
switch(state)
|
|
if(GIRDER_REINF)
|
|
. += span_notice("The support struts are <b>screwed</b> in place.")
|
|
if(GIRDER_REINF_STRUTS)
|
|
. += span_notice("The support struts are <i>unscrewed</i> and the inner <b>grille</b> is intact.")
|
|
if(GIRDER_NORMAL)
|
|
if(can_displace)
|
|
. += span_notice("The bolts are <b>wrenched</b> in place.")
|
|
if(GIRDER_DISPLACED)
|
|
. += span_notice("The bolts are <i>loosened</i>, but the <b>screws</b> are holding [src] together.")
|
|
if(GIRDER_DISASSEMBLED)
|
|
. += span_notice("[src] is disassembled! You probably shouldn't be able to see this examine message.")
|
|
|
|
/obj/structure/girder/attackby(obj/item/W, mob/user, params)
|
|
var/platingmodifier = 1
|
|
if(HAS_TRAIT(user, TRAIT_QUICK_BUILD))
|
|
platingmodifier = 0.7
|
|
if(next_beep <= world.time)
|
|
next_beep = world.time + 10
|
|
playsound(src, 'sound/machines/clockcult/integration_cog_install.ogg', 50, TRUE)
|
|
add_fingerprint(user)
|
|
|
|
if(istype(W, /obj/item/gun/energy/plasmacutter))
|
|
to_chat(user, span_notice("You start slicing apart the girder..."))
|
|
if(W.use_tool(src, user, 40, volume=100))
|
|
to_chat(user, span_notice("You slice apart the girder."))
|
|
var/obj/item/stack/sheet/iron/M = new (loc, 2)
|
|
if (!QDELETED(M))
|
|
M.add_fingerprint(user)
|
|
qdel(src)
|
|
return
|
|
|
|
else if(istype(W, /obj/item/stack))
|
|
if(iswallturf(loc))
|
|
to_chat(user, span_warning("There is already a wall present!"))
|
|
return
|
|
if(!isfloorturf(src.loc))
|
|
to_chat(user, span_warning("A floor must be present to build a false wall!"))
|
|
return
|
|
if (locate(/obj/structure/falsewall) in src.loc.contents)
|
|
to_chat(user, span_warning("There is already a false wall present!"))
|
|
return
|
|
|
|
if(istype(W, /obj/item/stack/rods))
|
|
var/obj/item/stack/rods/S = W
|
|
if(state == GIRDER_DISPLACED)
|
|
if(S.get_amount() < 5)
|
|
to_chat(user, span_warning("You need at least five rods to create a false wall!"))
|
|
return
|
|
to_chat(user, span_notice("You start building a false wall..."))
|
|
if(do_after(user, 20, target = src))
|
|
if(S.get_amount() < 5)
|
|
return
|
|
S.use(5)
|
|
to_chat(user, span_notice("You create a false wall. Push on it to open or close the passage."))
|
|
var/obj/structure/falsewall/iron/FW = new (loc)
|
|
transfer_fingerprints_to(FW)
|
|
qdel(src)
|
|
return
|
|
else
|
|
if(S.get_amount() < 5)
|
|
to_chat(user, span_warning("You need at least five rods to add plating!"))
|
|
return
|
|
to_chat(user, span_notice("You start adding plating..."))
|
|
if(do_after(user, 40, target = src))
|
|
if(S.get_amount() < 5)
|
|
return
|
|
S.use(5)
|
|
to_chat(user, span_notice("You add the plating."))
|
|
var/turf/T = get_turf(src)
|
|
T.PlaceOnTop(/turf/closed/wall/mineral/iron)
|
|
transfer_fingerprints_to(T)
|
|
qdel(src)
|
|
return
|
|
|
|
if(!istype(W, /obj/item/stack/sheet))
|
|
return
|
|
|
|
var/obj/item/stack/sheet/S = W
|
|
if(istype(S, /obj/item/stack/sheet/iron))
|
|
if(state == GIRDER_DISPLACED)
|
|
if(S.get_amount() < 2)
|
|
to_chat(user, span_warning("You need two sheets of iron to create a false wall!"))
|
|
return
|
|
to_chat(user, span_notice("You start building a false wall..."))
|
|
if(do_after(user, 20*platingmodifier, target = src))
|
|
if(S.get_amount() < 2)
|
|
return
|
|
S.use(2)
|
|
to_chat(user, span_notice("You create a false wall. Push on it to open or close the passage."))
|
|
var/obj/structure/falsewall/F = new (loc)
|
|
transfer_fingerprints_to(F)
|
|
qdel(src)
|
|
return
|
|
else if(state == GIRDER_REINF)
|
|
to_chat(user, span_warning("You can't finish a reinforced girder with regular iron. You need a plasteel sheet for that."))
|
|
return
|
|
else
|
|
if(S.get_amount() < 2)
|
|
to_chat(user, span_warning("You need two sheets of iron to finish a wall!"))
|
|
return
|
|
to_chat(user, span_notice("You start adding plating..."))
|
|
if (do_after(user, 40*platingmodifier, target = src))
|
|
if(S.get_amount() < 2)
|
|
return
|
|
S.use(2)
|
|
to_chat(user, span_notice("You add the plating."))
|
|
var/turf/T = get_turf(src)
|
|
T.PlaceOnTop(/turf/closed/wall)
|
|
transfer_fingerprints_to(T)
|
|
qdel(src)
|
|
return
|
|
|
|
if(istype(S, /obj/item/stack/sheet/plasteel))
|
|
if(state == GIRDER_DISPLACED)
|
|
if(S.get_amount() < 2)
|
|
to_chat(user, span_warning("You need at least two sheets to create a false wall!"))
|
|
return
|
|
to_chat(user, span_notice("You start building a reinforced false wall..."))
|
|
if(do_after(user, 20, target = src))
|
|
if(S.get_amount() < 2)
|
|
return
|
|
S.use(2)
|
|
to_chat(user, span_notice("You create a reinforced false wall. Push on it to open or close the passage."))
|
|
var/obj/structure/falsewall/reinforced/FW = new (loc)
|
|
transfer_fingerprints_to(FW)
|
|
qdel(src)
|
|
return
|
|
else if(state == GIRDER_REINF)
|
|
if(S.get_amount() < 1)
|
|
return
|
|
to_chat(user, span_notice("You start finalizing the reinforced wall..."))
|
|
if(do_after(user, 50*platingmodifier, target = src))
|
|
if(S.get_amount() < 1)
|
|
return
|
|
S.use(1)
|
|
to_chat(user, span_notice("You fully reinforce the wall."))
|
|
var/turf/T = get_turf(src)
|
|
T.PlaceOnTop(/turf/closed/wall/r_wall)
|
|
transfer_fingerprints_to(T)
|
|
qdel(src)
|
|
return
|
|
else
|
|
if(S.get_amount() < 1)
|
|
return
|
|
to_chat(user, span_notice("You start reinforcing the girder..."))
|
|
if(do_after(user, 60*platingmodifier, target = src))
|
|
if(S.get_amount() < 1)
|
|
return
|
|
S.use(1)
|
|
to_chat(user, span_notice("You reinforce the girder."))
|
|
var/obj/structure/girder/reinforced/R = new (loc)
|
|
transfer_fingerprints_to(R)
|
|
qdel(src)
|
|
return
|
|
|
|
if(!S.has_unique_girder)
|
|
var/M = S.sheettype
|
|
if(state == GIRDER_DISPLACED)
|
|
var/falsewall_type = text2path("/obj/structure/falsewall/[M]")
|
|
if(!falsewall_type)
|
|
to_chat(user, span_warning("You can't seem to figure out how to make a false wall with [S]!"))
|
|
return
|
|
if(S.get_amount() < 2)
|
|
to_chat(user, span_warning("You need at least two sheets to create a false wall!"))
|
|
return
|
|
if(do_after(user, 20, target = src))
|
|
if(S.get_amount() < 2)
|
|
return
|
|
S.use(2)
|
|
to_chat(user, span_notice("You create a false wall. Push on it to open or close the passage."))
|
|
var/obj/structure/falsewall/FW = new falsewall_type (loc)
|
|
transfer_fingerprints_to(FW)
|
|
qdel(src)
|
|
return
|
|
else
|
|
if(S.get_amount() < 2)
|
|
to_chat(user, span_warning("You need at least two sheets to add plating!"))
|
|
return
|
|
to_chat(user, span_notice("You start adding plating..."))
|
|
if (do_after(user, 40, target = src))
|
|
if(S.get_amount() < 2)
|
|
return
|
|
S.use(2)
|
|
to_chat(user, span_notice("You add the plating."))
|
|
var/turf/T = get_turf(src)
|
|
if(S.walltype)
|
|
T.PlaceOnTop(S.walltype)
|
|
else
|
|
var/turf/newturf = T.PlaceOnTop(/turf/closed/wall/material)
|
|
var/list/material_list = list()
|
|
if(S.material_type)
|
|
material_list[GET_MATERIAL_REF(S.material_type)] = MINERAL_MATERIAL_AMOUNT * 2
|
|
if(material_list)
|
|
newturf.set_custom_materials(material_list)
|
|
|
|
transfer_fingerprints_to(T)
|
|
qdel(src)
|
|
return
|
|
|
|
add_hiddenprint(user)
|
|
|
|
else if(istype(W, /obj/item/pipe))
|
|
var/obj/item/pipe/P = W
|
|
if (P.pipe_type in list(0, 1, 5)) //simple pipes, simple bends, and simple manifolds.
|
|
if(!user.transferItemToLoc(P, drop_location()))
|
|
return
|
|
to_chat(user, span_notice("You fit the pipe into \the [src]."))
|
|
else
|
|
return ..()
|
|
|
|
// Screwdriver behavior for girders
|
|
/obj/structure/girder/screwdriver_act(mob/user, obj/item/tool)
|
|
if(..())
|
|
return TRUE
|
|
|
|
. = FALSE
|
|
if(state == GIRDER_DISPLACED)
|
|
user.visible_message(span_warning("[user] disassembles the girder."),
|
|
span_notice("You start to disassemble the girder..."),
|
|
span_hear("You hear clanking and banging noises."))
|
|
if(tool.use_tool(src, user, 40, volume=100))
|
|
if(state != GIRDER_DISPLACED)
|
|
return
|
|
state = GIRDER_DISASSEMBLED
|
|
to_chat(user, span_notice("You disassemble the girder."))
|
|
var/obj/item/stack/sheet/iron/M = new (loc, 2)
|
|
if (!QDELETED(M))
|
|
M.add_fingerprint(user)
|
|
qdel(src)
|
|
return TRUE
|
|
|
|
else if(state == GIRDER_REINF)
|
|
to_chat(user, span_notice("You start unsecuring support struts..."))
|
|
if(tool.use_tool(src, user, 40, volume=100))
|
|
if(state != GIRDER_REINF)
|
|
return
|
|
to_chat(user, span_notice("You unsecure the support struts."))
|
|
state = GIRDER_REINF_STRUTS
|
|
return TRUE
|
|
|
|
else if(state == GIRDER_REINF_STRUTS)
|
|
to_chat(user, span_notice("You start securing support struts..."))
|
|
if(tool.use_tool(src, user, 40, volume=100))
|
|
if(state != GIRDER_REINF_STRUTS)
|
|
return
|
|
to_chat(user, span_notice("You secure the support struts."))
|
|
state = GIRDER_REINF
|
|
return TRUE
|
|
|
|
// Wirecutter behavior for girders
|
|
/obj/structure/girder/wirecutter_act(mob/user, obj/item/tool)
|
|
. = ..()
|
|
if(state == GIRDER_REINF_STRUTS)
|
|
to_chat(user, span_notice("You start removing the inner grille..."))
|
|
if(tool.use_tool(src, user, 40, volume=100))
|
|
to_chat(user, span_notice("You remove the inner grille."))
|
|
new /obj/item/stack/sheet/plasteel(get_turf(src))
|
|
var/obj/structure/girder/G = new (loc)
|
|
transfer_fingerprints_to(G)
|
|
qdel(src)
|
|
return TRUE
|
|
|
|
/obj/structure/girder/wrench_act(mob/user, obj/item/tool)
|
|
. = ..()
|
|
if(state == GIRDER_DISPLACED)
|
|
if(!isfloorturf(loc))
|
|
to_chat(user, span_warning("A floor must be present to secure the girder!"))
|
|
|
|
to_chat(user, span_notice("You start securing the girder..."))
|
|
if(tool.use_tool(src, user, 40, volume=100))
|
|
to_chat(user, span_notice("You secure the girder."))
|
|
var/obj/structure/girder/G = new (loc)
|
|
transfer_fingerprints_to(G)
|
|
qdel(src)
|
|
return TRUE
|
|
else if(state == GIRDER_NORMAL && can_displace)
|
|
to_chat(user, span_notice("You start unsecuring the girder..."))
|
|
if(tool.use_tool(src, user, 40, volume=100))
|
|
to_chat(user, span_notice("You unsecure the girder."))
|
|
var/obj/structure/girder/displaced/D = new (loc)
|
|
transfer_fingerprints_to(D)
|
|
qdel(src)
|
|
return TRUE
|
|
|
|
/obj/structure/girder/CanAllowThrough(atom/movable/mover, border_dir)
|
|
. = ..()
|
|
if((mover.pass_flags & PASSGRILLE) || istype(mover, /obj/projectile))
|
|
return prob(girderpasschance)
|
|
|
|
/obj/structure/girder/CanAStarPass(obj/item/card/id/ID, to_dir, atom/movable/caller)
|
|
. = !density
|
|
if(istype(caller))
|
|
. = . || (caller.pass_flags & PASSGRILLE)
|
|
|
|
/obj/structure/girder/deconstruct(disassembled = TRUE)
|
|
if(!(flags_1 & NODECONSTRUCT_1))
|
|
var/remains = pick(/obj/item/stack/rods, /obj/item/stack/sheet/iron)
|
|
new remains(loc)
|
|
qdel(src)
|
|
|
|
/obj/structure/girder/narsie_act()
|
|
new /obj/structure/girder/cult(loc)
|
|
qdel(src)
|
|
|
|
/obj/structure/girder/displaced
|
|
name = "displaced girder"
|
|
icon_state = "displaced"
|
|
anchored = FALSE
|
|
state = GIRDER_DISPLACED
|
|
girderpasschance = 25
|
|
max_integrity = 120
|
|
|
|
/obj/structure/girder/reinforced
|
|
name = "reinforced girder"
|
|
icon_state = "reinforced"
|
|
state = GIRDER_REINF
|
|
girderpasschance = 0
|
|
max_integrity = 350
|
|
|
|
|
|
|
|
//////////////////////////////////////////// cult girder //////////////////////////////////////////////
|
|
|
|
/obj/structure/girder/cult
|
|
name = "runed girder"
|
|
desc = "Framework made of a strange and shockingly cold metal. It doesn't seem to have any bolts."
|
|
icon = 'icons/obj/cult/structures.dmi'
|
|
icon_state= "cultgirder"
|
|
can_displace = FALSE
|
|
|
|
/obj/structure/girder/cult/attackby(obj/item/W, mob/user, params)
|
|
add_fingerprint(user)
|
|
if(W.tool_behaviour == TOOL_WELDER)
|
|
if(!W.tool_start_check(user, amount=0))
|
|
return
|
|
|
|
to_chat(user, span_notice("You start slicing apart the girder..."))
|
|
if(W.use_tool(src, user, 40, volume=50))
|
|
to_chat(user, span_notice("You slice apart the girder."))
|
|
var/obj/item/stack/sheet/runed_metal/R = new(drop_location(), 1)
|
|
transfer_fingerprints_to(R)
|
|
qdel(src)
|
|
|
|
else if(istype(W, /obj/item/stack/sheet/runed_metal))
|
|
var/obj/item/stack/sheet/runed_metal/R = W
|
|
if(R.get_amount() < 1)
|
|
to_chat(user, span_warning("You need at least one sheet of runed metal to construct a runed wall!"))
|
|
return
|
|
user.visible_message(span_notice("[user] begins laying runed metal on [src]..."), span_notice("You begin constructing a runed wall..."))
|
|
if(do_after(user, 50, target = src))
|
|
if(R.get_amount() < 1)
|
|
return
|
|
user.visible_message(span_notice("[user] plates [src] with runed metal."), span_notice("You construct a runed wall."))
|
|
R.use(1)
|
|
var/turf/T = get_turf(src)
|
|
T.PlaceOnTop(/turf/closed/wall/mineral/cult)
|
|
qdel(src)
|
|
|
|
else
|
|
return ..()
|
|
|
|
/obj/structure/girder/cult/narsie_act()
|
|
return
|
|
|
|
/obj/structure/girder/cult/deconstruct(disassembled = TRUE)
|
|
if(!(flags_1 & NODECONSTRUCT_1))
|
|
new /obj/item/stack/sheet/runed_metal(drop_location(), 1)
|
|
qdel(src)
|
|
|
|
/obj/structure/girder/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd)
|
|
switch(the_rcd.mode)
|
|
if(RCD_FLOORWALL)
|
|
return rcd_result_with_memory(
|
|
list("mode" = RCD_FLOORWALL, "delay" = 2 SECONDS, "cost" = 8),
|
|
get_turf(src), RCD_MEMORY_WALL,
|
|
)
|
|
if(RCD_DECONSTRUCT)
|
|
return list("mode" = RCD_DECONSTRUCT, "delay" = 20, "cost" = 13)
|
|
return FALSE
|
|
|
|
/obj/structure/girder/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode)
|
|
var/turf/T = get_turf(src)
|
|
switch(passed_mode)
|
|
if(RCD_FLOORWALL)
|
|
to_chat(user, span_notice("You finish a wall."))
|
|
T.PlaceOnTop(/turf/closed/wall)
|
|
qdel(src)
|
|
return TRUE
|
|
if(RCD_DECONSTRUCT)
|
|
to_chat(user, span_notice("You deconstruct the girder."))
|
|
qdel(src)
|
|
return TRUE
|
|
return FALSE
|
|
|
|
/obj/structure/girder/bronze
|
|
name = "wall gear"
|
|
desc = "A girder made out of sturdy bronze, made to resemble a gear."
|
|
icon_state = "wall_gear"
|
|
can_displace = FALSE
|
|
|
|
/obj/structure/girder/bronze/attackby(obj/item/W, mob/living/user, params)
|
|
add_fingerprint(user)
|
|
if(W.tool_behaviour == TOOL_WELDER)
|
|
if(!W.tool_start_check(user, amount = 0))
|
|
return
|
|
to_chat(user, span_notice("You start slicing apart [src]..."))
|
|
if(W.use_tool(src, user, 40, volume=50))
|
|
to_chat(user, span_notice("You slice apart [src]."))
|
|
var/obj/item/stack/sheet/bronze/B = new(drop_location(), 2)
|
|
transfer_fingerprints_to(B)
|
|
qdel(src)
|
|
|
|
else if(istype(W, /obj/item/stack/sheet/bronze))
|
|
var/obj/item/stack/sheet/bronze/B = W
|
|
if(B.get_amount() < 2)
|
|
to_chat(user, span_warning("You need at least two bronze sheets to build a bronze wall!"))
|
|
return
|
|
user.visible_message(span_notice("[user] begins plating [src] with bronze..."), span_notice("You begin constructing a bronze wall..."))
|
|
if(do_after(user, 50, target = src))
|
|
if(B.get_amount() < 2)
|
|
return
|
|
user.visible_message(span_notice("[user] plates [src] with bronze!"), span_notice("You construct a bronze wall."))
|
|
B.use(2)
|
|
var/turf/T = get_turf(src)
|
|
T.PlaceOnTop(/turf/closed/wall/mineral/bronze)
|
|
qdel(src)
|
|
|
|
else
|
|
return ..()
|