mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 02:09:41 +00:00
Merge pull request #2054 from CHOMPStationBot/upstream-merge-10433
[MIRROR] [MIRROR] Linter Introduction + Cleanup
This commit is contained in:
@@ -3,3 +3,6 @@ macro_redefined = "off"
|
||||
macro_undefined_no_definition = "off"
|
||||
as_local_var = "off"
|
||||
tmp_no_effect = "off"
|
||||
|
||||
[langserver]
|
||||
dreamchecker = true
|
||||
|
||||
@@ -146,7 +146,7 @@ Pipelines + Other Objects -> Pipe network
|
||||
/obj/machinery/atmospherics/proc/reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network)
|
||||
// Used when two pipe_networks are combining
|
||||
|
||||
/obj/machinery/atmospherics/proc/return_network_air(datum/network/reference)
|
||||
/obj/machinery/atmospherics/proc/return_network_air(datum/pipe_network/reference)
|
||||
// Return a list of gas_mixture(s) in the object
|
||||
// associated with reference pipe_network for use in rebuilding the networks gases list
|
||||
// Is permitted to return null
|
||||
|
||||
@@ -145,7 +145,7 @@
|
||||
radio_controller.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
if(frequency)
|
||||
radio_connection = radio_controller.add_object(src, frequency, filter = RADIO_ATMOSIA)
|
||||
radio_connection = radio_controller.add_object(src, frequency, radio_filter = RADIO_ATMOSIA)
|
||||
|
||||
/obj/machinery/atmospherics/binary/passive_gate/proc/broadcast_status()
|
||||
if(!radio_connection)
|
||||
@@ -165,7 +165,7 @@
|
||||
"sigtype" = "status"
|
||||
)
|
||||
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
|
||||
radio_connection.post_signal(src, signal, radio_filter = RADIO_ATMOSIA)
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -121,7 +121,7 @@ Thus, the two variables affect pump operation are set in New():
|
||||
radio_controller.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
if(frequency)
|
||||
radio_connection = radio_controller.add_object(src, frequency, filter = RADIO_ATMOSIA)
|
||||
radio_connection = radio_controller.add_object(src, frequency, radio_filter = RADIO_ATMOSIA)
|
||||
|
||||
/obj/machinery/atmospherics/binary/pump/proc/broadcast_status()
|
||||
if(!radio_connection)
|
||||
@@ -139,7 +139,7 @@ Thus, the two variables affect pump operation are set in New():
|
||||
"sigtype" = "status"
|
||||
)
|
||||
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
|
||||
radio_connection.post_signal(src, signal, radio_filter = RADIO_ATMOSIA)
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ GLOBAL_LIST_EMPTY(shutoff_valves)
|
||||
|
||||
// Breadth-first search for any leaking pipes that we can directly see
|
||||
/obj/machinery/atmospherics/valve/shutoff/proc/find_leaks()
|
||||
var/obj/machinery/atmospherics/list/search = list()
|
||||
var/list/obj/machinery/atmospherics/search = list()
|
||||
|
||||
// We're the leak!
|
||||
if(!node1 || !node2)
|
||||
|
||||
@@ -232,7 +232,7 @@
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/return_network_air(datum/network/reference)
|
||||
/obj/machinery/atmospherics/tvalve/return_network_air(datum/pipe_network/reference)
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/disconnect(obj/machinery/atmospherics/reference)
|
||||
|
||||
@@ -201,7 +201,7 @@
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/valve/return_network_air(datum/network/reference)
|
||||
/obj/machinery/atmospherics/valve/return_network_air(datum/pipe_network/reference)
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/valve/disconnect(obj/machinery/atmospherics/reference)
|
||||
|
||||
@@ -74,7 +74,6 @@ obj/machinery/atmospherics/mains_pipe
|
||||
update_icon()
|
||||
|
||||
proc/burst()
|
||||
..()
|
||||
for(var/obj/machinery/atmospherics/pipe/mains_component/pipe in contents)
|
||||
burst()
|
||||
|
||||
|
||||
31
code/__defines/spaceman_dmm.dm
Normal file
31
code/__defines/spaceman_dmm.dm
Normal file
@@ -0,0 +1,31 @@
|
||||
// Interfaces for the SpacemanDMM linter, define'd to nothing when the linter
|
||||
// is not in use.
|
||||
|
||||
// The SPACEMAN_DMM define is set by the linter and other tooling when it runs.
|
||||
#ifdef SPACEMAN_DMM
|
||||
#define RETURN_TYPE(X) set SpacemanDMM_return_type = X
|
||||
#define SHOULD_CALL_PARENT(X) set SpacemanDMM_should_call_parent = X
|
||||
#define UNLINT(X) SpacemanDMM_unlint(X)
|
||||
#define SHOULD_NOT_OVERRIDE(X) set SpacemanDMM_should_not_override = X
|
||||
#define SHOULD_NOT_SLEEP(X) set SpacemanDMM_should_not_sleep = X
|
||||
#define SHOULD_BE_PURE(X) set SpacemanDMM_should_be_pure = X
|
||||
#define PRIVATE_PROC(X) set SpacemanDMM_private_proc = X
|
||||
#define PROTECTED_PROC(X) set SpacemanDMM_protected_proc = X
|
||||
#define CAN_BE_REDEFINED(X) set SpacemanDMM_can_be_redefined = X
|
||||
#define VAR_FINAL var/SpacemanDMM_final
|
||||
#define VAR_PRIVATE var/SpacemanDMM_private
|
||||
#define VAR_PROTECTED var/SpacemanDMM_protected
|
||||
#else
|
||||
#define RETURN_TYPE(X)
|
||||
#define SHOULD_CALL_PARENT(X)
|
||||
#define UNLINT(X) X
|
||||
#define SHOULD_NOT_OVERRIDE(X)
|
||||
#define SHOULD_NOT_SLEEP(X)
|
||||
#define SHOULD_BE_PURE(X)
|
||||
#define PRIVATE_PROC(X)
|
||||
#define PROTECTED_PROC(X)
|
||||
#define CAN_BE_REDEFINED(X)
|
||||
#define VAR_FINAL var
|
||||
#define VAR_PRIVATE var
|
||||
#define VAR_PROTECTED var
|
||||
#endif
|
||||
@@ -112,7 +112,7 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G
|
||||
// Macro defining the actual code applying our overlays lists to the BYOND overlays list. (I guess a macro for speed)
|
||||
// TODO - I don't really like the location of this macro define. Consider it. ~Leshana
|
||||
#define COMPILE_OVERLAYS(A)\
|
||||
if (TRUE) {\
|
||||
do {\
|
||||
var/list/oo = A.our_overlays;\
|
||||
var/list/po = A.priority_overlays;\
|
||||
if(LAZYLEN(po)){\
|
||||
@@ -130,4 +130,4 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G
|
||||
A.overlays.Cut();\
|
||||
}\
|
||||
A.flags &= ~OVERLAY_QUEUED;\
|
||||
}
|
||||
} while (FALSE)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//Languages/species/whitelist.
|
||||
GLOBAL_LIST_INIT(all_species, list())
|
||||
GLOBAL_LIST_INIT(all_languages, list())
|
||||
GLOBAL_LIST_EMPTY_TYPED(all_species, /datum/species)
|
||||
GLOBAL_LIST_EMPTY_TYPED(all_languages, /datum/language)
|
||||
GLOBAL_LIST_INIT(language_name_conflicts, list())
|
||||
GLOBAL_LIST_INIT(language_keys, list()) // Table of say codes for all languages
|
||||
GLOBAL_LIST_INIT(language_key_conflicts, list())
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
// Otherwise add it and all subtypes that exist on the map to our grand list
|
||||
for(var/areapath in typesof(parentpath))
|
||||
var/area/A = locate(areapath) // Check if it actually exists
|
||||
if(istype(A) && A.z in using_map.player_levels)
|
||||
if(istype(A) && (A.z in using_map.player_levels))
|
||||
grand_list_of_areas += A
|
||||
return grand_list_of_areas
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
return max_z
|
||||
|
||||
/proc/get_area(atom/A)
|
||||
RETURN_TYPE(/area)
|
||||
if(isarea(A))
|
||||
return A
|
||||
var/turf/T = get_turf(A)
|
||||
|
||||
@@ -202,10 +202,12 @@
|
||||
qdel(query_insert)
|
||||
return
|
||||
qdel(query_insert)
|
||||
|
||||
//speaker.dialogue_log += "<b>([time_stamp()])</b> (<b>[speaker]/[speaker.client]</b>) <u>DEADSAY:</u> - <span style=\"color:green\">[text]</span>"
|
||||
//GLOB.round_text_log += "<font size=1><span style=\"color:#7e668c\"><b>([time_stamp()])</b> (<b>[src]/[speaker.client]</b>) <u>DEADSAY:</u> - [text]</span></font>"
|
||||
//GLOB.round_text_log += "<font size=1><span style=\"color:#7e668c\"><b>([time_stamp()])</b> (<b>[speaker]/[speaker.client]</b>) <u>DEADSAY:</u> - [text]</span></font>"
|
||||
//CHOMPEdit End
|
||||
|
||||
|
||||
/proc/log_ghostemote(text, mob/speaker)
|
||||
if (config.log_emote)
|
||||
WRITE_LOG(diary, "DEADEMOTE: [speaker.simple_info_line()]: [html_decode(text)]")
|
||||
|
||||
@@ -19,11 +19,9 @@
|
||||
|
||||
if (!( istext(HTMLstring) ))
|
||||
CRASH("Given non-text argument!")
|
||||
return
|
||||
else
|
||||
if (length(HTMLstring) != 7)
|
||||
CRASH("Given non-HTML argument!")
|
||||
return
|
||||
var/textr = copytext(HTMLstring, 2, 4)
|
||||
var/textg = copytext(HTMLstring, 4, 6)
|
||||
var/textb = copytext(HTMLstring, 6, 8)
|
||||
@@ -40,7 +38,6 @@
|
||||
if (length(textb) < 2)
|
||||
textr = text("0[]", textb)
|
||||
return text("#[][][]", textr, textg, textb)
|
||||
return
|
||||
|
||||
//Returns the middle-most value
|
||||
/proc/dd_range(var/low, var/high, var/num)
|
||||
@@ -1130,8 +1127,6 @@ proc/is_hot(obj/item/W as obj)
|
||||
else
|
||||
return 0
|
||||
|
||||
return 0
|
||||
|
||||
//Whether or not the given item counts as sharp in terms of dealing damage
|
||||
/proc/is_sharp(obj/O as obj)
|
||||
if(!O)
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
#define RANDOM_BLOOD_TYPE pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+")
|
||||
|
||||
// #define to_chat(target, message) target << message Not anymore!
|
||||
#define to_chat to_chat_filename=__FILE__;to_chat_line=__LINE__;to_chat_src=src;__to_chat
|
||||
//#define to_chat to_chat_filename=__FILE__;to_chat_line=__LINE__;to_chat_src=src;__to_chat
|
||||
#define to_chat __to_chat
|
||||
#define to_world(message) to_chat(world, message)
|
||||
#define to_world_log(message) world.log << message
|
||||
// TODO - Baystation has this log to crazy places. For now lets just world.log, but maybe look into it later.
|
||||
|
||||
@@ -5,7 +5,7 @@ SUBSYSTEM_DEF(chat)
|
||||
priority = FIRE_PRIORITY_CHAT
|
||||
init_order = INIT_ORDER_CHAT
|
||||
|
||||
var/list/msg_queue = list()
|
||||
var/list/list/msg_queue = list() //List of lists
|
||||
|
||||
/datum/controller/subsystem/chat/Initialize(timeofday)
|
||||
init_vchat()
|
||||
|
||||
@@ -38,7 +38,7 @@ SUBSYSTEM_DEF(events)
|
||||
return
|
||||
|
||||
for(var/i = EVENT_LEVEL_MUNDANE to EVENT_LEVEL_MAJOR)
|
||||
var/list/datum/event_container/EC = event_containers[i]
|
||||
var/datum/event_container/EC = event_containers[i]
|
||||
EC.process()
|
||||
|
||||
/datum/controller/subsystem/events/stat_entry()
|
||||
|
||||
@@ -32,6 +32,10 @@ SUBSYSTEM_DEF(persistence)
|
||||
if(!A || (A.flags & AREA_FLAG_IS_NOT_PERSISTENT))
|
||||
return
|
||||
|
||||
// if((!T.z in GLOB.using_map.station_levels) || !initialized)
|
||||
if(!(T.z in using_map.station_levels))
|
||||
return
|
||||
|
||||
if(!(T.z in using_map.persist_levels))
|
||||
return
|
||||
|
||||
@@ -57,4 +61,4 @@ SUBSYSTEM_DEF(persistence)
|
||||
dat += "</table>"
|
||||
var/datum/browser/popup = new(user, "admin_persistence", "Persistence Data")
|
||||
popup.set_content(jointext(dat, null))
|
||||
popup.open()
|
||||
popup.open()
|
||||
|
||||
@@ -33,7 +33,7 @@ SUBSYSTEM_DEF(planets)
|
||||
z_to_planet[Z] = NP
|
||||
|
||||
// DO NOT CALL THIS DIRECTLY UNLESS IT'S IN INITIALIZE,
|
||||
// USE turf/simulated/proc/make_indoors() and\
|
||||
// USE turf/simulated/proc/make_indoors() and
|
||||
// tyrf/simulated/proc/make_outdoors()
|
||||
/datum/controller/subsystem/planets/proc/addTurf(var/turf/T)
|
||||
if(z_to_planet.len >= T.z && z_to_planet[T.z])
|
||||
|
||||
@@ -314,7 +314,7 @@ var/global/datum/controller/subsystem/ticker/ticker
|
||||
switch(M.z)
|
||||
if(0) //inside a crate or something
|
||||
var/turf/T = get_turf(M)
|
||||
if(T && T.z in using_map.station_levels) //we don't use M.death(0) because it calls a for(/mob) loop and
|
||||
if(T && (T.z in using_map.station_levels)) //we don't use M.death(0) because it calls a for(/mob) loop and
|
||||
M.health = 0
|
||||
M.set_stat(DEAD)
|
||||
if(1) //on a z-level 1 turf.
|
||||
|
||||
@@ -159,8 +159,7 @@ SUBSYSTEM_DEF(timer)
|
||||
|
||||
if (timer.timeToRun < head_offset)
|
||||
bucket_resolution = null //force bucket recreation
|
||||
CRASH("[i] Invalid timer state: Timer in long run queue with a time to run less then head_offset. [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]")
|
||||
|
||||
crash_with("[i] Invalid timer state: Timer in long run queue with a time to run less then head_offset. [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]")
|
||||
if (timer.callBack && !timer.spent)
|
||||
timer.callBack.InvokeAsync()
|
||||
spent += timer
|
||||
@@ -171,7 +170,7 @@ SUBSYSTEM_DEF(timer)
|
||||
|
||||
if (timer.timeToRun < head_offset + TICKS2DS(practical_offset-1))
|
||||
bucket_resolution = null //force bucket recreation
|
||||
CRASH("[i] Invalid timer state: Timer in long run queue that would require a backtrack to transfer to short run queue. [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]")
|
||||
crash_with("[i] Invalid timer state: Timer in long run queue that would require a backtrack to transfer to short run queue. [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]")
|
||||
if (timer.callBack && !timer.spent)
|
||||
timer.callBack.InvokeAsync()
|
||||
spent += timer
|
||||
|
||||
@@ -22,10 +22,10 @@ SUBSYSTEM_DEF(transcore)
|
||||
var/cost_backups = 0
|
||||
var/cost_implants = 0
|
||||
|
||||
var/datum/transhuman/mind_record/list/backed_up = list() // All known mind records, indexed by MR.mindname/mind.name
|
||||
var/datum/transhuman/mind_record/list/has_left = list() // Why do we even have this?
|
||||
var/datum/transhuman/body_record/list/body_scans = list() // All known body records, indexed by BR.mydna.name
|
||||
var/obj/item/weapon/implant/backup/list/implants = list() // All OPERATING implants that are being ticked
|
||||
var/list/datum/transhuman/mind_record/backed_up = list() // All known mind records, indexed by MR.mindname/mind.name
|
||||
var/list/datum/transhuman/mind_record/has_left = list() // Why do we even have this?
|
||||
var/list/datum/transhuman/body_record/body_scans = list() // All known body records, indexed by BR.mydna.name
|
||||
var/list/obj/item/weapon/implant/backup/implants = list() // All OPERATING implants that are being ticked
|
||||
|
||||
var/list/current_run = list()
|
||||
|
||||
@@ -115,14 +115,14 @@ SUBSYSTEM_DEF(transcore)
|
||||
|
||||
/datum/controller/subsystem/transcore/Recover()
|
||||
if (istype(SStranscore.body_scans))
|
||||
for(var/N in SStranscore.body_scans[N])
|
||||
if(N) body_scans[N] = SStranscore.body_scans[N]
|
||||
for(var/N in SStranscore.body_scans)
|
||||
if(N && SStranscore.body_scans[N]) body_scans[N] = SStranscore.body_scans[N]
|
||||
if(SStranscore.core_dumped)
|
||||
core_dumped = TRUE
|
||||
can_fire = FALSE
|
||||
else if (istype(SStranscore.backed_up))
|
||||
for(var/N in SStranscore.backed_up[N])
|
||||
if(N) backed_up[N] = SStranscore.backed_up[N]
|
||||
for(var/N in SStranscore.backed_up)
|
||||
if(N && SStranscore.backed_up[N]) backed_up[N] = SStranscore.backed_up[N]
|
||||
|
||||
/datum/controller/subsystem/transcore/proc/m_backup(var/datum/mind/mind, var/obj/item/device/nif/nif, var/one_time = FALSE)
|
||||
ASSERT(mind)
|
||||
|
||||
@@ -31,7 +31,7 @@ SUBSYSTEM_DEF(xenoarch)
|
||||
|
||||
/datum/controller/subsystem/xenoarch/proc/SetupXenoarch()
|
||||
for(var/turf/simulated/mineral/M in world)
|
||||
if(!M.density || M.z in using_map.xenoarch_exempt_levels)
|
||||
if(!M.density || (M.z in using_map.xenoarch_exempt_levels))
|
||||
continue
|
||||
|
||||
if(isnull(M.geologic_data))
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
|
||||
|
||||
|
||||
/atom/proc/Beam(atom/BeamTarget,icon_state="b_beam",icon='icons/effects/beam.dmi',time=50, maxdistance=10,beam_type=/obj/effect/ebeam,beam_sleep_time=3,beam_color = null)
|
||||
/atom/proc/Beam(atom/BeamTarget, icon_state="b_beam", icon='icons/effects/beam.dmi', time=50, maxdistance=10, beam_type=/obj/effect/ebeam, beam_sleep_time=3, beam_color = null)
|
||||
var/datum/beam/newbeam = new(src,BeamTarget,icon,icon_state,time,maxdistance,beam_type,beam_sleep_time,beam_color)
|
||||
spawn(0)
|
||||
newbeam.Start()
|
||||
|
||||
@@ -67,7 +67,7 @@ datum/category_group/dd_SortValue()
|
||||
*****************/
|
||||
/datum/category_item
|
||||
var/name = ""
|
||||
var/list/datum/category_group/category // The group this item belongs to
|
||||
var/datum/category_group/category // The group this item belongs to
|
||||
|
||||
/datum/category_item/New(var/datum/category_group/cg)
|
||||
..()
|
||||
|
||||
@@ -333,7 +333,7 @@
|
||||
* * datum/component/c_type The typepath of the component you want to get a reference to
|
||||
*/
|
||||
/datum/proc/GetComponent(datum/component/c_type)
|
||||
// RETURN_TYPE(c_type)
|
||||
RETURN_TYPE(c_type)
|
||||
if(initial(c_type.dupe_mode) == COMPONENT_DUPE_ALLOWED || initial(c_type.dupe_mode) == COMPONENT_DUPE_SELECTIVE)
|
||||
stack_trace("GetComponent was called to get a component of which multiple copies could be on an object. This can easily break and should be changed. Type: \[[c_type]\]")
|
||||
var/list/dc = datum_components
|
||||
@@ -353,7 +353,7 @@
|
||||
* * datum/component/c_type The typepath of the component you want to get a reference to
|
||||
*/
|
||||
/datum/proc/GetExactComponent(datum/component/c_type)
|
||||
// RETURN_TYPE(c_type)
|
||||
RETURN_TYPE(c_type)
|
||||
if(initial(c_type.dupe_mode) == COMPONENT_DUPE_ALLOWED || initial(c_type.dupe_mode) == COMPONENT_DUPE_SELECTIVE)
|
||||
stack_trace("GetComponent was called to get a component of which multiple copies could be on an object. This can easily break and should be changed. Type: \[[c_type]\]")
|
||||
var/list/dc = datum_components
|
||||
|
||||
@@ -357,7 +357,7 @@
|
||||
container.close_all()
|
||||
qdel(DL)
|
||||
|
||||
/datum/component/personal_crafting/proc/component_ui_interact(atom/movable/screen/craft/image, location, control, params, user)
|
||||
/datum/component/personal_crafting/proc/component_ui_interact(/obj/screen/craft/image, location, control, params, user)
|
||||
// SIGNAL_HANDLER
|
||||
|
||||
if(user == parent)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
var/list/active_timers //for SStimer
|
||||
var/list/datum_components //for /datum/components
|
||||
var/list/comp_lookup
|
||||
var/list/signal_procs
|
||||
var/list/list/signal_procs // List of lists
|
||||
var/signal_enabled = FALSE
|
||||
var/weakref/weakref // Holder of weakref instance pointing to this datum
|
||||
var/datum_flags = NONE
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
if(!usr || !result || result == "---Components---" || result == "---Elements---")
|
||||
return
|
||||
if(QDELETED(src))
|
||||
to_chat(usr, "That thing doesn't exist anymore!", confidential = TRUE)
|
||||
to_chat(usr, "That thing doesn't exist anymore!")
|
||||
return
|
||||
var/list/lst = usr.client.get_callproc_args()
|
||||
if(!lst)
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
/// Activates the functionality defined by the element on the given target datum
|
||||
/datum/element/proc/Attach(datum/target)
|
||||
// SHOULD_CALL_PARENT(1)
|
||||
SHOULD_CALL_PARENT(1)
|
||||
if(type == /datum/element)
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
SEND_SIGNAL(target, COMSIG_ELEMENT_ATTACH, src)
|
||||
@@ -28,7 +28,7 @@
|
||||
/// Deactivates the functionality defines by the element on the given datum
|
||||
/datum/element/proc/Detach(datum/source, force)
|
||||
SEND_SIGNAL(source, COMSIG_ELEMENT_DETACH, src)
|
||||
// SHOULD_CALL_PARENT(1)
|
||||
SHOULD_CALL_PARENT(1)
|
||||
UnregisterSignal(source, COMSIG_PARENT_QDELETING)
|
||||
|
||||
/datum/element/Destroy(force)
|
||||
|
||||
@@ -157,7 +157,6 @@
|
||||
|
||||
if(!(letter in morse_alphabet))
|
||||
CRASH("Encountered invalid character in morse sequence \"[letter]\".")
|
||||
return
|
||||
|
||||
// So I heard you like sequences...
|
||||
// Play a sequence of sounds while inside the current iteration of the outer sequence.
|
||||
|
||||
@@ -239,8 +239,8 @@
|
||||
|
||||
var/mob/def_target = null
|
||||
var/objective_list[] = list(/datum/objective/assassinate, /datum/objective/protect, /datum/objective/debrain)
|
||||
if (objective&&(objective.type in objective_list) && objective:target)
|
||||
def_target = objective:target.current
|
||||
if (objective&&(objective.type in objective_list) && objective.target)
|
||||
def_target = objective.target.current
|
||||
|
||||
var/new_target = input("Select target:", "Objective target", def_target) as null|anything in possible_targets
|
||||
if (!new_target) return
|
||||
|
||||
@@ -61,11 +61,11 @@ var/repository/decls/decls_repository = new()
|
||||
fetched_decl_subtypes[decl_prototype] = .
|
||||
|
||||
/decl/proc/Initialize()
|
||||
//SHOULD_CALL_PARENT(TRUE)
|
||||
//SHOULD_NOT_SLEEP(TRUE)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
SHOULD_NOT_SLEEP(TRUE)
|
||||
return
|
||||
|
||||
/decl/Destroy()
|
||||
//SHOULD_CALL_PARENT(FALSE)
|
||||
SHOULD_CALL_PARENT(FALSE)
|
||||
crash_with("Prevented attempt to delete a decl instance: [log_info_line(src)]")
|
||||
return QDEL_HINT_LETMELIVE // Prevents decl destruction
|
||||
|
||||
@@ -39,7 +39,7 @@ length to avoid portals or something i guess?? Not that they're counted right no
|
||||
|
||||
PriorityQueue
|
||||
var/list/queue
|
||||
var/proc/comparison_function
|
||||
var/comparison_function
|
||||
|
||||
New(compare)
|
||||
queue = list()
|
||||
@@ -123,7 +123,7 @@ PathNode
|
||||
proc/PathWeightCompare(PathNode/a, PathNode/b)
|
||||
return a.estimated_cost - b.estimated_cost
|
||||
|
||||
proc/AStar(var/start, var/end, var/proc/adjacent, var/proc/dist, var/max_nodes, var/max_node_depth = 30, var/min_target_dist = 0, var/min_node_dist, var/id, var/datum/exclude)
|
||||
proc/AStar(var/start, var/end, var/adjacent, var/dist, var/max_nodes, var/max_node_depth = 30, var/min_target_dist = 0, var/min_node_dist, var/id, var/datum/exclude)
|
||||
var/PriorityQueue/open = new /PriorityQueue(/proc/PathWeightCompare)
|
||||
var/list/closed = list()
|
||||
var/list/path
|
||||
|
||||
@@ -68,7 +68,7 @@ var/datum/antagonist/borer/borers
|
||||
/datum/antagonist/borer/proc/get_vents()
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in machines)
|
||||
if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in using_map.station_levels)
|
||||
if(!temp_vent.welded && temp_vent.network && (temp_vent.loc.z in using_map.station_levels))
|
||||
if(temp_vent.network.normal_members.len > 50)
|
||||
vents += temp_vent
|
||||
return vents
|
||||
@@ -32,7 +32,7 @@ var/datum/antagonist/xenos/xenomorphs
|
||||
/datum/antagonist/xenos/proc/get_vents()
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in machines)
|
||||
if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in using_map.station_levels)
|
||||
if(!temp_vent.welded && temp_vent.network && (temp_vent.loc.z in using_map.station_levels))
|
||||
if(temp_vent.network.normal_members.len > 50)
|
||||
vents += temp_vent
|
||||
return vents
|
||||
|
||||
@@ -179,7 +179,7 @@
|
||||
|
||||
/datum/antagonist/proc/draft_antagonist(var/datum/mind/player)
|
||||
//Check if the player can join in this antag role, or if the player has already been given an antag role.
|
||||
if(!can_become_antag(player) || player.assigned_role in roundstart_restricted)
|
||||
if(!can_become_antag(player) || (player.assigned_role in roundstart_restricted))
|
||||
log_debug("[player.key] was selected for [role_text] by lottery, but is not allowed to be that role.")
|
||||
return 0
|
||||
if(player.special_role)
|
||||
|
||||
@@ -47,7 +47,7 @@ var/datum/antagonist/highlander/highlanders
|
||||
var/obj/item/weapon/card/id/W = new(player)
|
||||
W.name = "[player.real_name]'s ID Card"
|
||||
W.icon_state = "centcom"
|
||||
W.access = get_all_station_access().Copy
|
||||
W.access = get_all_station_access().Copy()
|
||||
W.access |= get_all_centcom_access()
|
||||
W.assignment = "Highlander"
|
||||
W.registered_name = player.real_name
|
||||
|
||||
@@ -54,7 +54,7 @@ var/datum/antagonist/rogue_ai/malf
|
||||
if(!istype(A))
|
||||
error("Non-AI mob designated malf AI! Report this.")
|
||||
to_world("##ERROR: Non-AI mob designated malf AI! Report this.")
|
||||
return 0
|
||||
return
|
||||
|
||||
A.setup_for_malf()
|
||||
A.laws = new /datum/ai_laws/nanotrasen/malfunction
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
* Is the gene active in this mob's DNA?
|
||||
*/
|
||||
/datum/dna/gene/proc/is_active(var/mob/M)
|
||||
return M.active_genes && type in M.active_genes
|
||||
return (M.active_genes && (type in M.active_genes))
|
||||
|
||||
// Return 1 if we can activate.
|
||||
// HANDLE MUTCHK_FORCED HERE!
|
||||
|
||||
@@ -164,7 +164,6 @@
|
||||
return "hulk_[fat]_s"
|
||||
else
|
||||
return "hulk_[g]_s"
|
||||
return 0
|
||||
|
||||
OnMobLife(var/mob/living/carbon/human/M)
|
||||
if(!istype(M)) return
|
||||
|
||||
@@ -111,7 +111,7 @@ var/hadevent = 0
|
||||
//world << sound('sound/AI/aliens.ogg')
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in machines)
|
||||
if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in using_map.station_levels)
|
||||
if(!temp_vent.welded && temp_vent.network && (temp_vent.loc.z in using_map.station_levels))
|
||||
if(temp_vent.network.normal_members.len > 50) // Stops Aliens getting stuck in small networks. See: Security, Virology
|
||||
vents += temp_vent
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ The "dust" will damage the hull of the station causin minor hull breaches.
|
||||
if(life <= 0)
|
||||
walk(src,0)
|
||||
qdel(src)
|
||||
return 0
|
||||
return
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
sleep(300)
|
||||
// Hack all APCs, including those built during hack sequence.
|
||||
for(var/obj/machinery/power/apc/A in GLOB.apcs)
|
||||
if((!A.hacker || A.hacker != src) && !A.aidisabled && A.z in using_map.station_levels)
|
||||
if((!A.hacker || A.hacker != src) && !A.aidisabled && (A.z in using_map.station_levels))
|
||||
A.ai_hack(src)
|
||||
|
||||
|
||||
@@ -206,4 +206,4 @@
|
||||
user.verbs += new/datum/game_mode/malfunction/verb/ai_destroy_station()
|
||||
|
||||
|
||||
// END ABILITY VERBS
|
||||
// END ABILITY VERBS
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
continue
|
||||
if(L.invisibility > owner.see_invisible) // Don't target ourselves or people we can't see.
|
||||
continue
|
||||
if(!L in viewers(owner)) // So we don't shoot at walls if someone is hiding behind one.
|
||||
if(!(L in viewers(owner))) // So we don't shoot at walls if someone is hiding behind one.
|
||||
continue
|
||||
if(!L.stat) // Don't want to target dead people or SSDs.
|
||||
chosen_target = L
|
||||
|
||||
@@ -104,6 +104,7 @@
|
||||
|
||||
/var/list/priv_all_access
|
||||
/proc/get_all_accesses()
|
||||
RETURN_TYPE(/list)
|
||||
if(!priv_all_access)
|
||||
priv_all_access = get_access_ids()
|
||||
|
||||
@@ -111,6 +112,7 @@
|
||||
|
||||
/var/list/priv_station_access
|
||||
/proc/get_all_station_access()
|
||||
RETURN_TYPE(/list)
|
||||
if(!priv_station_access)
|
||||
priv_station_access = get_access_ids(ACCESS_TYPE_STATION)
|
||||
|
||||
@@ -118,6 +120,7 @@
|
||||
|
||||
/var/list/priv_centcom_access
|
||||
/proc/get_all_centcom_access()
|
||||
RETURN_TYPE(/list)
|
||||
if(!priv_centcom_access)
|
||||
priv_centcom_access = get_access_ids(ACCESS_TYPE_CENTCOM)
|
||||
|
||||
@@ -125,6 +128,7 @@
|
||||
|
||||
/var/list/priv_syndicate_access
|
||||
/proc/get_all_syndicate_access()
|
||||
RETURN_TYPE(/list)
|
||||
if(!priv_syndicate_access)
|
||||
priv_syndicate_access = get_access_ids(ACCESS_TYPE_SYNDICATE)
|
||||
|
||||
@@ -132,6 +136,7 @@
|
||||
|
||||
/var/list/priv_private_access
|
||||
/proc/get_all_private_access()
|
||||
RETURN_TYPE(/list)
|
||||
if(!priv_private_access)
|
||||
priv_private_access = get_access_ids(ACCESS_TYPE_PRIVATE)
|
||||
|
||||
|
||||
@@ -108,7 +108,7 @@ var/global/datum/controller/occupations/job_master
|
||||
Debug("FOC is_job_whitelisted failed, Player: [player]")
|
||||
continue
|
||||
//VOREStation Code End
|
||||
if(flag && (!player.client.prefs.be_special & flag))
|
||||
if(flag && !(player.client.prefs.be_special & flag))
|
||||
Debug("FOC flag failed, Player: [player], Flag: [flag], ")
|
||||
continue
|
||||
if(player.client.prefs.GetJobDepartment(job, level) & job.flag)
|
||||
|
||||
@@ -486,7 +486,7 @@
|
||||
|
||||
if(unknown_body)
|
||||
imp += "Unknown body present:"
|
||||
if(!AN && !open && !infected & !imp)
|
||||
if(!AN && !open && !infected && !imp)
|
||||
AN = "None:"
|
||||
if(!(e.status & ORGAN_DESTROYED))
|
||||
dat += "<td>[e.name]</td><td>[e.burn_dam]</td><td>[e.brute_dam]</td><td>[robot][bled][AN][splint][open][infected][imp][internal_bleeding][lung_ruptured][o_dead]</td>"
|
||||
|
||||
@@ -556,7 +556,7 @@
|
||||
"intdefault"= (info["internal"] == 0),
|
||||
))
|
||||
|
||||
data["scrubbers"] = list()
|
||||
var/list/scrubbers = list()
|
||||
for(var/id_tag in alarm_area.air_scrub_names)
|
||||
var/long_name = alarm_area.air_scrub_names[id_tag]
|
||||
var/list/info = alarm_area.air_scrub_info[id_tag]
|
||||
@@ -570,12 +570,13 @@
|
||||
"panic" = info["panic"],
|
||||
"filters" = list()
|
||||
))
|
||||
data["scrubbers"][data["scrubbers"].len]["filters"] += list(list("name" = "Oxygen", "command" = "o2_scrub", "val" = info["filter_o2"]))
|
||||
data["scrubbers"][data["scrubbers"].len]["filters"] += list(list("name" = "Nitrogen", "command" = "n2_scrub", "val" = info["filter_n2"]))
|
||||
data["scrubbers"][data["scrubbers"].len]["filters"] += list(list("name" = "Carbon Dioxide", "command" = "co2_scrub","val" = info["filter_co2"]))
|
||||
data["scrubbers"][data["scrubbers"].len]["filters"] += list(list("name" = "Toxin" , "command" = "tox_scrub","val" = info["filter_phoron"]))
|
||||
data["scrubbers"][data["scrubbers"].len]["filters"] += list(list("name" = "Nitrous Oxide", "command" = "n2o_scrub","val" = info["filter_n2o"]))
|
||||
data["scrubbers"][data["scrubbers"].len]["filters"] += list(list("name" = "Fuel", "command" = "fuel_scrub","val" = info["filter_fuel"]))
|
||||
scrubbers[scrubbers.len]["filters"] += list(list("name" = "Oxygen", "command" = "o2_scrub", "val" = info["filter_o2"]))
|
||||
scrubbers[scrubbers.len]["filters"] += list(list("name" = "Nitrogen", "command" = "n2_scrub", "val" = info["filter_n2"]))
|
||||
scrubbers[scrubbers.len]["filters"] += list(list("name" = "Carbon Dioxide", "command" = "co2_scrub","val" = info["filter_co2"]))
|
||||
scrubbers[scrubbers.len]["filters"] += list(list("name" = "Toxin" , "command" = "tox_scrub","val" = info["filter_phoron"]))
|
||||
scrubbers[scrubbers.len]["filters"] += list(list("name" = "Nitrous Oxide", "command" = "n2o_scrub","val" = info["filter_n2o"]))
|
||||
scrubbers[scrubbers.len]["filters"] += list(list("name" = "Fuel", "command" = "fuel_scrub","val" = info["filter_fuel"]))
|
||||
data["scrubbers"] = scrubbers
|
||||
|
||||
var/list/modes = list()
|
||||
data["mode"] = mode
|
||||
|
||||
@@ -33,15 +33,13 @@
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/computer/area_atmos/tgui_data(mob/user)
|
||||
var/list/data = list()
|
||||
|
||||
data["scrubbers"] = list()
|
||||
var/list/working = list()
|
||||
for(var/id in connectedscrubbers)
|
||||
var/obj/machinery/portable_atmospherics/powered/scrubber/huge/scrubber = connectedscrubbers[id]
|
||||
if(!validscrubber(scrubber))
|
||||
connectedscrubbers -= scrubber
|
||||
continue
|
||||
data["scrubbers"].Add(list(list(
|
||||
working.Add(list(list(
|
||||
"id" = id,
|
||||
"name" = scrubber.name,
|
||||
"on" = scrubber.on,
|
||||
@@ -50,8 +48,8 @@
|
||||
"load" = scrubber.last_power_draw,
|
||||
"area" = get_area(scrubber),
|
||||
)))
|
||||
|
||||
return data
|
||||
|
||||
return list("scrubbers" = working)
|
||||
|
||||
/obj/machinery/computer/area_atmos/tgui_act(action, params)
|
||||
if(..())
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
|
||||
/obj/machinery/camera/Destroy()
|
||||
if(isMotion())
|
||||
unsense_proximity(callback = .HasProximity)
|
||||
unsense_proximity(callback = /atom/proc/HasProximity)
|
||||
deactivate(null, 0) //kick anyone viewing out
|
||||
if(assembly)
|
||||
qdel(assembly)
|
||||
@@ -361,7 +361,6 @@
|
||||
for(var/obj/machinery/camera/C in oview(4, M))
|
||||
if(C.can_use()) // check if camera disabled
|
||||
return C
|
||||
break
|
||||
return null
|
||||
|
||||
/proc/near_range_camera(var/mob/M)
|
||||
@@ -369,7 +368,6 @@
|
||||
for(var/obj/machinery/camera/C in range(4, M))
|
||||
if(C.can_use()) // check if camera disabled
|
||||
return C
|
||||
break
|
||||
|
||||
return null
|
||||
|
||||
|
||||
@@ -232,7 +232,7 @@ var/global/list/engineering_networks = list(
|
||||
assembly.upgrades.Add(new /obj/item/device/assembly/prox_sensor(assembly))
|
||||
setPowerUsage()
|
||||
START_MACHINE_PROCESSING(src)
|
||||
sense_proximity(callback = .HasProximity)
|
||||
sense_proximity(callback = /atom/proc/HasProximity)
|
||||
update_coverage()
|
||||
|
||||
/obj/machinery/camera/proc/setPowerUsage()
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/mob/living/silicon/ai/var/stored_locations[0]
|
||||
|
||||
/proc/InvalidPlayerTurf(turf/T as turf)
|
||||
return !(T && T.z in using_map.player_levels)
|
||||
return !(T?.z in using_map.player_levels)
|
||||
|
||||
/mob/living/silicon/ai/proc/get_camera_list()
|
||||
if(src.stat == 2)
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
/obj/item/clothing/head/cowboy_hat/small = 2,
|
||||
/obj/item/toy/stickhorse = 2
|
||||
)
|
||||
var/list/special_prizes = list() // Holds instanced objects, intended for admins to shove surprises inside or something.
|
||||
|
||||
/obj/machinery/computer/arcade/Initialize()
|
||||
. = ..()
|
||||
@@ -35,17 +36,18 @@
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
/obj/machinery/computer/arcade/proc/prizevend()
|
||||
if(!(contents-circuit).len)
|
||||
if(LAZYLEN(special_prizes)) // Downstream wanted the 'win things inside contents sans circuitboard' feature kept.
|
||||
var/atom/movable/AM = pick_n_take(special_prizes)
|
||||
AM.forceMove(get_turf(src))
|
||||
special_prizes -= AM
|
||||
|
||||
else if(LAZYLEN(prizes))
|
||||
var/prizeselect = pickweight(prizes)
|
||||
new prizeselect(src.loc)
|
||||
|
||||
if(istype(prizeselect, /obj/item/clothing/suit/syndicatefake)) //Helmet is part of the suit
|
||||
new /obj/item/clothing/head/syndicatefake(src.loc)
|
||||
|
||||
else
|
||||
var/atom/movable/prize = pick(contents-circuit)
|
||||
prize.loc = src.loc
|
||||
|
||||
/obj/machinery/computer/arcade/attack_ai(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ var/global/list/minor_air_alarms = list()
|
||||
|
||||
/obj/machinery/computer/atmos_alert/New()
|
||||
..()
|
||||
atmosphere_alarm.register_alarm(src, /obj/machinery/computer/station_alert/update_icon)
|
||||
atmosphere_alarm.register_alarm(src, /atom/proc/update_icon)
|
||||
|
||||
/obj/machinery/computer/atmos_alert/Destroy()
|
||||
atmosphere_alarm.unregister_alarm(src)
|
||||
|
||||
@@ -98,18 +98,19 @@
|
||||
data["linkedServer"]["active"] = linkedServer.active
|
||||
data["linkedServer"]["broke"] = linkedServer.stat & (NOPOWER|BROKEN)
|
||||
|
||||
data["linkedServer"]["pda_msgs"] = list()
|
||||
var/list/pda_msgs = list()
|
||||
for(var/datum/data_pda_msg/pda in linkedServer.pda_msgs)
|
||||
data["linkedServer"]["pda_msgs"].Add(list(list(
|
||||
pda_msgs.Add(list(list(
|
||||
"ref" = "\ref[pda]",
|
||||
"sender" = pda.sender,
|
||||
"recipient" = pda.recipient,
|
||||
"message" = pda.message,
|
||||
)))
|
||||
data["linkedServer"]["pda_msgs"] = pda_msgs
|
||||
|
||||
data["linkedServer"]["rc_msgs"] = list()
|
||||
var/list/rc_msgs = list()
|
||||
for(var/datum/data_rc_msg/rc in linkedServer.rc_msgs)
|
||||
data["linkedServer"]["rc_msgs"].Add(list(list(
|
||||
rc_msgs.Add(list(list(
|
||||
"ref" = "\ref[rc]",
|
||||
"sender" = rc.send_dpt,
|
||||
"recipient" = rc.rec_dpt,
|
||||
@@ -118,15 +119,17 @@
|
||||
"id_auth" = rc.id_auth,
|
||||
"priority" = rc.priority,
|
||||
)))
|
||||
|
||||
data["linkedServer"]["rc_msgs"] = rc_msgs
|
||||
|
||||
var/spamIndex = 0
|
||||
data["linkedServer"]["spamFilter"] = list()
|
||||
var/list/spamfilter = list()
|
||||
for(var/token in linkedServer.spamfilter)
|
||||
spamIndex++
|
||||
data["linkedServer"]["spamFilter"].Add(list(list(
|
||||
spamfilter.Add(list(list(
|
||||
"index" = spamIndex,
|
||||
"token" = token,
|
||||
)))
|
||||
data["linkedServer"]["spamFilter"] = spamfilter
|
||||
|
||||
//Get out list of viable PDAs
|
||||
var/list/obj/item/device/pda/sendPDAs = list()
|
||||
|
||||
@@ -30,11 +30,8 @@
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/computer/prisoner/tgui_data(mob/user)
|
||||
var/list/data = list()
|
||||
|
||||
data["locked"] = !screen
|
||||
data["chemImplants"] = list()
|
||||
data["trackImplants"] = list()
|
||||
var/list/chemImplants = list()
|
||||
var/list/trackImplants = list()
|
||||
if(screen)
|
||||
for(var/obj/item/weapon/implant/chem/C in GLOB.all_chem_implants)
|
||||
var/turf/T = get_turf(C)
|
||||
@@ -42,7 +39,7 @@
|
||||
continue
|
||||
if(!C.implanted)
|
||||
continue
|
||||
data["chemImplants"].Add(list(list(
|
||||
chemImplants.Add(list(list(
|
||||
"host" = C.imp_in,
|
||||
"units" = C.reagents.total_volume,
|
||||
"ref" = "\ref[C]"
|
||||
@@ -59,14 +56,14 @@
|
||||
loc_display = T.loc
|
||||
if(track.malfunction)
|
||||
loc_display = pick(teleportlocs)
|
||||
data["trackImplants"].Add(list(list(
|
||||
trackImplants.Add(list(list(
|
||||
"host" = L,
|
||||
"ref" = "\ref[track]",
|
||||
"id" = "[track.id]",
|
||||
"loc" = "[loc_display]",
|
||||
)))
|
||||
|
||||
return data
|
||||
return list("locked" = !screen, "chemImplants" = chemImplants, "trackImplants" = trackImplants)
|
||||
|
||||
|
||||
/obj/machinery/computer/prisoner/tgui_act(action, list/params)
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
/obj/machinery/computer/station_alert/Initialize()
|
||||
alarm_monitor = new monitor_type(src)
|
||||
alarm_monitor.register_alarm(src, /obj/machinery/computer/station_alert/update_icon)
|
||||
alarm_monitor.register_alarm(src, /atom/proc/update_icon)
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/computer/station_alert/Destroy()
|
||||
|
||||
@@ -1,257 +1,6 @@
|
||||
//Config stuff
|
||||
#define SYNDICATE_ELITE_MOVETIME 600 //Time to station is milliseconds. 60 seconds, enough time for everyone to be on the shuttle before it leaves.
|
||||
#define SYNDICATE_ELITE_STATION_AREATYPE "/area/shuttle/syndicate_elite/station" //Type of the spec ops shuttle area for station
|
||||
#define SYNDICATE_ELITE_DOCK_AREATYPE "/area/shuttle/syndicate_elite/mothership" //Type of the spec ops shuttle area for dock
|
||||
|
||||
var/syndicate_elite_shuttle_moving_to_station = 0
|
||||
var/syndicate_elite_shuttle_moving_to_mothership = 0
|
||||
var/syndicate_elite_shuttle_at_station = 0
|
||||
var/syndicate_elite_shuttle_can_send = 1
|
||||
var/syndicate_elite_shuttle_time = 0
|
||||
var/syndicate_elite_shuttle_timeleft = 0
|
||||
|
||||
/obj/machinery/computer/syndicate_elite_shuttle
|
||||
name = "elite syndicate squad shuttle control console"
|
||||
icon_keyboard = "syndie_key"
|
||||
icon_screen = "syndishuttle"
|
||||
light_color = "#00ffff"
|
||||
req_access = list(access_cent_specops)
|
||||
var/temp = null
|
||||
var/hacked = 0
|
||||
var/allowedtocall = 0
|
||||
|
||||
/proc/syndicate_elite_process()
|
||||
var/area/syndicate_mothership/control/syndicate_ship = locate()//To find announcer. This area should exist for this proc to work.
|
||||
var/area/syndicate_mothership/elite_squad/elite_squad = locate()//Where is the specops area located?
|
||||
var/mob/living/silicon/decoy/announcer = locate() in syndicate_ship//We need a fake AI to announce some stuff below. Otherwise it will be wonky.
|
||||
|
||||
var/message_tracker[] = list(0,1,2,3,5,10,30,45)//Create a a list with potential time values.
|
||||
var/message = "THE SYNDICATE ELITE SHUTTLE IS PREPARING FOR LAUNCH"//Initial message shown.
|
||||
if(announcer)
|
||||
announcer.say(message)
|
||||
// message = "ARMORED SQUAD TAKE YOUR POSITION ON GRAVITY LAUNCH PAD"
|
||||
// announcer.say(message)
|
||||
|
||||
while(syndicate_elite_shuttle_time - world.timeofday > 0)
|
||||
var/ticksleft = syndicate_elite_shuttle_time - world.timeofday
|
||||
|
||||
if(ticksleft > 1e5)
|
||||
syndicate_elite_shuttle_time = world.timeofday // midnight rollover
|
||||
syndicate_elite_shuttle_timeleft = (ticksleft / 10)
|
||||
|
||||
//All this does is announce the time before launch.
|
||||
if(announcer)
|
||||
var/rounded_time_left = round(syndicate_elite_shuttle_timeleft)//Round time so that it will report only once, not in fractions.
|
||||
if(rounded_time_left in message_tracker)//If that time is in the list for message announce.
|
||||
message = "ALERT: [rounded_time_left] SECOND[(rounded_time_left!=1)?"S":""] REMAIN"
|
||||
if(rounded_time_left==0)
|
||||
message = "ALERT: TAKEOFF"
|
||||
announcer.say(message)
|
||||
message_tracker -= rounded_time_left//Remove the number from the list so it won't be called again next cycle.
|
||||
//Should call all the numbers but lag could mean some issues. Oh well. Not much I can do about that.
|
||||
|
||||
sleep(5)
|
||||
|
||||
syndicate_elite_shuttle_moving_to_station = 0
|
||||
syndicate_elite_shuttle_moving_to_mothership = 0
|
||||
|
||||
syndicate_elite_shuttle_at_station = 1
|
||||
if (syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership) return
|
||||
|
||||
if (!syndicate_elite_can_move())
|
||||
to_chat(usr, "<span class='warning'>The Syndicate Elite shuttle is unable to leave.</span>")
|
||||
return
|
||||
|
||||
sleep(600)
|
||||
/*
|
||||
//Begin Marauder launchpad.
|
||||
spawn(0)//So it parallel processes it.
|
||||
for(var/obj/machinery/door/poddoor/M in elite_squad)
|
||||
switch(M.id)
|
||||
if("ASSAULT0")
|
||||
spawn(10)//1 second delay between each.
|
||||
M.open()
|
||||
if("ASSAULT1")
|
||||
spawn(20)
|
||||
M.open()
|
||||
if("ASSAULT2")
|
||||
spawn(30)
|
||||
M.open()
|
||||
if("ASSAULT3")
|
||||
spawn(40)
|
||||
M.open()
|
||||
|
||||
sleep(10)
|
||||
|
||||
var/spawn_marauder[] = new()
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
if(L.name == "Marauder Entry")
|
||||
spawn_marauder.Add(L)
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
if(L.name == "Marauder Exit")
|
||||
var/obj/effect/portal/P = new(L.loc)
|
||||
P.invisibility = 101//So it is not seen by anyone.
|
||||
P.failchance = 0//So it has no fail chance when teleporting.
|
||||
P.target = pick(spawn_marauder)//Where the marauder will arrive.
|
||||
spawn_marauder.Remove(P.target)
|
||||
|
||||
sleep(10)
|
||||
|
||||
for(var/obj/machinery/mass_driver/M in elite_squad)
|
||||
switch(M.id)
|
||||
if("ASSAULT0")
|
||||
spawn(10)
|
||||
M.drive()
|
||||
if("ASSAULT1")
|
||||
spawn(20)
|
||||
M.drive()
|
||||
if("ASSAULT2")
|
||||
spawn(30)
|
||||
M.drive()
|
||||
if("ASSAULT3")
|
||||
spawn(40)
|
||||
M.drive()
|
||||
|
||||
sleep(50)//Doors remain open for 5 seconds.
|
||||
|
||||
for(var/obj/machinery/door/poddoor/M in elite_squad)
|
||||
switch(M.id)//Doors close at the same time.
|
||||
if("ASSAULT0")
|
||||
spawn(0)
|
||||
M.close()
|
||||
if("ASSAULT1")
|
||||
spawn(0)
|
||||
M.close()
|
||||
if("ASSAULT2")
|
||||
spawn(0)
|
||||
M.close()
|
||||
if("ASSAULT3")
|
||||
spawn(0)
|
||||
M.close()
|
||||
*/
|
||||
elite_squad.readyreset()//Reset firealarm after the team launched.
|
||||
//End Marauder launchpad.
|
||||
/*
|
||||
var/obj/explosionmarker = locate("Syndicate Breach Area")
|
||||
if(explosionmarker)
|
||||
var/turf/simulated/T = explosionmarker.loc
|
||||
if(T)
|
||||
explosion(T,4,6,8,10,0)
|
||||
|
||||
sleep(40)
|
||||
// proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1)
|
||||
|
||||
*/
|
||||
var/area/start_location = locate(/area/shuttle/syndicate_elite/mothership)
|
||||
var/area/end_location = locate(/area/shuttle/syndicate_elite/station)
|
||||
|
||||
var/list/dstturfs = list()
|
||||
var/throwy = world.maxy
|
||||
|
||||
for(var/turf/T in end_location)
|
||||
dstturfs = T
|
||||
if(T.y < throwy)
|
||||
throwy = T.y
|
||||
|
||||
// hey you, get out of the way!
|
||||
for(var/turf/T in dstturfs)
|
||||
// find the turf to move things to
|
||||
var/turf/D = locate(T.x, throwy - 1, 1)
|
||||
//var/turf/E = get_step(D, SOUTH)
|
||||
for(var/atom/movable/AM as mob|obj in T)
|
||||
AM.Move(D)
|
||||
if(istype(T, /turf/simulated))
|
||||
qdel(T)
|
||||
|
||||
for(var/mob/living/carbon/bug in end_location) // If someone somehow is still in the shuttle's docking area...
|
||||
bug.gib()
|
||||
|
||||
for(var/mob/living/simple_mob/pest in end_location) // And for the other kind of bug...
|
||||
pest.gib()
|
||||
|
||||
start_location.move_contents_to(end_location)
|
||||
|
||||
for(var/turf/T in get_area_turfs(end_location) )
|
||||
var/mob/M = locate(/mob) in T
|
||||
to_chat(M, "<span class='warning'>You have arrived to [station_name()]. Commence operation!</span>")
|
||||
|
||||
/proc/syndicate_elite_can_move()
|
||||
if(syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership) return 0
|
||||
else return 1
|
||||
|
||||
/obj/machinery/computer/syndicate_elite_shuttle/attackby(I as obj, user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/syndicate_elite_shuttle/attack_ai(var/mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/syndicate_elite_shuttle/emag_act(var/remaining_charges, var/mob/user)
|
||||
to_chat(user, "<span class='notice'>The electronic systems in this console are far too advanced for your primitive hacking peripherals.</span>")
|
||||
|
||||
/obj/machinery/computer/syndicate_elite_shuttle/attack_hand(var/mob/user as mob)
|
||||
if(!allowed(user))
|
||||
to_chat(user, "<span class='warning'>Access Denied.</span>")
|
||||
return
|
||||
|
||||
// if (sent_syndicate_strike_team == 0)
|
||||
// to_chat(usr, "<span class='warning'>The strike team has not yet deployed.</span>")
|
||||
// return
|
||||
|
||||
if(..())
|
||||
return
|
||||
|
||||
user.set_machine(src)
|
||||
var/dat
|
||||
if (temp)
|
||||
dat = temp
|
||||
else
|
||||
dat = {"<BR><B>Special Operations Shuttle</B><HR>
|
||||
\nLocation: [syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership ? "Departing for [station_name()] in ([syndicate_elite_shuttle_timeleft] seconds.)":syndicate_elite_shuttle_at_station ? "Station":"Dock"]<BR>
|
||||
[syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership ? "\n*The Syndicate Elite shuttle is already leaving.*<BR>\n<BR>":syndicate_elite_shuttle_at_station ? "\n<A href='?src=\ref[src];sendtodock=1'>Shuttle Offline</A><BR>\n<BR>":"\n<A href='?src=\ref[src];sendtostation=1'>Depart to [station_name()]</A><BR>\n<BR>"]
|
||||
\n<A href='?src=\ref[user];mach_close=computer'>Close</A>"}
|
||||
|
||||
user << browse(dat, "window=computer;size=575x450")
|
||||
onclose(user, "computer")
|
||||
return
|
||||
|
||||
/obj/machinery/computer/syndicate_elite_shuttle/Topic(href, href_list)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
||||
usr.set_machine(src)
|
||||
|
||||
if (href_list["sendtodock"])
|
||||
if(!syndicate_elite_shuttle_at_station|| syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership) return
|
||||
|
||||
to_chat(usr, "<span class='notice'>The Syndicate will not allow the Elite Squad shuttle to return.</span>")
|
||||
return
|
||||
|
||||
else if (href_list["sendtostation"])
|
||||
if(syndicate_elite_shuttle_at_station || syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership) return
|
||||
|
||||
if (!specops_can_move())
|
||||
to_chat(usr, "<span class='warning'>The Syndicate Elite shuttle is unable to leave.</span>")
|
||||
return
|
||||
|
||||
to_chat(usr, "<span class='notice'>The Syndicate Elite shuttle will arrive on [station_name()] in [(SYNDICATE_ELITE_MOVETIME/10)] seconds.</span>")
|
||||
|
||||
temp = "Shuttle departing.<BR><BR><A href='?src=\ref[src];mainmenu=1'>OK</A>"
|
||||
updateUsrDialog()
|
||||
|
||||
var/area/syndicate_mothership/elite_squad/elite_squad = locate()
|
||||
if(elite_squad)
|
||||
elite_squad.readyalert()//Trigger alarm for the spec ops area.
|
||||
syndicate_elite_shuttle_moving_to_station = 1
|
||||
|
||||
syndicate_elite_shuttle_time = world.timeofday + SYNDICATE_ELITE_MOVETIME
|
||||
spawn(0)
|
||||
syndicate_elite_process()
|
||||
|
||||
|
||||
else if (href_list["mainmenu"])
|
||||
temp = null
|
||||
|
||||
add_fingerprint(usr)
|
||||
updateUsrDialog()
|
||||
return
|
||||
req_access = list(access_cent_specops)
|
||||
@@ -96,16 +96,17 @@
|
||||
data["allow_items"] = allow_items
|
||||
data["crew"] = frozen_crew
|
||||
|
||||
data["items"] = list()
|
||||
var/list/items = list()
|
||||
if(allow_items)
|
||||
for(var/F in frozen_items)
|
||||
data["items"].Add(F) // VOREStation Edit
|
||||
items.Add(F) // VOREStation Edit
|
||||
/* VOREStation Removal
|
||||
data["items"].Add(list(list(
|
||||
items.Add(list(list(
|
||||
"name" = "[F]",
|
||||
"ref" = REF(F),
|
||||
)))
|
||||
VOREStation Removal End */
|
||||
data["items"] = items
|
||||
|
||||
return data
|
||||
|
||||
@@ -116,7 +117,7 @@
|
||||
add_fingerprint(usr)
|
||||
|
||||
return FALSE // VOREStation Edit - prevent topic exploits
|
||||
|
||||
/* VOREStation Edit - Unreachable due to above
|
||||
switch(action)
|
||||
if("item")
|
||||
if(!allow_items)
|
||||
@@ -148,7 +149,7 @@
|
||||
for(var/obj/item/I in frozen_items)
|
||||
I.forceMove(get_turf(src))
|
||||
frozen_items -= I
|
||||
|
||||
*/
|
||||
|
||||
/obj/item/weapon/circuitboard/cryopodcontrol
|
||||
name = "Circuit board (Cryogenic Oversight Console)"
|
||||
|
||||
@@ -272,7 +272,8 @@
|
||||
return
|
||||
|
||||
if(repairing && I.is_crowbar())
|
||||
var/obj/item/stack/material/repairing_sheet = get_material().place_sheet(loc)
|
||||
var/datum/material/mat = get_material()
|
||||
var/obj/item/stack/material/repairing_sheet = mat.place_sheet(loc)
|
||||
repairing_sheet.amount += repairing-1
|
||||
repairing = 0
|
||||
to_chat(user, "<span class='notice'>You remove \the [repairing_sheet].</span>")
|
||||
|
||||
@@ -114,12 +114,12 @@
|
||||
if(!anchored)
|
||||
user.show_message(text("<span class='warning'>[src] can now be moved.</span>"))
|
||||
cut_overlays()
|
||||
unsense_proximity(callback = .HasProximity)
|
||||
unsense_proximity(callback = /atom/proc/HasProximity)
|
||||
|
||||
else if(anchored)
|
||||
user.show_message(text("<span class='warning'>[src] is now secured.</span>"))
|
||||
add_overlay("[base_state]-s")
|
||||
sense_proximity(callback = .HasProximity)
|
||||
sense_proximity(callback = /atom/proc/HasProximity)
|
||||
|
||||
/obj/machinery/button/flasher
|
||||
name = "flasher button"
|
||||
|
||||
@@ -319,8 +319,8 @@ Class Procs:
|
||||
qdel(C)
|
||||
C = new /obj/item/weapon/cell/high(src)
|
||||
component_parts += C
|
||||
return C
|
||||
RefreshParts()
|
||||
return C
|
||||
|
||||
/obj/machinery/proc/default_part_replacement(var/mob/user, var/obj/item/weapon/storage/part_replacer/R)
|
||||
if(!istype(R))
|
||||
|
||||
@@ -298,7 +298,7 @@
|
||||
|
||||
// Broadcast the signal
|
||||
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_MAGNETS)
|
||||
radio_connection.post_signal(src, signal, radio_filter = RADIO_MAGNETS)
|
||||
|
||||
spawn(1)
|
||||
updateUsrDialog() // pretty sure this increases responsiveness
|
||||
@@ -365,7 +365,7 @@
|
||||
|
||||
// Broadcast the signal
|
||||
spawn()
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_MAGNETS)
|
||||
radio_connection.post_signal(src, signal, radio_filter = RADIO_MAGNETS)
|
||||
|
||||
if(speed == 10)
|
||||
sleep(1)
|
||||
|
||||
@@ -234,7 +234,6 @@ GLOBAL_LIST_BOILERPLATE(allCasters, /obj/machinery/newscaster)
|
||||
isbroken=1
|
||||
update_icon()
|
||||
return
|
||||
return
|
||||
|
||||
/obj/machinery/newscaster/attack_ai(mob/user)
|
||||
return attack_hand(user)
|
||||
|
||||
@@ -81,7 +81,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense)
|
||||
var/list/connected_z_levels = GetConnectedZlevels(get_z(src))
|
||||
for(var/i = 1 to LAZYLEN(GLOB.pointdefense_turrets))
|
||||
var/obj/machinery/pointdefense/PD = GLOB.pointdefense_turrets[i]
|
||||
if(!(PD.id_tag == id_tag && get_z(PD) in connected_z_levels))
|
||||
if(!(PD.id_tag == id_tag && (get_z(PD) in connected_z_levels)))
|
||||
continue
|
||||
var/list/turret = list()
|
||||
turret["id"] = "#[i]"
|
||||
|
||||
@@ -73,15 +73,10 @@
|
||||
if(prob(50))
|
||||
dump_everything() //So suits dont survive all the time
|
||||
qdel(src)
|
||||
return
|
||||
if(2.0)
|
||||
if(prob(50))
|
||||
dump_everything()
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
return
|
||||
return
|
||||
|
||||
/obj/machinery/suit_storage_unit/attack_hand(mob/user)
|
||||
if(..())
|
||||
|
||||
@@ -26,21 +26,22 @@
|
||||
data["network"] = network
|
||||
data["temp"] = temp
|
||||
|
||||
data["servers"] = list()
|
||||
var/list/servers = list()
|
||||
for(var/obj/machinery/telecomms/T in servers)
|
||||
data["servers"].Add(list(list(
|
||||
servers.Add(list(list(
|
||||
"id" = T.id,
|
||||
"name" = T.name,
|
||||
)))
|
||||
data["servers"] = servers
|
||||
|
||||
data["selectedServer"] = null
|
||||
if(SelectedServer)
|
||||
data["selectedServer"] = list(
|
||||
"id" = SelectedServer.id,
|
||||
"totalTraffic" = SelectedServer.totaltraffic,
|
||||
"logs" = list()
|
||||
)
|
||||
|
||||
var/list/logs = list()
|
||||
var/i = 0
|
||||
for(var/c in SelectedServer.log_entries)
|
||||
i++
|
||||
@@ -52,13 +53,15 @@
|
||||
for(var/log_param in acceptable_params)
|
||||
parameters["[log_param]"] = C.parameters["[log_param]"]
|
||||
|
||||
data["selectedServer"]["logs"].Add(list(list(
|
||||
logs.Add(list(list(
|
||||
"name" = C.name,
|
||||
"input_type" = C.input_type,
|
||||
"id" = i,
|
||||
"parameters" = parameters,
|
||||
)))
|
||||
|
||||
data["selectedServer"]["logs"] = logs
|
||||
|
||||
return data
|
||||
|
||||
/obj/machinery/computer/telecomms/server/attack_hand(mob/user)
|
||||
|
||||
@@ -71,23 +71,25 @@
|
||||
data["multitool_buffer"] = list("name" = "[P.buffer]", "id" = "[P.buffer.id]")
|
||||
|
||||
var/i = 0
|
||||
data["linked"] = list()
|
||||
var/list/linked = list()
|
||||
for(var/obj/machinery/telecomms/T in links)
|
||||
i++
|
||||
data["linked"].Add(list(list(
|
||||
linked.Add(list(list(
|
||||
"ref" = "\ref[T]",
|
||||
"name" = "[T]",
|
||||
"id" = T.id,
|
||||
"index" = i,
|
||||
)))
|
||||
data["linked"] = linked
|
||||
|
||||
data["filter"] = list()
|
||||
var/list/filter = list()
|
||||
if(LAZYLEN(freq_listening))
|
||||
for(var/x in freq_listening)
|
||||
data["filter"].Add(list(list(
|
||||
filter.Add(list(list(
|
||||
"name" = "[format_frequency(x)]",
|
||||
"freq" = x,
|
||||
)))
|
||||
data["filter"] = filter
|
||||
|
||||
return data
|
||||
|
||||
|
||||
@@ -100,7 +100,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
|
||||
|
||||
/obj/machinery/telecomms/proc/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
|
||||
// receive information from linked machinery
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/machinery/telecomms/proc/is_freq_listening(datum/signal/signal)
|
||||
// return 1 if found, 0 if not found
|
||||
|
||||
@@ -26,28 +26,28 @@
|
||||
data["network"] = network
|
||||
data["temp"] = temp
|
||||
|
||||
data["machinelist"] = list()
|
||||
var/list/machinelist = list()
|
||||
for(var/obj/machinery/telecomms/T in machinelist)
|
||||
data["machinelist"].Add(list(list(
|
||||
machinelist.Add(list(list(
|
||||
"id" = T.id,
|
||||
"name" = T.name,
|
||||
)))
|
||||
data["machinelist"] = machinelist
|
||||
|
||||
data["selectedMachine"] = null
|
||||
if(SelectedMachine)
|
||||
data["selectedMachine"] = list(
|
||||
"id" = SelectedMachine.id,
|
||||
"name" = SelectedMachine.name,
|
||||
"links" = list(),
|
||||
)
|
||||
|
||||
var/list/links = list()
|
||||
for(var/obj/machinery/telecomms/T in SelectedMachine.links)
|
||||
if(!T.hide)
|
||||
data["selectedMachine"]["links"].Add(list(list(
|
||||
links.Add(list(list(
|
||||
"id" = T.id,
|
||||
"name" = T.name
|
||||
)))
|
||||
|
||||
data["selectedMachine"]["links"] = links
|
||||
return data
|
||||
|
||||
/obj/machinery/computer/telecomms/monitor/attack_hand(mob/user)
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
|
||||
for(var/mob/M in viewingcode)
|
||||
|
||||
if( (M.machine == src && M in view(1, src) ) || issilicon(M))
|
||||
if( (M.machine == src && (M in view(1, src)) ) || issilicon(M))
|
||||
winset(M, "tcscode", "is-disabled=true")
|
||||
winset(M, "tcscode", "text=\"[showcode]\"")
|
||||
else
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
var/obj/item/organ/O = occupant.internal_organs_by_name[O_BRAIN]
|
||||
O.take_damage(severity * 2)
|
||||
visible_message("<span class='danger'>\The [src]'s internal lighting flashes rapidly, before the hatch swings open with a cloud of smoke.</span>")
|
||||
smoke.set_up(n = severity, 0, src)
|
||||
smoke.set_up(severity, 0, src)
|
||||
smoke.start("#202020")
|
||||
go_out()
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
if(!enable_special)
|
||||
target = get_turf(chassis)
|
||||
|
||||
var/datum/beam/ScanBeam = chassis.Beam(target,"g_beam",'icons/effects/beam.dmi',time=2 SECONDS,10,/obj/effect/ebeam,2)
|
||||
var/datum/beam/ScanBeam = chassis.Beam(target, "g_beam", 'icons/effects/beam.dmi', 2 SECONDS, 10, /obj/effect/ebeam, 2)
|
||||
|
||||
if(do_after(chassis.occupant, 2 SECONDS))
|
||||
my_scanner.ScanTurf(target, chassis.occupant, exact_scan)
|
||||
|
||||
@@ -67,7 +67,6 @@
|
||||
return
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/combat_shield/proc/toggle_shield()
|
||||
..()
|
||||
if(chassis)
|
||||
my_shield.attack_self(chassis.occupant)
|
||||
if(my_shield.active)
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
shields.update_shield_positions()
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/omni_shield/proc/toggle_shield()
|
||||
..()
|
||||
if(shields)
|
||||
shields.set_on(!shields.active)
|
||||
if(shields.active)
|
||||
|
||||
@@ -461,7 +461,6 @@
|
||||
E.status &= ~ORGAN_BROKEN
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/crisis_drone/proc/toggle_drone()
|
||||
..()
|
||||
if(chassis)
|
||||
enabled = !enabled
|
||||
if(enabled)
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
var/turf/aimloc = targloc
|
||||
if(deviation)
|
||||
aimloc = locate(targloc.x+GaussRandRound(deviation,1),targloc.y+GaussRandRound(deviation,1),targloc.z)
|
||||
if(!aimloc || aimloc == curloc || (locs && aimloc in locs))
|
||||
if(!aimloc || aimloc == curloc || (locs && (aimloc in locs)))
|
||||
break
|
||||
playsound(src, fire_sound, fire_volume, 1)
|
||||
projectiles--
|
||||
|
||||
@@ -1569,7 +1569,7 @@
|
||||
return 0
|
||||
|
||||
/obj/mecha/proc/mmi_moved_inside(var/obj/item/device/mmi/mmi_as_oc as obj,mob/user as mob)
|
||||
if(mmi_as_oc && user in range(1))
|
||||
if(mmi_as_oc && (user in range(1)))
|
||||
if(!mmi_as_oc.brainmob || !mmi_as_oc.brainmob.client)
|
||||
to_chat(user, "Consciousness matrix not detected.")
|
||||
return 0
|
||||
@@ -1886,7 +1886,7 @@
|
||||
return
|
||||
|
||||
/obj/mecha/proc/moved_inside(var/mob/living/carbon/human/H as mob)
|
||||
if(H && H.client && H in range(1))
|
||||
if(H && H.client && (H in range(1)))
|
||||
H.reset_view(src)
|
||||
/*
|
||||
H.client.perspective = EYE_PERSPECTIVE
|
||||
@@ -2514,7 +2514,7 @@
|
||||
var/mob/occupant = P.occupant
|
||||
|
||||
user.visible_message("<span class='notice'>\The [user] begins opening the hatch on \the [P]...</span>", "<span class='notice'>You begin opening the hatch on \the [P]...</span>")
|
||||
if (!do_after(user, 40, needhand=0))
|
||||
if (!do_after(user, 40))
|
||||
return
|
||||
|
||||
user.visible_message("<span class='notice'>\The [user] opens the hatch on \the [P] and removes [occupant]!</span>", "<span class='notice'>You open the hatch on \the [P] and remove [occupant]!</span>")
|
||||
@@ -2564,7 +2564,7 @@
|
||||
src.log_message("Recalibration of coordination system failed with 1 error.",1)
|
||||
if(href_list["drop_from_cargo"])
|
||||
var/obj/O = locate(href_list["drop_from_cargo"])
|
||||
if(O && O in src.cargo)
|
||||
if(O && (O in src.cargo))
|
||||
src.occupant_message("<span class='notice'>You unload [O].</span>")
|
||||
O.forceMove(get_turf(src))
|
||||
src.cargo -= O
|
||||
@@ -2632,7 +2632,6 @@
|
||||
AI.icon_state = "ai-crash"
|
||||
src.occupant = cur_occupant
|
||||
*/
|
||||
return
|
||||
|
||||
///////////////////////
|
||||
///// Power stuff /////
|
||||
|
||||
@@ -27,11 +27,13 @@
|
||||
/obj/machinery/computer/mecha/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state)
|
||||
var/list/data = ..()
|
||||
|
||||
data["beacons"] = list()
|
||||
|
||||
var/list/beacons = list()
|
||||
for(var/obj/item/mecha_parts/mecha_tracking/TR in world)
|
||||
var/list/tr_data = TR.tgui_data(user)
|
||||
if(tr_data)
|
||||
data["beacons"].Add(list(tr_data))
|
||||
beacons.Add(list(tr_data))
|
||||
data["beacons"] = beacons
|
||||
|
||||
LAZYINITLIST(stored_data)
|
||||
data["stored_data"] = stored_data
|
||||
|
||||
@@ -188,50 +188,34 @@
|
||||
entry_vent = null
|
||||
else if(entry_vent)
|
||||
if(get_dist(src, entry_vent) <= 1)
|
||||
//VOREStation Edit Start
|
||||
//VOREStation Edit Start
|
||||
var/obj/machinery/atmospherics/unary/vent_pump/exit_vent = get_safe_ventcrawl_target(entry_vent)
|
||||
if(!exit_vent)
|
||||
return
|
||||
if(1) //To maintain indentation level
|
||||
//VOREStation Edit End
|
||||
/* //VOREStation Removal Start - prevent spiders in dorms
|
||||
if(entry_vent.network && entry_vent.network.normal_members.len)
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in entry_vent.network.normal_members)
|
||||
vents.Add(temp_vent)
|
||||
if(!vents.len)
|
||||
entry_vent = null
|
||||
return
|
||||
var/obj/machinery/atmospherics/unary/vent_pump/exit_vent = pick(vents)
|
||||
*/ //VOREStation Removal End
|
||||
/*if(prob(50))
|
||||
src.visible_message("<B>[src] scrambles into the ventillation ducts!</B>")*/
|
||||
spawn(rand(20,60))
|
||||
loc = exit_vent
|
||||
var/travel_time = round(get_dist(loc, exit_vent.loc) / 2)
|
||||
spawn(travel_time)
|
||||
|
||||
spawn(rand(20,60))
|
||||
loc = exit_vent
|
||||
var/travel_time = round(get_dist(loc, exit_vent.loc) / 2)
|
||||
spawn(travel_time)
|
||||
|
||||
if(!exit_vent || exit_vent.welded)
|
||||
loc = entry_vent
|
||||
entry_vent = null
|
||||
return
|
||||
|
||||
if(prob(50))
|
||||
src.visible_message("<span class='notice'>You hear something squeezing through the ventilation ducts.</span>",2)
|
||||
sleep(travel_time)
|
||||
|
||||
if(!exit_vent || exit_vent.welded)
|
||||
loc = entry_vent
|
||||
entry_vent = null
|
||||
return
|
||||
loc = exit_vent.loc
|
||||
if(!exit_vent || exit_vent.welded)
|
||||
loc = entry_vent
|
||||
entry_vent = null
|
||||
var/area/new_area = get_area(loc)
|
||||
if(new_area)
|
||||
new_area.Entered(src)
|
||||
else
|
||||
entry_vent = null
|
||||
return
|
||||
|
||||
if(prob(50))
|
||||
src.visible_message("<span class='notice'>You hear something squeezing through the ventilation ducts.</span>",2)
|
||||
sleep(travel_time)
|
||||
|
||||
if(!exit_vent || exit_vent.welded)
|
||||
loc = entry_vent
|
||||
entry_vent = null
|
||||
return
|
||||
loc = exit_vent.loc
|
||||
entry_vent = null
|
||||
var/area/new_area = get_area(loc)
|
||||
if(new_area)
|
||||
new_area.Entered(src)
|
||||
//VOREStation Edit End
|
||||
//=================
|
||||
|
||||
if(isturf(loc))
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, z_transfer = UP|DOWN, shaped)
|
||||
var/multi_z_scalar = config.multi_z_explosion_scalar
|
||||
src = null //so we don't abort once src is deleted
|
||||
spawn(0)
|
||||
var/start = world.timeofday
|
||||
epicenter = get_turf(epicenter)
|
||||
|
||||
@@ -314,7 +314,6 @@
|
||||
|
||||
// apparently called whenever an item is removed from a slot, container, or anything else.
|
||||
/obj/item/proc/dropped(mob/user as mob)
|
||||
..()
|
||||
if(zoom)
|
||||
zoom() //binoculars, scope, etc
|
||||
appearance_flags &= ~NO_CLIENT_COLOR
|
||||
@@ -697,7 +696,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
|
||||
if((usr.stat && !zoom) || !(istype(usr,/mob/living/carbon/human)))
|
||||
to_chat(usr, "You are unable to focus through the [devicename]")
|
||||
cannotzoom = 1
|
||||
else if(!zoom && global_hud.darkMask[1] in usr.client.screen)
|
||||
else if(!zoom && (global_hud.darkMask[1] in usr.client.screen))
|
||||
to_chat(usr, "Your visor gets in the way of looking through the [devicename]")
|
||||
cannotzoom = 1
|
||||
else if(!zoom && usr.get_active_hand() != src)
|
||||
|
||||
@@ -193,9 +193,9 @@ var/list/GPS_list = list()
|
||||
dat["curr_y"] = curr.y
|
||||
dat["curr_z"] = curr.z
|
||||
dat["curr_z_name"] = strip_improper(using_map.get_zlevel_name(curr.z))
|
||||
dat["gps_list"] = list()
|
||||
dat["z_level_detection"] = using_map.get_map_levels(curr.z, long_range)
|
||||
|
||||
var/list/gps_list = list()
|
||||
for(var/obj/item/device/gps/G in GPS_list - src)
|
||||
|
||||
if(!can_track(G, dat["z_level_detection"]))
|
||||
@@ -219,7 +219,9 @@ var/list/GPS_list = list()
|
||||
gps_data["x"] = T.x
|
||||
gps_data["y"] = T.y
|
||||
|
||||
dat["gps_list"][++dat["gps_list"].len] = gps_data
|
||||
gps_list[++gps_list.len] = gps_data
|
||||
|
||||
dat["gps_list"] = gps_list
|
||||
|
||||
return dat
|
||||
|
||||
@@ -241,7 +243,8 @@ var/list/GPS_list = list()
|
||||
dat += "<tr><td colspan = 4>[hide_signal ? "Tagged" : "Broadcasting"] as '[gps_tag]'.</td>"
|
||||
dat += "<td><a href='?src=\ref[src];tag=1'>\[Change Tag\]</a><a href='?src=\ref[src];range=1'>\[Toggle Scan Range\]</a>[can_hide_signal ? "<a href='?src=\ref[src];hide=1'>\[Toggle Signal Visibility\]</a>":""]</td></tr>"
|
||||
|
||||
if(gps_data["gps_list"].len)
|
||||
var/list/gps_list = gps_data["gps_list"]
|
||||
if(gps_list.len)
|
||||
dat += "<tr><td colspan = 6><b>Detected signals</b></td></tr>"
|
||||
for(var/gps in gps_data["gps_list"])
|
||||
dat += "<tr>"
|
||||
@@ -482,7 +485,8 @@ var/list/GPS_list = list()
|
||||
dat += "<tr><td colspan = 4>[hide_signal ? "Tagged" : "Broadcasting"] as '[gps_tag]'.</td>"
|
||||
dat += "<td><a href='?src=\ref[src];tag=1'>\[Change Tag\]</a><a href='?src=\ref[src];range=1'>\[Toggle Scan Range\]</a>[can_hide_signal ? "<a href='?src=\ref[src];hide=1'>\[Toggle Signal Visibility\]</a>":""]</td></tr>"
|
||||
|
||||
if(gps_data["gps_list"].len)
|
||||
var/list/gps_list = gps_data["gps_list"]
|
||||
if(gps_list.len)
|
||||
dat += "<tr><td colspan = 6><b>Detected signals</b></td></tr>"
|
||||
for(var/gps in gps_data["gps_list"])
|
||||
dat += "<tr>"
|
||||
|
||||
@@ -17,12 +17,12 @@
|
||||
. = ..()
|
||||
var/area/A = get_area(src)
|
||||
if(A)
|
||||
GLOB.apc_event.register(A, src, /obj/update_icon)
|
||||
GLOB.apc_event.register(A, src, /atom/proc/update_icon)
|
||||
|
||||
/obj/item/device/radio/intercom/Destroy()
|
||||
var/area/A = get_area(src)
|
||||
if(A)
|
||||
GLOB.apc_event.unregister(A, src, /obj/update_icon)
|
||||
GLOB.apc_event.unregister(A, src, /atom/proc/update_icon)
|
||||
return ..()
|
||||
|
||||
/obj/item/device/radio/intercom/custom
|
||||
|
||||
@@ -532,7 +532,7 @@ GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer)
|
||||
for(var/obj/machinery/telecomms/receiver/R in telecomms_list)
|
||||
R.receive_signal(signal)
|
||||
|
||||
if(signal.data["done"] && pos_z in signal.data["level"])
|
||||
if(signal.data["done"] && (pos_z in signal.data["level"]))
|
||||
if(adhoc_fallback)
|
||||
to_chat(loc, "<span class='notice'>\The [src] pings as it reestablishes subspace communications.</span>")
|
||||
subspace_transmission = TRUE
|
||||
|
||||
@@ -171,7 +171,7 @@ var/global/mob/living/carbon/human/dummy/mannequin/sleevemate_mob
|
||||
|
||||
//The actual options
|
||||
if(href_list["mindscan"])
|
||||
if(!target.mind || target.mind.name in prevent_respawns)
|
||||
if(!target.mind || (target.mind.name in prevent_respawns))
|
||||
to_chat(usr,"<span class='warning'>Target seems totally braindead.</span>")
|
||||
return
|
||||
|
||||
@@ -208,7 +208,7 @@ var/global/mob/living/carbon/human/dummy/mannequin/sleevemate_mob
|
||||
return
|
||||
|
||||
if(href_list["mindsteal"])
|
||||
if(!target.mind || target.mind.name in prevent_respawns)
|
||||
if(!target.mind || (target.mind.name in prevent_respawns))
|
||||
to_chat(usr,"<span class='warning'>Target seems totally braindead.</span>")
|
||||
return
|
||||
|
||||
|
||||
@@ -80,7 +80,8 @@
|
||||
var/obj/mecha/M = H.loc
|
||||
return M.return_temperature()
|
||||
else if(istype(H.loc, /obj/machinery/atmospherics/unary/cryo_cell))
|
||||
return H.loc:air_contents.temperature
|
||||
var/obj/machinery/atmospherics/unary/cryo_cell/cc = H.loc
|
||||
return cc.air_contents.temperature
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
if(istype(T, /turf/space))
|
||||
|
||||
@@ -62,9 +62,9 @@
|
||||
/obj/item/device/transfer_valve/Moved(old_loc, direction, forced)
|
||||
. = ..()
|
||||
if(isturf(old_loc))
|
||||
unsense_proximity(callback = .HasProximity, center = old_loc)
|
||||
unsense_proximity(callback = /atom/proc/HasProximity, center = old_loc)
|
||||
if(isturf(loc))
|
||||
sense_proximity(callback = .HasProximity)
|
||||
sense_proximity(callback = /atom/proc/HasProximity)
|
||||
|
||||
/obj/item/device/transfer_valve/attack_self(mob/user)
|
||||
tgui_interact(user)
|
||||
|
||||
@@ -506,7 +506,7 @@ GLOBAL_LIST_BOILERPLATE(premade_tele_beacons, /obj/item/device/perfect_tele_beac
|
||||
var/phase_power = 75
|
||||
var/recharging = 0
|
||||
|
||||
/obj/item/device/perfect_tele/frontier/unload_ammo(var/mob/user)
|
||||
/obj/item/device/perfect_tele/frontier/unload_ammo(mob/user, var/ignore_inactive_hand_check = 0)
|
||||
if(recharging)
|
||||
return
|
||||
recharging = 1
|
||||
|
||||
@@ -248,7 +248,6 @@
|
||||
var/datum/matter_synth/S = synths[i]
|
||||
S.use_charge(charge_costs[i] * used) // Doesn't need to be deleted
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/stack/proc/add(var/extra)
|
||||
if(!uses_charge)
|
||||
|
||||
@@ -207,7 +207,7 @@
|
||||
return FALSE
|
||||
|
||||
/obj/item/device/uav/proc/toggle_packed()
|
||||
if(UAV_ON)
|
||||
if(state == UAV_ON)
|
||||
power_down()
|
||||
switch(state)
|
||||
if(UAV_OFF) //Packing
|
||||
|
||||
@@ -46,17 +46,7 @@
|
||||
var/datum/autopsy_data/W = O.autopsy_data[V]
|
||||
|
||||
if(!W.pretend_weapon)
|
||||
/*
|
||||
// the more hits, the more likely it is that we get the right weapon type
|
||||
if(prob(50 + W.hits * 10 + W.damage))
|
||||
*/
|
||||
|
||||
// Buffing this stuff up for now!
|
||||
if(1)
|
||||
W.pretend_weapon = W.weapon
|
||||
else
|
||||
W.pretend_weapon = pick("mechanical toolbox", "wirecutters", "revolver", "crowbar", "fire extinguisher", "tomato soup", "oxygen tank", "emergency oxygen tank", "laser", "bullet")
|
||||
|
||||
W.pretend_weapon = W.weapon
|
||||
|
||||
var/datum/autopsy_data_scanner/D = wdata[V]
|
||||
if(!D)
|
||||
|
||||
@@ -259,4 +259,4 @@ obj/item/clothing/mask/chewable/Destroy()
|
||||
|
||||
/obj/item/clothing/mask/chewable/candy/pocky/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("chocolate" = 10)
|
||||
reagents.add_reagent("chocolate", 10)
|
||||
@@ -142,11 +142,11 @@
|
||||
if(user.a_intent)
|
||||
switch(user.a_intent)
|
||||
if(I_HURT)
|
||||
if(prob(10) && istype(target, /mob/living/carbon/human) && user.zone_sel in list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT, BP_L_ARM, BP_R_ARM, BP_L_HAND, BP_R_HAND))
|
||||
if(prob(10) && istype(target, /mob/living/carbon/human) && (user.zone_sel in list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT, BP_L_ARM, BP_R_ARM, BP_L_HAND, BP_R_HAND)))
|
||||
to_chat(target, "<span class='warning'>\The [src] rips at your hands!</span>")
|
||||
ranged_disarm(target)
|
||||
if(I_DISARM)
|
||||
if(prob(min(90, force * 3)) && istype(target, /mob/living/carbon/human) && user.zone_sel in list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT, BP_L_ARM, BP_R_ARM, BP_L_HAND, BP_R_HAND))
|
||||
if(prob(min(90, force * 3)) && istype(target, /mob/living/carbon/human) && (user.zone_sel in list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT, BP_L_ARM, BP_R_ARM, BP_L_HAND, BP_R_HAND)))
|
||||
ranged_disarm(target)
|
||||
else
|
||||
target.visible_message("<span class='danger'>\The [src] sends \the [target] stumbling away.</span>")
|
||||
@@ -175,7 +175,7 @@
|
||||
visible_message("<span class='danger'>[H]'s [W] goes off due to \the [src]!</span>")
|
||||
return W.afterattack(target,H)
|
||||
|
||||
if(!(H.species.flags & NO_SLIP) && prob(10) && user.zone_sel in list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT))
|
||||
if(!(H.species.flags & NO_SLIP) && prob(10) && (user.zone_sel in list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT)))
|
||||
var/armor_check = H.run_armor_check(user.zone_sel, "melee")
|
||||
H.apply_effect(3, WEAKEN, armor_check)
|
||||
playsound(src, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
|
||||
@@ -45,7 +45,6 @@
|
||||
var/mob/living/carbon/human/H = src.loc
|
||||
H.update_inv_l_hand(0)
|
||||
H.update_inv_r_hand()
|
||||
..()
|
||||
|
||||
// Randomizes color
|
||||
/obj/item/weapon/melee/umbrella/random/New()
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
update_icon()
|
||||
|
||||
//Some belts have sprites to show icons
|
||||
/obj/item/weapon/storage/belt/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer = 0)
|
||||
/obj/item/weapon/storage/belt/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer = 0,var/icon/clip_mask = null)
|
||||
var/image/standing = ..()
|
||||
if(!inhands && contents.len)
|
||||
for(var/obj/item/i in contents)
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
overlays.Cut()
|
||||
if(front_id)
|
||||
var/tiny_state = "id-generic"
|
||||
if("id-"+front_id.icon_state in cached_icon_states(icon))
|
||||
if("id-[front_id.icon_state]" in cached_icon_states(icon))
|
||||
tiny_state = "id-"+front_id.icon_state
|
||||
var/image/tiny_image = new/image(icon, icon_state = tiny_state)
|
||||
tiny_image.appearance_flags = RESET_COLOR
|
||||
|
||||
@@ -668,6 +668,6 @@ var/list/global/tank_gauge_cache = list()
|
||||
|
||||
/obj/item/device/tankassemblyproxy/Moved(old_loc, direction, forced)
|
||||
if(isturf(old_loc))
|
||||
unsense_proximity(callback = .HasProximity, center = old_loc)
|
||||
unsense_proximity(callback = /atom/proc/HasProximity, center = old_loc)
|
||||
if(isturf(loc))
|
||||
sense_proximity(callback = .HasProximity)
|
||||
sense_proximity(callback = /atom/proc/HasProximity)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user