mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-30 07:27:57 +01:00
Makes APCs Less Annoying to Construct/Deconstruct (#28602)
* UNLIMITED POOOWWWWEEERRR! * Update apc_construction.dm * Update apc_construction.dm * Update apc_construction.dm
This commit is contained in:
@@ -16,7 +16,6 @@
|
||||
//electronics_state
|
||||
#define APC_ELECTRONICS_NONE 0
|
||||
#define APC_ELECTRONICS_INSTALLED 1
|
||||
#define APC_ELECTRONICS_SECURED 2
|
||||
|
||||
/// Power channel is off, anything connected to it is not powered, cannot be set manually by players
|
||||
#define APC_CHANNEL_SETTING_OFF 0
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
GLOB.apcs = sortAtom(GLOB.apcs)
|
||||
return
|
||||
|
||||
electronics_state = APC_ELECTRONICS_SECURED
|
||||
electronics_state = APC_ELECTRONICS_INSTALLED
|
||||
// is starting with a power cell installed, create it and set its charge level
|
||||
if(cell_type)
|
||||
cell = new /obj/item/stock_parts/cell/upgraded(src)
|
||||
@@ -328,6 +328,8 @@
|
||||
electronics_state = APC_ELECTRONICS_INSTALLED
|
||||
locked = FALSE
|
||||
to_chat(user, "<span class='notice'>You place [used] inside the frame.</span>")
|
||||
stat &= ~MAINT
|
||||
update_icon()
|
||||
qdel(used)
|
||||
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
@@ -10,98 +10,110 @@
|
||||
if(opened != APC_COVER_OFF)
|
||||
opened = APC_COVER_OFF
|
||||
coverlocked = FALSE
|
||||
visible_message("<span class='warning'>The APC cover is knocked down!</span>")
|
||||
visible_message(
|
||||
"<span class='warning'>The APC cover falls off!</span>",
|
||||
"<span class='warning'>You hear a small flat object falling to the floor!</span>"
|
||||
)
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/machinery/power/apc/crowbar_act(mob/living/user, obj/item/I)
|
||||
. = TRUE
|
||||
if(!I.tool_start_check(src, user, 0))
|
||||
return
|
||||
|
||||
if(opened) // a) on open apc
|
||||
if(electronics_state == APC_ELECTRONICS_INSTALLED)
|
||||
if(terminal)
|
||||
to_chat(user, "<span class='warning'>Disconnect the wires first!</span>")
|
||||
return
|
||||
|
||||
to_chat(user, "<span class='notice'>You start trying to remove the APC electronics...</span>" )
|
||||
if(I.use_tool(src, user, 50, volume = I.tool_volume))
|
||||
if(has_electronics())
|
||||
electronics_state = APC_ELECTRONICS_NONE
|
||||
if(stat & BROKEN)
|
||||
user.visible_message(\
|
||||
"[user.name] has broken the APC electronics inside [name]!",
|
||||
user.visible_message(
|
||||
"<span class='notice'>[user.name] rips out the broken the APC electronics inside [name]!</span>",
|
||||
"<span class='notice'>You break the charred APC electronics and remove the remains.</span>",
|
||||
"<span class='italics'>You hear a crack.</span>")
|
||||
"<span class='warning'>You hear metallic levering and a crack.</span>")
|
||||
stat |= MAINT
|
||||
update_icon()
|
||||
return
|
||||
|
||||
//SSticker.mode:apcs-- //XSI said no and I agreed. -rastaf0
|
||||
else if(emagged) // We emag board, not APC's frame
|
||||
if(emagged) // We emag board, not APC's frame
|
||||
emagged = FALSE
|
||||
user.visible_message(
|
||||
"[user.name] has discarded the shorted APC electronics from [name]!",
|
||||
"<span class='notice'>You discarded the shorted board.</span>")
|
||||
"<span class='notice'>[user.name] has discarded the shorted APC electronics from [name]!</span>",
|
||||
"<span class='notice'>You discarded the shorted board.</span>",
|
||||
"<span class='warning'>You hear metallic levering.</span>"
|
||||
)
|
||||
stat |= MAINT
|
||||
update_icon()
|
||||
return
|
||||
else if(malfhack) // AI hacks board, not APC's frame
|
||||
|
||||
if(malfhack) // AI hacks board, not APC's frame
|
||||
user.visible_message(\
|
||||
"[user.name] has discarded the strangely programmed APC electronics from [name]!",
|
||||
"<span class='notice'>You discarded the strangely programmed board.</span>")
|
||||
"<span class='notice'>[user.name] has discarded the strangely programmed APC electronics from [name]!</span>",
|
||||
"<span class='notice'>You discarded the strangely programmed board.</span>",
|
||||
"<span class='warning'>You hear metallic levering.</span>"
|
||||
)
|
||||
malfai = null
|
||||
malfhack = FALSE
|
||||
stat |= MAINT
|
||||
update_icon()
|
||||
return
|
||||
else
|
||||
user.visible_message(\
|
||||
"[user.name] has removed the APC electronics from [name]!",
|
||||
"<span class='notice'>You remove the APC electronics.</span>")
|
||||
new /obj/item/apc_electronics(loc)
|
||||
return
|
||||
else if(opened != APC_COVER_OFF) //cover isn't removed
|
||||
|
||||
user.visible_message(\
|
||||
"<span class='notice'>[user.name] has removed the APC electronics from [name]!</span>",
|
||||
"<span class='notice'>You remove the APC electronics.</span>",
|
||||
"<span class='warning'>You hear metallic levering.</span>"
|
||||
)
|
||||
new /obj/item/apc_electronics(loc)
|
||||
stat |= MAINT
|
||||
update_icon()
|
||||
return
|
||||
|
||||
if(opened != APC_COVER_OFF) //cover isn't removed
|
||||
opened = APC_CLOSED
|
||||
coverlocked = TRUE //closing cover relocks it
|
||||
update_icon()
|
||||
return
|
||||
else if(!(stat & BROKEN)) // b) on closed and not broken APC
|
||||
|
||||
if(!(stat & BROKEN)) // b) on closed and not broken APC
|
||||
if(coverlocked && !(stat & MAINT)) // locked...
|
||||
to_chat(user, "<span class='warning'>The cover is locked and cannot be opened!</span>")
|
||||
return
|
||||
else if(panel_open) // wires are exposed
|
||||
|
||||
if(panel_open) // wires are exposed
|
||||
to_chat(user, "<span class='warning'>Exposed wires prevents you from opening it!</span>")
|
||||
return
|
||||
else
|
||||
opened = APC_OPENED
|
||||
update_icon()
|
||||
|
||||
opened = APC_OPENED
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/power/apc/screwdriver_act(mob/living/user, obj/item/I)
|
||||
. = TRUE
|
||||
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
|
||||
return
|
||||
else if(opened)
|
||||
if(cell && !(stat & MAINT))
|
||||
to_chat(user, "<span class='warning'>Close the APC first!</span>") //Less hints more mystery!
|
||||
return
|
||||
else
|
||||
if(electronics_state == APC_ELECTRONICS_INSTALLED)
|
||||
electronics_state = APC_ELECTRONICS_SECURED
|
||||
stat &= ~MAINT
|
||||
to_chat(user, "<span class='notice'>You screw the circuit electronics into place.</span>")
|
||||
else if(electronics_state == APC_ELECTRONICS_SECURED)
|
||||
electronics_state = APC_ELECTRONICS_INSTALLED
|
||||
stat |= MAINT
|
||||
to_chat(user, "<span class='notice'>You unfasten the electronics.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>There is nothing to secure!</span>")
|
||||
return
|
||||
update_icon()
|
||||
else if(emagged)
|
||||
to_chat(user, "<span class='warning'>The interface is broken!</span>")
|
||||
else
|
||||
panel_open = !panel_open
|
||||
to_chat(user, "The wires have been [panel_open ? "exposed" : "unexposed"]")
|
||||
update_icon()
|
||||
|
||||
if(opened)
|
||||
to_chat(user, "<span class='warning'>Close the APC first!</span>") //Less hints more mystery!
|
||||
return
|
||||
|
||||
if(emagged)
|
||||
to_chat(user, "<span class='warning'>The interface is broken!</span>")
|
||||
return
|
||||
|
||||
panel_open = !panel_open
|
||||
to_chat(user, "<span class='notice'>The wires have been [panel_open ? "exposed" : "unexposed"]</span>")
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/power/apc/wirecutter_act(mob/living/user, obj/item/I)
|
||||
. = TRUE
|
||||
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
|
||||
return
|
||||
|
||||
if(panel_open && !opened)
|
||||
wires.Interact(user)
|
||||
else if(terminal && opened)
|
||||
@@ -111,25 +123,32 @@
|
||||
. = TRUE
|
||||
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
|
||||
return
|
||||
|
||||
if(panel_open && !opened)
|
||||
wires.Interact(user)
|
||||
|
||||
/obj/machinery/power/apc/welder_act(mob/user, obj/item/I)
|
||||
if(!opened || has_electronics() || terminal)
|
||||
return
|
||||
|
||||
. = TRUE
|
||||
if(!I.tool_use_check(user, 3))
|
||||
return
|
||||
|
||||
WELDER_ATTEMPT_SLICING_MESSAGE
|
||||
if(I.use_tool(src, user, 50, amount = 3, volume = I.tool_volume))
|
||||
if((stat & BROKEN) || opened == APC_COVER_OFF)
|
||||
new /obj/item/stack/sheet/metal(loc)
|
||||
user.visible_message(\
|
||||
"[user.name] has cut [src] apart with [I].",\
|
||||
"<span class='notice'>You disassembled the broken APC frame.</span>")
|
||||
"<span class='notice'>[user.name] has cut [src] apart with [I].</span>",
|
||||
"<span class='notice'>You disassembled the broken APC frame.</span>",
|
||||
"<span class='warning'>You hear welding.</span>"
|
||||
)
|
||||
else
|
||||
new /obj/item/mounted/frame/apc_frame(loc)
|
||||
user.visible_message(\
|
||||
"[user.name] has cut [src] from the wall with [I].",\
|
||||
"<span class='notice'>You cut the APC frame from the wall.</span>")
|
||||
"<span class='notice'>[user.name] has cut [src] from the wall with [I].</span>",
|
||||
"<span class='notice'>You cut the APC frame from the wall.</span>",
|
||||
"<span class='warning'>You hear welding.</span>"
|
||||
)
|
||||
qdel(src)
|
||||
|
||||
Reference in New Issue
Block a user