mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 07:08:00 +01:00
Adds a second boom wire to payload bombs. (#73021)
## About The Pull Request Adds a second detonation wire onto payload bombs, bringing the total number of wires to 6. ## Why It's Good For The Game As it stands, there are two wires capable of neutralizing the bomb in most circumstances and one detonation wire. Unbolting a bomb from the floor and spacing it is as effective a solution to a bomb as defusing it until the explosion is imminent (You can tell by the lack of defusals which are performed once the bomb can be moved). Even unbolting it with 10 seconds to spare gives the crew a great deal of control over where the explosion occurs. This itself isn't an issue because shoving a bomb out into space and hearing it explode off screen is pretty badass. The issue is that with 2 wires capable of more or less defusing the bomb and 1 which causes the explosion, you have a 2/3 chance to save the day while blindly cutting wires. A second wire brings these odds to a thrilling 50/50! The proceed wire used to detonate the bomb when cut but will now disable the examinable countdown timer, leaving only the beeping to indicate how close the bomb is to exploding. This is reset once the defusal wire is cut. ## Changelog 🆑 balance: There's a second detonation wire on payload bombs now. balance: Cutting the proceed wire no longer detonates the bomb but instead deactivates the countdown timer on examine. This is reset once the bomb is defused /🆑
This commit is contained in:
@@ -13,7 +13,8 @@
|
||||
#define WIRE_BACKUP2 "Auxiliary Power 2"
|
||||
#define WIRE_BEACON "Beacon"
|
||||
#define WIRE_BOLTS "Bolts"
|
||||
#define WIRE_BOOM "Boom"
|
||||
#define WIRE_BOOM "Boom Wire 1"
|
||||
#define WIRE_BOOM2 "Boom Wire 2"
|
||||
#define WIRE_CAMERA "Camera"
|
||||
#define WIRE_CONTRABAND "Contraband"
|
||||
#define WIRE_DELAY "Delay"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
/datum/wires/syndicatebomb/New(atom/holder)
|
||||
wires = list(
|
||||
WIRE_BOOM, WIRE_UNBOLT,
|
||||
WIRE_BOOM, WIRE_BOOM2, WIRE_UNBOLT,
|
||||
WIRE_ACTIVATE, WIRE_DELAY, WIRE_PROCEED
|
||||
)
|
||||
..()
|
||||
@@ -20,7 +20,7 @@
|
||||
/datum/wires/syndicatebomb/on_pulse(wire)
|
||||
var/obj/machinery/syndicatebomb/B = holder
|
||||
switch(wire)
|
||||
if(WIRE_BOOM)
|
||||
if(WIRE_BOOM,WIRE_BOOM2)
|
||||
if(B.active)
|
||||
holder.visible_message(span_danger("[icon2html(B, viewers(holder))] An alarm sounds! It's go-"))
|
||||
B.explode_now = TRUE
|
||||
@@ -72,7 +72,7 @@
|
||||
/datum/wires/syndicatebomb/on_cut(wire, mend)
|
||||
var/obj/machinery/syndicatebomb/B = holder
|
||||
switch(wire)
|
||||
if(WIRE_BOOM)
|
||||
if(WIRE_BOOM,WIRE_BOOM2)
|
||||
if(!mend && B.active)
|
||||
holder.visible_message(span_danger("[icon2html(B, viewers(holder))] An alarm sounds! It's go-"))
|
||||
B.explode_now = TRUE
|
||||
@@ -90,12 +90,9 @@
|
||||
|
||||
if(WIRE_PROCEED)
|
||||
if(!mend && B.active)
|
||||
holder.visible_message(span_danger("[icon2html(B, viewers(holder))] An alarm sounds! It's go-"))
|
||||
B.explode_now = TRUE
|
||||
if(!istype(B.payload, /obj/machinery/syndicatebomb/training))
|
||||
tell_admins(B)
|
||||
if(isliving(usr))
|
||||
add_memory_in_range(B, 7, /datum/memory/bomb_defuse_failure, protagonist = usr, antagonist = B)
|
||||
holder.visible_message(span_danger("[icon2html(B, viewers(holder))] The digital display on the device deactivates."))
|
||||
B.examinable_countdown = FALSE
|
||||
|
||||
|
||||
if(WIRE_ACTIVATE)
|
||||
if(!mend && B.active)
|
||||
@@ -104,6 +101,7 @@
|
||||
B.active = FALSE
|
||||
B.delayedlittle = FALSE
|
||||
B.delayedbig = FALSE
|
||||
B.examinable_countdown = TRUE
|
||||
B.update_appearance()
|
||||
if(isliving(usr))
|
||||
add_memory_in_range(B, 7, /datum/memory/bomb_defuse_success, protagonist = usr, antagonist = B, bomb_time_left = bomb_time_left)
|
||||
|
||||
@@ -44,6 +44,8 @@
|
||||
var/obj/item/bombcore/payload = /obj/item/bombcore/syndicate
|
||||
/// The countdown that'll show up to ghosts regarding the bomb's timer.
|
||||
var/obj/effect/countdown/syndicatebomb/countdown
|
||||
/// Whether the countdown is visible on examine
|
||||
var/examinable_countdown = TRUE
|
||||
|
||||
/obj/machinery/syndicatebomb/proc/try_detonate(ignore_active = FALSE)
|
||||
. = (payload in src) && (active || ignore_active)
|
||||
@@ -114,7 +116,10 @@
|
||||
. = ..()
|
||||
. += {"The patented external shell design is resistant to "probably all" forms of external explosive compression, protecting the electronically-trigged bomb core from accidental early detonation."}
|
||||
. += "A small window reveals some information about the payload: [payload.desc]."
|
||||
. += {"A digital display on it reads "[seconds_remaining()]"."}
|
||||
if(examinable_countdown)
|
||||
. += {"A digital display on it reads "[seconds_remaining()]"."}
|
||||
else
|
||||
. +={"The digital display on it is inactive."}
|
||||
|
||||
/obj/machinery/syndicatebomb/update_icon_state()
|
||||
icon_state = "[initial(icon_state)][active ? "-active" : "-inactive"][open_panel ? "-wires" : ""]"
|
||||
@@ -123,6 +128,7 @@
|
||||
/obj/machinery/syndicatebomb/proc/seconds_remaining()
|
||||
if(active)
|
||||
. = max(0, round((detonation_timer - world.time) / 10))
|
||||
|
||||
else
|
||||
. = timer_set
|
||||
|
||||
|
||||
Reference in New Issue
Block a user