mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-16 12:22:42 +00:00
Refactored the attack proc signature. Added signals and components for the attack proc. Added signals and components for the attackby proc. Adjusted some leftover attackby procs signatures. Added grep test to ensure people don't keep adding attack/attackby procs with the wrong signature.
84 lines
3.5 KiB
Plaintext
84 lines
3.5 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, is_adjacent, infix, suffix, show_extended)
|
|
. = ..()
|
|
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/attacking_item, mob/user, params)
|
|
if(attacking_item.iswrench())
|
|
switch(state)
|
|
if(ECD_LOOSE)
|
|
state = ECD_BOLTED
|
|
attacking_item.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
|
|
attacking_item.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(attacking_item.iswelder())
|
|
var/obj/item/weldingtool/WT = attacking_item
|
|
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(attacking_item.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(attacking_item.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."))
|
|
|
|
#undef ECD_LOOSE
|
|
#undef ECD_BOLTED
|
|
#undef ECD_WELDED
|