diff --git a/SpacemanDMM.toml b/SpacemanDMM.toml
index 500be06fa6..771e48d2ef 100644
--- a/SpacemanDMM.toml
+++ b/SpacemanDMM.toml
@@ -3,3 +3,6 @@ macro_redefined = "off"
macro_undefined_no_definition = "off"
as_local_var = "off"
tmp_no_effect = "off"
+
+[langserver]
+dreamchecker = true
diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm
index 6bd32c762c..39e9e44da2 100644
--- a/code/ATMOSPHERICS/atmospherics.dm
+++ b/code/ATMOSPHERICS/atmospherics.dm
@@ -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
diff --git a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
index e960d36fa7..8d30c946ca 100644
--- a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
@@ -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
diff --git a/code/ATMOSPHERICS/components/binary_devices/pump.dm b/code/ATMOSPHERICS/components/binary_devices/pump.dm
index 54e034dc92..05922103ff 100644
--- a/code/ATMOSPHERICS/components/binary_devices/pump.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/pump.dm
@@ -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
diff --git a/code/ATMOSPHERICS/components/shutoff.dm b/code/ATMOSPHERICS/components/shutoff.dm
index d7d8076214..7517cbd7ef 100644
--- a/code/ATMOSPHERICS/components/shutoff.dm
+++ b/code/ATMOSPHERICS/components/shutoff.dm
@@ -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)
diff --git a/code/ATMOSPHERICS/components/tvalve.dm b/code/ATMOSPHERICS/components/tvalve.dm
index c0d796d45b..7deca38847 100644
--- a/code/ATMOSPHERICS/components/tvalve.dm
+++ b/code/ATMOSPHERICS/components/tvalve.dm
@@ -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)
diff --git a/code/ATMOSPHERICS/components/valve.dm b/code/ATMOSPHERICS/components/valve.dm
index 3ded7b7388..c890938100 100644
--- a/code/ATMOSPHERICS/components/valve.dm
+++ b/code/ATMOSPHERICS/components/valve.dm
@@ -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)
diff --git a/code/ATMOSPHERICS/mainspipe.dm b/code/ATMOSPHERICS/mainspipe.dm
index ac2b3193c9..e7a0d09477 100644
--- a/code/ATMOSPHERICS/mainspipe.dm
+++ b/code/ATMOSPHERICS/mainspipe.dm
@@ -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()
diff --git a/code/__defines/spaceman_dmm.dm b/code/__defines/spaceman_dmm.dm
new file mode 100644
index 0000000000..94f1743377
--- /dev/null
+++ b/code/__defines/spaceman_dmm.dm
@@ -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
diff --git a/code/__defines/subsystems.dm b/code/__defines/subsystems.dm
index 326ae19397..831155c1d7 100644
--- a/code/__defines/subsystems.dm
+++ b/code/__defines/subsystems.dm
@@ -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)
diff --git a/code/_global_vars/lists/species.dm b/code/_global_vars/lists/species.dm
index 5b467f573f..f35568b07a 100644
--- a/code/_global_vars/lists/species.dm
+++ b/code/_global_vars/lists/species.dm
@@ -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())
diff --git a/code/_helpers/events.dm b/code/_helpers/events.dm
index 2d15bb3aa9..5f2e605512 100644
--- a/code/_helpers/events.dm
+++ b/code/_helpers/events.dm
@@ -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
diff --git a/code/_helpers/game.dm b/code/_helpers/game.dm
index 3af60de770..29622f25c6 100644
--- a/code/_helpers/game.dm
+++ b/code/_helpers/game.dm
@@ -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)
diff --git a/code/_helpers/logging.dm b/code/_helpers/logging.dm
index 56f2882957..399bed63e7 100644
--- a/code/_helpers/logging.dm
+++ b/code/_helpers/logging.dm
@@ -202,10 +202,12 @@
qdel(query_insert)
return
qdel(query_insert)
+
//speaker.dialogue_log += "([time_stamp()]) ([speaker]/[speaker.client]) DEADSAY: - [text]"
- //GLOB.round_text_log += "([time_stamp()]) ([src]/[speaker.client]) DEADSAY: - [text]"
+ //GLOB.round_text_log += "([time_stamp()]) ([speaker]/[speaker.client]) DEADSAY: - [text]"
//CHOMPEdit End
+
/proc/log_ghostemote(text, mob/speaker)
if (config.log_emote)
WRITE_LOG(diary, "DEADEMOTE: [speaker.simple_info_line()]: [html_decode(text)]")
diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm
index b006d63581..1c831efa3d 100644
--- a/code/_helpers/unsorted.dm
+++ b/code/_helpers/unsorted.dm
@@ -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)
diff --git a/code/_macros.dm b/code/_macros.dm
index 33bdf30ceb..18a8ddf825 100644
--- a/code/_macros.dm
+++ b/code/_macros.dm
@@ -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.
diff --git a/code/controllers/subsystems/chat.dm b/code/controllers/subsystems/chat.dm
index 3fda63b5aa..553c30d128 100644
--- a/code/controllers/subsystems/chat.dm
+++ b/code/controllers/subsystems/chat.dm
@@ -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()
diff --git a/code/controllers/subsystems/events.dm b/code/controllers/subsystems/events.dm
index 226c09f492..5b613775e4 100644
--- a/code/controllers/subsystems/events.dm
+++ b/code/controllers/subsystems/events.dm
@@ -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()
diff --git a/code/controllers/subsystems/persistence.dm b/code/controllers/subsystems/persistence.dm
index 1667aa8320..792bf63893 100644
--- a/code/controllers/subsystems/persistence.dm
+++ b/code/controllers/subsystems/persistence.dm
@@ -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 += ""
var/datum/browser/popup = new(user, "admin_persistence", "Persistence Data")
popup.set_content(jointext(dat, null))
- popup.open()
\ No newline at end of file
+ popup.open()
diff --git a/code/controllers/subsystems/planets.dm b/code/controllers/subsystems/planets.dm
index 4cf7222186..d1c2de2410 100644
--- a/code/controllers/subsystems/planets.dm
+++ b/code/controllers/subsystems/planets.dm
@@ -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])
diff --git a/code/controllers/subsystems/ticker.dm b/code/controllers/subsystems/ticker.dm
index 447fb6c773..813b106138 100644
--- a/code/controllers/subsystems/ticker.dm
+++ b/code/controllers/subsystems/ticker.dm
@@ -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.
diff --git a/code/controllers/subsystems/timer.dm b/code/controllers/subsystems/timer.dm
index 64a347336a..9c41a0a4ba 100644
--- a/code/controllers/subsystems/timer.dm
+++ b/code/controllers/subsystems/timer.dm
@@ -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
diff --git a/code/controllers/subsystems/transcore_vr.dm b/code/controllers/subsystems/transcore_vr.dm
index ddfb679932..bd8786ed0c 100644
--- a/code/controllers/subsystems/transcore_vr.dm
+++ b/code/controllers/subsystems/transcore_vr.dm
@@ -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)
diff --git a/code/controllers/subsystems/xenoarch.dm b/code/controllers/subsystems/xenoarch.dm
index 2e22213ee6..9851c69278 100644
--- a/code/controllers/subsystems/xenoarch.dm
+++ b/code/controllers/subsystems/xenoarch.dm
@@ -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))
diff --git a/code/datums/beam.dm b/code/datums/beam.dm
index fc4e696702..7b5b385932 100644
--- a/code/datums/beam.dm
+++ b/code/datums/beam.dm
@@ -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()
diff --git a/code/datums/category.dm b/code/datums/category.dm
index 3bc9640b79..45b2df5996 100644
--- a/code/datums/category.dm
+++ b/code/datums/category.dm
@@ -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)
..()
diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm
index 4ada8af23b..1cb9e0b1c4 100644
--- a/code/datums/components/_component.dm
+++ b/code/datums/components/_component.dm
@@ -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
diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm
index 9f39990afd..e823199af3 100644
--- a/code/datums/components/crafting/crafting.dm
+++ b/code/datums/components/crafting/crafting.dm
@@ -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)
diff --git a/code/datums/datum.dm b/code/datums/datum.dm
index 450e1f5e4d..d457be5196 100644
--- a/code/datums/datum.dm
+++ b/code/datums/datum.dm
@@ -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
diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm
index cfd9107898..7b09c83308 100644
--- a/code/datums/datumvars.dm
+++ b/code/datums/datumvars.dm
@@ -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)
diff --git a/code/datums/elements/_element.dm b/code/datums/elements/_element.dm
index caf02b65b9..46a295f90b 100644
--- a/code/datums/elements/_element.dm
+++ b/code/datums/elements/_element.dm
@@ -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)
diff --git a/code/datums/looping_sounds/sequence.dm b/code/datums/looping_sounds/sequence.dm
index 9399619555..650b3c8d5a 100644
--- a/code/datums/looping_sounds/sequence.dm
+++ b/code/datums/looping_sounds/sequence.dm
@@ -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.
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index c889751475..de91fd48ab 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -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
diff --git a/code/datums/repositories/decls.dm b/code/datums/repositories/decls.dm
index 5217481ad9..c46c8b41bf 100644
--- a/code/datums/repositories/decls.dm
+++ b/code/datums/repositories/decls.dm
@@ -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
diff --git a/code/defines/procs/AStar.dm b/code/defines/procs/AStar.dm
index 1aef60bf05..3ce268d375 100644
--- a/code/defines/procs/AStar.dm
+++ b/code/defines/procs/AStar.dm
@@ -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
diff --git a/code/game/antagonist/alien/borer.dm b/code/game/antagonist/alien/borer.dm
index 34b79271f7..2673774d1c 100644
--- a/code/game/antagonist/alien/borer.dm
+++ b/code/game/antagonist/alien/borer.dm
@@ -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
\ No newline at end of file
diff --git a/code/game/antagonist/alien/xenomorph.dm b/code/game/antagonist/alien/xenomorph.dm
index fa64c879d4..a365259975 100644
--- a/code/game/antagonist/alien/xenomorph.dm
+++ b/code/game/antagonist/alien/xenomorph.dm
@@ -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
diff --git a/code/game/antagonist/antagonist.dm b/code/game/antagonist/antagonist.dm
index e00a4a99df..8778cef2cc 100644
--- a/code/game/antagonist/antagonist.dm
+++ b/code/game/antagonist/antagonist.dm
@@ -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)
diff --git a/code/game/antagonist/station/highlander.dm b/code/game/antagonist/station/highlander.dm
index f483b1df3b..708f047a57 100644
--- a/code/game/antagonist/station/highlander.dm
+++ b/code/game/antagonist/station/highlander.dm
@@ -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
diff --git a/code/game/antagonist/station/rogue_ai.dm b/code/game/antagonist/station/rogue_ai.dm
index 2a46cfd0d9..e1b73b064b 100644
--- a/code/game/antagonist/station/rogue_ai.dm
+++ b/code/game/antagonist/station/rogue_ai.dm
@@ -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
diff --git a/code/game/dna/genes/gene.dm b/code/game/dna/genes/gene.dm
index e52cd4e6c0..a448131b85 100644
--- a/code/game/dna/genes/gene.dm
+++ b/code/game/dna/genes/gene.dm
@@ -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!
diff --git a/code/game/dna/genes/powers.dm b/code/game/dna/genes/powers.dm
index 0693ffdd08..efb934e504 100644
--- a/code/game/dna/genes/powers.dm
+++ b/code/game/dna/genes/powers.dm
@@ -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
diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm
index 89abedd726..6c499c030c 100644
--- a/code/game/gamemodes/events.dm
+++ b/code/game/gamemodes/events.dm
@@ -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
diff --git a/code/game/gamemodes/events/dust.dm b/code/game/gamemodes/events/dust.dm
index 526164cd58..750de2ebd5 100644
--- a/code/game/gamemodes/events/dust.dm
+++ b/code/game/gamemodes/events/dust.dm
@@ -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
diff --git a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm
index 6d9f5a36ff..03f7474380 100644
--- a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm
+++ b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm
@@ -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
\ No newline at end of file
+// END ABILITY VERBS
diff --git a/code/game/gamemodes/technomancer/spell_objs_helpers.dm b/code/game/gamemodes/technomancer/spell_objs_helpers.dm
index cf83640775..27984c1b04 100644
--- a/code/game/gamemodes/technomancer/spell_objs_helpers.dm
+++ b/code/game/gamemodes/technomancer/spell_objs_helpers.dm
@@ -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
diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm
index c946965072..da640bf05c 100644
--- a/code/game/jobs/access.dm
+++ b/code/game/jobs/access.dm
@@ -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)
diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
index 24a8f79cbe..263a108de6 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -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)
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index 1aa1967d6d..de0d8dbcd9 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -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 += "
"
diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm
index 791a36b8da..ccab4944ca 100644
--- a/code/game/objects/items/devices/radio/intercom.dm
+++ b/code/game/objects/items/devices/radio/intercom.dm
@@ -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
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 88e957f76e..1e149fa174 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -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, "\The [src] pings as it reestablishes subspace communications.")
subspace_transmission = TRUE
diff --git a/code/game/objects/items/devices/scanners_vr.dm b/code/game/objects/items/devices/scanners_vr.dm
index b8892ea501..5740a7df86 100644
--- a/code/game/objects/items/devices/scanners_vr.dm
+++ b/code/game/objects/items/devices/scanners_vr.dm
@@ -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,"Target seems totally braindead.")
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,"Target seems totally braindead.")
return
diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm
index 390084f9fe..aae687a9cb 100644
--- a/code/game/objects/items/devices/suit_cooling.dm
+++ b/code/game/objects/items/devices/suit_cooling.dm
@@ -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))
diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm
index 73f7d27168..f72c3c4d24 100644
--- a/code/game/objects/items/devices/transfer_valve.dm
+++ b/code/game/objects/items/devices/transfer_valve.dm
@@ -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)
diff --git a/code/game/objects/items/devices/translocator_vr.dm b/code/game/objects/items/devices/translocator_vr.dm
index c7cc8b1de9..e72e9d7d25 100644
--- a/code/game/objects/items/devices/translocator_vr.dm
+++ b/code/game/objects/items/devices/translocator_vr.dm
@@ -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
diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm
index f4b52f07aa..89dac4c308 100644
--- a/code/game/objects/items/stacks/stack.dm
+++ b/code/game/objects/items/stacks/stack.dm
@@ -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)
diff --git a/code/game/objects/items/uav.dm b/code/game/objects/items/uav.dm
index ff9be37c5a..37dd6ec146 100644
--- a/code/game/objects/items/uav.dm
+++ b/code/game/objects/items/uav.dm
@@ -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
diff --git a/code/game/objects/items/weapons/autopsy.dm b/code/game/objects/items/weapons/autopsy.dm
index 352a3955a3..5f5a2c25a9 100644
--- a/code/game/objects/items/weapons/autopsy.dm
+++ b/code/game/objects/items/weapons/autopsy.dm
@@ -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)
diff --git a/code/game/objects/items/weapons/chewables.dm b/code/game/objects/items/weapons/chewables.dm
index 7e38782092..3f7e3fc1b8 100644
--- a/code/game/objects/items/weapons/chewables.dm
+++ b/code/game/objects/items/weapons/chewables.dm
@@ -259,4 +259,4 @@ obj/item/clothing/mask/chewable/Destroy()
/obj/item/clothing/mask/chewable/candy/pocky/Initialize()
. = ..()
- reagents.add_reagent("chocolate" = 10)
\ No newline at end of file
+ reagents.add_reagent("chocolate", 10)
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/material/misc.dm b/code/game/objects/items/weapons/material/misc.dm
index 7dbb927f85..301fff7600 100644
--- a/code/game/objects/items/weapons/material/misc.dm
+++ b/code/game/objects/items/weapons/material/misc.dm
@@ -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, "\The [src] rips at your hands!")
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("\The [src] sends \the [target] stumbling away.")
@@ -175,7 +175,7 @@
visible_message("[H]'s [W] goes off due to \the [src]!")
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)
diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm
index b7684d6a7f..781ea5a463 100644
--- a/code/game/objects/items/weapons/melee/misc.dm
+++ b/code/game/objects/items/weapons/melee/misc.dm
@@ -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()
diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm
index 116d57fd2e..5412fab07c 100644
--- a/code/game/objects/items/weapons/storage/belt.dm
+++ b/code/game/objects/items/weapons/storage/belt.dm
@@ -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)
diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm
index 274ea23ab8..1a1458bbca 100644
--- a/code/game/objects/items/weapons/storage/wallets.dm
+++ b/code/game/objects/items/weapons/storage/wallets.dm
@@ -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
diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm
index 806d26c90b..abe2db0d53 100644
--- a/code/game/objects/items/weapons/tanks/tanks.dm
+++ b/code/game/objects/items/weapons/tanks/tanks.dm
@@ -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)
diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm
index 4bae7023d2..aef006879e 100644
--- a/code/game/objects/items/weapons/teleportation.dm
+++ b/code/game/objects/items/weapons/teleportation.dm
@@ -132,7 +132,7 @@ Frequency:
/obj/item/weapon/hand_tele/attack_self(mob/user as mob)
var/turf/current_location = get_turf(user)//What turf is the user on?
- if(!current_location || current_location.z in using_map.admin_levels || current_location.block_tele)//If turf was not found or they're on z level 2 or >7 which does not currently exist.
+ if(!current_location || (current_location.z in using_map.admin_levels) || current_location.block_tele)//If turf was not found or they're on z level 2 or >7 which does not currently exist.
to_chat(user, "\The [src] is malfunctioning.")
return
var/list/L = list( )
diff --git a/code/game/objects/structures/cliff.dm b/code/game/objects/structures/cliff.dm
index 24dbb6d25e..7c7ce94e3e 100644
--- a/code/game/objects/structures/cliff.dm
+++ b/code/game/objects/structures/cliff.dm
@@ -130,7 +130,7 @@ two tiles on initialization, and which way a cliff is facing may change during m
var/subtraction_icon_state = "[icon_state]-subtract"
var/cache_string = "[icon_state]_[T.icon]_[T.icon_state]"
- if(T && subtraction_icon_state in cached_icon_states(icon))
+ if(T && (subtraction_icon_state in cached_icon_states(icon)))
cut_overlays()
// If we've made the same icon before, just recycle it.
if(cache_string in GLOB.cliff_icon_cache)
diff --git a/code/game/objects/structures/crates_lockers/__closets.dm b/code/game/objects/structures/crates_lockers/__closets.dm
index 64c865604e..85e45314de 100644
--- a/code/game/objects/structures/crates_lockers/__closets.dm
+++ b/code/game/objects/structures/crates_lockers/__closets.dm
@@ -434,17 +434,17 @@
breakout = 0
return
- playsound(src, breakout_sound, 100, 1)
- animate_shake()
- add_fingerprint(escapee)
-
- //Well then break it!
- breakout = 0
- to_chat(escapee, "You successfully break out!")
- visible_message("\The [escapee] successfully broke out of \the [src]!")
playsound(src, breakout_sound, 100, 1)
- break_open()
animate_shake()
+ add_fingerprint(escapee)
+
+ //Well then break it!
+ breakout = 0
+ to_chat(escapee, "You successfully break out!")
+ visible_message("\The [escapee] successfully broke out of \the [src]!")
+ playsound(src, breakout_sound, 100, 1)
+ break_open()
+ animate_shake()
/obj/structure/closet/proc/break_open()
sealed = 0
diff --git a/code/game/objects/structures/flora/flora.dm b/code/game/objects/structures/flora/flora.dm
index e97c7b84bb..9195de1767 100644
--- a/code/game/objects/structures/flora/flora.dm
+++ b/code/game/objects/structures/flora/flora.dm
@@ -254,8 +254,6 @@
to_chat(user, "You refrain from putting things into the plant pot.")
return
- ..()
-
/obj/structure/flora/pottedplant/attack_hand(mob/user)
if(!stored_item)
to_chat(user, "You see nothing of interest in [src]...")
diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
index 7459fcab6c..3641d57fda 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
@@ -68,7 +68,7 @@
user.pulledby = null
to_chat(user, "You lost your grip!")
return
- if(has_buckled_mobs() && pulling && user in buckled_mobs)
+ if(has_buckled_mobs() && pulling && (user in buckled_mobs))
if(pulling.stat || pulling.stunned || pulling.weakened || pulling.paralysis || pulling.lying || pulling.restrained())
pulling.pulledby = null
pulling = null
@@ -161,7 +161,7 @@
/obj/structure/bed/chair/wheelchair/CtrlClick(var/mob/user)
if(in_range(src, user))
if(!ishuman(user)) return
- if(has_buckled_mobs() && user in buckled_mobs)
+ if(has_buckled_mobs() && (user in buckled_mobs))
to_chat(user, "You realize you are unable to push the wheelchair you sit in.")
return
if(!pulling)
diff --git a/code/game/objects/structures/transit_tubes.dm b/code/game/objects/structures/transit_tubes.dm
index 32fa0724a4..ca1f311073 100644
--- a/code/game/objects/structures/transit_tubes.dm
+++ b/code/game/objects/structures/transit_tubes.dm
@@ -119,7 +119,7 @@ obj/structure/ex_act(severity)
if(pod.contents.len)
to_chat(AM, "The pod is already occupied.")
return
- else if(!pod.moving && pod.dir in directions())
+ else if(!pod.moving && (pod.dir in directions()))
AM.loc = pod
return
@@ -127,7 +127,7 @@ obj/structure/ex_act(severity)
/obj/structure/transit_tube/station/attack_hand(mob/user as mob)
if(!pod_moving)
for(var/obj/structure/transit_tube_pod/pod in loc)
- if(!pod.moving && pod.dir in directions())
+ if(!pod.moving && (pod.dir in directions()))
if(icon_state == "closed")
open_animation()
@@ -156,7 +156,7 @@ obj/structure/ex_act(severity)
/obj/structure/transit_tube/station/proc/launch_pod()
for(var/obj/structure/transit_tube_pod/pod in loc)
- if(!pod.moving && pod.dir in directions())
+ if(!pod.moving && (pod.dir in directions()))
spawn(5)
pod_moving = 1
close_animation()
diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm
index 20267696f3..2268315f96 100644
--- a/code/game/turfs/simulated/wall_attacks.dm
+++ b/code/game/turfs/simulated/wall_attacks.dm
@@ -90,8 +90,6 @@
dismantle_wall()
return 1
- if(..()) return 1
-
if(!can_open)
if(!material.wall_touch_special(src, user))
to_chat(user, "You push the wall, but nothing happens.")
diff --git a/code/game/world.dm b/code/game/world.dm
index e1dcf543a9..e8ac68cee4 100644
--- a/code/game/world.dm
+++ b/code/game/world.dm
@@ -242,7 +242,7 @@ var/world_topic_spam_protect_time = world.timeofday
spawn(50)
world_topic_spam_protect_time = world.time
- return "Bad Key (Throttled)"
+ return
world_topic_spam_protect_time = world.time
world_topic_spam_protect_ip = addr
@@ -329,7 +329,7 @@ var/world_topic_spam_protect_time = world.timeofday
spawn(50)
world_topic_spam_protect_time = world.time
- return "Bad Key (Throttled)"
+ return
world_topic_spam_protect_time = world.time
world_topic_spam_protect_ip = addr
@@ -379,7 +379,7 @@ var/world_topic_spam_protect_time = world.timeofday
spawn(50)
world_topic_spam_protect_time = world.time
- return "Bad Key (Throttled)"
+ return
world_topic_spam_protect_time = world.time
world_topic_spam_protect_ip = addr
@@ -393,7 +393,7 @@ var/world_topic_spam_protect_time = world.timeofday
if(world_topic_spam_protect_ip == addr && abs(world_topic_spam_protect_time - world.time) < 50)
spawn(50)
world_topic_spam_protect_time = world.time
- return "Bad Key (Throttled)"
+ return
world_topic_spam_protect_time = world.time
world_topic_spam_protect_ip = addr
diff --git a/code/modules/admin/ToRban.dm b/code/modules/admin/ToRban.dm
index dbf373b3ff..aa5cc8c888 100644
--- a/code/modules/admin/ToRban.dm
+++ b/code/modules/admin/ToRban.dm
@@ -39,9 +39,9 @@
log_misc("ToR data updated!")
if(usr)
to_chat(usr, "ToRban updated.")
- return 1
+ return
log_misc("ToR data update aborted: no data.")
- return 0
+ return
/client/proc/ToRban(task in list("update","toggle","show","remove","remove all","find"))
set name = "ToRban"
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 6ad6cf7de4..8cbc5f8246 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -1394,15 +1394,15 @@ var/datum/announcement/minor/admin_min_announcer = new
if(2) //Admins
var/ref_mob = "\ref[M]"
- return "[key_name(C, link, name, highlight_special)](?) (PP) (VV) (SM) ([admin_jump_link(M, src)]) (CA) (TAKE)"
+ return "[key_name(C, link, name, highlight_special)](?) (PP) (VV) (SM) ([admin_jump_link(M)]) (CA) (TAKE)"
if(3) //Devs
var/ref_mob = "\ref[M]"
- return "[key_name(C, link, name, highlight_special)](VV)([admin_jump_link(M, src)]) (TAKE)"
+ return "[key_name(C, link, name, highlight_special)](VV)([admin_jump_link(M)]) (TAKE)"
if(4) //Event Managers
var/ref_mob = "\ref[M]"
- return "[key_name(C, link, name, highlight_special)] (?) (PP) (VV) (SM) ([admin_jump_link(M, src)]) (TAKE)"
+ return "[key_name(C, link, name, highlight_special)] (?) (PP) (VV) (SM) ([admin_jump_link(M)]) (TAKE)"
/proc/ishost(whom)
diff --git a/code/modules/admin/admin_memo.dm b/code/modules/admin/admin_memo.dm
index fc38dda9d5..56306ef3e7 100644
--- a/code/modules/admin/admin_memo.dm
+++ b/code/modules/admin/admin_memo.dm
@@ -1,11 +1,13 @@
#define MEMOFILE "data/memo.sav" //where the memos are saved
-#define ENABLE_MEMOS 1 //using a define because screw making a config variable for it. This is more efficient and purty.
+#define ENABLE_MEMOS // this is so stupid
//switch verb so we don't spam up the verb lists with like, 3 verbs for this feature.
/client/proc/admin_memo(task in list("write","show","delete"))
set name = "Memo"
set category = "Server"
- if(!ENABLE_MEMOS) return
+ #ifndef ENABLE_MEMOS
+ return
+ #endif
if(!check_rights(0)) return
switch(task)
if("write") admin_memo_write()
@@ -31,11 +33,13 @@
//show all memos
/client/proc/admin_memo_show()
- if(ENABLE_MEMOS)
- var/savefile/F = new(MEMOFILE)
- if(F)
- for(var/ckey in F.dir)
- to_chat(src, "Admin Memo by [F[ckey]]")
+ #ifndef ENABLE_MEMOS
+ return
+ #endif
+ var/savefile/F = new(MEMOFILE)
+ if(F)
+ for(var/ckey in F.dir)
+ to_chat(src, "Admin Memo by [F[ckey]]")
//delete your own or somebody else's memo
/client/proc/admin_memo_delete()
diff --git a/code/modules/admin/secrets/admin_secrets/prison_warp.dm b/code/modules/admin/secrets/admin_secrets/prison_warp.dm
index 6f0732e781..b4ac06fcc8 100644
--- a/code/modules/admin/secrets/admin_secrets/prison_warp.dm
+++ b/code/modules/admin/secrets/admin_secrets/prison_warp.dm
@@ -12,7 +12,7 @@
for(var/mob/living/carbon/human/H in mob_list)
var/turf/T = get_turf(H)
var/security = 0
- if((T && T in using_map.admin_levels) || prisonwarped.Find(H))
+ if((T in using_map.admin_levels) || prisonwarped.Find(H))
//don't warp them if they aren't ready or are already there
continue
H.Paralyse(5)
diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm
index 58f568cfa7..0d9bceb996 100644
--- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm
+++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm
@@ -634,14 +634,14 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null
if(!is_proper_datum(i))
continue
world.SDQL_var(i, query_tree["call"][1], null, i, superuser, src)
- obj_count_finished++
+ obj_count_finished += 1
SDQL2_TICK_CHECK
SDQL2_HALT_CHECK
if("delete")
for(var/datum/d in found)
SDQL_qdel_datum(d)
- obj_count_finished++
+ obj_count_finished += 1
SDQL2_TICK_CHECK
SDQL2_HALT_CHECK
@@ -663,7 +663,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null
if(!is_proper_datum(d))
continue
SDQL_internal_vv(d, set_list)
- obj_count_finished++
+ obj_count_finished += 1
SDQL2_TICK_CHECK
SDQL2_HALT_CHECK
if(islist(obj_count_finished))
diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm
index 706e5a4274..0e86bec3cd 100644
--- a/code/modules/admin/verbs/adminpm.dm
+++ b/code/modules/admin/verbs/adminpm.dm
@@ -264,7 +264,7 @@
admin_ticket_log(C, "PM From [irc_tagged]: [msg]")
- window_flash(C, ignorepref = TRUE)
+ window_flash(C)
//always play non-admin recipients the adminhelp sound
C << 'sound/effects/adminhelp.ogg'
diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm
index d96fdae6bd..6e034fea7c 100644
--- a/code/modules/admin/verbs/diagnostics.dm
+++ b/code/modules/admin/verbs/diagnostics.dm
@@ -17,7 +17,7 @@
var/inactive_on_main_station = 0
for(var/zone/zone in air_master.zones)
var/turf/simulated/turf = locate() in zone.contents
- if(turf && turf.z in using_map.station_levels)
+ if(turf?.z in using_map.station_levels)
if(zone.needs_update)
active_on_main_station++
else
@@ -79,7 +79,7 @@
var/output = "Radio Report
"
for (var/fq in radio_controller.frequencies)
output += "Freq: [fq]
"
- var/list/datum/radio_frequency/fqs = radio_controller.frequencies[fq]
+ var/datum/radio_frequency/fqs = radio_controller.frequencies[fq]
if (!fqs)
output += " ERROR
"
continue
diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm
index 98a49abc4b..8ef297eb05 100644
--- a/code/modules/admin/verbs/mapping.dm
+++ b/code/modules/admin/verbs/mapping.dm
@@ -43,8 +43,6 @@ GLOBAL_LIST_BOILERPLATE(all_debugging_effects, /obj/effect/debugging)
set category = "Mapping"
set name = "-None of these are for ingame use!!"
- ..()
-
/client/proc/camera_view()
set category = "Mapping"
set name = "Camera Range Display"
@@ -96,7 +94,7 @@ GLOBAL_LIST_BOILERPLATE(all_debugging_effects, /obj/effect/debugging)
if(!(locate(/obj/structure/grille,T)))
var/window_check = 0
for(var/obj/structure/window/W in T)
- if (W.dir == turn(C1.dir,180) || W.dir in list(5,6,9,10) )
+ if (W.dir == turn(C1.dir,180) || (W.dir in list(5,6,9,10)) )
window_check = 1
break
if(!window_check)
diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm
index a7a8993694..f2f484ed7c 100644
--- a/code/modules/admin/verbs/pray.dm
+++ b/code/modules/admin/verbs/pray.dm
@@ -30,15 +30,15 @@
//log_admin("HELP: [key_name(src)]: [msg]")
/proc/CentCom_announce(var/msg, var/mob/Sender, var/iamessage)
- msg = "[uppertext(using_map.boss_short)]M[iamessage ? " IA" : ""]:[key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, src)]) (CA) (BSA) (RPLY): [msg]"
- for(var/client/C in GLOB.admins)
+ msg = "[uppertext(using_map.boss_short)]M[iamessage ? " IA" : ""]:[key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender)]) (CA) (BSA) (RPLY): [msg]"
+ for(var/client/C in GLOB.admins) //VOREStation Edit - GLOB admins
if(R_ADMIN|R_EVENT & C.holder.rights)
to_chat(C,msg)
C << 'sound/machines/signal.ogg'
/proc/Syndicate_announce(var/msg, var/mob/Sender)
- msg = "ILLEGAL:[key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, src)]) (CA) (BSA) (RPLY): [msg]"
- for(var/client/C in GLOB.admins)
+ msg = "ILLEGAL:[key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender)]) (CA) (BSA) (RPLY): [msg]"
+ for(var/client/C in GLOB.admins) //VOREStation Edit - GLOB admins
if(R_ADMIN|R_EVENT & C.holder.rights)
to_chat(C,msg)
C << 'sound/machines/signal.ogg'
\ No newline at end of file
diff --git a/code/modules/admin/view_variables/modify_variables.dm b/code/modules/admin/view_variables/modify_variables.dm
index 9a999e1a75..593773999d 100644
--- a/code/modules/admin/view_variables/modify_variables.dm
+++ b/code/modules/admin/view_variables/modify_variables.dm
@@ -297,7 +297,7 @@ GLOBAL_PROTECT(VVpixelmovement)
var/var_value
if(param_var_name)
- if(!param_var_name in O.vars)
+ if(!(param_var_name in O.vars))
to_chat(src, "A variable with this name ([param_var_name]) doesn't exist in this datum ([O])")
return
variable = param_var_name
diff --git a/code/modules/ai/ai_holder_targeting.dm b/code/modules/ai/ai_holder_targeting.dm
index d4fd0fa33b..f23c70cb5b 100644
--- a/code/modules/ai/ai_holder_targeting.dm
+++ b/code/modules/ai/ai_holder_targeting.dm
@@ -60,7 +60,7 @@
return
var/chosen_target
- if(preferred_target && preferred_target in targets)
+ if(preferred_target && (preferred_target in targets))
chosen_target = preferred_target
else
chosen_target = pick(targets)
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index 824eb85b0a..0f9a9b2f50 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -66,9 +66,9 @@
/obj/item/device/assembly_holder/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
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/assembly_holder/HasProximity(turf/T, atom/movable/AM, old_loc)
if(a_left)
diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm
index de764c5011..3fc49c5067 100644
--- a/code/modules/assembly/proximity.dm
+++ b/code/modules/assembly/proximity.dm
@@ -90,9 +90,9 @@
/obj/item/device/assembly/prox_sensor/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
if(isturf(old_loc))
- unsense_proximity(range = range, callback = .HasProximity, center = old_loc)
+ unsense_proximity(range = range, callback = /atom/proc/HasProximity, center = old_loc)
if(isturf(loc))
- sense_proximity(range = range, callback = .HasProximity)
+ sense_proximity(range = range, callback = /atom/proc/HasProximity)
sense()
/obj/item/device/assembly/prox_sensor/tgui_interact(mob/user, datum/tgui/ui)
diff --git a/code/modules/blob/blob.dm b/code/modules/blob/blob.dm
index 91524d6899..587214a0cb 100644
--- a/code/modules/blob/blob.dm
+++ b/code/modules/blob/blob.dm
@@ -22,7 +22,7 @@
update_icon()
return ..(loc)
-/obj/effect/blob/CanPass(var/atom/movable/mover, vra/turf/target)
+/obj/effect/blob/CanPass(var/atom/movable/mover, var/turf/target)
return FALSE
/obj/effect/blob/ex_act(var/severity)
diff --git a/code/modules/client/preference_setup/preference_setup.dm b/code/modules/client/preference_setup/preference_setup.dm
index f607b9945f..f4440117c4 100644
--- a/code/modules/client/preference_setup/preference_setup.dm
+++ b/code/modules/client/preference_setup/preference_setup.dm
@@ -101,7 +101,7 @@
if(href_list["category"])
var/category = locate(href_list["category"])
- if(category && category in categories)
+ if(category && (category in categories))
selected_category = category
. = 1
diff --git a/code/modules/client/ui_style.dm b/code/modules/client/ui_style.dm
index 84c8055d9f..bcf580bd47 100644
--- a/code/modules/client/ui_style.dm
+++ b/code/modules/client/ui_style.dm
@@ -49,7 +49,7 @@ var/global/list/all_tooltip_styles = list(
if(!UI_style_new) return
var/UI_style_alpha_new = input(usr, "Select a new alpha (transparency) parameter for your UI, between 50 and 255") as null|num
- if(!UI_style_alpha_new | !(UI_style_alpha_new <= 255 && UI_style_alpha_new >= 50)) return
+ if(!UI_style_alpha_new || !(UI_style_alpha_new <= 255 && UI_style_alpha_new >= 50)) return
var/UI_style_color_new = input(usr, "Choose your UI color. Dark colors are not recommended!") as color|null
if(!UI_style_color_new) return
diff --git a/code/modules/client/verbs/who.dm b/code/modules/client/verbs/who.dm
index 956b59f53b..730a80247f 100644
--- a/code/modules/client/verbs/who.dm
+++ b/code/modules/client/verbs/who.dm
@@ -84,7 +84,7 @@
for(var/client/C in GLOB.admins)
if(R_ADMIN & C.holder.rights && R_BAN & C.holder.rights)
- if(C.holder.fakekey && (!R_ADMIN & holder.rights && !R_MOD & holder.rights)) //Event Managerss can't see stealthmins
+ if(C.holder.fakekey && !((R_ADMIN & holder.rights) || (R_MOD & holder.rights))) //Event Managerss can't see stealthmins
continue
msg += "\t[C] is a [C.holder.rank]"
@@ -110,7 +110,7 @@
else if(R_MOD & C.holder.rights && !(R_SERVER & C.holder.rights))
modmsg += "\t[C] is a [C.holder.rank]"
- if(C.holder.fakekey && (!R_ADMIN & holder.rights && !R_MOD & holder.rights))
+ if(C.holder.fakekey && !((R_ADMIN & holder.rights) || (R_MOD & holder.rights)))
continue
if(C.holder.fakekey)
msg += " (as [C.holder.fakekey])"
@@ -131,7 +131,7 @@
num_mods_online++
else if(R_SERVER & C.holder.rights)
- if(C.holder.fakekey && (!R_ADMIN & holder.rights && !R_MOD & holder.rights))
+ if(C.holder.fakekey && !((R_ADMIN & holder.rights) || (R_MOD & holder.rights)))
continue
devmsg += "\t[C] is a [C.holder.rank]"
if(C.holder.fakekey)
@@ -152,7 +152,7 @@
num_devs_online++
else
- if(C.holder.fakekey && (!R_ADMIN & holder.rights && !R_MOD & holder.rights))
+ if(C.holder.fakekey && !((R_ADMIN & holder.rights) || (R_MOD & holder.rights)))
continue
eventMmsg += "\t[C] is a [C.holder.rank]"
if(C.holder.fakekey)
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index c0a71f2c66..fbc6cb8141 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -939,7 +939,7 @@
under_icon = rolled_down_icon
// The _s is because the icon update procs append it.
- if((under_icon == rolled_down_icon && "[worn_state]_s" in cached_icon_states(under_icon)) || ("[worn_state]_d_s" in cached_icon_states(under_icon)))
+ if((under_icon == rolled_down_icon && ("[worn_state]_s" in cached_icon_states(under_icon))) || ("[worn_state]_d_s" in cached_icon_states(under_icon)))
if(rolled_down != 1)
rolled_down = 0
else
@@ -964,7 +964,7 @@
under_icon = new /icon("[INV_W_UNIFORM_DEF_ICON]_[index].dmi")
// The _s is because the icon update procs append it.
- if((under_icon == rolled_down_sleeves_icon && "[worn_state]_s" in cached_icon_states(under_icon)) || ("[worn_state]_r_s" in cached_icon_states(under_icon)))
+ if((under_icon == rolled_down_sleeves_icon && ("[worn_state]_s" in cached_icon_states(under_icon))) || ("[worn_state]_r_s" in cached_icon_states(under_icon)))
if(rolled_sleeves != 1)
rolled_sleeves = 0
else
@@ -1028,7 +1028,6 @@
set category = "Object"
set src in usr
set_sensors(usr)
- ..()
/obj/item/clothing/under/verb/rollsuit()
set name = "Roll Down Jumpsuit"
diff --git a/code/modules/clothing/clothing_icons.dm b/code/modules/clothing/clothing_icons.dm
index 2d4f00c665..2adfbfa0b9 100644
--- a/code/modules/clothing/clothing_icons.dm
+++ b/code/modules/clothing/clothing_icons.dm
@@ -17,7 +17,7 @@
return state2use
//HELMET: May have a lighting overlay
-/obj/item/clothing/head/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer = 0)
+/obj/item/clothing/head/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(on && slot_name == slot_head_str)
var/cache_key = "[light_overlay][LAZYACCESS(sprite_sheets,body_type) ? "_[body_type]" : ""]"
diff --git a/code/modules/clothing/clothing_vr.dm b/code/modules/clothing/clothing_vr.dm
index 43f7a7e0bb..e6935a30e9 100644
--- a/code/modules/clothing/clothing_vr.dm
+++ b/code/modules/clothing/clothing_vr.dm
@@ -40,7 +40,7 @@
to_chat(user, "You can't fit anyone else into \the [src]!")
else
var/obj/item/weapon/holder/micro/holder = I
- if(holder.held_mob && holder.held_mob in holder)
+ if(holder.held_mob && (holder.held_mob in holder))
to_chat(holder.held_mob, "[user] stuffs you into \the [src]!")
holder.held_mob.forceMove(src)
to_chat(user, "You stuff \the [holder.held_mob] into \the [src]!")
diff --git a/code/modules/clothing/spacesuits/rig/modules/specific/ai_container.dm b/code/modules/clothing/spacesuits/rig/modules/specific/ai_container.dm
index 4f7dfef043..cdc86a0acf 100644
--- a/code/modules/clothing/spacesuits/rig/modules/specific/ai_container.dm
+++ b/code/modules/clothing/spacesuits/rig/modules/specific/ai_container.dm
@@ -35,7 +35,7 @@
interface_desc = "A socket that supports a range of artificial intelligence systems."
var/mob/integrated_ai // Direct reference to the actual mob held in the suit.
- var/obj/item/ai_card // Reference to the MMI, posibrain, intellicard or pAI card previously holding the AI.
+ var/obj/item/device/aicard/ai_card // Reference to the MMI, posibrain, intellicard or pAI card previously holding the AI.
var/obj/item/ai_verbs/verb_holder
/obj/item/rig_module/ai_container/process()
diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm
index cbf0135845..090e5473d6 100644
--- a/code/modules/clothing/under/accessories/accessory.dm
+++ b/code/modules/clothing/under/accessories/accessory.dm
@@ -39,7 +39,7 @@
/obj/item/clothing/accessory/proc/get_mob_overlay()
if(!istype(loc,/obj/item/clothing/)) //don't need special handling if it's worn as normal item.
- return ..()
+ return
var/tmp_icon_state = "[overlay_state? "[overlay_state]" : "[icon_state]"]"
if(ishuman(has_suit.loc))
wearer = has_suit.loc
diff --git a/code/modules/clothing/under/miscellaneous_vr.dm b/code/modules/clothing/under/miscellaneous_vr.dm
index e4f15a9c25..ef772e6253 100644
--- a/code/modules/clothing/under/miscellaneous_vr.dm
+++ b/code/modules/clothing/under/miscellaneous_vr.dm
@@ -38,7 +38,6 @@
set src in usr
adjust_fibers(usr)
- ..()
/obj/item/clothing/under/hyperfiber/proc/adjust_fibers(mob/user)
if(hides_bulges == FALSE)
@@ -63,7 +62,6 @@
set category = "Object"
set src in usr
bluespace_size(usr)
- ..()
/obj/item/clothing/under/hyperfiber/bluespace/proc/bluespace_size(mob/usr as mob)
if (!ishuman(usr))
diff --git a/code/modules/detectivework/microscope/microscope.dm b/code/modules/detectivework/microscope/microscope.dm
index d04d362087..5b556f4c00 100644
--- a/code/modules/detectivework/microscope/microscope.dm
+++ b/code/modules/detectivework/microscope/microscope.dm
@@ -87,7 +87,7 @@
/obj/machinery/microscope/proc/remove_sample(var/mob/living/remover)
if(!istype(remover) || remover.incapacitated() || !Adjacent(remover))
- return ..()
+ return
if(!sample)
to_chat(remover, "\The [src] does not have a sample in it.")
return
diff --git a/code/modules/economy/Accounts_DB.dm b/code/modules/economy/Accounts_DB.dm
index 68f71184e9..2b3133c2c1 100644
--- a/code/modules/economy/Accounts_DB.dm
+++ b/code/modules/economy/Accounts_DB.dm
@@ -19,7 +19,7 @@
return 0
if(access_cent_captain in held_card.access)
return 2
- else if(access_hop in held_card.access || access_captain in held_card.access)
+ else if((access_hop in held_card.access) || (access_captain in held_card.access))
return 1
/obj/machinery/account_database/proc/create_transation(target, reason, amount)
diff --git a/code/modules/economy/EFTPOS.dm b/code/modules/economy/EFTPOS.dm
index 986ec2766e..f526dcf7ce 100644
--- a/code/modules/economy/EFTPOS.dm
+++ b/code/modules/economy/EFTPOS.dm
@@ -207,7 +207,7 @@
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card))
var/obj/item/weapon/card/id/C = I
- if(access_cent_captain in C.access || access_hop in C.access || access_captain in C.access)
+ if((access_cent_captain in C.access) || (access_hop in C.access) || (access_captain in C.access))
access_code = 0
to_chat(usr, "[bicon(src)]Access code reset to 0.")
else if (istype(I, /obj/item/weapon/card/emag))
@@ -285,7 +285,5 @@
playsound(src, 'sound/machines/chime.ogg', 50, 1)
src.visible_message("[bicon(src)] \The [src] chimes.")
transaction_paid = 1
- else
- ..()
//emag?
diff --git a/code/modules/emotes/definitions/audible_scream_vr.dm b/code/modules/emotes/definitions/audible_scream_vr.dm
index 7114d0eb66..f2c69ba3c3 100644
--- a/code/modules/emotes/definitions/audible_scream_vr.dm
+++ b/code/modules/emotes/definitions/audible_scream_vr.dm
@@ -10,4 +10,3 @@
"sound" = H.species.male_scream_sound,
"vol" = emote_volume
)
- return ..()
diff --git a/code/modules/events/grubinfestation_vr.dm b/code/modules/events/grubinfestation_vr.dm
index a2c6ace6aa..685d59f3f2 100644
--- a/code/modules/events/grubinfestation_vr.dm
+++ b/code/modules/events/grubinfestation_vr.dm
@@ -15,7 +15,7 @@
var/in_area = get_area(temp_vent)
if(istype(in_area, /area/crew_quarters/sleep) || istype(in_area, /area/hallway/secondary/entry))
continue
- 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 > 10) //CHOMP Edit: Most our networks are 40. SM is 4 and toxins is 2. This needed to change in order to spawn.
vents += temp_vent
diff --git a/code/modules/events/spider_infestation.dm b/code/modules/events/spider_infestation.dm
index 1168d2e643..ba588742dd 100644
--- a/code/modules/events/spider_infestation.dm
+++ b/code/modules/events/spider_infestation.dm
@@ -21,7 +21,7 @@
var/in_area = get_area(temp_vent)
if(istype(in_area, /area/crew_quarters/sleep) || istype(in_area, /area/hallway/secondary/entry))
continue
- 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 > 10) //CHOMP Edit: Most our networks are 40. SM is 4 and toxins is 2. This needed to change in order to spawn.
vents += temp_vent
diff --git a/code/modules/ext_scripts/irc.dm b/code/modules/ext_scripts/irc.dm
index e76c2055b7..a554cdd20a 100644
--- a/code/modules/ext_scripts/irc.dm
+++ b/code/modules/ext_scripts/irc.dm
@@ -1,5 +1,6 @@
/proc/send2irc(var/channel, var/msg)
return // VOREStation Edit - Can't exploit shell if we never call shell!
+ /* Unreachable with above VOREStation Edit
if (config.use_irc_bot)
if (config.use_node_bot)
shell("node bridge.js -h \"[config.irc_bot_host]\" -p \"[config.irc_bot_port]\" -c \"[channel]\" -m \"[escape_shell_arg(msg)]\"")
@@ -22,6 +23,7 @@
spawn(0)
ext_python("ircbot_message.py", "[config.comms_password] [config.irc_bot_host] [channel] [escape_shell_arg(msg)]")
return
+ */
/proc/send2mainirc(var/msg)
if(config.main_irc)
diff --git a/code/modules/ext_scripts/python.dm b/code/modules/ext_scripts/python.dm
index eb6e61aea2..c8fbdd9303 100644
--- a/code/modules/ext_scripts/python.dm
+++ b/code/modules/ext_scripts/python.dm
@@ -18,6 +18,7 @@
/proc/ext_python(var/script, var/args, var/scriptsprefix = 1)
return // VOREStation Edit - Can't exploit shell if we never call shell!
+ /* Unreachable with above vorestation edit
if(scriptsprefix)
script = "scripts/" + script
@@ -25,4 +26,6 @@
script = replacetext(script, "/", "\\")
var/command = config.python_path + " " + script + " " + args
- return shell(command)
\ No newline at end of file
+ return shell(command)
+ */
+
\ No newline at end of file
diff --git a/code/modules/flufftext/Dreaming.dm b/code/modules/flufftext/Dreaming.dm
index 0ed003be7d..da620aca6f 100644
--- a/code/modules/flufftext/Dreaming.dm
+++ b/code/modules/flufftext/Dreaming.dm
@@ -31,9 +31,9 @@ mob/living/carbon/proc/dream()
sleep(rand(40,70))
if(paralysis <= 0)
dreaming = 0
- return 0
+ return
dreaming = 0
- return 1
+ return
mob/living/carbon/proc/handle_dreams()
if(client && !dreaming && prob(5))
diff --git a/code/modules/food/food/thecake.dm b/code/modules/food/food/thecake.dm
index 491e6dca9c..3387699962 100644
--- a/code/modules/food/food/thecake.dm
+++ b/code/modules/food/food/thecake.dm
@@ -160,7 +160,6 @@
layer_stage = 8
/obj/structure/chaoscake/proc/HasSliceMissing()
- ..()
if(slices < maxslices)
if(interval >= regentime)
interval = 0
diff --git a/code/modules/food/kitchen/cooking_machines/candy.dm b/code/modules/food/kitchen/cooking_machines/candy.dm
index d9a30bf8d3..92806dc9a4 100644
--- a/code/modules/food/kitchen/cooking_machines/candy.dm
+++ b/code/modules/food/kitchen/cooking_machines/candy.dm
@@ -1,44 +1,44 @@
-/obj/machinery/appliance/mixer/candy
- name = "candy machine"
- desc = "Get yer candied cheese wheels here!"
- icon_state = "mixer_off"
- off_icon = "mixer_off"
- on_icon = "mixer_on"
- cook_type = "candied"
- appliancetype = CANDYMAKER
- var/datum/looping_sound/candymaker/candymaker_loop
- circuit = /obj/item/weapon/circuitboard/candymachine
- cooking_coeff = 1.0 // Original Value 0.6
-
- output_options = list(
- "Jawbreaker" = /obj/item/weapon/reagent_containers/food/snacks/variable/jawbreaker,
- "Candy Bar" = /obj/item/weapon/reagent_containers/food/snacks/variable/candybar,
- "Sucker" = /obj/item/weapon/reagent_containers/food/snacks/variable/sucker,
- "Jelly" = /obj/item/weapon/reagent_containers/food/snacks/variable/jelly
- )
-
-/obj/machinery/appliance/mixer/candy/Initialize()
- . = ..()
-
- candymaker_loop = new(list(src), FALSE)
-
-/obj/machinery/appliance/mixer/candy/Destroy()
- . = ..()
-
- QDEL_NULL(candymaker_loop)
-
-/obj/machinery/appliance/mixer/candy/update_icon()
- . = ..()
-
- if(!stat)
- icon_state = on_icon
- if(candymaker_loop)
- candymaker_loop.start(src)
- else
- icon_state = off_icon
- if(candymaker_loop)
- candymaker_loop.stop(src)
-
-/obj/machinery/appliance/mixer/candy/change_product_appearance(var/obj/item/weapon/reagent_containers/food/snacks/cooked/product)
- food_color = get_random_colour(1)
- . = ..()
+/obj/machinery/appliance/mixer/candy
+ name = "candy machine"
+ desc = "Get yer candied cheese wheels here!"
+ icon_state = "mixer_off"
+ off_icon = "mixer_off"
+ on_icon = "mixer_on"
+ cook_type = "candied"
+ appliancetype = CANDYMAKER
+ var/datum/looping_sound/candymaker/candymaker_loop
+ circuit = /obj/item/weapon/circuitboard/candymachine
+ cooking_coeff = 1.0 // Original Value 0.6
+
+ output_options = list(
+ "Jawbreaker" = /obj/item/weapon/reagent_containers/food/snacks/variable/jawbreaker,
+ "Candy Bar" = /obj/item/weapon/reagent_containers/food/snacks/variable/candybar,
+ "Sucker" = /obj/item/weapon/reagent_containers/food/snacks/variable/sucker,
+ "Jelly" = /obj/item/weapon/reagent_containers/food/snacks/variable/jelly
+ )
+
+/obj/machinery/appliance/mixer/candy/Initialize()
+ . = ..()
+
+ candymaker_loop = new(list(src), FALSE)
+
+/obj/machinery/appliance/mixer/candy/Destroy()
+ . = ..()
+
+ QDEL_NULL(candymaker_loop)
+
+/obj/machinery/appliance/mixer/candy/update_icon()
+ . = ..()
+
+ if(!stat)
+ icon_state = on_icon
+ if(candymaker_loop)
+ candymaker_loop.start(src)
+ else
+ icon_state = off_icon
+ if(candymaker_loop)
+ candymaker_loop.stop(src)
+
+/obj/machinery/appliance/mixer/candy/change_product_appearance(var/obj/item/weapon/reagent_containers/food/snacks/product)
+ food_color = get_random_colour(1)
+ . = ..()
diff --git a/code/modules/gamemaster/event2/events/security/spider_infestation.dm b/code/modules/gamemaster/event2/events/security/spider_infestation.dm
index 23dc61c673..244db93dd3 100644
--- a/code/modules/gamemaster/event2/events/security/spider_infestation.dm
+++ b/code/modules/gamemaster/event2/events/security/spider_infestation.dm
@@ -37,7 +37,7 @@
/datum/event2/event/spider_infestation/start()
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 get_location_z_levels())
+ if(!temp_vent.welded && temp_vent.network && (temp_vent.loc.z in get_location_z_levels()))
if(temp_vent.network.normal_members.len > 50)
vents += temp_vent
diff --git a/code/modules/holomap/station_holomap.dm b/code/modules/holomap/station_holomap.dm
index f414f4f5f7..dc15dabb46 100644
--- a/code/modules/holomap/station_holomap.dm
+++ b/code/modules/holomap/station_holomap.dm
@@ -48,7 +48,6 @@
. = ..()
/obj/machinery/station_map/proc/setup_holomap()
- . = ..()
bogus = FALSE
var/turf/T = get_turf(src)
original_zLevel = T.z
diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index 8a05b792f3..96b4385a08 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -233,7 +233,7 @@
to_chat(user, "You slice up \the [src].")
var/slices = rand(3,5)
var/reagents_to_transfer = round(reagents.total_volume/slices)
- for(var/i=i;i<=slices;i++)
+ for(var/i=1; i<=slices; i++)
var/obj/item/weapon/reagent_containers/food/snacks/fruit_slice/F = new(get_turf(src),seed)
if(reagents_to_transfer) reagents.trans_to_obj(F,reagents_to_transfer)
qdel(src)
diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm
index 9ceb81fd37..8d51f087a2 100644
--- a/code/modules/hydroponics/seed.dm
+++ b/code/modules/hydroponics/seed.dm
@@ -1,6 +1,6 @@
/datum/plantgene
var/genetype // Label used when applying trait.
- var/list/values // Values to copy into the target seed datum.
+ var/list/list/values // Values to copy into the target seed datum.
/datum/seed
//Tracking.
diff --git a/code/modules/hydroponics/spreading/spreading.dm b/code/modules/hydroponics/spreading/spreading.dm
index 8d28c85da6..73d93abe55 100644
--- a/code/modules/hydroponics/spreading/spreading.dm
+++ b/code/modules/hydroponics/spreading/spreading.dm
@@ -74,7 +74,7 @@
/obj/effect/plant/Destroy()
neighbors.Cut()
if(seed.get_trait(TRAIT_SPREAD)==2)
- unsense_proximity(callback = .HasProximity, center = get_turf(src))
+ unsense_proximity(callback = /atom/proc/HasProximity, center = get_turf(src))
SSplants.remove_plant(src)
for(var/obj/effect/plant/neighbor in range(1,src))
SSplants.add_plant(neighbor)
@@ -108,7 +108,7 @@
name = seed.display_name
max_health = round(seed.get_trait(TRAIT_ENDURANCE)/2)
if(seed.get_trait(TRAIT_SPREAD)==2)
- sense_proximity(callback = .HasProximity) // Grabby
+ sense_proximity(callback = /atom/proc/HasProximity) // Grabby
max_growth = VINE_GROWTH_STAGES
growth_threshold = max_health/VINE_GROWTH_STAGES
icon = 'icons/obj/hydroponics_vines.dmi'
diff --git a/code/modules/hydroponics/spreading/spreading_response.dm b/code/modules/hydroponics/spreading/spreading_response.dm
index 58f4b4da08..b448357187 100644
--- a/code/modules/hydroponics/spreading/spreading_response.dm
+++ b/code/modules/hydroponics/spreading/spreading_response.dm
@@ -17,9 +17,9 @@
. = ..()
if(seed.get_trait(TRAIT_SPREAD)==2)
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/effect/plant/attack_hand(var/mob/user)
manual_unbuckle(user)
diff --git a/code/modules/integrated_electronics/core/integrated_circuit.dm b/code/modules/integrated_electronics/core/integrated_circuit.dm
index 2253d67702..da63046fd5 100644
--- a/code/modules/integrated_electronics/core/integrated_circuit.dm
+++ b/code/modules/integrated_electronics/core/integrated_circuit.dm
@@ -100,17 +100,17 @@ a creative player the means to solve many problems. Circuits are held inside an
data["power_draw_per_use"] = power_draw_per_use
data["extended_desc"] = extended_desc
- data["inputs"] = list()
+ var/list/inputs = list()
+ var/list/outputs = list()
+ var/list/activators = list()
for(var/datum/integrated_io/io in inputs)
- data["inputs"].Add(list(tgui_pin_data(io)))
+ inputs.Add(list(tgui_pin_data(io)))
- data["outputs"] = list()
for(var/datum/integrated_io/io in outputs)
- data["outputs"].Add(list(tgui_pin_data(io)))
+ outputs.Add(list(tgui_pin_data(io)))
- data["activators"] = list()
for(var/datum/integrated_io/io in activators)
- var/list/activator = list(
+ var/list/list/activator = list(
"ref" = REF(io),
"name" = io.name,
"pulse_out" = io.data,
@@ -124,7 +124,11 @@ a creative player the means to solve many problems. Circuits are held inside an
"holder_name" = linked.holder.displayed_name,
)))
- data["activators"].Add(list(activator))
+ activators.Add(list(activator))
+
+ data["inputs"] = inputs
+ data["outputs"] = outputs
+ data["activators"] = activators
return data
@@ -136,14 +140,15 @@ a creative player the means to solve many problems. Circuits are held inside an
pindata["name"] = io.name
pindata["data"] = io.display_data(io.data)
pindata["ref"] = REF(io)
- pindata["linked"] = list()
+ var/list/linked_list = list()
for(var/datum/integrated_io/linked in io.linked)
- pindata["linked"].Add(list(list(
+ linked_list.Add(list(list(
"ref" = REF(linked),
"name" = linked.name,
"holder_ref" = REF(linked.holder),
"holder_name" = linked.holder.displayed_name,
)))
+ pindata["linked"] = linked_list
return pindata
/obj/item/integrated_circuit/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
diff --git a/code/modules/integrated_electronics/core/printer.dm b/code/modules/integrated_electronics/core/printer.dm
index 2480e39fb2..173e81adea 100644
--- a/code/modules/integrated_electronics/core/printer.dm
+++ b/code/modules/integrated_electronics/core/printer.dm
@@ -108,12 +108,14 @@
for(var/category in SScircuit.circuit_fabricator_recipe_list)
var/list/cat_obj = list(
"name" = category,
- "items" = list()
+ "items" = null
)
var/list/circuit_list = SScircuit.circuit_fabricator_recipe_list[category]
+ var/list/items = list()
for(var/path in circuit_list)
var/obj/O = path
var/can_build = TRUE
+
if(ispath(path, /obj/item/integrated_circuit))
var/obj/item/integrated_circuit/IC = path
if((initial(IC.spawn_flags) & IC_SPAWN_RESEARCH) && (!(initial(IC.spawn_flags) & IC_SPAWN_DEFAULT)) && !upgraded)
@@ -127,13 +129,15 @@
var/obj/item/I = path
cost = initial(I.w_class)
- cat_obj["items"].Add(list(list(
+ items.Add(list(list(
"name" = initial(O.name),
"desc" = initial(O.desc),
"can_build" = can_build,
"cost" = cost,
"path" = path,
)))
+
+ cat_obj["items"] = items
categories.Add(list(cat_obj))
data["categories"] = categories
diff --git a/code/modules/integrated_electronics/core/special_pins/dir_pin.dm b/code/modules/integrated_electronics/core/special_pins/dir_pin.dm
index bbb00faa27..1c803db510 100644
--- a/code/modules/integrated_electronics/core/special_pins/dir_pin.dm
+++ b/code/modules/integrated_electronics/core/special_pins/dir_pin.dm
@@ -20,7 +20,7 @@
write_data_to_pin(new_data)
/datum/integrated_io/dir/write_data_to_pin(var/new_data)
- if(isnull(new_data) || new_data in alldirs + list(UP, DOWN))
+ if(isnull(new_data) || (new_data in alldirs + list(UP, DOWN)))
data = new_data
holder.on_data_written()
diff --git a/code/modules/integrated_electronics/subtypes/reagents.dm b/code/modules/integrated_electronics/subtypes/reagents.dm
index f0e92e9e7a..ff8bb0f16b 100644
--- a/code/modules/integrated_electronics/subtypes/reagents.dm
+++ b/code/modules/integrated_electronics/subtypes/reagents.dm
@@ -148,7 +148,6 @@
else
activate_pin(3)
return
- return
var/datum/reagent/B
if(istype(T, /mob/living/carbon/human))
var/mob/living/carbon/human/H = T
diff --git a/code/modules/maps/tg/map_template.dm b/code/modules/maps/tg/map_template.dm
index 019dff407a..8cc742c508 100644
--- a/code/modules/maps/tg/map_template.dm
+++ b/code/modules/maps/tg/map_template.dm
@@ -217,7 +217,7 @@
continue
// Did we already place down a very similar submap?
- if(chosen_template.template_group && chosen_template.template_group in template_groups_used)
+ if(chosen_template.template_group && (chosen_template.template_group in template_groups_used))
priority_submaps -= chosen_template
potential_submaps -= chosen_template
continue
diff --git a/code/modules/maps/tg/reader.dm b/code/modules/maps/tg/reader.dm
index b7bf3561f5..aa0bd51b89 100644
--- a/code/modules/maps/tg/reader.dm
+++ b/code/modules/maps/tg/reader.dm
@@ -144,7 +144,7 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new)
var/maxx = xcrdStart
// Assemble the grid of keys
- var/list/key_list = list()
+ var/list/list/key_list = list()
for(var/line in gridLines)
var/list/line_keys = list()
xcrd = 1
@@ -170,7 +170,7 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new)
if(orientation != 0)
var/num_cols = key_list[1].len
var/num_rows = key_list.len
- var/list/new_key_list = list()
+ var/list/list/new_key_list = list()
// If it's rotated 180 degrees, the dimensions are the same
if(orientation == 180)
new_key_list.len = num_rows
diff --git a/code/modules/materials/materials/_materials.dm b/code/modules/materials/materials/_materials.dm
index 1b6cabffd9..4ff29932b0 100644
--- a/code/modules/materials/materials/_materials.dm
+++ b/code/modules/materials/materials/_materials.dm
@@ -188,7 +188,7 @@ var/list/name_to_material
if(islist(composite_material))
for(var/material_string in composite_material)
temp_matter[material_string] = composite_material[material_string]
- else if(SHEET_MATERIAL_AMOUNT)
+ else
temp_matter[name] = SHEET_MATERIAL_AMOUNT
return temp_matter
diff --git a/code/modules/mining/machinery/machine_processing.dm b/code/modules/mining/machinery/machine_processing.dm
index b176e9ef61..f9b8929003 100644
--- a/code/modules/mining/machinery/machine_processing.dm
+++ b/code/modules/mining/machinery/machine_processing.dm
@@ -69,20 +69,21 @@
else
data["has_id"] = FALSE
- data["ores"] = list()
+
+ var/list/ores = list()
for(var/ore in machine.ores_processing)
if(!machine.ores_stored[ore] && !show_all_ores)
continue
var/ore/O = GLOB.ore_data[ore]
if(!O)
continue
- data["ores"].Add(list(list(
+ ores.Add(list(list(
"ore" = ore,
"name" = O.display_name,
"amount" = machine.ores_stored[ore],
"processing" = machine.ores_processing[ore] ? machine.ores_processing[ore] : 0,
)))
-
+ data["ores"] = ores
data["showAllOres"] = show_all_ores
data["power"] = machine.active
data["speed"] = machine.speed_process
@@ -158,8 +159,8 @@
var/obj/machinery/mineral/output = null
var/obj/machinery/mineral/console = null
var/sheets_per_tick = 10
- var/list/ores_processing[0]
- var/list/ores_stored[0]
+ var/list/ores_processing = list()
+ var/list/ores_stored = list()
var/active = FALSE
var/points = 0
@@ -329,3 +330,4 @@
#undef PROCESS_SMELT
#undef PROCESS_COMPRESS
#undef PROCESS_ALLOY
+
diff --git a/code/modules/mining/machinery/machine_stacking.dm b/code/modules/mining/machinery/machine_stacking.dm
index b88511bbe7..9469b2d64d 100644
--- a/code/modules/mining/machinery/machine_stacking.dm
+++ b/code/modules/mining/machinery/machine_stacking.dm
@@ -37,13 +37,15 @@
/obj/machinery/mineral/stacking_unit_console/tgui_data(mob/user)
var/list/data = ..()
- data["stacktypes"] = list()
+
+ var/list/stacktypes = list()
for(var/stacktype in machine.stack_storage)
if(machine.stack_storage[stacktype] > 0)
- data["stacktypes"].Add(list(list(
+ stacktypes.Add(list(list(
"type" = stacktype,
"amt" = machine.stack_storage[stacktype],
)))
+ data["stacktypes"] = stacktypes
data["stackingAmt"] = machine.stack_amt
return data
diff --git a/code/modules/mining/shelter_atoms_vr.dm b/code/modules/mining/shelter_atoms_vr.dm
index 0d123eaab2..e2edbcdd91 100644
--- a/code/modules/mining/shelter_atoms_vr.dm
+++ b/code/modules/mining/shelter_atoms_vr.dm
@@ -207,7 +207,7 @@ GLOBAL_LIST_EMPTY(unique_deployable)
verbs -= /obj/structure/table/proc/do_put
..()
-/obj/structure/table/survival_pod/dismantle(obj/item/weapon/wrench/W, mob/user)
+/obj/structure/table/survival_pod/dismantle(obj/item/weapon/tool/wrench/W, mob/user)
to_chat(user, "You cannot dismantle \the [src].")
return
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 599ef1b01c..a63361b225 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -466,7 +466,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
set_dir(2) //reset dir so the right directional sprites show up
return ..()
-/mob/observer/dead/stop_orbit(datum/component/orbiter/orbits)
+/mob/observer/dead/stop_orbit()
. = ..()
//restart our floating animation after orbit is done.
pixel_y = 0
diff --git a/code/modules/mob/dead/observer/observer_vr.dm b/code/modules/mob/dead/observer/observer_vr.dm
index 7abad3ef09..2e54e6414e 100644
--- a/code/modules/mob/dead/observer/observer_vr.dm
+++ b/code/modules/mob/dead/observer/observer_vr.dm
@@ -62,7 +62,7 @@
set name = "Notify Transcore"
set desc = "If your past-due backup notification was missed or ignored, you can use this to send a new one."
- if(src.mind && src.mind.name in SStranscore.backed_up)
+ if(src.mind && (src.mind.name in SStranscore.backed_up))
var/datum/transhuman/mind_record/record = SStranscore.backed_up[src.mind.name]
if(!(record.dead_state == MR_DEAD))
to_chat(src, "Your backup is not past-due yet.")
diff --git a/code/modules/mob/living/bot/mulebot.dm b/code/modules/mob/living/bot/mulebot.dm
index 92cc55f7f0..04878bf727 100644
--- a/code/modules/mob/living/bot/mulebot.dm
+++ b/code/modules/mob/living/bot/mulebot.dm
@@ -242,7 +242,6 @@
M.apply_damage(0.5 * damage, BRUTE, BP_R_ARM)
blood_splatter(src, M, 1)
- ..()
/mob/living/bot/mulebot/relaymove(var/mob/user, var/direction)
if(load == user)
diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm
index c52584ba96..075384bc18 100644
--- a/code/modules/mob/living/carbon/brain/life.dm
+++ b/code/modules/mob/living/carbon/brain/life.dm
@@ -219,12 +219,4 @@
if(client && !client.adminobs)
reset_view(null)
- return 1
-
- if (stat != 2)
- if (machine)
- if (machine.check_eye(src) < 0)
- reset_view(null)
- else
- if(client && !client.adminobs)
- reset_view(null)
\ No newline at end of file
+ return 1
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/human_modular_limbs.dm b/code/modules/mob/living/carbon/human/human_modular_limbs.dm
index 471e8a42cd..cae0938225 100644
--- a/code/modules/mob/living/carbon/human/human_modular_limbs.dm
+++ b/code/modules/mob/living/carbon/human/human_modular_limbs.dm
@@ -141,7 +141,6 @@
set name = "Attach Limb"
set category = "Object"
set desc = "Attach a replacement limb."
- set usr = src
var/obj/item/organ/external/E = get_active_hand()
if(!check_can_attach_modular_limb(E))
@@ -171,7 +170,6 @@
set name = "Remove Limb"
set category = "Object"
set desc = "Detach one of your limbs."
- set usr = src
var/list/detachable_limbs = get_modular_limbs(return_first_found = FALSE, validate_proc = /obj/item/organ/external/proc/can_remove_modular_limb)
if(!length(detachable_limbs))
diff --git a/code/modules/mob/living/carbon/human/human_powers.dm b/code/modules/mob/living/carbon/human/human_powers.dm
index 33fb57356b..4b363cb604 100644
--- a/code/modules/mob/living/carbon/human/human_powers.dm
+++ b/code/modules/mob/living/carbon/human/human_powers.dm
@@ -19,7 +19,7 @@
else
var/list/datum/sprite_accessory/hair/valid_hairstyles = list()
for(var/hair_string in hair_styles_list)
- var/list/datum/sprite_accessory/hair/test = hair_styles_list[hair_string]
+ var/datum/sprite_accessory/hair/test = hair_styles_list[hair_string]
if(test.flags & HAIR_TIEABLE)
valid_hairstyles.Add(hair_string)
selected_string = input("Select a new hairstyle", "Your hairstyle", hair_style) as null|anything in valid_hairstyles
diff --git a/code/modules/mob/living/carbon/human/human_resist.dm b/code/modules/mob/living/carbon/human/human_resist.dm
index f9ef85c94b..0b09d169f0 100644
--- a/code/modules/mob/living/carbon/human/human_resist.dm
+++ b/code/modules/mob/living/carbon/human/human_resist.dm
@@ -67,7 +67,6 @@
/mob/living/carbon/human/proc/can_break_straight_jacket()
if((HULK in mutations) || species.can_shred(src,1))
return 1
- return ..()
/mob/living/carbon/human/proc/break_straight_jacket()
visible_message(
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 308fb64157..26203c928f 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -653,7 +653,8 @@
var/obj/mecha/M = loc
loc_temp = M.return_temperature()
else if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell))
- loc_temp = loc:air_contents.temperature
+ var/obj/machinery/atmospherics/unary/cryo_cell/cc = loc
+ loc_temp = cc.air_contents.temperature
else
loc_temp = environment.temperature
diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm
index 00617063f0..f964c77091 100644
--- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm
+++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm
@@ -164,14 +164,14 @@
else
return ..()
-/mob/living/simple_mob/protean_blob/adjustBruteLoss(var/amount)
+/mob/living/simple_mob/protean_blob/adjustBruteLoss(var/amount,var/include_robo)
amount *= 1.5
if(humanform)
return humanform.adjustBruteLoss(amount)
else
return ..()
-/mob/living/simple_mob/protean_blob/adjustFireLoss(var/amount)
+/mob/living/simple_mob/protean_blob/adjustFireLoss(var/amount,var/include_robo)
amount *= 1.5
if(humanform)
return humanform.adjustFireLoss(amount)
diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm
index 79314bfec6..ed73e904a2 100755
--- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm
+++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm
@@ -187,7 +187,7 @@
for(var/obj/item/organ/I in H.internal_organs)
I.removed()
- for(var/obj/item/I in src)
+ for(var/obj/item/I in H.contents)
H.drop_from_inventory(I)
qdel(H)
diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm
index fc821e0a94..c1edfb2a3a 100644
--- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm
+++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm
@@ -145,15 +145,13 @@
P.old_style_target(A)
P.fire()
playsound(src, 'sound/weapons/pierce.ogg', 25, 0)
- else
- ..()
/mob/living/carbon/human/proc/corrosive_acid(O as obj|turf in oview(1)) //If they right click to corrode, an error will flash if its an invalid target./N
set name = "Corrosive Acid (200)"
set desc = "Drench an object in acid, destroying it over time."
set category = "Abilities"
- if(!O in oview(1))
+ if(!(O in oview(1)))
to_chat(src, "[O] is too far away.")
return
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index dbfede96f8..849623ee7b 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -481,7 +481,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
overlays_standing[HAIR_LAYER] = image(face_standing, layer = BODY_LAYER+HAIR_LAYER, "pixel_y" = head_organ.head_offset)
apply_layer(HAIR_LAYER)
- return
+ //return //VOREStation Edit
// VOREStation Edit - START
var/icon/hair_acc_s = get_hair_accessory_overlay()
@@ -565,7 +565,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
standing.underlays += underlay
for(var/mut in mutations)
- if(LASER)
+ if(mut == LASER)
standing.overlays += "lasereyes_s" //TODO
overlays_standing[MUTATIONS_LAYER] = standing
diff --git a/code/modules/mob/living/inventory.dm b/code/modules/mob/living/inventory.dm
index a1d81a0549..8d4a66def3 100644
--- a/code/modules/mob/living/inventory.dm
+++ b/code/modules/mob/living/inventory.dm
@@ -229,32 +229,33 @@
/datum/inventory_panel/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state)
var/list/data = ..()
- data["slots"] = list()
- data["slots"].Add(list(list(
+ var/list/slots = list()
+ slots.Add(list(list(
"name" = "Head (Mask)",
"item" = host.wear_mask,
"act" = "mask",
)))
- data["slots"].Add(list(list(
+ slots.Add(list(list(
"name" = "Left Hand",
"item" = host.l_hand,
"act" = "l_hand",
)))
- data["slots"].Add(list(list(
+ slots.Add(list(list(
"name" = "Right Hand",
"item" = host.r_hand,
"act" = "r_hand",
)))
- data["slots"].Add(list(list(
+ slots.Add(list(list(
"name" = "Back",
"item" = host.back,
"act" = "back",
)))
- data["slots"].Add(list(list(
+ slots.Add(list(list(
"name" = "Pockets",
"item" = "Empty Pockets",
"act" = "pockets",
)))
+ data["slots"] = slots
data["internals"] = host.internals
data["internalsValid"] = istype(host.wear_mask, /obj/item/clothing/mask) && istype(host.back, /obj/item/weapon/tank)
@@ -300,33 +301,37 @@
if(istype(H.w_uniform, /obj/item/clothing/under))
suit = H.w_uniform
- data["slots"] = list()
+
+ var/list/slots = list()
for(var/entry in H.species.hud.gear)
var/list/slot_ref = H.species.hud.gear[entry]
if((slot_ref["slot"] in list(slot_l_store, slot_r_store)))
continue
var/obj/item/thing_in_slot = H.get_equipped_item(slot_ref["slot"])
- data["slots"].Add(list(list(
+ slots.Add(list(list(
"name" = slot_ref["name"],
"item" = thing_in_slot,
"act" = "targetSlot",
"params" = list("slot" = slot_ref["slot"]),
)))
+ data["slots"] = slots
- data["specialSlots"] = list()
+
+ var/list/specialSlots = list()
if(H.species.hud.has_hands)
- data["specialSlots"].Add(list(list(
+ specialSlots.Add(list(list(
"name" = "Left Hand",
"item" = H.l_hand,
"act" = "targetSlot",
"params" = list("slot" = slot_l_hand),
)))
- data["specialSlots"].Add(list(list(
+ specialSlots.Add(list(list(
"name" = "Right Hand",
"item" = H.r_hand,
"act" = "targetSlot",
"params" = list("slot" = slot_r_hand),
)))
+ data["specialSlots"] = specialSlots
data["internals"] = H.internals
data["internalsValid"] = (istype(H.wear_mask, /obj/item/clothing/mask) || istype(H.head, /obj/item/clothing/head/helmet/space)) && (istype(H.back, /obj/item/weapon/tank) || istype(H.belt, /obj/item/weapon/tank) || istype(H.s_store, /obj/item/weapon/tank))
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index eca22436bf..b6e6ffc03f 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -1,644 +1,643 @@
-
-/*
- run_armor_check(a,b)
- args
- a:def_zone - What part is getting hit, if null will check entire body
- b:attack_flag - What type of attack, bullet, laser, energy, melee
- c:armour_pen - How much armor to ignore.
- d:absorb_text - Custom text to send to the player when the armor fully absorbs an attack.
- e:soften_text - Similar to absorb_text, custom text to send to the player when some damage is reduced.
-
- Returns
- A number between 0 and 100, with higher numbers resulting in less damage taken.
-*/
-/mob/living/proc/run_armor_check(var/def_zone = null, var/attack_flag = "melee", var/armour_pen = 0, var/absorb_text = null, var/soften_text = null)
- if(Debug2)
- to_world_log("## DEBUG: getarmor() was called.")
-
- if(armour_pen >= 100)
- return 0 //might as well just skip the processing
-
- var/armor = getarmor(def_zone, attack_flag)
- if(armor)
- var/armor_variance_range = round(armor * 0.25) //Armor's effectiveness has a +25%/-25% variance.
- var/armor_variance = rand(-armor_variance_range, armor_variance_range) //Get a random number between -25% and +25% of the armor's base value
- if(Debug2)
- to_world_log("## DEBUG: The range of armor variance is [armor_variance_range]. The variance picked by RNG is [armor_variance].")
-
- armor = min(armor + armor_variance, 100) //Now we calcuate damage using the new armor percentage.
- armor = max(armor - armour_pen, 0) //Armor pen makes armor less effective.
- if(armor >= 100)
- if(absorb_text)
- to_chat(src, "[absorb_text]")
- else
- to_chat(src, "Your armor absorbs the blow!")
-
- else if(armor > 0)
- if(soften_text)
- to_chat(src, "[soften_text]")
- else
- to_chat(src, "Your armor softens the blow!")
- if(Debug2)
- to_world_log("## DEBUG: Armor when [src] was attacked was [armor].")
- return armor
-
-/*
- //Old armor code here.
- if(armour_pen >= 100)
- return 0 //might as well just skip the processing
-
- var/armor = getarmor(def_zone, attack_flag)
- var/absorb = 0
-
- //Roll armour
- if(prob(armor))
- absorb += 1
- if(prob(armor))
- absorb += 1
-
- //Roll penetration
- if(prob(armour_pen))
- absorb -= 1
- if(prob(armour_pen))
- absorb -= 1
-
- if(absorb >= 2)
- if(absorb_text)
- show_message("[absorb_text]")
- else
- show_message("Your armor absorbs the blow!")
- return 2
- if(absorb == 1)
- if(absorb_text)
- show_message("[soften_text]",4)
- else
- show_message("Your armor softens the blow!")
- return 1
- return 0
-*/
-
-//Certain pieces of armor actually absorb flat amounts of damage from income attacks
-/mob/living/proc/get_armor_soak(var/def_zone = null, var/attack_flag = "melee", var/armour_pen = 0)
- var/soaked = getsoak(def_zone, attack_flag)
- //5 points of armor pen negate one point of soak
- if(armour_pen)
- soaked = max(soaked - (armour_pen/5), 0)
- return soaked
-
-//if null is passed for def_zone, then this should return something appropriate for all zones (e.g. area effect damage)
-/mob/living/proc/getarmor(var/def_zone, var/type)
- return 0
-
-/mob/living/proc/getsoak(var/def_zone, var/type)
- return 0
-
-// Clicking with an empty hand
-/mob/living/attack_hand(mob/living/L)
- ..()
- if(istype(L) && L.a_intent != I_HELP)
- if(ai_holder) // Using disarm, grab, or harm intent is considered a hostile action to the mob's AI.
- ai_holder.react_to_attack(L)
-
-/mob/living/bullet_act(var/obj/item/projectile/P, var/def_zone)
-
- //Being hit while using a deadman switch
- if(istype(get_active_hand(),/obj/item/device/assembly/signaler))
- var/obj/item/device/assembly/signaler/signaler = get_active_hand()
- if(signaler.deadman && prob(80))
- log_and_message_admins("has triggered a signaler deadman's switch")
- src.visible_message("[src] triggers their deadman's switch!")
- signaler.signal()
-
- if(ai_holder && P.firer)
- ai_holder.react_to_attack(P.firer)
-
- //Armor
- var/soaked = get_armor_soak(def_zone, P.check_armour, P.armor_penetration)
- var/absorb = run_armor_check(def_zone, P.check_armour, P.armor_penetration)
- var/proj_sharp = is_sharp(P)
- var/proj_edge = has_edge(P)
-
- if ((proj_sharp || proj_edge) && (soaked >= round(P.damage*0.8)))
- proj_sharp = 0
- proj_edge = 0
-
- if ((proj_sharp || proj_edge) && prob(getarmor(def_zone, P.check_armour)))
- proj_sharp = 0
- proj_edge = 0
-
- //Stun Beams
- if(P.taser_effect)
- stun_effect_act(0, P.agony, def_zone, P)
- if(!P.nodamage)
- apply_damage(P.damage, P.damage_type, def_zone, absorb, soaked, 0, P, sharp=proj_sharp, edge=proj_edge)
- qdel(P)
- return
-
- if(!P.nodamage)
- apply_damage(P.damage, P.damage_type, def_zone, absorb, soaked, 0, P, sharp=proj_sharp, edge=proj_edge)
- P.on_hit(src, absorb, soaked, def_zone)
-
- if(absorb == 100)
- return 2
- else if (absorb >= 0)
- return 1
- else
- return 0
-
-// return absorb
-
-//Handles the effects of "stun" weapons
-/mob/living/proc/stun_effect_act(var/stun_amount, var/agony_amount, var/def_zone, var/used_weapon=null)
- flash_pain()
-
- if (stun_amount)
- Stun(stun_amount)
- Weaken(stun_amount)
- apply_effect(STUTTER, stun_amount)
- apply_effect(EYE_BLUR, stun_amount)
-
- if (agony_amount)
- apply_damage(agony_amount, HALLOSS, def_zone, 0, used_weapon)
- apply_effect(STUTTER, agony_amount/10)
- apply_effect(EYE_BLUR, agony_amount/10)
-
-/mob/living/proc/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0)
- return 0 //only carbon liveforms have this proc
-
-/mob/living/emp_act(severity)
- var/list/L = src.get_contents()
-
- if(LAZYLEN(modifiers))
- for(var/datum/modifier/M in modifiers)
- if(!isnull(M.emp_modifier))
- severity = CLAMP(severity + M.emp_modifier, 1, 5)
-
- if(severity == 5) // Effectively nullified.
- return
-
- for(var/obj/O in L)
- O.emp_act(severity)
- ..()
-
-/mob/living/blob_act(var/obj/structure/blob/B)
- if(stat == DEAD || faction == B.faction)
- return
-
- var/damage = rand(30, 40)
- var/armor_pen = 0
- var/armor_check = "melee"
- var/damage_type = BRUTE
- var/attack_message = "The blob attacks you!"
- var/attack_verb = "attacks"
- var/def_zone = pick(BP_HEAD, BP_TORSO, BP_GROIN, BP_L_ARM, BP_R_ARM, BP_L_LEG, BP_R_LEG)
-
- if(B && B.overmind)
- var/datum/blob_type/blob = B.overmind.blob_type
-
- damage = rand(blob.damage_lower, blob.damage_upper)
- armor_check = blob.armor_check
- armor_pen = blob.armor_pen
- damage_type = blob.damage_type
-
- attack_message = "[blob.attack_message][isSynthetic() ? "[blob.attack_message_synth]":"[blob.attack_message_living]"]"
- attack_verb = blob.attack_verb
- B.overmind.blob_type.on_attack(B, src, def_zone)
-
- if( (damage_type == TOX || damage_type == OXY) && isSynthetic()) // Borgs and FBPs don't really handle tox/oxy damage the same way other mobs do.
- damage_type = BRUTE
- damage *= 0.66 // Take 2/3s as much damage.
-
- visible_message("\The [B] [attack_verb] \the [src]!", "[attack_message]!")
- playsound(src, 'sound/effects/attackblob.ogg', 50, 1)
-
- //Armor
- var/soaked = get_armor_soak(def_zone, armor_check, armor_pen)
- var/absorb = run_armor_check(def_zone, armor_check, armor_pen)
-
- if(ai_holder)
- ai_holder.react_to_attack(B)
-
- apply_damage(damage, damage_type, def_zone, absorb, soaked)
-
-/mob/living/proc/resolve_item_attack(obj/item/I, mob/living/user, var/target_zone)
- return target_zone
-
-//Called when the mob is hit with an item in combat. Returns the blocked result
-/mob/living/proc/hit_with_weapon(obj/item/I, mob/living/user, var/effective_force, var/hit_zone)
- visible_message("[src] has been [I.attack_verb.len? pick(I.attack_verb) : "attacked"] with [I.name] by [user]!")
-
- if(ai_holder)
- ai_holder.react_to_attack(user)
-
- var/soaked = get_armor_soak(hit_zone, "melee")
- var/blocked = run_armor_check(hit_zone, "melee")
-
- standard_weapon_hit_effects(I, user, effective_force, blocked, soaked, hit_zone)
-
- if(I.damtype == BRUTE && prob(33)) // Added blood for whacking non-humans too
- var/turf/simulated/location = get_turf(src)
- if(istype(location)) location.add_blood_floor(src)
-
- return blocked
-
-//returns 0 if the effects failed to apply for some reason, 1 otherwise.
-/mob/living/proc/standard_weapon_hit_effects(obj/item/I, mob/living/user, var/effective_force, var/blocked, var/soaked, var/hit_zone)
- if(!effective_force || blocked >= 100)
- return 0
- //Apply weapon damage
- var/weapon_sharp = is_sharp(I)
- var/weapon_edge = has_edge(I)
-
- if(getsoak(hit_zone, "melee",) - (I.armor_penetration/5) > round(effective_force*0.8)) //soaking a hit turns sharp attacks into blunt ones
- weapon_sharp = 0
- weapon_edge = 0
-
- if(prob(max(getarmor(hit_zone, "melee") - I.armor_penetration, 0))) //melee armour provides a chance to turn sharp/edge weapon attacks into blunt ones
- weapon_sharp = 0
- weapon_edge = 0
-
- apply_damage(effective_force, I.damtype, hit_zone, blocked, soaked, sharp=weapon_sharp, edge=weapon_edge, used_weapon=I)
-
- return 1
-
-//this proc handles being hit by a thrown atom
-/mob/living/hitby(atom/movable/AM as mob|obj,var/speed = THROWFORCE_SPEED_DIVISOR)//Standardization and logging -Sieve
- if(istype(AM,/obj/))
- var/obj/O = AM
- var/dtype = O.damtype
- var/throw_damage = O.throwforce*(speed/THROWFORCE_SPEED_DIVISOR)
-
- var/miss_chance = 15
- if (O.throw_source)
- var/distance = get_dist(O.throw_source, loc)
- miss_chance = max(15*(distance-2), 0)
-
- if (prob(miss_chance))
- visible_message("\The [O] misses [src] narrowly!")
- return
-
- src.visible_message("[src] has been hit by [O].")
- var/armor = run_armor_check(null, "melee")
- var/soaked = get_armor_soak(null, "melee")
-
-
- apply_damage(throw_damage, dtype, null, armor, soaked, is_sharp(O), has_edge(O), O)
-
- O.throwing = 0 //it hit, so stop moving
-
- if(ismob(O.thrower))
- var/mob/M = O.thrower
- var/client/assailant = M.client
- if(assailant)
- add_attack_logs(M,src,"Hit by thrown [O.name]")
- if(ai_holder)
- ai_holder.react_to_attack(O.thrower)
-
- // Begin BS12 momentum-transfer code.
- var/mass = 1.5
- if(istype(O, /obj/item))
- var/obj/item/I = O
- mass = I.w_class/THROWNOBJ_KNOCKBACK_DIVISOR
- var/momentum = speed*mass
-
- if(O.throw_source && momentum >= THROWNOBJ_KNOCKBACK_SPEED)
- var/dir = get_dir(O.throw_source, src)
-
- visible_message("[src] staggers under the impact!","You stagger under the impact!")
- src.throw_at(get_edge_target_turf(src,dir),1,momentum)
-
- if(!O || !src) return
-
- if(O.sharp) //Projectile is suitable for pinning.
- if(soaked >= round(throw_damage*0.8))
- return
-
- //Handles embedding for non-humans and simple_mobs.
- embed(O)
-
- var/turf/T = near_wall(dir,2)
-
- if(T)
- src.loc = T
- visible_message("[src] is pinned to the wall by [O]!","You are pinned to the wall by [O]!")
- src.anchored = 1
- src.pinned += O
-
-/mob/living/proc/embed(var/obj/O, var/def_zone=null)
- O.loc = src
- src.embedded += O
- src.verbs += /mob/proc/yank_out_object
- throw_alert("embeddedobject", /obj/screen/alert/embeddedobject)
-
-//This is called when the mob is thrown into a dense turf
-/mob/living/proc/turf_collision(var/turf/T, var/speed)
- src.take_organ_damage(speed*5)
-
-/mob/living/proc/near_wall(var/direction,var/distance=1)
- var/turf/T = get_step(get_turf(src),direction)
- var/turf/last_turf = src.loc
- var/i = 1
-
- while(i>0 && i<=distance)
- if(T.density) //Turf is a wall!
- return last_turf
- i++
- last_turf = T
- T = get_step(T,direction)
-
- return 0
-
-// End BS12 momentum-transfer code.
-
-/mob/living/attack_generic(var/mob/user, var/damage, var/attack_message)
- if(!damage)
- return
-
- adjustBruteLoss(damage)
- add_attack_logs(user,src,"Generic attack (probably animal)", admin_notify = FALSE) //Usually due to simple_mob attacks
- if(ai_holder)
- ai_holder.react_to_attack(user)
- src.visible_message("[user] has [attack_message] [src]!")
- user.do_attack_animation(src)
- spawn(1) updatehealth()
- return 1
-
-/mob/living/proc/IgniteMob()
- if(fire_stacks > 0 && !on_fire)
- on_fire = 1
- handle_light()
- throw_alert("fire", /obj/screen/alert/fire)
- update_fire()
-
-/mob/living/proc/ExtinguishMob()
- if(on_fire)
- on_fire = 0
- fire_stacks = 0
- handle_light()
- clear_alert("fire")
- update_fire()
-
- if(has_modifier_of_type(/datum/modifier/fire))
- remove_modifiers_of_type(/datum/modifier/fire)
-
-/mob/living/proc/update_fire()
- return
-
-/mob/living/proc/adjust_fire_stacks(add_fire_stacks) //Adjusting the amount of fire_stacks we have on person
- fire_stacks = CLAMP(fire_stacks + add_fire_stacks, FIRE_MIN_STACKS, FIRE_MAX_STACKS)
-
-/mob/living/proc/handle_fire()
- if(fire_stacks < 0)
- fire_stacks = min(0, ++fire_stacks) //If we've doused ourselves in water to avoid fire, dry off slowly
-
- if(fire_stacks > 0)
- fire_stacks = max(0, (fire_stacks-0.1)) //Should slowly burn out
-
- if(!on_fire)
- return 1
- else if(fire_stacks <= 0)
- ExtinguishMob() //Fire's been put out.
- return 1
-
- var/datum/gas_mixture/G = loc.return_air() // Check if we're standing in an oxygenless environment
- if(G.gas["oxygen"] < 1)
- ExtinguishMob() //If there's no oxygen in the tile we're on, put out the fire
- return 1
-
- var/turf/location = get_turf(src)
- location.hotspot_expose(fire_burn_temperature(), 50, 1)
-
-//altered this to cap at the temperature of the fire causing it, using the same 1:1500 value as /mob/living/carbon/human/handle_fire() in human/life.dm
-/mob/living/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
- if(exposed_temperature)
- if(fire_stacks < exposed_temperature/1500) // Subject to balance
- adjust_fire_stacks(2)
- else
- adjust_fire_stacks(2)
- IgniteMob()
-
-//Share fire evenly between the two mobs
-//Called in MobCollide() and Crossed()
-/mob/living/proc/spread_fire(mob/living/L)
- return
-// This is commented out pending discussion on Polaris. If you're a downsteam and you want people to spread fire by touching each other, feel free to uncomment this.
-/*
- if(!istype(L))
- return
- var/L_old_on_fire = L.on_fire
-
- if(on_fire) //Only spread fire stacks if we're on fire
- fire_stacks /= 2
- L.fire_stacks += fire_stacks
- if(L.IgniteMob())
- message_admins("[key_name(src)] bumped into [key_name(L)] and set them on fire.")
-
- if(L_old_on_fire) //Only ignite us and gain their stacks if they were onfire before we bumped them
- L.fire_stacks /= 2
- fire_stacks += L.fire_stacks
- IgniteMob()
-*/
-
-/mob/living/proc/get_cold_protection()
- return 0
-
-/mob/living/proc/get_heat_protection()
- return 0
-
-/mob/living/proc/get_shock_protection()
- return 0
-
-/mob/living/proc/get_water_protection()
- return 1 // Water won't hurt most things.
-
-/mob/living/proc/get_poison_protection()
- return 0
-
-//Finds the effective temperature that the mob is burning at.
-/mob/living/proc/fire_burn_temperature()
- if (fire_stacks <= 0)
- return 0
-
- //Scale quadratically so that single digit numbers of fire stacks don't burn ridiculously hot.
- //lower limit of 700 K, same as matches and roughly the temperature of a cool flame.
- return max(2.25*round(FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE*(fire_stacks/FIRE_MAX_FIRESUIT_STACKS)**2), 700)
-
-// Called when struck by lightning.
-/mob/living/proc/lightning_act()
- // The actual damage/electrocution is handled by the tesla_zap() that accompanies this.
- Paralyse(5)
- stuttering += 20
- make_jittery(150)
- emp_act(1)
- to_chat(src, span("critical", "You've been struck by lightning!"))
-
-// Called when touching a lava tile.
-// Does roughly 100 damage to unprotected mobs, and 20 to fully protected mobs.
-/mob/living/lava_act()
- add_modifier(/datum/modifier/fire/intense, 8 SECONDS) // Around 40 total if left to burn and without fire protection per stack.
- inflict_heat_damage(40) // Another 40, however this is instantly applied to unprotected mobs.
- adjustFireLoss(20) // Lava cannot be 100% resisted with fire protection.
-
-/mob/living/proc/reagent_permeability()
- return 1
- return round(FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE*(fire_stacks/FIRE_MAX_FIRESUIT_STACKS)**2)
-
-/mob/living/proc/handle_actions()
- //Pretty bad, i'd use picked/dropped instead but the parent calls in these are nonexistent
- for(var/datum/action/A in actions)
- if(A.CheckRemoval(src))
- A.Remove(src)
- for(var/obj/item/I in src)
- if(I.action_button_name)
- if(!I.action)
- if(I.action_button_is_hands_free)
- I.action = new/datum/action/item_action/hands_free
- else
- I.action = new/datum/action/item_action
- I.action.name = I.action_button_name
- I.action.target = I
- I.action.Grant(src)
- return
-
-/mob/living/update_action_buttons()
- if(!hud_used) return
- if(!client) return
-
- if(hud_used.hud_shown != 1) //Hud toggled to minimal
- return
-
- client.screen -= hud_used.hide_actions_toggle
- for(var/datum/action/A in actions)
- if(A.button)
- client.screen -= A.button
-
- if(hud_used.action_buttons_hidden)
- if(!hud_used.hide_actions_toggle)
- hud_used.hide_actions_toggle = new(hud_used)
- hud_used.hide_actions_toggle.UpdateIcon()
-
- if(!hud_used.hide_actions_toggle.moved)
- hud_used.hide_actions_toggle.screen_loc = hud_used.ButtonNumberToScreenCoords(1)
- //hud_used.SetButtonCoords(hud_used.hide_actions_toggle,1)
-
- client.screen += hud_used.hide_actions_toggle
- return
-
- var/button_number = 0
- for(var/datum/action/A in actions)
- button_number++
- if(A.button == null)
- var/obj/screen/movable/action_button/N = new(hud_used)
- N.owner = A
- A.button = N
-
- var/obj/screen/movable/action_button/B = A.button
-
- B.UpdateIcon()
-
- B.name = A.UpdateName()
-
- client.screen += B
-
- if(!B.moved)
- B.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number)
- //hud_used.SetButtonCoords(B,button_number)
-
- if(button_number > 0)
- if(!hud_used.hide_actions_toggle)
- hud_used.hide_actions_toggle = new(hud_used)
- hud_used.hide_actions_toggle.InitialiseIcon(src)
- if(!hud_used.hide_actions_toggle.moved)
- hud_used.hide_actions_toggle.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number+1)
- //hud_used.SetButtonCoords(hud_used.hide_actions_toggle,button_number+1)
- client.screen += hud_used.hide_actions_toggle
-
-// Returns a number to determine if something is harder or easier to hit than normal.
-/mob/living/proc/get_evasion()
- var/result = evasion // First we get the 'base' evasion. Generally this is zero.
- for(var/datum/modifier/M in modifiers)
- if(!isnull(M.evasion))
- result += M.evasion
- return result
-
-/mob/living/proc/get_accuracy_penalty()
- // Certain statuses make it harder to score a hit.
- var/accuracy_penalty = 0
- if(eye_blind)
- accuracy_penalty += 75
- if(eye_blurry)
- accuracy_penalty += 30
- if(confused)
- accuracy_penalty += 45
-
- return accuracy_penalty
-
-// Applies direct "cold" damage while checking protection against the cold.
-/mob/living/proc/inflict_cold_damage(amount)
- amount *= 1 - get_cold_protection(50) // Within spacesuit protection.
- if(amount > 0)
- adjustFireLoss(amount)
-
-// Ditto, but for "heat".
-/mob/living/proc/inflict_heat_damage(amount)
- amount *= 1 - get_heat_protection(10000) // Within firesuit protection.
- if(amount > 0)
- adjustFireLoss(amount)
-
-// and one for electricity because why not
-/mob/living/proc/inflict_shock_damage(amount)
- electrocute_act(amount, null, 1 - get_shock_protection(), pick(BP_HEAD, BP_TORSO, BP_GROIN))
-
-// also one for water (most things resist it entirely, except for slimes)
-/mob/living/proc/inflict_water_damage(amount)
- amount *= 1 - get_water_protection()
- if(amount > 0)
- adjustToxLoss(amount)
-
-// one for abstracted away ""poison"" (mostly because simplemobs shouldn't handle reagents)
-/mob/living/proc/inflict_poison_damage(amount)
- if(isSynthetic())
- return
- amount *= 1 - get_poison_protection()
- if(amount > 0)
- adjustToxLoss(amount)
-
-/mob/living/proc/can_inject()
- return 1
-
-/mob/living/proc/get_organ_target()
- var/mob/shooter = src
- var/t = shooter:zone_sel.selecting
- if ((t in list( O_EYES, O_MOUTH )))
- t = BP_HEAD
- var/obj/item/organ/external/def_zone = ran_zone(t)
- return def_zone
-
-// heal ONE external organ, organ gets randomly selected from damaged ones.
-/mob/living/proc/heal_organ_damage(var/brute, var/burn)
- adjustBruteLoss(-brute)
- adjustFireLoss(-burn)
- src.updatehealth()
-
-// damage ONE external organ, organ gets randomly selected from damaged ones.
-/mob/living/proc/take_organ_damage(var/brute, var/burn, var/emp=0)
- if(status_flags & GODMODE) return 0 //godmode
- adjustBruteLoss(brute)
- adjustFireLoss(burn)
- src.updatehealth()
-
-// heal MANY external organs, in random order
-/mob/living/proc/heal_overall_damage(var/brute, var/burn)
- adjustBruteLoss(-brute)
- adjustFireLoss(-burn)
- src.updatehealth()
-
-// damage MANY external organs, in random order
-/mob/living/proc/take_overall_damage(var/brute, var/burn, var/used_weapon = null)
- if(status_flags & GODMODE) return 0 //godmode
- adjustBruteLoss(brute)
- adjustFireLoss(burn)
- src.updatehealth()
-
-/mob/living/proc/restore_all_organs()
- return
+
+/*
+ run_armor_check(a,b)
+ args
+ a:def_zone - What part is getting hit, if null will check entire body
+ b:attack_flag - What type of attack, bullet, laser, energy, melee
+ c:armour_pen - How much armor to ignore.
+ d:absorb_text - Custom text to send to the player when the armor fully absorbs an attack.
+ e:soften_text - Similar to absorb_text, custom text to send to the player when some damage is reduced.
+
+ Returns
+ A number between 0 and 100, with higher numbers resulting in less damage taken.
+*/
+/mob/living/proc/run_armor_check(var/def_zone = null, var/attack_flag = "melee", var/armour_pen = 0, var/absorb_text = null, var/soften_text = null)
+ if(Debug2)
+ to_world_log("## DEBUG: getarmor() was called.")
+
+ if(armour_pen >= 100)
+ return 0 //might as well just skip the processing
+
+ var/armor = getarmor(def_zone, attack_flag)
+ if(armor)
+ var/armor_variance_range = round(armor * 0.25) //Armor's effectiveness has a +25%/-25% variance.
+ var/armor_variance = rand(-armor_variance_range, armor_variance_range) //Get a random number between -25% and +25% of the armor's base value
+ if(Debug2)
+ to_world_log("## DEBUG: The range of armor variance is [armor_variance_range]. The variance picked by RNG is [armor_variance].")
+
+ armor = min(armor + armor_variance, 100) //Now we calcuate damage using the new armor percentage.
+ armor = max(armor - armour_pen, 0) //Armor pen makes armor less effective.
+ if(armor >= 100)
+ if(absorb_text)
+ to_chat(src, "[absorb_text]")
+ else
+ to_chat(src, "Your armor absorbs the blow!")
+
+ else if(armor > 0)
+ if(soften_text)
+ to_chat(src, "[soften_text]")
+ else
+ to_chat(src, "Your armor softens the blow!")
+ if(Debug2)
+ to_world_log("## DEBUG: Armor when [src] was attacked was [armor].")
+ return armor
+
+/*
+ //Old armor code here.
+ if(armour_pen >= 100)
+ return 0 //might as well just skip the processing
+
+ var/armor = getarmor(def_zone, attack_flag)
+ var/absorb = 0
+
+ //Roll armour
+ if(prob(armor))
+ absorb += 1
+ if(prob(armor))
+ absorb += 1
+
+ //Roll penetration
+ if(prob(armour_pen))
+ absorb -= 1
+ if(prob(armour_pen))
+ absorb -= 1
+
+ if(absorb >= 2)
+ if(absorb_text)
+ show_message("[absorb_text]")
+ else
+ show_message("Your armor absorbs the blow!")
+ return 2
+ if(absorb == 1)
+ if(absorb_text)
+ show_message("[soften_text]",4)
+ else
+ show_message("Your armor softens the blow!")
+ return 1
+ return 0
+*/
+
+//Certain pieces of armor actually absorb flat amounts of damage from income attacks
+/mob/living/proc/get_armor_soak(var/def_zone = null, var/attack_flag = "melee", var/armour_pen = 0)
+ var/soaked = getsoak(def_zone, attack_flag)
+ //5 points of armor pen negate one point of soak
+ if(armour_pen)
+ soaked = max(soaked - (armour_pen/5), 0)
+ return soaked
+
+//if null is passed for def_zone, then this should return something appropriate for all zones (e.g. area effect damage)
+/mob/living/proc/getarmor(var/def_zone, var/type)
+ return 0
+
+/mob/living/proc/getsoak(var/def_zone, var/type)
+ return 0
+
+// Clicking with an empty hand
+/mob/living/attack_hand(mob/living/L)
+ ..()
+ if(istype(L) && L.a_intent != I_HELP)
+ if(ai_holder) // Using disarm, grab, or harm intent is considered a hostile action to the mob's AI.
+ ai_holder.react_to_attack(L)
+
+/mob/living/bullet_act(var/obj/item/projectile/P, var/def_zone)
+
+ //Being hit while using a deadman switch
+ if(istype(get_active_hand(),/obj/item/device/assembly/signaler))
+ var/obj/item/device/assembly/signaler/signaler = get_active_hand()
+ if(signaler.deadman && prob(80))
+ log_and_message_admins("has triggered a signaler deadman's switch")
+ src.visible_message("[src] triggers their deadman's switch!")
+ signaler.signal()
+
+ if(ai_holder && P.firer)
+ ai_holder.react_to_attack(P.firer)
+
+ //Armor
+ var/soaked = get_armor_soak(def_zone, P.check_armour, P.armor_penetration)
+ var/absorb = run_armor_check(def_zone, P.check_armour, P.armor_penetration)
+ var/proj_sharp = is_sharp(P)
+ var/proj_edge = has_edge(P)
+
+ if ((proj_sharp || proj_edge) && (soaked >= round(P.damage*0.8)))
+ proj_sharp = 0
+ proj_edge = 0
+
+ if ((proj_sharp || proj_edge) && prob(getarmor(def_zone, P.check_armour)))
+ proj_sharp = 0
+ proj_edge = 0
+
+ //Stun Beams
+ if(P.taser_effect)
+ stun_effect_act(0, P.agony, def_zone, P)
+ if(!P.nodamage)
+ apply_damage(P.damage, P.damage_type, def_zone, absorb, soaked, 0, P, sharp=proj_sharp, edge=proj_edge)
+ qdel(P)
+ return
+
+ if(!P.nodamage)
+ apply_damage(P.damage, P.damage_type, def_zone, absorb, soaked, 0, P, sharp=proj_sharp, edge=proj_edge)
+ P.on_hit(src, absorb, soaked, def_zone)
+
+ if(absorb == 100)
+ return 2
+ else if (absorb >= 0)
+ return 1
+ else
+ return 0
+
+// return absorb
+
+//Handles the effects of "stun" weapons
+/mob/living/proc/stun_effect_act(var/stun_amount, var/agony_amount, var/def_zone, var/used_weapon=null)
+ flash_pain()
+
+ if (stun_amount)
+ Stun(stun_amount)
+ Weaken(stun_amount)
+ apply_effect(STUTTER, stun_amount)
+ apply_effect(EYE_BLUR, stun_amount)
+
+ if (agony_amount)
+ apply_damage(agony_amount, HALLOSS, def_zone, 0, used_weapon)
+ apply_effect(STUTTER, agony_amount/10)
+ apply_effect(EYE_BLUR, agony_amount/10)
+
+/mob/living/proc/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null, var/stun = 1)
+ return 0 //only carbon liveforms have this proc
+
+/mob/living/emp_act(severity)
+ var/list/L = src.get_contents()
+
+ if(LAZYLEN(modifiers))
+ for(var/datum/modifier/M in modifiers)
+ if(!isnull(M.emp_modifier))
+ severity = CLAMP(severity + M.emp_modifier, 1, 5)
+
+ if(severity == 5) // Effectively nullified.
+ return
+
+ for(var/obj/O in L)
+ O.emp_act(severity)
+ ..()
+
+/mob/living/blob_act(var/obj/structure/blob/B)
+ if(stat == DEAD || faction == B.faction)
+ return
+
+ var/damage = rand(30, 40)
+ var/armor_pen = 0
+ var/armor_check = "melee"
+ var/damage_type = BRUTE
+ var/attack_message = "The blob attacks you!"
+ var/attack_verb = "attacks"
+ var/def_zone = pick(BP_HEAD, BP_TORSO, BP_GROIN, BP_L_ARM, BP_R_ARM, BP_L_LEG, BP_R_LEG)
+
+ if(B && B.overmind)
+ var/datum/blob_type/blob = B.overmind.blob_type
+
+ damage = rand(blob.damage_lower, blob.damage_upper)
+ armor_check = blob.armor_check
+ armor_pen = blob.armor_pen
+ damage_type = blob.damage_type
+
+ attack_message = "[blob.attack_message][isSynthetic() ? "[blob.attack_message_synth]":"[blob.attack_message_living]"]"
+ attack_verb = blob.attack_verb
+ B.overmind.blob_type.on_attack(B, src, def_zone)
+
+ if( (damage_type == TOX || damage_type == OXY) && isSynthetic()) // Borgs and FBPs don't really handle tox/oxy damage the same way other mobs do.
+ damage_type = BRUTE
+ damage *= 0.66 // Take 2/3s as much damage.
+
+ visible_message("\The [B] [attack_verb] \the [src]!", "[attack_message]!")
+ playsound(src, 'sound/effects/attackblob.ogg', 50, 1)
+
+ //Armor
+ var/soaked = get_armor_soak(def_zone, armor_check, armor_pen)
+ var/absorb = run_armor_check(def_zone, armor_check, armor_pen)
+
+ if(ai_holder)
+ ai_holder.react_to_attack(B)
+
+ apply_damage(damage, damage_type, def_zone, absorb, soaked)
+
+/mob/living/proc/resolve_item_attack(obj/item/I, mob/living/user, var/target_zone)
+ return target_zone
+
+//Called when the mob is hit with an item in combat. Returns the blocked result
+/mob/living/proc/hit_with_weapon(obj/item/I, mob/living/user, var/effective_force, var/hit_zone)
+ visible_message("[src] has been [I.attack_verb.len? pick(I.attack_verb) : "attacked"] with [I.name] by [user]!")
+
+ if(ai_holder)
+ ai_holder.react_to_attack(user)
+
+ var/soaked = get_armor_soak(hit_zone, "melee")
+ var/blocked = run_armor_check(hit_zone, "melee")
+
+ standard_weapon_hit_effects(I, user, effective_force, blocked, soaked, hit_zone)
+
+ if(I.damtype == BRUTE && prob(33)) // Added blood for whacking non-humans too
+ var/turf/simulated/location = get_turf(src)
+ if(istype(location)) location.add_blood_floor(src)
+
+ return blocked
+
+//returns 0 if the effects failed to apply for some reason, 1 otherwise.
+/mob/living/proc/standard_weapon_hit_effects(obj/item/I, mob/living/user, var/effective_force, var/blocked, var/soaked, var/hit_zone)
+ if(!effective_force || blocked >= 100)
+ return 0
+ //Apply weapon damage
+ var/weapon_sharp = is_sharp(I)
+ var/weapon_edge = has_edge(I)
+
+ if(getsoak(hit_zone, "melee",) - (I.armor_penetration/5) > round(effective_force*0.8)) //soaking a hit turns sharp attacks into blunt ones
+ weapon_sharp = 0
+ weapon_edge = 0
+
+ if(prob(max(getarmor(hit_zone, "melee") - I.armor_penetration, 0))) //melee armour provides a chance to turn sharp/edge weapon attacks into blunt ones
+ weapon_sharp = 0
+ weapon_edge = 0
+
+ apply_damage(effective_force, I.damtype, hit_zone, blocked, soaked, sharp=weapon_sharp, edge=weapon_edge, used_weapon=I)
+
+ return 1
+
+//this proc handles being hit by a thrown atom
+/mob/living/hitby(atom/movable/AM as mob|obj,var/speed = THROWFORCE_SPEED_DIVISOR)//Standardization and logging -Sieve
+ if(istype(AM,/obj/))
+ var/obj/O = AM
+ var/dtype = O.damtype
+ var/throw_damage = O.throwforce*(speed/THROWFORCE_SPEED_DIVISOR)
+
+ var/miss_chance = 15
+ if (O.throw_source)
+ var/distance = get_dist(O.throw_source, loc)
+ miss_chance = max(15*(distance-2), 0)
+
+ if (prob(miss_chance))
+ visible_message("\The [O] misses [src] narrowly!")
+ return
+
+ src.visible_message("[src] has been hit by [O].")
+ var/armor = run_armor_check(null, "melee")
+ var/soaked = get_armor_soak(null, "melee")
+
+
+ apply_damage(throw_damage, dtype, null, armor, soaked, is_sharp(O), has_edge(O), O)
+
+ O.throwing = 0 //it hit, so stop moving
+
+ if(ismob(O.thrower))
+ var/mob/M = O.thrower
+ var/client/assailant = M.client
+ if(assailant)
+ add_attack_logs(M,src,"Hit by thrown [O.name]")
+ if(ai_holder)
+ ai_holder.react_to_attack(O.thrower)
+
+ // Begin BS12 momentum-transfer code.
+ var/mass = 1.5
+ if(istype(O, /obj/item))
+ var/obj/item/I = O
+ mass = I.w_class/THROWNOBJ_KNOCKBACK_DIVISOR
+ var/momentum = speed*mass
+
+ if(O.throw_source && momentum >= THROWNOBJ_KNOCKBACK_SPEED)
+ var/dir = get_dir(O.throw_source, src)
+
+ visible_message("[src] staggers under the impact!","You stagger under the impact!")
+ src.throw_at(get_edge_target_turf(src,dir),1,momentum)
+
+ if(!O || !src) return
+
+ if(O.sharp) //Projectile is suitable for pinning.
+ if(soaked >= round(throw_damage*0.8))
+ return
+
+ //Handles embedding for non-humans and simple_animals.
+ embed(O)
+
+ var/turf/T = near_wall(dir,2)
+
+ if(T)
+ src.loc = T
+ visible_message("[src] is pinned to the wall by [O]!","You are pinned to the wall by [O]!")
+ src.anchored = 1
+ src.pinned += O
+
+/mob/living/proc/embed(var/obj/O, var/def_zone=null)
+ O.loc = src
+ src.embedded += O
+ src.verbs += /mob/proc/yank_out_object
+ throw_alert("embeddedobject", /obj/screen/alert/embeddedobject)
+
+//This is called when the mob is thrown into a dense turf
+/mob/living/proc/turf_collision(var/turf/T, var/speed)
+ src.take_organ_damage(speed*5)
+
+/mob/living/proc/near_wall(var/direction,var/distance=1)
+ var/turf/T = get_step(get_turf(src),direction)
+ var/turf/last_turf = src.loc
+ var/i = 1
+
+ while(i>0 && i<=distance)
+ if(T.density) //Turf is a wall!
+ return last_turf
+ i++
+ last_turf = T
+ T = get_step(T,direction)
+
+ return 0
+
+// End BS12 momentum-transfer code.
+
+/mob/living/attack_generic(var/mob/user, var/damage, var/attack_message)
+ if(!damage)
+ return
+
+ adjustBruteLoss(damage)
+ add_attack_logs(user,src,"Generic attack (probably animal)", admin_notify = FALSE) //Usually due to simple_mob attacks
+ if(ai_holder)
+ ai_holder.react_to_attack(user)
+ src.visible_message("[user] has [attack_message] [src]!")
+ user.do_attack_animation(src)
+ spawn(1) updatehealth()
+ return 1
+
+/mob/living/proc/IgniteMob()
+ if(fire_stacks > 0 && !on_fire)
+ on_fire = 1
+ handle_light()
+ throw_alert("fire", /obj/screen/alert/fire)
+ update_fire()
+
+/mob/living/proc/ExtinguishMob()
+ if(on_fire)
+ on_fire = 0
+ fire_stacks = 0
+ handle_light()
+ clear_alert("fire")
+ update_fire()
+
+ if(has_modifier_of_type(/datum/modifier/fire))
+ remove_modifiers_of_type(/datum/modifier/fire)
+
+/mob/living/proc/update_fire()
+ return
+
+/mob/living/proc/adjust_fire_stacks(add_fire_stacks) //Adjusting the amount of fire_stacks we have on person
+ fire_stacks = CLAMP(fire_stacks + add_fire_stacks, FIRE_MIN_STACKS, FIRE_MAX_STACKS)
+
+/mob/living/proc/handle_fire()
+ if(fire_stacks < 0)
+ fire_stacks = min(0, ++fire_stacks) //If we've doused ourselves in water to avoid fire, dry off slowly
+
+ if(fire_stacks > 0)
+ fire_stacks = max(0, (fire_stacks-0.1)) //Should slowly burn out
+
+ if(!on_fire)
+ return 1
+ else if(fire_stacks <= 0)
+ ExtinguishMob() //Fire's been put out.
+ return 1
+
+ var/datum/gas_mixture/G = loc.return_air() // Check if we're standing in an oxygenless environment
+ if(G.gas["oxygen"] < 1)
+ ExtinguishMob() //If there's no oxygen in the tile we're on, put out the fire
+ return 1
+
+ var/turf/location = get_turf(src)
+ location.hotspot_expose(fire_burn_temperature(), 50, 1)
+
+//altered this to cap at the temperature of the fire causing it, using the same 1:1500 value as /mob/living/carbon/human/handle_fire() in human/life.dm
+/mob/living/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+ if(exposed_temperature)
+ if(fire_stacks < exposed_temperature/1500) // Subject to balance
+ adjust_fire_stacks(2)
+ else
+ adjust_fire_stacks(2)
+ IgniteMob()
+
+//Share fire evenly between the two mobs
+//Called in MobCollide() and Crossed()
+/mob/living/proc/spread_fire(mob/living/L)
+ return
+// This is commented out pending discussion on Polaris. If you're a downsteam and you want people to spread fire by touching each other, feel free to uncomment this.
+/*
+ if(!istype(L))
+ return
+ var/L_old_on_fire = L.on_fire
+
+ if(on_fire) //Only spread fire stacks if we're on fire
+ fire_stacks /= 2
+ L.fire_stacks += fire_stacks
+ if(L.IgniteMob())
+ message_admins("[key_name(src)] bumped into [key_name(L)] and set them on fire.")
+
+ if(L_old_on_fire) //Only ignite us and gain their stacks if they were onfire before we bumped them
+ L.fire_stacks /= 2
+ fire_stacks += L.fire_stacks
+ IgniteMob()
+*/
+
+/mob/living/proc/get_cold_protection()
+ return 0
+
+/mob/living/proc/get_heat_protection()
+ return 0
+
+/mob/living/proc/get_shock_protection()
+ return 0
+
+/mob/living/proc/get_water_protection()
+ return 1 // Water won't hurt most things.
+
+/mob/living/proc/get_poison_protection()
+ return 0
+
+//Finds the effective temperature that the mob is burning at.
+/mob/living/proc/fire_burn_temperature()
+ if (fire_stacks <= 0)
+ return 0
+
+ //Scale quadratically so that single digit numbers of fire stacks don't burn ridiculously hot.
+ //lower limit of 700 K, same as matches and roughly the temperature of a cool flame.
+ return max(2.25*round(FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE*(fire_stacks/FIRE_MAX_FIRESUIT_STACKS)**2), 700)
+
+// Called when struck by lightning.
+/mob/living/proc/lightning_act()
+ // The actual damage/electrocution is handled by the tesla_zap() that accompanies this.
+ Paralyse(5)
+ stuttering += 20
+ make_jittery(150)
+ emp_act(1)
+ to_chat(src, span("critical", "You've been struck by lightning!"))
+
+// Called when touching a lava tile.
+// Does roughly 100 damage to unprotected mobs, and 20 to fully protected mobs.
+/mob/living/lava_act()
+ add_modifier(/datum/modifier/fire/intense, 8 SECONDS) // Around 40 total if left to burn and without fire protection per stack.
+ inflict_heat_damage(40) // Another 40, however this is instantly applied to unprotected mobs.
+ adjustFireLoss(20) // Lava cannot be 100% resisted with fire protection.
+
+/mob/living/proc/reagent_permeability()
+ return 1
+
+/mob/living/proc/handle_actions()
+ //Pretty bad, i'd use picked/dropped instead but the parent calls in these are nonexistent
+ for(var/datum/action/A in actions)
+ if(A.CheckRemoval(src))
+ A.Remove(src)
+ for(var/obj/item/I in src)
+ if(I.action_button_name)
+ if(!I.action)
+ if(I.action_button_is_hands_free)
+ I.action = new/datum/action/item_action/hands_free
+ else
+ I.action = new/datum/action/item_action
+ I.action.name = I.action_button_name
+ I.action.target = I
+ I.action.Grant(src)
+ return
+
+/mob/living/update_action_buttons()
+ if(!hud_used) return
+ if(!client) return
+
+ if(hud_used.hud_shown != 1) //Hud toggled to minimal
+ return
+
+ client.screen -= hud_used.hide_actions_toggle
+ for(var/datum/action/A in actions)
+ if(A.button)
+ client.screen -= A.button
+
+ if(hud_used.action_buttons_hidden)
+ if(!hud_used.hide_actions_toggle)
+ hud_used.hide_actions_toggle = new(hud_used)
+ hud_used.hide_actions_toggle.UpdateIcon()
+
+ if(!hud_used.hide_actions_toggle.moved)
+ hud_used.hide_actions_toggle.screen_loc = hud_used.ButtonNumberToScreenCoords(1)
+ //hud_used.SetButtonCoords(hud_used.hide_actions_toggle,1)
+
+ client.screen += hud_used.hide_actions_toggle
+ return
+
+ var/button_number = 0
+ for(var/datum/action/A in actions)
+ button_number++
+ if(A.button == null)
+ var/obj/screen/movable/action_button/N = new(hud_used)
+ N.owner = A
+ A.button = N
+
+ var/obj/screen/movable/action_button/B = A.button
+
+ B.UpdateIcon()
+
+ B.name = A.UpdateName()
+
+ client.screen += B
+
+ if(!B.moved)
+ B.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number)
+ //hud_used.SetButtonCoords(B,button_number)
+
+ if(button_number > 0)
+ if(!hud_used.hide_actions_toggle)
+ hud_used.hide_actions_toggle = new(hud_used)
+ hud_used.hide_actions_toggle.InitialiseIcon(src)
+ if(!hud_used.hide_actions_toggle.moved)
+ hud_used.hide_actions_toggle.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number+1)
+ //hud_used.SetButtonCoords(hud_used.hide_actions_toggle,button_number+1)
+ client.screen += hud_used.hide_actions_toggle
+
+// Returns a number to determine if something is harder or easier to hit than normal.
+/mob/living/proc/get_evasion()
+ var/result = evasion // First we get the 'base' evasion. Generally this is zero.
+ for(var/datum/modifier/M in modifiers)
+ if(!isnull(M.evasion))
+ result += M.evasion
+ return result
+
+/mob/living/proc/get_accuracy_penalty()
+ // Certain statuses make it harder to score a hit.
+ var/accuracy_penalty = 0
+ if(eye_blind)
+ accuracy_penalty += 75
+ if(eye_blurry)
+ accuracy_penalty += 30
+ if(confused)
+ accuracy_penalty += 45
+
+ return accuracy_penalty
+
+// Applies direct "cold" damage while checking protection against the cold.
+/mob/living/proc/inflict_cold_damage(amount)
+ amount *= 1 - get_cold_protection(50) // Within spacesuit protection.
+ if(amount > 0)
+ adjustFireLoss(amount)
+
+// Ditto, but for "heat".
+/mob/living/proc/inflict_heat_damage(amount)
+ amount *= 1 - get_heat_protection(10000) // Within firesuit protection.
+ if(amount > 0)
+ adjustFireLoss(amount)
+
+// and one for electricity because why not
+/mob/living/proc/inflict_shock_damage(amount)
+ electrocute_act(amount, null, 1 - get_shock_protection(), pick(BP_HEAD, BP_TORSO, BP_GROIN))
+
+// also one for water (most things resist it entirely, except for slimes)
+/mob/living/proc/inflict_water_damage(amount)
+ amount *= 1 - get_water_protection()
+ if(amount > 0)
+ adjustToxLoss(amount)
+
+// one for abstracted away ""poison"" (mostly because simplemobs shouldn't handle reagents)
+/mob/living/proc/inflict_poison_damage(amount)
+ if(isSynthetic())
+ return
+ amount *= 1 - get_poison_protection()
+ if(amount > 0)
+ adjustToxLoss(amount)
+
+/mob/living/proc/can_inject(var/mob/user, var/error_msg, var/target_zone, var/ignore_thickness = FALSE)
+ return 1
+
+/mob/living/proc/get_organ_target()
+ var/mob/shooter = src
+ var/t = shooter.zone_sel.selecting
+ if ((t in list( O_EYES, O_MOUTH )))
+ t = BP_HEAD
+ var/obj/item/organ/external/def_zone = ran_zone(t)
+ return def_zone
+
+// heal ONE external organ, organ gets randomly selected from damaged ones.
+/mob/living/proc/heal_organ_damage(var/brute, var/burn)
+ adjustBruteLoss(-brute)
+ adjustFireLoss(-burn)
+ src.updatehealth()
+
+// damage ONE external organ, organ gets randomly selected from damaged ones.
+/mob/living/proc/take_organ_damage(var/brute, var/burn, var/emp=0)
+ if(status_flags & GODMODE) return 0 //godmode
+ adjustBruteLoss(brute)
+ adjustFireLoss(burn)
+ src.updatehealth()
+
+// heal MANY external organs, in random order
+/mob/living/proc/heal_overall_damage(var/brute, var/burn)
+ adjustBruteLoss(-brute)
+ adjustFireLoss(-burn)
+ src.updatehealth()
+
+// damage MANY external organs, in random order
+/mob/living/proc/take_overall_damage(var/brute, var/burn, var/used_weapon = null)
+ if(status_flags & GODMODE) return 0 //godmode
+ adjustBruteLoss(brute)
+ adjustFireLoss(burn)
+ src.updatehealth()
+
+/mob/living/proc/restore_all_organs()
+ return
diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm
index 810762bd93..59351edc95 100644
--- a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm
+++ b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm
@@ -22,7 +22,7 @@
var/decompiler = FALSE
var/delivery = FALSE
var/delivery_tag = "Fuel"
- var/list/deliverylists = list()
+ var/list/list/deliverylists = list()
var/list/deliveryslot_1 = list()
var/list/deliveryslot_2 = list()
var/list/deliveryslot_3 = list()
diff --git a/code/modules/mob/living/silicon/robot/drone/drone_console.dm b/code/modules/mob/living/silicon/robot/drone/drone_console.dm
index 138b1610f5..2b8d37c7ae 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone_console.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone_console.dm
@@ -34,7 +34,7 @@
/obj/machinery/computer/drone_control/tgui_data(mob/user)
var/list/data = list()
- data["drones"] = list()
+ var/list/drones = list()
for(var/mob/living/silicon/robot/drone/D in mob_list)
//VOREStation Edit - multiz lol
if(!(D.z in using_map.get_map_levels(z, TRUE, 0)))
@@ -42,8 +42,8 @@
//VOREStation Edit - multiz lol
if(D.foreign_droid)
continue
-
- data["drones"].Add(list(list(
+
+ drones.Add(list(list(
"name" = D.real_name,
"active" = D.stat != 2,
"charge" = D.cell.charge,
@@ -51,6 +51,7 @@
"loc" = "[get_area(D)]",
"ref" = "\ref[D]",
)))
+ data["drones"] = drones
data["fabricator"] = dronefab
data["fabPower"] = dronefab?.produce_drones
diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm
index 96daaf9af7..6ddff91192 100644
--- a/code/modules/mob/living/silicon/robot/inventory.dm
+++ b/code/modules/mob/living/silicon/robot/inventory.dm
@@ -95,7 +95,6 @@
return 1
else
return 0
- updateicon()
// This one takes an object's type instead of an instance, as above.
/mob/living/silicon/robot/proc/has_active_type(var/type_to_compare)
diff --git a/code/modules/mob/living/silicon/robot/robot_damage.dm b/code/modules/mob/living/silicon/robot/robot_damage.dm
index 67ab5dd3c4..3c7999be3c 100644
--- a/code/modules/mob/living/silicon/robot/robot_damage.dm
+++ b/code/modules/mob/living/silicon/robot/robot_damage.dm
@@ -20,13 +20,13 @@
if(C.installed != 0) amount += C.electronics_damage
return amount
-/mob/living/silicon/robot/adjustBruteLoss(var/amount)
+/mob/living/silicon/robot/adjustBruteLoss(var/amount,var/include_robo)
if(amount > 0)
take_overall_damage(amount, 0)
else
heal_overall_damage(-amount, 0)
-/mob/living/silicon/robot/adjustFireLoss(var/amount)
+/mob/living/silicon/robot/adjustFireLoss(var/amount,var/include_robo)
if(amount > 0)
take_overall_damage(0, amount)
else
diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm
index b9c2c60c47..694d3a80a1 100644
--- a/code/modules/mob/living/silicon/silicon.dm
+++ b/code/modules/mob/living/silicon/silicon.dm
@@ -79,7 +79,7 @@
/mob/living/silicon/stun_effect_act(var/stun_amount, var/agony_amount)
return //immune
-/mob/living/silicon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 0.0)
+/mob/living/silicon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 0.0, var/def_zone = null, var/stun = 1)
if(shock_damage > 0)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, loc)
@@ -113,7 +113,7 @@
updatehealth()
return 2
-/mob/living/silicon/apply_effect(var/effect = 0,var/effecttype = STUN, var/blocked = 0)
+/mob/living/silicon/apply_effect(var/effect = 0,var/effecttype = STUN, var/blocked = 0, var/check_protection = 1)
return 0//The only effect that can hit them atm is flashes and they still directly edit so this works for now
@@ -153,8 +153,22 @@
show_malf_ai()
..()
+/* VOREStation Removal
+// this function displays the stations manifest in a separate window
+/mob/living/silicon/proc/show_station_manifest()
+ var/dat = ""
+ if(!data_core)
+ to_chat(src, "There is no data to form a manifest with. Contact your Nanotrasen administrator.")
+ return
+ dat += data_core.get_manifest(1) //The 1 makes it monochrome.
+
+ var/datum/browser/popup = new(src, "Crew Manifest", "Crew Manifest", 370, 420, src)
+ popup.set_content(dat)
+ popup.open()
+*/
+
//can't inject synths
-/mob/living/silicon/can_inject(var/mob/user, var/error_msg)
+/mob/living/silicon/can_inject(var/mob/user, var/error_msg, var/target_zone, var/ignore_thickness = FALSE)
if(error_msg)
to_chat(user, "The armoured plating is too tough.")
return 0
@@ -173,7 +187,7 @@
return FALSE
/mob/living/silicon/add_language(var/language, var/can_speak=1)
- var/var/datum/language/added_language = GLOB.all_languages[language]
+ var/datum/language/added_language = GLOB.all_languages[language]
if(!added_language)
return
@@ -183,7 +197,7 @@
return 1
/mob/living/silicon/remove_language(var/rem_language)
- var/var/datum/language/removed_language = GLOB.all_languages[rem_language]
+ var/datum/language/removed_language = GLOB.all_languages[rem_language]
if(!removed_language)
return
diff --git a/code/modules/mob/living/simple_mob/simple_mob_vr.dm b/code/modules/mob/living/simple_mob/simple_mob_vr.dm
index d0a2f8ed4b..45b6bb7019 100644
--- a/code/modules/mob/living/simple_mob/simple_mob_vr.dm
+++ b/code/modules/mob/living/simple_mob/simple_mob_vr.dm
@@ -264,7 +264,7 @@
return FALSE
// Checks to see if mob doesn't like this kind of turf
-/mob/living/simple_mob/IMove(newloc)
+/mob/living/simple_mob/IMove(turf/newloc, safety = TRUE)
if(istype(newloc,/turf/unsimulated/floor/sky))
return MOVEMENT_FAILED //Mobs aren't that stupid, probably
return ..() // Procede as normal.
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm
index 7ba595b47b..fe23b86bf7 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm
@@ -43,7 +43,7 @@
default_pixel_y = rand(-6, 10)
// Makes the AI unable to willingly go on land.
-/mob/living/simple_mob/animal/passive/fish/IMove(newloc)
+/mob/living/simple_mob/animal/passive/fish/IMove(turf/newloc, safety = TRUE)
if(is_type_in_list(newloc, suitable_turf_types))
return ..() // Procede as normal.
return MOVEMENT_FAILED // Don't leave the water!
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/possum.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/possum.dm
index 80ccfff874..69f0c90d45 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/possum.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/possum.dm
@@ -139,14 +139,14 @@
say_list_type = /datum/say_list/possum
catalogue_data = list(/datum/category_item/catalogue/fauna/opossum)
-/mob/living/simple_mob/animal/passive/opossum/adjustBruteLoss(damage)
+/mob/living/simple_mob/animal/passive/opossum/adjustBruteLoss(var/amount,var/include_robo)
. = ..()
- if(damage >= 3)
+ if(amount >= 3)
respond_to_damage()
-/mob/living/simple_mob/animal/passive/opossum/adjustFireLoss(damage)
+/mob/living/simple_mob/animal/passive/opossum/adjustFireLoss(var/amount,var/include_robo)
. = ..()
- if(damage >= 3)
+ if(amount >= 3)
respond_to_damage()
/mob/living/simple_mob/animal/passive/opossum/lay_down()
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/leech.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/leech.dm
index 25e053bc5f..8db18a5421 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/leech.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/leech.dm
@@ -192,7 +192,7 @@
chemicals -= 30
if(host.getToxLoss() >= 30 && chemicals > 50)
- var/randomchem = pickweight("tramadol" = 7, "anti_toxin" = 15, "frostoil" = 3)
+ var/randomchem = pickweight(list("tramadol" = 7, "anti_toxin" = 15, "frostoil" = 3))
host.reagents.add_reagent(randomchem, 5)
chemicals -= 50
@@ -330,10 +330,6 @@
if(!host)
return
- if(ai_holder)
- ai_holder.hostile = initial(ai_holder.hostile)
- ai_holder.lose_target()
-
host_bodypart.implants -= src
host_bodypart = null
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 417c3b7538..98c9329319 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -233,7 +233,7 @@
return 1
-/mob/proc/ret_grab(obj/effect/list_container/mobl/L as obj, flag)
+/mob/proc/ret_grab(list/L, flag)
return
/mob/verb/mode()
@@ -988,8 +988,7 @@ mob/proc/yank_out_object()
else if(dir != facing_dir)
return ..(facing_dir)
else
- var/returnval = ..()
- return returnval
+ return ..()
/mob/verb/northfaceperm()
set hidden = 1
@@ -1178,7 +1177,7 @@ mob/verb/shifteast()
else
registered_z = null
-GLOBAL_LIST_EMPTY(living_players_by_zlevel)
+GLOBAL_LIST_EMPTY_TYPED(living_players_by_zlevel, /list)
/mob/living/update_client_z(new_z)
var/precall_reg_z = registered_z
. = ..() // will update registered_z if necessary
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index daf9ab6d89..ecd6604a83 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -170,7 +170,7 @@
var/mob/living/carbon/LAssailant = null
//Wizard mode, but can be used in other modes thanks to the brand new "Give Spell" badmin button
- var/spell/list/spell_list = list()
+ var/list/spell/spell_list = list()
//Changlings, but can be used in other modes
// var/obj/effect/proc_holder/changpower/list/power_list = list()
diff --git a/code/modules/mob/mob_planes.dm b/code/modules/mob/mob_planes.dm
index 241840321a..1d557e4e51 100644
--- a/code/modules/mob/mob_planes.dm
+++ b/code/modules/mob/mob_planes.dm
@@ -82,7 +82,7 @@
if(PM.sub_planes)
var/list/subplanes = PM.sub_planes
for(var/SP in subplanes)
- set_vis(which = SP, new_alpha = new_alpha)
+ set_vis(which = SP, state = !!new_alpha)
/datum/plane_holder/proc/set_ao(var/which = null, var/enabled = FALSE)
ASSERT(which)
diff --git a/code/modules/mob/skillset.dm b/code/modules/mob/skillset.dm
index 2877372491..3afb7a97aa 100644
--- a/code/modules/mob/skillset.dm
+++ b/code/modules/mob/skillset.dm
@@ -10,5 +10,3 @@
return 0
else
return fail_chance * 2 ** (factor*(SKILL_BASIC - points))
-
- return FALSE // We don't actually have a skills system, so never fail.
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index fc0c3bebdd..47ccbfac25 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -55,8 +55,7 @@
var/mob/living/silicon/ai/O = ..(move)
if(O)
O.flavor_text = O.client?.prefs?.flavor_texts["general"]
-
- return O
+ return O
//VOREStation Edit End
return ..(move)
diff --git a/code/modules/multiz/hoist.dm b/code/modules/multiz/hoist.dm
index 32e2ed9bb7..4a3f14836c 100644
--- a/code/modules/multiz/hoist.dm
+++ b/code/modules/multiz/hoist.dm
@@ -211,7 +211,7 @@
size = O.w_class
user.visible_message(span("notice", "[user] begins to [movtext] \the [hoistee]!"), span("notice", "You begin to [movtext] \the [hoistee]!"), span("notice", "You hear the sound of a crank."))
- if (do_after(user, (1 SECONDS) * size / 4, act_target = src))
+ if (do_after(user, (1 SECONDS) * size / 4, target = src))
move_dir(movedir, 1)
/obj/structure/hoist/proc/collapse_kit()
diff --git a/code/modules/multiz/movement_vr.dm b/code/modules/multiz/movement_vr.dm
index cba6ebb6c5..963215d389 100644
--- a/code/modules/multiz/movement_vr.dm
+++ b/code/modules/multiz/movement_vr.dm
@@ -39,7 +39,7 @@
else if(prey.can_be_drop_pred && pred.can_be_drop_prey) //Is person being fallen onto pred & person falling prey
pred.feed_grabbed_to_self_falling_nom(prey,pred) //oh, how the tables have turned.
*/
-/mob/zshadow/fall_impact(var/atom/hit_atom) //You actually "fall" onto their shadow, first.
+/mob/zshadow/fall_impact(var/atom/hit_atom, var/damage_min = 0, var/damage_max = 10, var/silent = FALSE, var/planetary = FALSE) //You actually "fall" onto their shadow, first.
/*
var/floor_below = src.loc.below //holy fuck
for(var/mob/M in floor_below.contents)
diff --git a/code/modules/multiz/turf.dm b/code/modules/multiz/turf.dm
index f34cae0065..77885e7ce5 100644
--- a/code/modules/multiz/turf.dm
+++ b/code/modules/multiz/turf.dm
@@ -72,7 +72,7 @@
/turf/simulated/open/proc/update()
plane = OPENSPACE_PLANE + src.z
below = GetBelow(src)
- turf_changed_event.register(below, src, /turf/simulated/open/update_icon)
+ turf_changed_event.register(below, src, /atom/proc/update_icon)
levelupdate()
below.update_icon() // So the 'ceiling-less' overlay gets added.
for(var/atom/movable/A in src)
diff --git a/code/modules/nano/interaction/default.dm b/code/modules/nano/interaction/default.dm
index 812ed40eb5..89bf16f858 100644
--- a/code/modules/nano/interaction/default.dm
+++ b/code/modules/nano/interaction/default.dm
@@ -1,91 +1,91 @@
-/var/global/datum/topic_state/default/default_state = new()
-
-/datum/topic_state/default/href_list(var/mob/user)
- return list()
-
-/datum/topic_state/default/can_use_topic(var/src_object, var/mob/user)
- return user.default_can_use_topic(src_object)
-
-/mob/proc/default_can_use_topic(var/src_object)
- return STATUS_CLOSE // By default no mob can do anything with NanoUI
-
-/mob/observer/dead/default_can_use_topic(var/src_object)
- if(can_admin_interact())
- return STATUS_INTERACTIVE // Admins are more equal
- if(!client || get_dist(src_object, src) > client.view) // Preventing ghosts from having a million windows open by limiting to objects in range
- return STATUS_CLOSE
- return STATUS_UPDATE // Ghosts can view updates
-
-/mob/living/silicon/pai/default_can_use_topic(var/src_object)
- if((src_object == src || src_object == radio || src_object == communicator) && !stat)
- return STATUS_INTERACTIVE
- else
- return ..()
-
-/mob/living/silicon/robot/default_can_use_topic(var/src_object)
- . = shared_nano_interaction()
- if(. <= STATUS_DISABLED)
- return
-
- // robots can interact with things they can see within their view range
- if((src_object in view(src)) && get_dist(src_object, src) <= src.client.view)
- return STATUS_INTERACTIVE // interactive (green visibility)
- return STATUS_DISABLED // no updates, completely disabled (red visibility)
-
-/mob/living/silicon/ai/default_can_use_topic(var/src_object)
- . = shared_nano_interaction()
- if(. != STATUS_INTERACTIVE)
- return
-
- // Prevents the AI from using Topic on admin levels (by for example viewing through the court/thunderdome cameras)
- // unless it's on the same level as the object it's interacting with.
- var/turf/T = get_turf(src_object)
- if(!T || !(z == T.z || (T.z in using_map.player_levels)))
- return STATUS_CLOSE
-
- // If an object is in view then we can interact with it
- if(src_object in view(client.view, src))
- return STATUS_INTERACTIVE
-
- // If we're installed in a chassi, rather than transfered to an inteliCard or other container, then check if we have camera view
- if(is_in_chassis())
- //stop AIs from leaving windows open and using then after they lose vision
- if(cameranet && !cameranet.checkTurfVis(get_turf(src_object)))
- return STATUS_CLOSE
- return STATUS_INTERACTIVE
- else if(get_dist(src_object, src) <= client.view) // View does not return what one would expect while installed in an inteliCard
- return STATUS_INTERACTIVE
-
- return STATUS_CLOSE
-
-//Some atoms such as vehicles might have special rules for how mobs inside them interact with NanoUI.
-/atom/proc/contents_nano_distance(var/src_object, var/mob/living/user)
- return user.shared_living_nano_distance(src_object)
-
-/mob/living/proc/shared_living_nano_distance(var/atom/movable/src_object)
- if (!(src_object in view(4, src))) // If the src object is not in visable, disable updates
- return STATUS_CLOSE
-
- var/dist = get_dist(src_object, src)
- if (dist <= 1)
- return STATUS_INTERACTIVE // interactive (green visibility)
- else if (dist <= 2)
- return STATUS_UPDATE // update only (orange visibility)
- else if (dist <= 4)
- return STATUS_DISABLED // no updates, completely disabled (red visibility)
- return STATUS_CLOSE
-
-/mob/living/default_can_use_topic(var/src_object)
- . = shared_nano_interaction(src_object)
- if(. != STATUS_CLOSE)
- if(loc)
- . = min(., loc.contents_nano_distance(src_object, src))
- if(STATUS_INTERACTIVE)
- return STATUS_UPDATE
-
-/mob/living/carbon/human/default_can_use_topic(var/src_object)
- . = shared_nano_interaction(src_object)
- if(. != STATUS_CLOSE)
- . = min(., shared_living_nano_distance(src_object))
- if(. == STATUS_UPDATE && (TK in mutations)) // If we have telekinesis and remain close enough, allow interaction.
- return STATUS_INTERACTIVE
+/var/global/datum/topic_state/default/default_state = new()
+
+/datum/topic_state/default/href_list(var/mob/user)
+ return list()
+
+/datum/topic_state/default/can_use_topic(var/src_object, var/mob/user)
+ return user.default_can_use_topic(src_object)
+
+/mob/proc/default_can_use_topic(var/src_object)
+ return STATUS_CLOSE // By default no mob can do anything with NanoUI
+
+/mob/observer/dead/default_can_use_topic(var/src_object)
+ if(can_admin_interact())
+ return STATUS_INTERACTIVE // Admins are more equal
+ if(!client || get_dist(src_object, src) > client.view) // Preventing ghosts from having a million windows open by limiting to objects in range
+ return STATUS_CLOSE
+ return STATUS_UPDATE // Ghosts can view updates
+
+/mob/living/silicon/pai/default_can_use_topic(var/src_object)
+ if((src_object == src || src_object == radio || src_object == communicator) && !stat)
+ return STATUS_INTERACTIVE
+ else
+ return ..()
+
+/mob/living/silicon/robot/default_can_use_topic(var/src_object)
+ . = shared_nano_interaction()
+ if(. <= STATUS_DISABLED)
+ return
+
+ // robots can interact with things they can see within their view range
+ if((src_object in view(src)) && get_dist(src_object, src) <= src.client.view)
+ return STATUS_INTERACTIVE // interactive (green visibility)
+ return STATUS_DISABLED // no updates, completely disabled (red visibility)
+
+/mob/living/silicon/ai/default_can_use_topic(var/src_object)
+ . = shared_nano_interaction()
+ if(. != STATUS_INTERACTIVE)
+ return
+
+ // Prevents the AI from using Topic on admin levels (by for example viewing through the court/thunderdome cameras)
+ // unless it's on the same level as the object it's interacting with.
+ var/turf/T = get_turf(src_object)
+ if(!T || !(z == T.z || (T.z in using_map.player_levels)))
+ return STATUS_CLOSE
+
+ // If an object is in view then we can interact with it
+ if(src_object in view(client.view, src))
+ return STATUS_INTERACTIVE
+
+ // If we're installed in a chassi, rather than transfered to an inteliCard or other container, then check if we have camera view
+ if(is_in_chassis())
+ //stop AIs from leaving windows open and using then after they lose vision
+ if(cameranet && !cameranet.checkTurfVis(get_turf(src_object)))
+ return STATUS_CLOSE
+ return STATUS_INTERACTIVE
+ else if(get_dist(src_object, src) <= client.view) // View does not return what one would expect while installed in an inteliCard
+ return STATUS_INTERACTIVE
+
+ return STATUS_CLOSE
+
+//Some atoms such as vehicles might have special rules for how mobs inside them interact with NanoUI.
+/atom/proc/contents_nano_distance(var/src_object, var/mob/living/user)
+ return user.shared_living_nano_distance(src_object)
+
+/mob/living/proc/shared_living_nano_distance(var/atom/movable/src_object)
+ if (!(src_object in view(4, src))) // If the src object is not in visable, disable updates
+ return STATUS_CLOSE
+
+ var/dist = get_dist(src_object, src)
+ if (dist <= 1)
+ return STATUS_INTERACTIVE // interactive (green visibility)
+ else if (dist <= 2)
+ return STATUS_UPDATE // update only (orange visibility)
+ else if (dist <= 4)
+ return STATUS_DISABLED // no updates, completely disabled (red visibility)
+ return STATUS_CLOSE
+
+/mob/living/default_can_use_topic(var/src_object)
+ . = shared_nano_interaction(src_object)
+ if(. != STATUS_CLOSE)
+ if(loc)
+ . = min(., loc.contents_nano_distance(src_object, src))
+ if(. == STATUS_INTERACTIVE)
+ return STATUS_UPDATE
+
+/mob/living/carbon/human/default_can_use_topic(var/src_object)
+ . = shared_nano_interaction(src_object)
+ if(. != STATUS_CLOSE)
+ . = min(., shared_living_nano_distance(src_object))
+ if(. == STATUS_UPDATE && (TK in mutations)) // If we have telekinesis and remain close enough, allow interaction.
+ return STATUS_INTERACTIVE
diff --git a/code/modules/nano/nanoexternal.dm b/code/modules/nano/nanoexternal.dm
index 08f9deffa9..fa22cb1580 100644
--- a/code/modules/nano/nanoexternal.dm
+++ b/code/modules/nano/nanoexternal.dm
@@ -37,7 +37,7 @@
*
* @return nothing
*/
-/datum/proc/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/nano_ui/master_ui = null, var/datum/topic_state/state = default_state)
+/datum/proc/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, master_ui = null, var/datum/topic_state/state = default_state)
return
// Used by the Nano UI Manager (/datum/nanomanager) to track UIs opened by this mob
diff --git a/code/modules/nifsoft/nif_tgui.dm b/code/modules/nifsoft/nif_tgui.dm
index 2d53ad979c..b5978242c4 100644
--- a/code/modules/nifsoft/nif_tgui.dm
+++ b/code/modules/nifsoft/nif_tgui.dm
@@ -60,7 +60,7 @@
user.verbs |= /mob/living/carbon/human/proc/nif_menu
-/datum/component/nif_menu/proc/nif_menu_click(atom/movable/screen/nif/image, location, control, params, user)
+/datum/component/nif_menu/proc/nif_menu_click(obj/screen/nif/image, location, control, params, user)
var/mob/living/carbon/human/H = user
if(istype(H) && H.nif)
INVOKE_ASYNC(H.nif, .proc/tgui_interact, user)
@@ -118,13 +118,14 @@
data["nif_percent"] = round((durability/initial(durability))*100)
data["nif_stat"] = stat
- data["modules"] = list()
+
+ var/list/modules = list()
if(stat == NIF_WORKING)
for(var/nifsoft in nifsofts)
if(!nifsoft)
continue
var/datum/nifsoft/NS = nifsoft
- data["modules"].Add(list(list(
+ modules.Add(list(list(
"name" = NS.name,
"desc" = NS.desc,
"p_drain" = NS.p_drain,
@@ -137,6 +138,7 @@
"stat_text" = NS.stat_text(),
"ref" = REF(NS),
)))
+ data["modules"] = modules
return data
diff --git a/code/modules/nifsoft/software/05_health.dm b/code/modules/nifsoft/software/05_health.dm
index a28bb16941..7ceb260b6e 100644
--- a/code/modules/nifsoft/software/05_health.dm
+++ b/code/modules/nifsoft/software/05_health.dm
@@ -17,7 +17,7 @@
if((. = ..()))
mode = 1
-/datum/nifsoft/medichines_org/deactivate()
+/datum/nifsoft/medichines_org/deactivate(var/force = FALSE)
if((. = ..()))
a_drain = initial(a_drain)
mode = initial(mode)
@@ -94,7 +94,7 @@
if((. = ..()))
mode = 1
-/datum/nifsoft/medichines_syn/deactivate()
+/datum/nifsoft/medichines_syn/deactivate(var/force = FALSE)
if((. = ..()))
mode = 0
@@ -163,7 +163,7 @@
if((. = ..()))
nif.notify("Now taking air from reserves.")
-/datum/nifsoft/spare_breath/deactivate()
+/datum/nifsoft/spare_breath/deactivate(var/force = FALSE)
if((. = ..()))
nif.notify("Now taking air from environment and refilling reserves.")
@@ -214,7 +214,7 @@
deactivate()
return TRUE
-/datum/nifsoft/mindbackup/deactivate()
+/datum/nifsoft/mindbackup/deactivate(var/force = FALSE)
if((. = ..()))
return TRUE
diff --git a/code/modules/nifsoft/software/06_screens.dm b/code/modules/nifsoft/software/06_screens.dm
index 253ed17c8d..3d20514074 100644
--- a/code/modules/nifsoft/software/06_screens.dm
+++ b/code/modules/nifsoft/software/06_screens.dm
@@ -20,7 +20,7 @@
arscreen.tgui_interact(nif.human)
return TRUE
-/datum/nifsoft/crewmonitor/deactivate()
+/datum/nifsoft/crewmonitor/deactivate(var/force = FALSE)
if((. = ..()))
return TRUE
@@ -49,7 +49,7 @@
tgarscreen.tgui_interact(nif.human)
return TRUE
-/datum/nifsoft/alarmmonitor/deactivate()
+/datum/nifsoft/alarmmonitor/deactivate(var/force = FALSE)
if((. = ..()))
return TRUE
diff --git a/code/modules/nifsoft/software/13_soulcatcher.dm b/code/modules/nifsoft/software/13_soulcatcher.dm
index 9912556fdc..717474abc9 100644
--- a/code/modules/nifsoft/software/13_soulcatcher.dm
+++ b/code/modules/nifsoft/software/13_soulcatcher.dm
@@ -35,7 +35,7 @@
spawn(0)
deactivate()
-/datum/nifsoft/soulcatcher/deactivate()
+/datum/nifsoft/soulcatcher/deactivate(var/force = FALSE)
if((. = ..()))
return TRUE
@@ -336,7 +336,7 @@
return FALSE
..()
-/mob/living/carbon/brain/caught_soul/show_message()
+/mob/living/carbon/brain/caught_soul/show_message(msg, type, alt, alt_type)
if(ext_blind || !client)
return FALSE
..()
@@ -363,7 +363,7 @@
else
return ..(direction)
-/mob/living/carbon/brain/caught_soul/say(var/message)
+/mob/living/carbon/brain/caught_soul/say(var/message, var/datum/language/speaking = null, var/whispering = 0)
if(silent) return FALSE
soulcatcher.say_into(message,src,eyeobj)
diff --git a/code/modules/nifsoft/software/15_misc.dm b/code/modules/nifsoft/software/15_misc.dm
index 79592fa030..b4a4e40933 100644
--- a/code/modules/nifsoft/software/15_misc.dm
+++ b/code/modules/nifsoft/software/15_misc.dm
@@ -23,7 +23,7 @@
H.visible_message("Thin snakelike tendrils grow from [H] and connect to \the [apc].","Thin snakelike tendrils grow from you and connect to \the [apc].")
-/datum/nifsoft/apc_recharge/deactivate()
+/datum/nifsoft/apc_recharge/deactivate(var/force = FALSE)
if((. = ..()))
apc = null
@@ -140,7 +140,7 @@
spawn(0)
deactivate()
-/datum/nifsoft/sizechange/deactivate()
+/datum/nifsoft/sizechange/deactivate(var/force = FALSE)
if((. = ..()))
return TRUE
@@ -164,7 +164,7 @@
H.display_alt_appearance("animals", justme)
alt_farmanimals += nif.human
-/datum/nifsoft/worldbend/deactivate()
+/datum/nifsoft/worldbend/deactivate(var/force = FALSE)
if((. = ..()))
var/list/justme = list(nif.human)
for(var/human in human_mob_list)
diff --git a/code/modules/organs/internal/robotic/heatsink.dm b/code/modules/organs/internal/robotic/heatsink.dm
index 4db6e41922..2309a9b7c2 100644
--- a/code/modules/organs/internal/robotic/heatsink.dm
+++ b/code/modules/organs/internal/robotic/heatsink.dm
@@ -38,7 +38,8 @@
var/obj/mecha/M = owner.loc
return M.return_temperature()
else if(istype(owner.loc, /obj/machinery/atmospherics/unary/cryo_cell))
- return owner.loc:air_contents.temperature
+ var/obj/machinery/atmospherics/unary/cryo_cell/cc = owner.loc
+ return cc.air_contents.temperature
var/turf/T = get_turf(src)
diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm
index 37e9429bf0..db5f1fc2e4 100644
--- a/code/modules/organs/organ_external.dm
+++ b/code/modules/organs/organ_external.dm
@@ -582,7 +582,7 @@ This function completely restores a damaged organ to perfect condition.
//external organs handle brokenness a bit differently when it comes to damage. Instead brute_dam is checked inside process()
//this also ensures that an external organ cannot be "broken" without broken_description being set.
/obj/item/organ/external/is_broken()
- return ((status & ORGAN_CUT_AWAY) || (status & ORGAN_BROKEN) && (!splinted || (splinted && splinted in src.contents && prob(30))))
+ return ((status & ORGAN_CUT_AWAY) || (status & ORGAN_BROKEN) && (!splinted || (splinted && (splinted in src.contents) && prob(30))))
//Determines if we even need to process this organ.
/obj/item/organ/external/proc/need_process()
@@ -989,12 +989,12 @@ Note that amputating the affected organ does in fact remove the infection from t
holder = owner
if(!holder)
return
- if (holder.handcuffed && body_part in list(ARM_LEFT, ARM_RIGHT, HAND_LEFT, HAND_RIGHT))
+ if (holder.handcuffed && (body_part in list(ARM_LEFT, ARM_RIGHT, HAND_LEFT, HAND_RIGHT)))
holder.visible_message(\
"\The [holder.handcuffed.name] falls off of [holder.name].",\
"\The [holder.handcuffed.name] falls off you.")
holder.drop_from_inventory(holder.handcuffed)
- if (holder.legcuffed && body_part in list(FOOT_LEFT, FOOT_RIGHT, LEG_LEFT, LEG_RIGHT))
+ if (holder.legcuffed && (body_part in list(FOOT_LEFT, FOOT_RIGHT, LEG_LEFT, LEG_RIGHT)))
holder.visible_message(\
"\The [holder.legcuffed.name] falls off of [holder.name].",\
"\The [holder.legcuffed.name] falls off you.")
diff --git a/code/modules/organs/subtypes/diona.dm b/code/modules/organs/subtypes/diona.dm
index 6b6367e8a0..3d320e3742 100644
--- a/code/modules/organs/subtypes/diona.dm
+++ b/code/modules/organs/subtypes/diona.dm
@@ -15,7 +15,7 @@
if(D)
if(!D.ckey || !D.client)
D.death()
- return 1
+ return
/obj/item/organ/external/diona
name = "tendril"
diff --git a/code/modules/overmap/disperser/disperser_fire.dm b/code/modules/overmap/disperser/disperser_fire.dm
index 421c9b4a20..86116b0677 100644
--- a/code/modules/overmap/disperser/disperser_fire.dm
+++ b/code/modules/overmap/disperser/disperser_fire.dm
@@ -67,7 +67,7 @@
return TRUE
var/obj/effect/overmap/event/finaltarget = pick(candidates)
- log_and_message_admins("A type [chargetype] disperser beam was launched at [finaltarget].", location=finaltarget)
+ log_and_message_admins("A type [chargetype] disperser beam was launched at [finaltarget].")
fire_at_event(finaltarget, chargetype)
return TRUE
diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm
index d67ee7b496..e30bbf9fbf 100644
--- a/code/modules/paperwork/faxmachine.dm
+++ b/code/modules/paperwork/faxmachine.dm
@@ -212,16 +212,17 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins
adminfaxes += rcvdcopy
//message badmins that a fax has arrived
- if (destination == using_map.boss_name)
+
+ // Sadly, we can't use a switch statement here due to not using a constant value for the current map's centcom name.
+ if(destination == using_map.boss_name)
message_admins(sender, "[uppertext(using_map.boss_short)] FAX", rcvdcopy, "CentComFaxReply", "#006100")
- else if (destination == "Solar Central Government") // YW EDIT
- message_admins(sender, "Solar Central Government FAX", rcvdcopy, "CentComFaxReply", "#1F66A0")
- else if (destination == "Supply")
+ else if(destination == "Solar Central Government") // Vorestation Edit //CHOMPedit
+ message_admins(sender, "Solar Central Government FAX", rcvdcopy, "CentComFaxReply", "#1F66A0") // Vorestation Edit //CHOMPedit
+ else if(destination == "Supply")
message_admins(sender, "[uppertext(using_map.boss_short)] SUPPLY FAX", rcvdcopy, "CentComFaxReply", "#5F4519")
else
message_admins(sender, "[uppertext(destination)] FAX", rcvdcopy, "UNKNOWN")
-
sendcooldown = 1800
sleep(50)
visible_message("[src] beeps, \"Message transmitted successfully.\"")
diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm
index 3d12e68534..c4fa72a9b5 100644
--- a/code/modules/paperwork/filingcabinet.dm
+++ b/code/modules/paperwork/filingcabinet.dm
@@ -90,16 +90,14 @@
ui.open()
/obj/structure/filingcabinet/tgui_data(mob/user)
- var/list/data = list()
-
- data["contents"] = list()
+ var/list/files = list()
for(var/obj/item/P in src)
- data["contents"].Add(list(list(
+ files.Add(list(list(
"name" = P.name,
"ref" = "\ref[P]",
)))
- return data
+ return list("contents" = files)
/obj/structure/filingcabinet/tgui_act(action, params)
if(..())
@@ -146,7 +144,6 @@
P.name = "Security Record ([G.fields["name"]])"
virgin = 0 //tabbing here is correct- it's possible for people to try and use it
//before the records have been generated, so we do this inside the loop.
- ..()
/obj/structure/filingcabinet/security/attack_hand()
populate()
@@ -184,7 +181,6 @@
P.name = "Medical Record ([G.fields["name"]])"
virgin = 0 //tabbing here is correct- it's possible for people to try and use it
//before the records have been generated, so we do this inside the loop.
- ..()
/obj/structure/filingcabinet/medical/attack_hand()
populate()
diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm
index 7be509c96f..7810af0d9c 100644
--- a/code/modules/paperwork/stamps.dm
+++ b/code/modules/paperwork/stamps.dm
@@ -88,7 +88,7 @@
var/input_stamp = input(user, "Choose a stamp to disguise as.", "Choose a stamp.") in show_stamps
- if(user && src in user.contents)
+ if(user && (src in user.contents)) // Er, how necessary is this in attack_self?
var/obj/item/weapon/stamp/chosen_stamp = stamps[capitalize(input_stamp)]
diff --git a/code/modules/persistence/noticeboard.dm b/code/modules/persistence/noticeboard.dm
index 2677977253..30fd4acb6f 100644
--- a/code/modules/persistence/noticeboard.dm
+++ b/code/modules/persistence/noticeboard.dm
@@ -115,15 +115,16 @@
/obj/structure/noticeboard/tgui_data(mob/user)
var/list/data = ..()
- data["notices"] = list()
+
+ var/list/notices = list()
for(var/obj/item/I in notices)
- data["notices"].Add(list(list(
+ notices.Add(list(list(
"ispaper" = istype(I, /obj/item/weapon/paper),
"isphoto" = istype(I, /obj/item/weapon/photo),
"name" = I.name,
"ref" = "\ref[I]",
)))
-
+ data["notices"] = notices
return data
/obj/structure/noticeboard/tgui_act(action, params)
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index cfc8a9de5a..10b9889f89 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -635,7 +635,6 @@ obj/structure/cable/proc/cableColor(var/colorC)
src.use(15)
else
to_chat(usr, "You cannot do that.")
- ..()
/obj/item/stack/cable_coil/cyborg/verb/set_colour()
set name = "Change Colour"
diff --git a/code/modules/power/fusion/core/core_field.dm b/code/modules/power/fusion/core/core_field.dm
index 0fb3c63b40..9be55a9ce0 100644
--- a/code/modules/power/fusion/core/core_field.dm
+++ b/code/modules/power/fusion/core/core_field.dm
@@ -531,12 +531,10 @@
if(percent_unstable >= warnpoint) //we're unstable, start warning engineering
global_announcer.autosay(warnmessage, "Field Stability Monitor", "Engineering")
- stable = 0 //we know we're not stable, so let's not state the safe message.
- sleep(20)
- return
- if(percent_unstable < warnpoint && stable == 0) //The field is stable again. Let's set our safe variable and state the safe message.
+ stable = FALSE //we know we're not stable, so let's not state the safe message.
+ else if(percent_unstable < warnpoint && stable == 0) //The field is stable again. Let's set our safe variable and state the safe message.
global_announcer.autosay(stablemessage, "Field Stability Monitor", "Engineering")
- stable = 1
+ stable = TRUE
return
//Reaction radiation is fairly buggy and there's at least three procs dealing with radiation here, this is to ensure constant radiation output.
diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm
index c3927ec2bd..50655315ad 100644
--- a/code/modules/power/singularity/containment_field.dm
+++ b/code/modules/power/singularity/containment_field.dm
@@ -18,7 +18,7 @@
/obj/machinery/containment_field/Initialize()
. = ..()
shockdirs = list(turn(dir,90),turn(dir,-90))
- sense_proximity(callback = .HasProximity)
+ sense_proximity(callback = /atom/proc/HasProximity)
/obj/machinery/containment_field/set_dir(new_dir)
. = ..()
@@ -26,7 +26,7 @@
shockdirs = list(turn(dir,90),turn(dir,-90))
/obj/machinery/containment_field/Destroy()
- unsense_proximity(callback = .HasProximity)
+ unsense_proximity(callback = /atom/proc/HasProximity)
if(FG1 && !FG1.clean_up)
FG1.cleanup()
if(FG2 && !FG2.clean_up)
diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
index 08af0c23a5..6d7108fbd6 100644
--- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
@@ -244,7 +244,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
update_state()
update_icon()
return 1
- return 0
@@ -384,4 +383,3 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
update_use_power(USE_POWER_IDLE)
update_icon()
return 1
- return 0
diff --git a/code/modules/projectiles/guns/energy/cell_loaded_vr/cell_loaded.dm b/code/modules/projectiles/guns/energy/cell_loaded_vr/cell_loaded.dm
index 9e1311a5d3..fe12a9020a 100644
--- a/code/modules/projectiles/guns/energy/cell_loaded_vr/cell_loaded.dm
+++ b/code/modules/projectiles/guns/energy/cell_loaded_vr/cell_loaded.dm
@@ -39,7 +39,6 @@
if(istype(other_batt,chambered.type) && other_batt.shots_left)
switch_to(other_batt)
return new chambered.projectile_type()
- break
return null
diff --git a/code/modules/projectiles/projectile/hook.dm b/code/modules/projectiles/projectile/hook.dm
index 3e98319ebd..35b39910a0 100644
--- a/code/modules/projectiles/projectile/hook.dm
+++ b/code/modules/projectiles/projectile/hook.dm
@@ -127,7 +127,7 @@
if(!target_mob)
return
- if(Bump(target_mob, forced=1)) //If we hit a turf, try to force an interaction with a mob on the turf.
+ if(Bump(target_mob)) //If we hit a turf, try to force an interaction with a mob on the turf.
done_mob_unique = TRUE
success = TRUE
else if(firer)
diff --git a/code/modules/reagents/reagents/medicine.dm b/code/modules/reagents/reagents/medicine.dm
index 0fda973243..ab87656fda 100644
--- a/code/modules/reagents/reagents/medicine.dm
+++ b/code/modules/reagents/reagents/medicine.dm
@@ -240,7 +240,8 @@
/datum/reagent/carthatoline/overdose(var/mob/living/carbon/M, var/alien, var/removed)
M.adjustHalLoss(2)
var/mob/living/carbon/human/H = M
- H.internal_organs_by_name[O_STOMACH].take_damage(removed * 2) // Causes stomach contractions, makes sense for an overdose to make it much worse.
+ var/obj/item/organ/internal/stomach/st = H.internal_organs_by_name[O_STOMACH]
+ st?.take_damage(removed * 2) // Causes stomach contractions, makes sense for an overdose to make it much worse.
/datum/reagent/dexalin
name = "Dexalin"
@@ -619,7 +620,8 @@
..()
if(prob(5)) // 1 in 20
var/mob/living/carbon/human/H = M
- H.internal_organs_by_name[O_HEART].take_damage(1)
+ var/obj/item/organ/internal/heart/ht = H.internal_organs_by_name[O_HEART]
+ ht?.take_damage(1)
to_chat(M, "Huh... Is this what a heart attack feels like?")
/datum/reagent/alkysine
diff --git a/code/modules/reagents/reagents/toxins.dm b/code/modules/reagents/reagents/toxins.dm
index 6055ff244b..0ea989228a 100644
--- a/code/modules/reagents/reagents/toxins.dm
+++ b/code/modules/reagents/reagents/toxins.dm
@@ -246,7 +246,8 @@
..()
if(prob(10)) // 1 in 10. This thing's made with welder fuel and fertilizer, what do you expect?
var/mob/living/carbon/human/H = M
- H.internal_organs_by_name[O_HEART].take_damage(1)
+ var/obj/item/organ/internal/heart/ht = H.internal_organs_by_name[O_HEART]
+ ht?.take_damage(1)
to_chat(M, "Huh... Is this what a heart attack feels like?")
/datum/reagent/toxin/potassium_chloride
diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm
index ad5c60c998..a336d4c0e8 100644
--- a/code/modules/recycling/disposal-construction.dm
+++ b/code/modules/recycling/disposal-construction.dm
@@ -1,365 +1,365 @@
-// Disposal pipe construction
-// This is the pipe that you drag around, not the attached ones.
-
-/obj/structure/disposalconstruct
-
- name = "disposal pipe segment"
- desc = "A huge pipe segment used for constructing disposal systems."
- icon = 'icons/obj/pipes/disposal.dmi'
- icon_state = "conpipe-s"
- anchored = 0
- density = 0
- pressure_resistance = 5*ONE_ATMOSPHERE
- matter = list(DEFAULT_WALL_MATERIAL = 1850)
- level = 2
- var/sortType = ""
- var/ptype = 0
- var/subtype = 0
- var/dpdir = 0 // directions as disposalpipe
- var/base_state = "pipe-s"
-
-/obj/structure/disposalconstruct/New(var/newturf, var/newtype, var/newdir, var/flipped, var/newsubtype)
- ..(newturf)
- ptype = newtype
- dir = newdir
- // Disposals handle "bent"/"corner" strangely, handle this specially.
- if(ptype == DISPOSAL_PIPE_STRAIGHT && dir in cornerdirs)
- ptype = DISPOSAL_PIPE_CORNER
- switch(dir)
- if(NORTHWEST)
- dir = WEST
- if(NORTHEAST)
- dir = NORTH
- if(SOUTHWEST)
- dir = SOUTH
- if(SOUTHEAST)
- dir = EAST
-
- switch(ptype)
- if(DISPOSAL_PIPE_BIN, DISPOSAL_PIPE_OUTLET, DISPOSAL_PIPE_CHUTE)
- density = 1
- if(DISPOSAL_PIPE_SORTER, DISPOSAL_PIPE_SORTER_FLIPPED)
- subtype = newsubtype
-
- if(flipped)
- do_a_flip()
- else
- update() // do_a_flip() calls update anyway, so, lazy way of catching unupdated pipe!
-
-// update iconstate and dpdir due to dir and type
-/obj/structure/disposalconstruct/proc/update()
- var/flip = turn(dir, 180)
- var/left = turn(dir, 90)
- var/right = turn(dir, -90)
-
- switch(ptype)
- if(DISPOSAL_PIPE_STRAIGHT)
- base_state = "pipe-s"
- dpdir = dir | flip
- if(DISPOSAL_PIPE_CORNER)
- base_state = "pipe-c"
- dpdir = dir | right
- if(DISPOSAL_PIPE_JUNCTION)
- base_state = "pipe-j1"
- dpdir = dir | right | flip
- if(DISPOSAL_PIPE_JUNCTION_FLIPPED)
- base_state = "pipe-j2"
- dpdir = dir | left | flip
- if(DISPOSAL_PIPE_JUNCTION_Y)
- base_state = "pipe-y"
- dpdir = dir | left | right
- if(DISPOSAL_PIPE_TRUNK)
- base_state = "pipe-t"
- dpdir = dir
- // disposal bin has only one dir, thus we don't need to care about setting it
- if(DISPOSAL_PIPE_BIN)
- if(anchored)
- base_state = "disposal"
- else
- base_state = "condisposal"
- if(DISPOSAL_PIPE_OUTLET)
- base_state = "outlet"
- dpdir = dir
- if(DISPOSAL_PIPE_CHUTE)
- base_state = "intake"
- dpdir = dir
- if(DISPOSAL_PIPE_SORTER)
- base_state = "pipe-j1s"
- dpdir = dir | right | flip
- if(DISPOSAL_PIPE_SORTER_FLIPPED)
- base_state = "pipe-j2s"
- dpdir = dir | left | flip
- if(DISPOSAL_PIPE_UPWARD)
- base_state = "pipe-u"
- dpdir = dir
- if(DISPOSAL_PIPE_DOWNWARD)
- base_state = "pipe-d"
- dpdir = dir
- if(DISPOSAL_PIPE_TAGGER)
- base_state = "pipe-tagger"
- dpdir = dir | flip
- if(DISPOSAL_PIPE_TAGGER_PARTIAL)
- base_state = "pipe-tagger-partial"
- dpdir = dir | flip
-
- if(!(ptype in list(DISPOSAL_PIPE_BIN, DISPOSAL_PIPE_OUTLET, DISPOSAL_PIPE_CHUTE, DISPOSAL_PIPE_UPWARD, DISPOSAL_PIPE_DOWNWARD, DISPOSAL_PIPE_TAGGER, DISPOSAL_PIPE_TAGGER_PARTIAL)))
- icon_state = "con[base_state]"
- else
- icon_state = base_state
-
- if(invisibility) // if invisible, fade icon
- alpha = 128
- else
- alpha = 255
- //otherwise burying half-finished pipes under floors causes them to half-fade
-
-// hide called by levelupdate if turf intact status changes
-// change visibility status and force update of icon
-/obj/structure/disposalconstruct/hide(var/intact)
- invisibility = (intact && level==1) ? 101: 0 // hide if floor is intact
- update()
-
-
-// flip and rotate verbs
-/obj/structure/disposalconstruct/verb/rotate_clockwise()
- set category = "Object"
- set name = "Rotate Pipe Clockwise"
- set src in view(1)
-
- if(usr.stat)
- return
-
- if(anchored)
- to_chat(usr, "You must unfasten the pipe before rotating it.")
- return
-
- src.set_dir(turn(src.dir, 270))
- update()
-
-/obj/structure/disposalconstruct/verb/flip()
- set category = "Object"
- set name = "Flip Pipe"
- set src in view(1)
- if(usr.stat)
- return
-
- if(anchored)
- to_chat(usr, "You must unfasten the pipe before flipping it.")
- return
-
- do_a_flip()
-
-/obj/structure/disposalconstruct/proc/do_a_flip()
- switch(ptype)
- if(DISPOSAL_PIPE_JUNCTION)
- ptype = DISPOSAL_PIPE_JUNCTION_FLIPPED
- if(DISPOSAL_PIPE_JUNCTION_FLIPPED)
- ptype = DISPOSAL_PIPE_JUNCTION
- if(DISPOSAL_PIPE_SORTER)
- ptype = DISPOSAL_PIPE_SORTER_FLIPPED
- if(DISPOSAL_PIPE_SORTER_FLIPPED)
- ptype = DISPOSAL_PIPE_SORTER
-
- update()
-
-// returns the type path of disposalpipe corresponding to this item dtype
-/obj/structure/disposalconstruct/proc/dpipetype()
- switch(ptype)
- if(DISPOSAL_PIPE_STRAIGHT,DISPOSAL_PIPE_CORNER)
- return /obj/structure/disposalpipe/segment
- if(DISPOSAL_PIPE_JUNCTION,DISPOSAL_PIPE_JUNCTION_FLIPPED,DISPOSAL_PIPE_JUNCTION_Y)
- return /obj/structure/disposalpipe/junction
- if(DISPOSAL_PIPE_TRUNK)
- return /obj/structure/disposalpipe/trunk
- if(DISPOSAL_PIPE_BIN)
- return /obj/machinery/disposal
- if(DISPOSAL_PIPE_OUTLET)
- return /obj/structure/disposaloutlet
- if(DISPOSAL_PIPE_CHUTE)
- return /obj/machinery/disposal/deliveryChute
- if(DISPOSAL_PIPE_SORTER)
- switch(subtype)
- if(DISPOSAL_SORT_NORMAL)
- return /obj/structure/disposalpipe/sortjunction
- if(DISPOSAL_SORT_WILDCARD)
- return /obj/structure/disposalpipe/sortjunction/wildcard
- if(DISPOSAL_SORT_UNTAGGED)
- return /obj/structure/disposalpipe/sortjunction/untagged
- if(DISPOSAL_PIPE_SORTER_FLIPPED)
- switch(subtype)
- if(DISPOSAL_SORT_NORMAL)
- return /obj/structure/disposalpipe/sortjunction/flipped
- if(DISPOSAL_SORT_WILDCARD)
- return /obj/structure/disposalpipe/sortjunction/wildcard/flipped
- if(DISPOSAL_SORT_UNTAGGED)
- return /obj/structure/disposalpipe/sortjunction/untagged/flipped
- if(DISPOSAL_PIPE_UPWARD)
- return /obj/structure/disposalpipe/up
- if(DISPOSAL_PIPE_DOWNWARD)
- return /obj/structure/disposalpipe/down
- if(DISPOSAL_PIPE_TAGGER)
- return /obj/structure/disposalpipe/tagger
- if(DISPOSAL_PIPE_TAGGER_PARTIAL)
- return /obj/structure/disposalpipe/tagger/partial
- return
-
-
-
-// attackby item
-// wrench: (un)anchor
-// weldingtool: convert to real pipe
-/obj/structure/disposalconstruct/attackby(var/obj/item/I, var/mob/user)
- var/nicetype = "pipe"
- var/ispipe = 0 // Indicates if we should change the level of this pipe
- src.add_fingerprint(user)
- switch(ptype)
- if(DISPOSAL_PIPE_BIN)
- nicetype = "disposal bin"
- if(DISPOSAL_PIPE_OUTLET)
- nicetype = "disposal outlet"
- if(DISPOSAL_PIPE_CHUTE)
- nicetype = "delivery chute"
- if(DISPOSAL_PIPE_SORTER, DISPOSAL_PIPE_SORTER_FLIPPED)
- switch(subtype)
- if(DISPOSAL_SORT_NORMAL)
- nicetype = "sorting pipe"
- if(DISPOSAL_SORT_WILDCARD)
- nicetype = "wildcard sorting pipe"
- if(DISPOSAL_SORT_UNTAGGED)
- nicetype = "untagged sorting pipe"
- ispipe = 1
- if(DISPOSAL_PIPE_TAGGER)
- nicetype = "tagging pipe"
- ispipe = 1
- if(DISPOSAL_PIPE_TAGGER_PARTIAL)
- nicetype = "partial tagging pipe"
- ispipe = 1
- else
- nicetype = "pipe"
- ispipe = 1
-
- var/turf/T = src.loc
- if(!T.is_plating())
- to_chat(user, "You can only attach the [nicetype] if the floor plating is removed.")
- return
-
- var/obj/structure/disposalpipe/CP = locate() in T
-
- // wrench: (un)anchor
- if(I.is_wrench())
- if(anchored)
- anchored = 0
- if(ispipe)
- level = 2
- density = 0
- else
- density = 1
- to_chat(user, "You detach the [nicetype] from the underfloor.")
- else
- if(ptype == DISPOSAL_PIPE_BIN || ptype == DISPOSAL_PIPE_OUTLET || ptype == DISPOSAL_PIPE_CHUTE) // Disposal or outlet
- if(CP) // There's something there
- if(!istype(CP,/obj/structure/disposalpipe/trunk))
- to_chat(user, "The [nicetype] requires a trunk underneath it in order to work.")
- return
- else // Nothing under, fuck.
- to_chat(user, "The [nicetype] requires a trunk underneath it in order to work.")
- return
- else
- if(CP)
- update()
- var/pdir = CP.dpdir
- if(istype(CP, /obj/structure/disposalpipe/broken))
- pdir = CP.dir
- if(pdir & dpdir)
- to_chat(user, "There is already a [nicetype] at that location.")
- return
-
- anchored = 1
- if(ispipe)
- level = 1 // We don't want disposal bins to disappear under the floors
- density = 0
- else
- density = 1 // We don't want disposal bins or outlets to go density 0
- to_chat(user, "You attach the [nicetype] to the underfloor.")
- playsound(src, I.usesound, 100, 1)
- update()
-
- // weldingtool: convert to real pipe
- else if(istype(I, /obj/item/weapon/weldingtool))
- if(anchored)
- var/obj/item/weapon/weldingtool/W = I
- if(W.remove_fuel(0,user))
- playsound(src, W.usesound, 100, 1)
- to_chat(user, "Welding the [nicetype] in place.")
- if(do_after(user, 20 * W.toolspeed))
- if(!src || !W.isOn()) return
- to_chat(user, "The [nicetype] has been welded in place!")
- update() // TODO: Make this neat
- if(ispipe) // Pipe
-
- var/pipetype = dpipetype()
- var/obj/structure/disposalpipe/P = new pipetype(src.loc)
- src.transfer_fingerprints_to(P)
- P.base_icon_state = base_state
- P.set_dir(dir)
- P.dpdir = dpdir
- P.updateicon()
-
- //Needs some special treatment ;)
- if(ptype==DISPOSAL_PIPE_SORTER || ptype==DISPOSAL_PIPE_SORTER_FLIPPED)
- var/obj/structure/disposalpipe/sortjunction/SortP = P
- SortP.sortType = sortType
- SortP.updatedir()
- SortP.updatedesc()
- SortP.updatename()
-
- else if(ptype==DISPOSAL_PIPE_BIN)
- var/obj/machinery/disposal/P = new /obj/machinery/disposal(src.loc)
- src.transfer_fingerprints_to(P)
- P.mode = 0 // start with pump off
-
- else if(ptype==DISPOSAL_PIPE_OUTLET)
- var/obj/structure/disposaloutlet/P = new /obj/structure/disposaloutlet(src.loc)
- src.transfer_fingerprints_to(P)
- P.set_dir(dir)
- var/obj/structure/disposalpipe/trunk/Trunk = CP
- Trunk.linked = P
-
- else if(ptype==DISPOSAL_PIPE_CHUTE)
- var/obj/machinery/disposal/deliveryChute/P = new /obj/machinery/disposal/deliveryChute(src.loc)
- src.transfer_fingerprints_to(P)
- P.set_dir(dir)
-
- qdel(src)
- return
- else
- to_chat(user, "You need more welding fuel to complete this task.")
- return
- else
- to_chat(user, "You need to attach it to the plating first!")
- return
-
-/obj/structure/disposalconstruct/hides_under_flooring()
- if(anchored)
- return 1
- else
- return 0
-
-// VOREStation Add Start - Helper procs for RCD
-/obj/structure/disposalconstruct/proc/is_pipe()
- return (ptype != DISPOSAL_PIPE_BIN && ptype != DISPOSAL_PIPE_OUTLET && ptype != DISPOSAL_PIPE_CHUTE)
-
-//helper proc that makes sure you can place the construct (i.e no dense objects stacking)
-/obj/structure/disposalconstruct/proc/can_place()
- if(is_pipe())
- return TRUE
-
- for(var/obj/structure/disposalconstruct/DC in get_turf(src))
- if(DC == src)
- continue
-
- if(!DC.is_pipe()) //there's already a chute/outlet/bin there
- return FALSE
-
- return TRUE
-// VOREStation Add End
+// Disposal pipe construction
+// This is the pipe that you drag around, not the attached ones.
+
+/obj/structure/disposalconstruct
+
+ name = "disposal pipe segment"
+ desc = "A huge pipe segment used for constructing disposal systems."
+ icon = 'icons/obj/pipes/disposal.dmi'
+ icon_state = "conpipe-s"
+ anchored = 0
+ density = 0
+ pressure_resistance = 5*ONE_ATMOSPHERE
+ matter = list(DEFAULT_WALL_MATERIAL = 1850)
+ level = 2
+ var/sortType = ""
+ var/ptype = 0
+ var/subtype = 0
+ var/dpdir = 0 // directions as disposalpipe
+ var/base_state = "pipe-s"
+
+/obj/structure/disposalconstruct/New(var/newturf, var/newtype, var/newdir, var/flipped, var/newsubtype)
+ ..(newturf)
+ ptype = newtype
+ dir = newdir
+ // Disposals handle "bent"/"corner" strangely, handle this specially.
+ if(ptype == DISPOSAL_PIPE_STRAIGHT && (dir in cornerdirs))
+ ptype = DISPOSAL_PIPE_CORNER
+ switch(dir)
+ if(NORTHWEST)
+ dir = WEST
+ if(NORTHEAST)
+ dir = NORTH
+ if(SOUTHWEST)
+ dir = SOUTH
+ if(SOUTHEAST)
+ dir = EAST
+
+ switch(ptype)
+ if(DISPOSAL_PIPE_BIN, DISPOSAL_PIPE_OUTLET, DISPOSAL_PIPE_CHUTE)
+ density = 1
+ if(DISPOSAL_PIPE_SORTER, DISPOSAL_PIPE_SORTER_FLIPPED)
+ subtype = newsubtype
+
+ if(flipped)
+ do_a_flip()
+ else
+ update() // do_a_flip() calls update anyway, so, lazy way of catching unupdated pipe!
+
+// update iconstate and dpdir due to dir and type
+/obj/structure/disposalconstruct/proc/update()
+ var/flip = turn(dir, 180)
+ var/left = turn(dir, 90)
+ var/right = turn(dir, -90)
+
+ switch(ptype)
+ if(DISPOSAL_PIPE_STRAIGHT)
+ base_state = "pipe-s"
+ dpdir = dir | flip
+ if(DISPOSAL_PIPE_CORNER)
+ base_state = "pipe-c"
+ dpdir = dir | right
+ if(DISPOSAL_PIPE_JUNCTION)
+ base_state = "pipe-j1"
+ dpdir = dir | right | flip
+ if(DISPOSAL_PIPE_JUNCTION_FLIPPED)
+ base_state = "pipe-j2"
+ dpdir = dir | left | flip
+ if(DISPOSAL_PIPE_JUNCTION_Y)
+ base_state = "pipe-y"
+ dpdir = dir | left | right
+ if(DISPOSAL_PIPE_TRUNK)
+ base_state = "pipe-t"
+ dpdir = dir
+ // disposal bin has only one dir, thus we don't need to care about setting it
+ if(DISPOSAL_PIPE_BIN)
+ if(anchored)
+ base_state = "disposal"
+ else
+ base_state = "condisposal"
+ if(DISPOSAL_PIPE_OUTLET)
+ base_state = "outlet"
+ dpdir = dir
+ if(DISPOSAL_PIPE_CHUTE)
+ base_state = "intake"
+ dpdir = dir
+ if(DISPOSAL_PIPE_SORTER)
+ base_state = "pipe-j1s"
+ dpdir = dir | right | flip
+ if(DISPOSAL_PIPE_SORTER_FLIPPED)
+ base_state = "pipe-j2s"
+ dpdir = dir | left | flip
+ if(DISPOSAL_PIPE_UPWARD)
+ base_state = "pipe-u"
+ dpdir = dir
+ if(DISPOSAL_PIPE_DOWNWARD)
+ base_state = "pipe-d"
+ dpdir = dir
+ if(DISPOSAL_PIPE_TAGGER)
+ base_state = "pipe-tagger"
+ dpdir = dir | flip
+ if(DISPOSAL_PIPE_TAGGER_PARTIAL)
+ base_state = "pipe-tagger-partial"
+ dpdir = dir | flip
+
+ if(!(ptype in list(DISPOSAL_PIPE_BIN, DISPOSAL_PIPE_OUTLET, DISPOSAL_PIPE_CHUTE, DISPOSAL_PIPE_UPWARD, DISPOSAL_PIPE_DOWNWARD, DISPOSAL_PIPE_TAGGER, DISPOSAL_PIPE_TAGGER_PARTIAL)))
+ icon_state = "con[base_state]"
+ else
+ icon_state = base_state
+
+ if(invisibility) // if invisible, fade icon
+ alpha = 128
+ else
+ alpha = 255
+ //otherwise burying half-finished pipes under floors causes them to half-fade
+
+// hide called by levelupdate if turf intact status changes
+// change visibility status and force update of icon
+/obj/structure/disposalconstruct/hide(var/intact)
+ invisibility = (intact && level==1) ? 101: 0 // hide if floor is intact
+ update()
+
+
+// flip and rotate verbs
+/obj/structure/disposalconstruct/verb/rotate_clockwise()
+ set category = "Object"
+ set name = "Rotate Pipe Clockwise"
+ set src in view(1)
+
+ if(usr.stat)
+ return
+
+ if(anchored)
+ to_chat(usr, "You must unfasten the pipe before rotating it.")
+ return
+
+ src.set_dir(turn(src.dir, 270))
+ update()
+
+/obj/structure/disposalconstruct/verb/flip()
+ set category = "Object"
+ set name = "Flip Pipe"
+ set src in view(1)
+ if(usr.stat)
+ return
+
+ if(anchored)
+ to_chat(usr, "You must unfasten the pipe before flipping it.")
+ return
+
+ do_a_flip()
+
+/obj/structure/disposalconstruct/proc/do_a_flip()
+ switch(ptype)
+ if(DISPOSAL_PIPE_JUNCTION)
+ ptype = DISPOSAL_PIPE_JUNCTION_FLIPPED
+ if(DISPOSAL_PIPE_JUNCTION_FLIPPED)
+ ptype = DISPOSAL_PIPE_JUNCTION
+ if(DISPOSAL_PIPE_SORTER)
+ ptype = DISPOSAL_PIPE_SORTER_FLIPPED
+ if(DISPOSAL_PIPE_SORTER_FLIPPED)
+ ptype = DISPOSAL_PIPE_SORTER
+
+ update()
+
+// returns the type path of disposalpipe corresponding to this item dtype
+/obj/structure/disposalconstruct/proc/dpipetype()
+ switch(ptype)
+ if(DISPOSAL_PIPE_STRAIGHT,DISPOSAL_PIPE_CORNER)
+ return /obj/structure/disposalpipe/segment
+ if(DISPOSAL_PIPE_JUNCTION,DISPOSAL_PIPE_JUNCTION_FLIPPED,DISPOSAL_PIPE_JUNCTION_Y)
+ return /obj/structure/disposalpipe/junction
+ if(DISPOSAL_PIPE_TRUNK)
+ return /obj/structure/disposalpipe/trunk
+ if(DISPOSAL_PIPE_BIN)
+ return /obj/machinery/disposal
+ if(DISPOSAL_PIPE_OUTLET)
+ return /obj/structure/disposaloutlet
+ if(DISPOSAL_PIPE_CHUTE)
+ return /obj/machinery/disposal/deliveryChute
+ if(DISPOSAL_PIPE_SORTER)
+ switch(subtype)
+ if(DISPOSAL_SORT_NORMAL)
+ return /obj/structure/disposalpipe/sortjunction
+ if(DISPOSAL_SORT_WILDCARD)
+ return /obj/structure/disposalpipe/sortjunction/wildcard
+ if(DISPOSAL_SORT_UNTAGGED)
+ return /obj/structure/disposalpipe/sortjunction/untagged
+ if(DISPOSAL_PIPE_SORTER_FLIPPED)
+ switch(subtype)
+ if(DISPOSAL_SORT_NORMAL)
+ return /obj/structure/disposalpipe/sortjunction/flipped
+ if(DISPOSAL_SORT_WILDCARD)
+ return /obj/structure/disposalpipe/sortjunction/wildcard/flipped
+ if(DISPOSAL_SORT_UNTAGGED)
+ return /obj/structure/disposalpipe/sortjunction/untagged/flipped
+ if(DISPOSAL_PIPE_UPWARD)
+ return /obj/structure/disposalpipe/up
+ if(DISPOSAL_PIPE_DOWNWARD)
+ return /obj/structure/disposalpipe/down
+ if(DISPOSAL_PIPE_TAGGER)
+ return /obj/structure/disposalpipe/tagger
+ if(DISPOSAL_PIPE_TAGGER_PARTIAL)
+ return /obj/structure/disposalpipe/tagger/partial
+ return
+
+
+
+// attackby item
+// wrench: (un)anchor
+// weldingtool: convert to real pipe
+/obj/structure/disposalconstruct/attackby(var/obj/item/I, var/mob/user)
+ var/nicetype = "pipe"
+ var/ispipe = 0 // Indicates if we should change the level of this pipe
+ src.add_fingerprint(user)
+ switch(ptype)
+ if(DISPOSAL_PIPE_BIN)
+ nicetype = "disposal bin"
+ if(DISPOSAL_PIPE_OUTLET)
+ nicetype = "disposal outlet"
+ if(DISPOSAL_PIPE_CHUTE)
+ nicetype = "delivery chute"
+ if(DISPOSAL_PIPE_SORTER, DISPOSAL_PIPE_SORTER_FLIPPED)
+ switch(subtype)
+ if(DISPOSAL_SORT_NORMAL)
+ nicetype = "sorting pipe"
+ if(DISPOSAL_SORT_WILDCARD)
+ nicetype = "wildcard sorting pipe"
+ if(DISPOSAL_SORT_UNTAGGED)
+ nicetype = "untagged sorting pipe"
+ ispipe = 1
+ if(DISPOSAL_PIPE_TAGGER)
+ nicetype = "tagging pipe"
+ ispipe = 1
+ if(DISPOSAL_PIPE_TAGGER_PARTIAL)
+ nicetype = "partial tagging pipe"
+ ispipe = 1
+ else
+ nicetype = "pipe"
+ ispipe = 1
+
+ var/turf/T = src.loc
+ if(!T.is_plating())
+ to_chat(user, "You can only attach the [nicetype] if the floor plating is removed.")
+ return
+
+ var/obj/structure/disposalpipe/CP = locate() in T
+
+ // wrench: (un)anchor
+ if(I.is_wrench())
+ if(anchored)
+ anchored = 0
+ if(ispipe)
+ level = 2
+ density = 0
+ else
+ density = 1
+ to_chat(user, "You detach the [nicetype] from the underfloor.")
+ else
+ if(ptype == DISPOSAL_PIPE_BIN || ptype == DISPOSAL_PIPE_OUTLET || ptype == DISPOSAL_PIPE_CHUTE) // Disposal or outlet
+ if(CP) // There's something there
+ if(!istype(CP,/obj/structure/disposalpipe/trunk))
+ to_chat(user, "The [nicetype] requires a trunk underneath it in order to work.")
+ return
+ else // Nothing under, fuck.
+ to_chat(user, "The [nicetype] requires a trunk underneath it in order to work.")
+ return
+ else
+ if(CP)
+ update()
+ var/pdir = CP.dpdir
+ if(istype(CP, /obj/structure/disposalpipe/broken))
+ pdir = CP.dir
+ if(pdir & dpdir)
+ to_chat(user, "There is already a [nicetype] at that location.")
+ return
+
+ anchored = 1
+ if(ispipe)
+ level = 1 // We don't want disposal bins to disappear under the floors
+ density = 0
+ else
+ density = 1 // We don't want disposal bins or outlets to go density 0
+ to_chat(user, "You attach the [nicetype] to the underfloor.")
+ playsound(src, I.usesound, 100, 1)
+ update()
+
+ // weldingtool: convert to real pipe
+ else if(istype(I, /obj/item/weapon/weldingtool))
+ if(anchored)
+ var/obj/item/weapon/weldingtool/W = I
+ if(W.remove_fuel(0,user))
+ playsound(src, W.usesound, 100, 1)
+ to_chat(user, "Welding the [nicetype] in place.")
+ if(do_after(user, 20 * W.toolspeed))
+ if(!src || !W.isOn()) return
+ to_chat(user, "The [nicetype] has been welded in place!")
+ update() // TODO: Make this neat
+ if(ispipe) // Pipe
+
+ var/pipetype = dpipetype()
+ var/obj/structure/disposalpipe/P = new pipetype(src.loc)
+ src.transfer_fingerprints_to(P)
+ P.base_icon_state = base_state
+ P.set_dir(dir)
+ P.dpdir = dpdir
+ P.updateicon()
+
+ //Needs some special treatment ;)
+ if(ptype==DISPOSAL_PIPE_SORTER || ptype==DISPOSAL_PIPE_SORTER_FLIPPED)
+ var/obj/structure/disposalpipe/sortjunction/SortP = P
+ SortP.sortType = sortType
+ SortP.updatedir()
+ SortP.updatedesc()
+ SortP.updatename()
+
+ else if(ptype==DISPOSAL_PIPE_BIN)
+ var/obj/machinery/disposal/P = new /obj/machinery/disposal(src.loc)
+ src.transfer_fingerprints_to(P)
+ P.mode = 0 // start with pump off
+
+ else if(ptype==DISPOSAL_PIPE_OUTLET)
+ var/obj/structure/disposaloutlet/P = new /obj/structure/disposaloutlet(src.loc)
+ src.transfer_fingerprints_to(P)
+ P.set_dir(dir)
+ var/obj/structure/disposalpipe/trunk/Trunk = CP
+ Trunk.linked = P
+
+ else if(ptype==DISPOSAL_PIPE_CHUTE)
+ var/obj/machinery/disposal/deliveryChute/P = new /obj/machinery/disposal/deliveryChute(src.loc)
+ src.transfer_fingerprints_to(P)
+ P.set_dir(dir)
+
+ qdel(src)
+ return
+ else
+ to_chat(user, "You need more welding fuel to complete this task.")
+ return
+ else
+ to_chat(user, "You need to attach it to the plating first!")
+ return
+
+/obj/structure/disposalconstruct/hides_under_flooring()
+ if(anchored)
+ return 1
+ else
+ return 0
+
+// VOREStation Add Start - Helper procs for RCD
+/obj/structure/disposalconstruct/proc/is_pipe()
+ return (ptype != DISPOSAL_PIPE_BIN && ptype != DISPOSAL_PIPE_OUTLET && ptype != DISPOSAL_PIPE_CHUTE)
+
+//helper proc that makes sure you can place the construct (i.e no dense objects stacking)
+/obj/structure/disposalconstruct/proc/can_place()
+ if(is_pipe())
+ return TRUE
+
+ for(var/obj/structure/disposalconstruct/DC in get_turf(src))
+ if(DC == src)
+ continue
+
+ if(!DC.is_pipe()) //there's already a chute/outlet/bin there
+ return FALSE
+
+ return TRUE
+// VOREStation Add End
diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm
index 3ea0aede1b..700e1d9040 100644
--- a/code/modules/research/server.dm
+++ b/code/modules/research/server.dm
@@ -178,22 +178,24 @@
for(var/obj/machinery/r_n_d/server/S in machines)
if(istype(S, /obj/machinery/r_n_d/server/centcom) && !badmin)
continue
+ var/list/tech = list()
+ var/list/designs = list()
var/list/server_data = list(
"name" = S.name,
"ref" = REF(S),
"id" = S.server_id,
"id_with_upload" = S.id_with_upload,
"id_with_download" = S.id_with_download,
- "tech" = list(),
- "designs" = list(),
+ "tech" = tech,
+ "designs" = designs,
)
for(var/datum/tech/T in S.files.known_tech)
- server_data["tech"].Add(list(list(
+ tech.Add(list(list(
"name" = T.name,
"id" = T.id,
)))
for(var/datum/design/D in S.files.known_designs)
- server_data["designs"].Add(list(list(
+ designs.Add(list(list(
"name" = D.name,
"id" = D.id,
)))
diff --git a/code/modules/resleeving/computers.dm b/code/modules/resleeving/computers.dm
index 06e62271c5..e49c886247 100644
--- a/code/modules/resleeving/computers.dm
+++ b/code/modules/resleeving/computers.dm
@@ -469,7 +469,7 @@
icon_state = "harddisk"
item_state = "card-id"
w_class = ITEMSIZE_SMALL
- var/datum/transhuman/mind_record/list/stored = list()
+ var/list/datum/transhuman/mind_record/stored = list()
/**
* Sets a temporary message to display to the user
diff --git a/code/modules/resleeving/implant.dm b/code/modules/resleeving/implant.dm
index 7c2893a21c..95ea041dee 100644
--- a/code/modules/resleeving/implant.dm
+++ b/code/modules/resleeving/implant.dm
@@ -50,7 +50,7 @@
throw_range = 5
w_class = ITEMSIZE_SMALL
matter = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 2000)
- var/obj/item/weapon/implant/backup/list/imps = list()
+ var/list/obj/item/weapon/implant/backup/imps = list()
var/max_implants = 4 //Iconstates need to exist due to the update proc!
/obj/item/weapon/backup_implanter/New()
diff --git a/code/modules/resleeving/infomorph.dm b/code/modules/resleeving/infomorph.dm
index fed79fe078..77eae4e51d 100644
--- a/code/modules/resleeving/infomorph.dm
+++ b/code/modules/resleeving/infomorph.dm
@@ -424,11 +424,11 @@ var/list/infomorph_emotions = list(
else
to_chat(src, "You don't have a radio!")
-/mob/living/silicon/infomorph/say(var/msg)
+/mob/living/silicon/infomorph/say(var/message, var/datum/language/speaking = null, var/whispering = 0)
if(silence_time)
to_chat(src, "Communication circuits remain uninitialized.")
else
- ..(msg)
+ ..(message)
/mob/living/silicon/infomorph/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name)
switch(message_mode)
diff --git a/code/modules/rogueminer_vr/controller.dm b/code/modules/rogueminer_vr/controller.dm
index 8f7d883992..4c6c710120 100644
--- a/code/modules/rogueminer_vr/controller.dm
+++ b/code/modules/rogueminer_vr/controller.dm
@@ -143,7 +143,7 @@ var/datum/controller/rogue/rm_controller
return oldest_zone
/datum/controller/rogue/proc/mark_clean(var/datum/rogue/zonemaster/ZM)
- if(!ZM in all_zones) //What? Who?
+ if(!(ZM in all_zones)) //What? Who?
rm_controller.dbg("RMC(mc): Some unknown zone asked to be listed.")
if(ZM in ready_zones)
@@ -152,7 +152,7 @@ var/datum/controller/rogue/rm_controller
clean_zones += ZM
/datum/controller/rogue/proc/mark_ready(var/datum/rogue/zonemaster/ZM)
- if(!ZM in all_zones) //What? Who?
+ if(!(ZM in all_zones)) //What? Who?
rm_controller.dbg("RMC(mr): Some unknown zone asked to be listed.")
if(ZM in clean_zones)
@@ -161,19 +161,19 @@ var/datum/controller/rogue/rm_controller
ready_zones += ZM
/datum/controller/rogue/proc/unmark_clean(var/datum/rogue/zonemaster/ZM)
- if(!ZM in all_zones) //What? Who?
+ if(!(ZM in all_zones)) //What? Who?
rm_controller.dbg("RMC(umc): Some unknown zone asked to be listed.")
- if(!ZM in clean_zones)
+ if(!(ZM in clean_zones))
rm_controller.dbg("RMC(umc): Finite state machine broken.")
clean_zones -= ZM
/datum/controller/rogue/proc/unmark_ready(var/datum/rogue/zonemaster/ZM)
- if(!ZM in all_zones) //What? Who?
+ if(!(ZM in all_zones)) //What? Who?
rm_controller.dbg("RMC(umr): Some unknown zone asked to be listed.")
- if(!ZM in ready_zones)
+ if(!(ZM in ready_zones))
rm_controller.dbg("RMC(umr): Finite state machine broken.")
ready_zones -= ZM
diff --git a/code/modules/rogueminer_vr/zonemaster.dm b/code/modules/rogueminer_vr/zonemaster.dm
index ffca74bb34..8f2eba8426 100644
--- a/code/modules/rogueminer_vr/zonemaster.dm
+++ b/code/modules/rogueminer_vr/zonemaster.dm
@@ -27,8 +27,8 @@
var/original_mobs = 0
//in-use spawns from the area
- var/obj/asteroid_spawner/list/rockspawns = list()
- var/obj/rogue_mobspawner/list/mobspawns = list()
+ var/list/obj/asteroid_spawner/rockspawns = list()
+ var/list/obj/rogue_mobspawner/mobspawns = list()
/datum/rogue/zonemaster/New(var/area/A)
ASSERT(A)
diff --git a/code/modules/scripting/IDE.dm b/code/modules/scripting/IDE.dm
index 3974e2dee4..8adc021c4d 100644
--- a/code/modules/scripting/IDE.dm
+++ b/code/modules/scripting/IDE.dm
@@ -1,7 +1,7 @@
client/verb/tcssave()
set hidden = 1
if(mob.machine || issilicon(mob))
- if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && mob.machine in view(1, mob)) || issilicon(mob))
+ if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && (mob.machine in view(1, mob))) || issilicon(mob))
var/obj/machinery/computer/telecomms/traffic/Machine = mob.machine
if(Machine.editingcode != mob)
return
@@ -28,7 +28,7 @@ client/verb/tcssave()
client/verb/tcscompile()
set hidden = 1
if(mob.machine || issilicon(mob))
- if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && mob.machine in view(1, mob)) || (issilicon(mob) && istype(mob.machine, /obj/machinery/computer/telecomms/traffic) ))
+ if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && (mob.machine in view(1, mob))) || (issilicon(mob) && istype(mob.machine, /obj/machinery/computer/telecomms/traffic) ))
var/obj/machinery/computer/telecomms/traffic/Machine = mob.machine
if(Machine.editingcode != mob)
return
@@ -79,7 +79,7 @@ client/verb/tcscompile()
client/verb/tcsrun()
set hidden = 1
if(mob.machine || issilicon(mob))
- if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && mob.machine in view(1, mob)) || (issilicon(mob) && istype(mob.machine, /obj/machinery/computer/telecomms/traffic) ))
+ if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && (mob.machine in view(1, mob))) || (issilicon(mob) && istype(mob.machine, /obj/machinery/computer/telecomms/traffic) ))
var/obj/machinery/computer/telecomms/traffic/Machine = mob.machine
if(Machine.editingcode != mob)
return
@@ -145,7 +145,7 @@ client/verb/tcsrun()
client/verb/exittcs()
set hidden = 1
if(mob.machine || issilicon(mob))
- if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && mob.machine in view(1, mob)) || (issilicon(mob) && istype(mob.machine, /obj/machinery/computer/telecomms/traffic) ))
+ if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && (mob.machine in view(1, mob))) || (issilicon(mob) && istype(mob.machine, /obj/machinery/computer/telecomms/traffic) ))
var/obj/machinery/computer/telecomms/traffic/Machine = mob.machine
if(Machine.editingcode == mob)
Machine.storedcode = "[winget(mob, "tcscode", "text")]"
@@ -157,7 +157,7 @@ client/verb/exittcs()
client/verb/tcsrevert()
set hidden = 1
if(mob.machine || issilicon(mob))
- if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && mob.machine in view(1, mob)) || (issilicon(mob) && istype(mob.machine, /obj/machinery/computer/telecomms/traffic) ))
+ if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && (mob.machine in view(1, mob))) || (issilicon(mob) && istype(mob.machine, /obj/machinery/computer/telecomms/traffic) ))
var/obj/machinery/computer/telecomms/traffic/Machine = mob.machine
if(Machine.editingcode != mob)
return
@@ -186,7 +186,7 @@ client/verb/tcsrevert()
client/verb/tcsclearmem()
set hidden = 1
if(mob.machine || issilicon(mob))
- if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && mob.machine in view(1, mob)) || (issilicon(mob) && istype(mob.machine, /obj/machinery/computer/telecomms/traffic) ))
+ if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && (mob.machine in view(1, mob))) || (issilicon(mob) && istype(mob.machine, /obj/machinery/computer/telecomms/traffic) ))
var/obj/machinery/computer/telecomms/traffic/Machine = mob.machine
if(Machine.editingcode != mob)
return
diff --git a/code/modules/shieldgen/shield_capacitor.dm b/code/modules/shieldgen/shield_capacitor.dm
index d76a18045a..35cd71e134 100644
--- a/code/modules/shieldgen/shield_capacitor.dm
+++ b/code/modules/shieldgen/shield_capacitor.dm
@@ -40,7 +40,7 @@
if(istype(W, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/C = W
- if(access_captain in C.access || access_security in C.access || access_engine in C.access)
+ if((access_captain in C.access) || (access_security in C.access) || (access_engine in C.access))
src.locked = !src.locked
to_chat(user, "Controls are now [src.locked ? "locked." : "unlocked."]")
updateDialog()
@@ -59,7 +59,7 @@
owned_gen.capacitors |= src
owned_gen.updateDialog()
else
- if(owned_gen && src in owned_gen.capacitors)
+ if(owned_gen && (src in owned_gen.capacitors))
owned_gen.capacitors -= src
owned_gen = null
else
diff --git a/code/modules/shieldgen/shield_gen.dm b/code/modules/shieldgen/shield_gen.dm
index 08d0b8ce86..af9d10d444 100644
--- a/code/modules/shieldgen/shield_gen.dm
+++ b/code/modules/shieldgen/shield_gen.dm
@@ -60,7 +60,7 @@
/obj/machinery/shield_gen/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/C = W
- if(access_captain in C.access || access_security in C.access || access_engine in C.access)
+ if((access_captain in C.access) || (access_security in C.access) || (access_engine in C.access))
src.locked = !src.locked
to_chat(user, "Controls are now [src.locked ? "locked." : "unlocked."]")
updateDialog()
@@ -110,36 +110,35 @@
return ..()
/obj/machinery/shield_gen/tgui_data(mob/user)
- var/list/data = list()
+ var/list/lockedData = list()
- data["locked"] = locked
- data["lockedData"] = list()
if(!locked)
- data["lockedData"]["capacitors"] = list()
+ var/list/caps = list()
for(var/obj/machinery/shield_capacitor/C in capacitors)
- data["lockedData"]["capacitors"].Add(list(list(
+ caps.Add(list(list(
"active" = C.active,
"stored_charge" = C.stored_charge,
"max_charge" = C.max_charge,
"failing" = (C.time_since_fail <= 2),
)))
+ lockedData["capacitors"] = caps
+
+ lockedData["active"] = active
+ lockedData["failing"] = (time_since_fail <= 2)
+ lockedData["radius"] = field_radius
+ lockedData["max_radius"] = max_field_radius
+ lockedData["z_range"] = z_range
+ lockedData["max_z_range"] = 10
+ lockedData["average_field_strength"] = average_field_strength
+ lockedData["target_field_strength"] = target_field_strength
+ lockedData["max_field_strength"] = max_field_strength
+ lockedData["shields"] = LAZYLEN(field)
+ lockedData["upkeep"] = round(field.len * max(average_field_strength * dissipation_rate, min_dissipation) / energy_conversion_rate)
+ lockedData["strengthen_rate"] = strengthen_rate
+ lockedData["max_strengthen_rate"] = max_strengthen_rate
+ lockedData["gen_power"] = round(field.len * min(strengthen_rate, target_field_strength - average_field_strength) / energy_conversion_rate)
- data["lockedData"]["active"] = active
- data["lockedData"]["failing"] = (time_since_fail <= 2)
- data["lockedData"]["radius"] = field_radius
- data["lockedData"]["max_radius"] = max_field_radius
- data["lockedData"]["z_range"] = z_range
- data["lockedData"]["max_z_range"] = 10
- data["lockedData"]["average_field_strength"] = average_field_strength
- data["lockedData"]["target_field_strength"] = target_field_strength
- data["lockedData"]["max_field_strength"] = max_field_strength
- data["lockedData"]["shields"] = LAZYLEN(field)
- data["lockedData"]["upkeep"] = round(field.len * max(average_field_strength * dissipation_rate, min_dissipation) / energy_conversion_rate)
- data["lockedData"]["strengthen_rate"] = strengthen_rate
- data["lockedData"]["max_strengthen_rate"] = max_strengthen_rate
- data["lockedData"]["gen_power"] = round(field.len * min(strengthen_rate, target_field_strength - average_field_strength) / energy_conversion_rate)
-
- return data
+ return list("locked" = locked, "lockedData" = lockedData)
/obj/machinery/shield_gen/process()
if (!anchored && active)
diff --git a/code/modules/shuttles/web_datums.dm b/code/modules/shuttles/web_datums.dm
index bbba42dd58..6e34d3750b 100644
--- a/code/modules/shuttles/web_datums.dm
+++ b/code/modules/shuttles/web_datums.dm
@@ -220,6 +220,7 @@
return current_destination.routes.Copy()
/datum/shuttle_web_master/proc/get_current_destination()
+ RETURN_TYPE(/datum/shuttle_destination)
return current_destination
/datum/shuttle_web_master/proc/get_destination_by_type(var/type_to_get)
diff --git a/code/modules/spells/spell_code.dm b/code/modules/spells/spell_code.dm
index f2a85f7bbe..5ab0643450 100644
--- a/code/modules/spells/spell_code.dm
+++ b/code/modules/spells/spell_code.dm
@@ -277,7 +277,7 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now
if(level_max[Sp_TOTAL] <= ( spell_levels[Sp_SPEED] + spell_levels[Sp_POWER] )) //too many levels, can't do it
return 0
- if(upgrade_type && upgrade_type in spell_levels && upgrade_type in level_max)
+ if(upgrade_type && (upgrade_type in spell_levels) && (upgrade_type in level_max))
if(spell_levels[upgrade_type] >= level_max[upgrade_type])
return 0
diff --git a/code/modules/spells/spellbook.dm b/code/modules/spells/spellbook.dm
index 831d44ba2f..b4e5e94b70 100644
--- a/code/modules/spells/spellbook.dm
+++ b/code/modules/spells/spellbook.dm
@@ -291,7 +291,7 @@
/obj/item/weapon/spellbook/oneuse/fireball/recoil(mob/user as mob)
..()
- explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2)
+ explosion(user.loc, -1, 0, 2, 3, 0)
qdel(src)
/obj/item/weapon/spellbook/oneuse/smoke
diff --git a/code/modules/tables/presets.dm b/code/modules/tables/presets.dm
index 085489b26a..93b9de593b 100644
--- a/code/modules/tables/presets.dm
+++ b/code/modules/tables/presets.dm
@@ -129,7 +129,7 @@
verbs -= /obj/structure/table/proc/do_put
..()
-/obj/structure/table/alien/dismantle(obj/item/weapon/wrench/W, mob/user)
+/obj/structure/table/alien/dismantle(obj/item/weapon/tool/wrench/W, mob/user)
to_chat(user, "You cannot dismantle \the [src].")
return
diff --git a/code/modules/tables/presets_vr.dm b/code/modules/tables/presets_vr.dm
index b5fb2642d5..bb7f6f08c6 100644
--- a/code/modules/tables/presets_vr.dm
+++ b/code/modules/tables/presets_vr.dm
@@ -14,7 +14,7 @@
..()
-/obj/structure/table/darkglass/dismantle(obj/item/weapon/wrench/W, mob/user)
+/obj/structure/table/darkglass/dismantle(obj/item/weapon/tool/wrench/W, mob/user)
to_chat(user, "You cannot dismantle \the [src].")
return
/obj/structure/table/alien/blue
@@ -37,7 +37,7 @@
..()
-/obj/structure/table/fancyblack/dismantle(obj/item/weapon/wrench/W, mob/user)
+/obj/structure/table/fancyblack/dismantle(obj/item/weapon/tool/wrench/W, mob/user)
to_chat(user, "You cannot dismantle \the [src].")
return
diff --git a/code/modules/tables/rack.dm b/code/modules/tables/rack.dm
index b07aa188b7..c39fb2c59f 100644
--- a/code/modules/tables/rack.dm
+++ b/code/modules/tables/rack.dm
@@ -23,6 +23,6 @@
color = material.icon_colour
return
-/obj/structure/table/rack/holorack/dismantle(obj/item/weapon/wrench/W, mob/user)
+/obj/structure/table/rack/holorack/dismantle(obj/item/weapon/tool/wrench/W, mob/user)
to_chat(user, "You cannot dismantle \the [src].")
return
diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm
index d2a6a0a35a..bac505f612 100644
--- a/code/modules/telesci/telesci_computer.dm
+++ b/code/modules/telesci/telesci_computer.dm
@@ -197,7 +197,7 @@
// Irradiate everyone in telescience!
for(var/obj/machinery/telepad/E in machines)
var/L = get_turf(E)
- sparks(target = L)
+ sparks()
for(var/mob/living/carbon/human/M in viewers(L, null))
M.apply_effect((rand(10, 20)), IRRADIATE, 0)
to_chat(M, "You feel strange.")
diff --git a/code/modules/tgui/external.dm b/code/modules/tgui/external.dm
index bb39c721d0..6f9a3fc8e3 100644
--- a/code/modules/tgui/external.dm
+++ b/code/modules/tgui/external.dm
@@ -15,7 +15,7 @@
* optional parent_ui datum/tgui A parent UI that, when closed, closes this UI as well.
*/
-/datum/proc/tgui_interact(mob/user, datum/tgui/ui = null, datum/tgui/parent_ui = null)
+/datum/proc/tgui_interact(mob/user, datum/tgui/ui = null, datum/tgui/parent_ui = null, custom_state = null)
return FALSE // Not implemented.
/**
diff --git a/code/modules/tgui/modules/admin_shuttle_controller.dm b/code/modules/tgui/modules/admin_shuttle_controller.dm
index 20e5c47367..d2ce9bc69e 100644
--- a/code/modules/tgui/modules/admin_shuttle_controller.dm
+++ b/code/modules/tgui/modules/admin_shuttle_controller.dm
@@ -58,11 +58,11 @@
target = V.restricted_waypoints[1]
else
to_chat(C, "Unable to jump to [V].")
- return FALSE
+ return
var/turf/T = get_turf(target)
if(!istype(T))
to_chat(C, "Unable to jump to [V].")
- return FALSE
+ return
C.jumptoturf(T)
return TRUE
if("classicmove")
diff --git a/code/modules/tgui/modules/atmos_control.dm b/code/modules/tgui/modules/atmos_control.dm
index 4fd477a531..6f573ad96c 100644
--- a/code/modules/tgui/modules/atmos_control.dm
+++ b/code/modules/tgui/modules/atmos_control.dm
@@ -13,7 +13,7 @@
if(monitored_alarm_ids)
for(var/obj/machinery/alarm/alarm in machines)
- if(alarm.alarm_id && alarm.alarm_id in monitored_alarm_ids)
+ if(alarm.alarm_id && (alarm.alarm_id in monitored_alarm_ids))
monitored_alarms += alarm
// machines may not yet be ordered at this point
monitored_alarms = dd_sortedObjectList(monitored_alarms)
diff --git a/code/modules/tgui/modules/overmap.dm b/code/modules/tgui/modules/overmap.dm
index 2e566e1267..097bf84a05 100644
--- a/code/modules/tgui/modules/overmap.dm
+++ b/code/modules/tgui/modules/overmap.dm
@@ -158,7 +158,6 @@
. = ..()
if(!istype(new_linked))
CRASH("Warning, [new_linked] is not an overmap ship! Something went horribly wrong for [usr]!")
- return
linked = new_linked
name = initial(name) + " ([linked.name])"
// HELM
diff --git a/code/modules/turbolift/turbolift_console.dm b/code/modules/turbolift/turbolift_console.dm
index 4d300bcfc2..9868188d18 100644
--- a/code/modules/turbolift/turbolift_console.dm
+++ b/code/modules/turbolift/turbolift_console.dm
@@ -158,10 +158,10 @@
data["doors_open"] = lift.doors_are_open()
data["fire_mode"] = lift.fire_mode
- data["floors"] = list()
+ var/list/floors = list()
for(var/i in lift.floors.len to 1 step -1)
var/datum/turbolift_floor/floor = lift.floors[i]
- data["floors"].Add(list(list(
+ floors.Add(list(list(
"id" = i,
"ref" = "\ref[floor]",
"queued" = (floor in lift.queued_floors),
@@ -170,6 +170,7 @@
"label" = floor.label,
"name" = floor.name,
)))
+ data["floors"] = floors
return data
diff --git a/code/modules/vchat/vchat_client.dm b/code/modules/vchat/vchat_client.dm
index fa8b0c7c7f..1b60d14ae4 100644
--- a/code/modules/vchat/vchat_client.dm
+++ b/code/modules/vchat/vchat_client.dm
@@ -176,7 +176,6 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic
/proc/jsEncode(var/list/message) {
if(!islist(message))
CRASH("Passed a non-list to encode.")
- return; //Necessary?
return url_encode(url_encode(json_encode(message)))
}
diff --git a/code/modules/virus2/disease2.dm b/code/modules/virus2/disease2.dm
index 9d37b1db29..67d76a8177 100644
--- a/code/modules/virus2/disease2.dm
+++ b/code/modules/virus2/disease2.dm
@@ -253,17 +253,18 @@ var/global/list/virusDB = list()
"rate" = stageprob * 10,
"resistance" = resistance,
"species" = jointext(affected_species, ", "),
- "symptoms" = list(),
"ref" = "\ref[src]",
)
-
+
+ var/list/symptoms = list()
for(var/datum/disease2/effectholder/E in effects)
- .["symptoms"].Add(list(list(
+ symptoms.Add(list(list(
"stage" = E.stage,
"name" = E.effect.name,
"strength" = "[E.multiplier >= 3 ? "Severe" : E.multiplier > 1 ? "Above Average" : "Average"]",
"aggressiveness" = E.chance * 15,
)))
+ .["symptoms"] = symptoms
/datum/disease2/disease/proc/addToDB()
if ("[uniqueID]" in virusDB)
diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm
index 5ef4e9ad31..1a5292bf6f 100644
--- a/code/modules/vore/eating/belly_obj_vr.dm
+++ b/code/modules/vore/eating/belly_obj_vr.dm
@@ -41,7 +41,7 @@
var/obj/item/weapon/storage/vore_egg/ownegg // Is this belly creating an egg?
var/egg_type = "Egg" // Default egg type and path.
var/egg_path = /obj/item/weapon/storage/vore_egg
- var/list/emote_lists = list() // Idle emotes that happen on their own, depending on the bellymode. Contains lists of strings indexed by bellymode
+ var/list/list/emote_lists = list() // Idle emotes that happen on their own, depending on the bellymode. Contains lists of strings indexed by bellymode
var/emote_time = 60 // How long between stomach emotes at prey (in seconds)
var/emote_active = TRUE // Are we even giving emotes out at all or not?
var/next_emote = 0 // When we're supposed to print our next emote, as a world.time
diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm
index 0cb90f1442..b6015d4ad3 100644
--- a/code/modules/vore/eating/vorepanel_vr.dm
+++ b/code/modules/vore/eating/vorepanel_vr.dm
@@ -100,13 +100,13 @@
data["unsaved_changes"] = unsaved_changes
data["show_pictures"] = show_pictures
- data["inside"] = list()
var/atom/hostloc = host.loc
+ var/list/inside = list()
if(isbelly(hostloc))
var/obj/belly/inside_belly = hostloc
var/mob/living/pred = inside_belly.owner
- data["inside"] = list(
+ inside = list(
"absorbed" = host.absorbed,
"belly_name" = inside_belly.name,
"belly_mode" = inside_belly.digest_mode,
@@ -115,7 +115,7 @@
"ref" = "\ref[inside_belly]",
)
- data["inside"]["contents"] = list()
+ var/list/inside_contents = list()
for(var/atom/movable/O in inside_belly)
if(O == host)
continue
@@ -134,22 +134,26 @@
info["stat"] = M.stat
if(M.absorbed)
info["absorbed"] = TRUE
- data["inside"]["contents"].Add(list(info))
+ inside_contents.Add(list(info))
+ inside["contents"] = inside_contents
+ data["inside"] = list()
- data["our_bellies"] = list()
+ var/list/our_bellies = list()
for(var/belly in host.vore_organs)
var/obj/belly/B = belly
- data["our_bellies"].Add(list(list(
+ our_bellies.Add(list(list(
"selected" = (B == host.vore_selected),
"name" = B.name,
"ref" = "\ref[B]",
"digest_mode" = B.digest_mode,
"contents" = LAZYLEN(B.contents),
)))
- data["selected"] = null
+ data["our_bellies"] = our_bellies
+
+ var/list/selected_list = null
if(host.vore_selected)
var/obj/belly/selected = host.vore_selected
- data["selected"] = list(
+ selected_list = list(
"belly_name" = selected.name,
"is_wet" = selected.is_wet,
"wet_loop" = selected.wet_loop,
@@ -177,33 +181,37 @@
"possible_fullscreens" = icon_states('icons/mob/screen_full_vore_ch.dmi'), //CHOMPedit
"vorespawn_blacklist" = selected.vorespawn_blacklist
) //CHOMP Addition: vorespawn blacklist
+ data["selected"] = selected_list
- data["selected"]["addons"] = list()
+
+ var/list/addons = list()
for(var/flag_name in selected.mode_flag_list)
if(selected.mode_flags & selected.mode_flag_list[flag_name])
- data["selected"]["addons"].Add(flag_name)
+ addons.Add(flag_name)
+ selected["addons"] = addons
- data["selected"]["egg_type"] = selected.egg_type
- data["selected"]["contaminates"] = selected.contaminates
- data["selected"]["contaminate_flavor"] = null
- data["selected"]["contaminate_color"] = null
+ selected["egg_type"] = selected.egg_type
+ selected["contaminates"] = selected.contaminates
+ selected["contaminate_flavor"] = null
+ selected["contaminate_color"] = null
if(selected.contaminates)
- data["selected"]["contaminate_flavor"] = selected.contamination_flavor
- data["selected"]["contaminate_color"] = selected.contamination_color
+ selected["contaminate_flavor"] = selected.contamination_flavor
+ selected["contaminate_color"] = selected.contamination_color
- data["selected"]["escapable"] = selected.escapable
- data["selected"]["interacts"] = list()
+ selected["escapable"] = selected.escapable
+ selected["interacts"] = list()
if(selected.escapable)
- data["selected"]["interacts"]["escapechance"] = selected.escapechance
- data["selected"]["interacts"]["escapetime"] = selected.escapetime
- data["selected"]["interacts"]["transferchance"] = selected.transferchance
- data["selected"]["interacts"]["transferlocation"] = selected.transferlocation
- data["selected"]["interacts"]["absorbchance"] = selected.absorbchance
- data["selected"]["interacts"]["digestchance"] = selected.digestchance
+ selected["interacts"]["escapechance"] = selected.escapechance
+ selected["interacts"]["escapetime"] = selected.escapetime
+ selected["interacts"]["transferchance"] = selected.transferchance
+ selected["interacts"]["transferlocation"] = selected.transferlocation
+ selected["interacts"]["absorbchance"] = selected.absorbchance
+ selected["interacts"]["digestchance"] = selected.digestchance
- data["selected"]["disable_hud"] = selected.disable_hud
+ selected["disable_hud"] = selected.disable_hud
- data["selected"]["contents"] = list()
+
+ var/list/selected_contents = list()
for(var/O in selected)
var/list/info = list(
"name" = "[O]",
@@ -219,7 +227,8 @@
info["stat"] = M.stat
if(M.absorbed)
info["absorbed"] = TRUE
- data["selected"]["contents"].Add(list(info))
+ selected_contents.Add(list(info))
+ selected["contents"] = selected_contents
data["selected"]["show_liq"] = selected.show_liquids //CHOMPedit start: liquid belly options
data["selected"]["liq_interacts"] = list()
diff --git a/code/modules/vore/persist/persist_vr.dm b/code/modules/vore/persist/persist_vr.dm
index 3372910973..3bae4a8524 100644
--- a/code/modules/vore/persist/persist_vr.dm
+++ b/code/modules/vore/persist/persist_vr.dm
@@ -48,12 +48,12 @@
// Okay this mob has a real loaded-from-savefile mind in it!
var/datum/preferences/prefs = preferences_datums[persister.mind.loaded_from_ckey]
if(!prefs)
- WARNING("Persist (P4P): [persister.mind] was loaded from ckey [persister.mind.loaded_from_ckey] but no prefs datum found.")
+ warning("Persist (P4P): [persister.mind] was loaded from ckey [persister.mind.loaded_from_ckey] but no prefs datum found.")
return
// Okay, lets do a few checks to see if we should really save tho!
if(!prefs.load_character(persister.mind.loaded_from_slot))
- WARNING("Persist (P4P): [persister.mind] was loaded from slot [persister.mind.loaded_from_slot] but loading prefs failed.")
+ warning("Persist (P4P): [persister.mind] was loaded from slot [persister.mind.loaded_from_slot] but loading prefs failed.")
return // Failed to load character
// For now as a safety measure we will only save if the name matches.
@@ -79,7 +79,7 @@
var/datum/preferences/prefs = prep_for_persist(occupant)
if(!prefs)
- WARNING("Persist (PID): Skipping [occupant] for persisting, as they have no prefs.")
+ warning("Persist (PID): Skipping [occupant] for persisting, as they have no prefs.")
return
//This one doesn't rely on persistence prefs
@@ -232,7 +232,7 @@
prefs = prep_for_persist(H)
if(!prefs)
- WARNING("Persist (NIF): [H] has no prefs datum, skipping")
+ warning("Persist (NIF): [H] has no prefs datum, skipping")
return
var/obj/item/device/nif/nif = H.nif
@@ -254,6 +254,6 @@
var/datum/category_item/player_setup_item/vore/nif/nif_prefs = vore_cat.items_by_name["NIF Data"]
var/savefile/S = new /savefile(prefs.path)
- if(!S) WARNING ("Persist (NIF): Couldn't load NIF save savefile? [prefs.real_name]")
+ if(!S) warning("Persist (NIF): Couldn't load NIF save savefile? [prefs.real_name]")
S.cd = "/character[prefs.default_slot]"
nif_prefs.save_character(S)
diff --git a/code/modules/vore/resizing/sizegun_vr.dm b/code/modules/vore/resizing/sizegun_vr.dm
index 41775af2a5..b25cea2291 100644
--- a/code/modules/vore/resizing/sizegun_vr.dm
+++ b/code/modules/vore/resizing/sizegun_vr.dm
@@ -24,10 +24,7 @@
/obj/item/weapon/gun/energy/sizegun/New()
..()
- if(istype(src, /obj/item/weapon/gun/energy/sizegun/admin))
- verbs += /obj/item/weapon/gun/energy/sizegun/admin/select_size
- else
- verbs += /obj/item/weapon/gun/energy/sizegun/proc/select_size
+ verbs += .proc/select_size
/obj/item/weapon/gun/energy/sizegun/attack_self(mob/user)
. = ..()
diff --git a/code/modules/xenoarcheaology/finds/special.dm b/code/modules/xenoarcheaology/finds/special.dm
index 2a7f149dfa..69aa73a02f 100644
--- a/code/modules/xenoarcheaology/finds/special.dm
+++ b/code/modules/xenoarcheaology/finds/special.dm
@@ -118,7 +118,7 @@
/obj/item/weapon/vampiric/hear_talk(mob/M, list/message_pieces, verb)
..()
- if(world.time - last_bloodcall >= bloodcall_interval && M in view(7, src))
+ if(world.time - last_bloodcall >= bloodcall_interval && (M in view(7, src)))
bloodcall(M)
/obj/item/weapon/vampiric/proc/bloodcall(var/mob/living/carbon/human/M)
diff --git a/code/modules/xgm/xgm_gas_mixture.dm b/code/modules/xgm/xgm_gas_mixture.dm
index 21d1422694..083664f3e7 100644
--- a/code/modules/xgm/xgm_gas_mixture.dm
+++ b/code/modules/xgm/xgm_gas_mixture.dm
@@ -446,7 +446,7 @@
//Equalizes a list of gas mixtures. Used for pipe networks.
-/proc/equalize_gases(datum/gas_mixture/list/gases)
+/proc/equalize_gases(list/datum/gas_mixture/gases)
//Calculate totals from individual components
var/total_volume = 0
var/total_thermal_energy = 0
diff --git a/maps/southern_cross/overmap/sectors.dm b/maps/southern_cross/overmap/sectors.dm
index 7ee2ed70d9..2dcdcd2c76 100644
--- a/maps/southern_cross/overmap/sectors.dm
+++ b/maps/southern_cross/overmap/sectors.dm
@@ -29,9 +29,10 @@
docking_codes = null
/obj/effect/overmap/visitable/planet/Sif/get_skybox_representation()
- . = ..()
- (.).pixel_x = skybox_offset_x
- (.).pixel_y = skybox_offset_y
+ var/image/tmp = ..()
+ tmp.pixel_x = skybox_offset_x
+ tmp.pixel_y = skybox_offset_y
+ return tmp
/obj/effect/overmap/visitable/sector/Southern_Cross
name = "Southern Cross"
diff --git a/vorestation.dme b/vorestation.dme
index f83d1a79d1..bdffd3288d 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -85,6 +85,7 @@
#include "code\__defines\shields.dm"
#include "code\__defines\shuttle.dm"
#include "code\__defines\sound.dm"
+#include "code\__defines\spaceman_dmm.dm"
#include "code\__defines\species_languages.dm"
#include "code\__defines\species_languages_vr.dm"
#include "code\__defines\species_languages_YW.dm"