Files
Aurora.3/code/game/objects/structures/ECD.dm
Cody Brittain ddb14f4036 Planes & Layers part 1: The Re-Layering Redux (#18741)
This is part 1 of a project to, eventually, bring the render planes
system from /tg/ and bay into Aurora. This is a prerequisite and blocker
for many things the development team and community want to have, and
this was long overdue.

Many objects have been re-assigned layers, which are now thoroughly
defined. Maps have had their custom layer defines purged, as we should
be moving away from this in favor of saner definitions in the base
items.

This should be a test-merge due to the sheer amount of layers changed,
which will very likely create issues that I cannot possibly discover and
debug in a reasonable amount of time myself.

---------

Co-authored-by: Cody Brittain <cbrittain10@live.com>
2024-04-01 14:50:27 +00:00

85 lines
3.3 KiB
Plaintext

#define ECD_LOOSE 0
#define ECD_BOLTED 1
#define ECD_WELDED 2
/obj/structure/ecd
name = "Electronic Countermeasures Device"
desc = "A large, heavy duty device in the shape of a cylinder. There's something about this piece of tech that feels rather alien. Inside, something hums softly."
icon = 'icons/obj/structure/ECD.dmi'
icon_state = "ECD"
anchored = TRUE
density = TRUE
var/state = ECD_WELDED
slowdown = 10
layer = ABOVE_HUMAN_LAYER
/obj/structure/ecd/examine(mob/living/user, distance)
. = ..()
switch(state)
if(ECD_LOOSE)
to_chat(user, SPAN_NOTICE("\The [src] isn't attached to anything."))
if(ECD_BOLTED)
to_chat(user, SPAN_NOTICE("\The [src] is bolted to the floor."))
if(ECD_WELDED)
to_chat(user, SPAN_NOTICE("\The [src] is bolted and welded to the floor."))
if(user.isSynthetic())
to_chat(user, SPAN_NOTICE("\The [src] does not seem to be doing anything, but you can feel it. A signal, beyond anything you can consciously understand, weaving and scratching a shield around the back of your mind."))
/obj/structure/ecd/attackby(obj/item/W, mob/user)
if(W.iswrench())
switch(state)
if(ECD_LOOSE)
state = ECD_BOLTED
W.play_tool_sound(get_turf(src), 75)
user.visible_message(SPAN_NOTICE("\The [user] secures \the [src] to the floor."), \
SPAN_NOTICE("You secure \the [src]'s external reinforcing bolts to the floor."), \
SPAN_WARNING("You hear a ratcheting noise."))
anchored = TRUE
if(ECD_BOLTED)
state = ECD_LOOSE
W.play_tool_sound(get_turf(src), 75)
user.visible_message(SPAN_NOTICE("\The [user] unsecures \the [src]'s reinforcing bolts from the floor."), \
SPAN_NOTICE("You undo \the [src]'s external reinforcing bolts."), \
SPAN_WARNING("You hear a ratcheting noise."))
anchored = FALSE
if(ECD_WELDED)
to_chat(user, SPAN_WARNING("\The [src] needs to be unwelded from the floor."))
return
if(W.iswelder())
var/obj/item/weldingtool/WT = W
switch(state)
if(ECD_LOOSE)
to_chat(user, SPAN_WARNING("\The [src] needs to be wrenched to the floor."))
if(ECD_BOLTED)
if(WT.use(0, user))
playsound(get_turf(src), 'sound/items/welder_pry.ogg', 50, TRUE)
user.visible_message(SPAN_NOTICE("\The [user] starts to weld \the [src] to the floor."), \
SPAN_NOTICE("You start to weld \the [src] to the floor."), \
SPAN_WARNING("You hear the sound of metal being welded."))
if(W.use_tool(src, user, 20, volume = 50))
if(!src || !WT.isOn())
return
state = ECD_WELDED
to_chat(user, SPAN_NOTICE("You weld \the [src] to the floor."))
else
to_chat(user, SPAN_WARNING("You need more welding fuel to complete this task."))
if(ECD_WELDED)
if(WT.use(0, user))
playsound(get_turf(src), 'sound/items/welder_pry.ogg', 50, TRUE)
user.visible_message(SPAN_NOTICE("\The [user] starts to cut \the [src] free from the floor."), \
SPAN_NOTICE("You start to cut \the [src] free from the floor."), \
SPAN_WARNING("You hear the sound of metal being welded."))
if(W.use_tool(src, user, 20, volume = 50))
if(!src || !WT.isOn())
return
state = ECD_BOLTED
to_chat(user, SPAN_NOTICE("You cut \the [src] free from the floor."))
else
to_chat(user, SPAN_WARNING("You need more welding fuel to complete this task."))
return
#undef ECD_LOOSE
#undef ECD_BOLTED
#undef ECD_WELDED