Upgrades the Fission360 app to be more on par to the old pinpointer (#63045)

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
This commit is contained in:
MrMelbert
2021-11-26 12:14:13 -08:00
committed by GitHub
co-authored by Mothblocks
parent 324117d637
commit 2f1945d41b
7 changed files with 101 additions and 30 deletions
+1 -12
View File
@@ -1335,18 +1335,7 @@
id = "infiltrator_starboardblast";
name = "Infiltrator Starboard Hatch"
},
/obj/docking_port/mobile{
dheight = 1;
dir = 8;
dwidth = 12;
height = 17;
hidden = 1;
id = "syndicate";
movement_force = list("KNOCKDOWN" = 0, "THROW" = 0);
name = "syndicate infiltrator";
port_direction = 4;
width = 23
},
/obj/docking_port/mobile/infiltrator,
/obj/structure/fans/tiny,
/obj/effect/turf_decal/box,
/obj/machinery/button/door/directional/north{
+1 -12
View File
@@ -428,18 +428,7 @@
id = "smindicate";
name = "outer blast door"
},
/obj/docking_port/mobile{
dheight = 1;
dir = 8;
dwidth = 12;
height = 17;
hidden = 1;
id = "syndicate";
movement_force = list("KNOCKDOWN" = 0, "THROW" = 0);
name = "syndicate infiltrator";
port_direction = 4;
width = 23
},
/obj/docking_port/mobile/infiltrator,
/obj/structure/fans/tiny,
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -55,3 +55,8 @@
#define COMSIG_ALARM_CLEAR(alarm_type) "!alarm_clear [alarm_type]"
///global mob logged in signal! (/mob/added_player)
#define COMSIG_GLOB_MOB_LOGGED_IN "!mob_logged_in"
/// global signal sent when a nuclear device is armed (/obj/machinery/nuclearbomb/nuke/exploding_nuke)
#define COMSIG_GLOB_NUKE_DEVICE_ARMED "!nuclear_device_armed"
/// global signal sent when a nuclear device is disarmed (/obj/machinery/nuclearbomb/nuke/disarmed_nuke)
#define COMSIG_GLOB_NUKE_DEVICE_DISARMED "!nuclear_device_disarmed"
@@ -424,6 +424,9 @@ GLOBAL_VAR(station_nuke_source)
detonation_timer = world.time + (timer_set * 10)
for(var/obj/item/pinpointer/nuke/syndicate/S in GLOB.pinpointer_list)
S.switch_mode_to(TRACK_INFILTRATOR)
SEND_GLOBAL_SIGNAL(COMSIG_GLOB_NUKE_DEVICE_ARMED, src)
countdown.start()
set_security_level("delta")
else
@@ -435,6 +438,9 @@ GLOBAL_VAR(station_nuke_source)
S.switch_mode_to(initial(S.mode))
S.alert = FALSE
countdown.stop()
SEND_GLOBAL_SIGNAL(COMSIG_GLOB_NUKE_DEVICE_DISARMED, src)
update_appearance()
/obj/machinery/nuclearbomb/proc/get_time_left()
@@ -269,6 +269,27 @@
arrowstyle = "ntosradarpointerS.png"
pointercolor = "red"
/datum/computer_file/program/radar/fission360/run_program(mob/living/user)
. = ..()
if(!.)
return
RegisterSignal(SSdcs, COMSIG_GLOB_NUKE_DEVICE_ARMED, .proc/on_nuke_armed)
if(computer)
RegisterSignal(computer, COMSIG_PARENT_EXAMINE, .proc/on_examine)
/datum/computer_file/program/radar/fission360/kill_program(forced)
UnregisterSignal(SSdcs, COMSIG_GLOB_NUKE_DEVICE_ARMED)
if(computer)
UnregisterSignal(computer, COMSIG_PARENT_EXAMINE)
return ..()
/datum/computer_file/program/radar/fission360/Destroy()
UnregisterSignal(SSdcs, COMSIG_GLOB_NUKE_DEVICE_ARMED)
if(computer)
UnregisterSignal(computer, COMSIG_PARENT_EXAMINE)
return ..()
/datum/computer_file/program/radar/fission360/find_atom()
return SSpoints_of_interest.get_poi_atom_by_ref(selected)
@@ -277,17 +298,57 @@
return
next_scan = world.time + (2 SECONDS)
objects = list()
for(var/i in GLOB.nuke_list)
var/obj/machinery/nuclearbomb/nuke = i
var/list/nukeinfo = list(
// All the nukes
for(var/obj/machinery/nuclearbomb/nuke as anything in GLOB.nuke_list)
var/list/nuke_info = list(
ref = REF(nuke),
name = nuke.name,
)
objects += list(nukeinfo)
objects += list(nuke_info)
// Dat fukken disk
var/obj/item/disk/nuclear/disk = locate() in SSpoints_of_interest.real_nuclear_disks
var/list/nukeinfo = list(
var/list/disk_info = list(
ref = REF(disk),
name = "Nuke Auth. Disk",
)
objects += list(nukeinfo)
objects += list(disk_info)
// The infiltrator
var/obj/docking_port/mobile/infiltrator = SSshuttle.getShuttle("syndicate")
var/list/ship_info = list(
ref = REF(infiltrator),
name = "Infiltrator",
)
objects += list(ship_info)
/*
* Signal proc for [COMSIG_PARENT_EXAMINE], registered on the computer.
* Shows how long any armed nukes are to detonating.
*/
/datum/computer_file/program/radar/fission360/proc/on_examine(datum/source, mob/user, list/examine_list)
SIGNAL_HANDLER
for(var/obj/machinery/nuclearbomb/bomb as anything in GLOB.nuke_list)
if(bomb.timing)
examine_list += span_danger("Extreme danger. Arming signal detected. Time remaining: [bomb.get_time_left()].")
/*
* Signal proc for [COMSIG_GLOB_NUKE_DEVICE_ARMED].
* Warns anyone nearby or holding the computer that a nuke was armed.
*/
/datum/computer_file/program/radar/fission360/proc/on_nuke_armed(datum/source, obj/machinery/nuclearbomb/bomb)
SIGNAL_HANDLER
if(!computer)
return
playsound(computer, 'sound/items/nuke_toy_lowpower.ogg', 50, FALSE)
if(isliving(computer.loc))
to_chat(computer.loc, span_userdanger("Your [computer.name] vibrates and lets out an ominous alarm. Uh oh."))
else
computer.audible_message(
span_danger("[computer] vibrates and lets out an ominous alarm. Uh oh."),
span_notice("[computer] begins to vibrate rapidly. Wonder what that means..."),
)
+20
View File
@@ -0,0 +1,20 @@
/// The syndicate infiltrator shuttle port.
/obj/docking_port/mobile/infiltrator
name = "syndicate infiltrator"
id = "syndicate"
movement_force = list("KNOCKDOWN" = 0, "THROW" = 0)
hidden = TRUE
dheight = 1
dwidth = 12
height = 17
width = 23
dir = 8
port_direction = 4
/obj/docking_port/mobile/infiltrator/Initialize(mapload)
. = ..()
SSpoints_of_interest.make_point_of_interest(src)
/obj/docking_port/mobile/infiltrator/Destroy(force)
SSpoints_of_interest.remove_point_of_interest(src)
return ..()
+1
View File
@@ -3687,6 +3687,7 @@
#include "code\modules\shuttle\elevator.dm"
#include "code\modules\shuttle\emergency.dm"
#include "code\modules\shuttle\ferry.dm"
#include "code\modules\shuttle\infiltrator.dm"
#include "code\modules\shuttle\manipulator.dm"
#include "code\modules\shuttle\medisim.dm"
#include "code\modules\shuttle\monastery.dm"