diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index e42e6d3e14..49e3ec2695 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -94,6 +94,22 @@ jobs:
with:
outputFile: output-annotations.txt
+ odlint:
+ name: Lint with OpenDream
+ runs-on: ubuntu-22.04
+ steps:
+ - uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: 9
+ - uses: actions/checkout@v4
+ - uses: robinraju/release-downloader@v1.9
+ with:
+ repository: "OpenDreamProject/OpenDream"
+ tag: "latest"
+ fileName: "DMCompiler_linux-x64.tar.gz"
+ extract: true
+ - run: ./DMCompiler_linux-x64/DMCompiler --suppress-unimplemented vorestation.dme
+
unit_tests:
strategy:
matrix:
diff --git a/code/ATMOSPHERICS/pipes/he_pipes.dm b/code/ATMOSPHERICS/pipes/he_pipes.dm
index 0d9e673e68..9d69f71876 100644
--- a/code/ATMOSPHERICS/pipes/he_pipes.dm
+++ b/code/ATMOSPHERICS/pipes/he_pipes.dm
@@ -118,7 +118,7 @@
heat_limit = H.species.heat_level_3
if(pipe_air.temperature > heat_limit + 1)
- L.apply_damage(4 * log(pipe_air.temperature - heat_limit), BURN, BP_TORSO, used_weapon = "Excessive Heat")
+ L.apply_damage(4 * log(pipe_air.temperature - heat_limit), BURN, BP_TORSO)
//fancy radiation glowing
if(pipe_air.temperature && (icon_temperature > 500 || pipe_air.temperature > 500)) //start glowing at 500K
diff --git a/code/ZAS/Airflow.dm b/code/ZAS/Airflow.dm
index f02943f2f5..2ec1c7186c 100644
--- a/code/ZAS/Airflow.dm
+++ b/code/ZAS/Airflow.dm
@@ -123,15 +123,15 @@ Contains helper procs for airflow, handled in /connection_group.
var/blocked = run_armor_check(BP_HEAD,"melee")
var/soaked = get_armor_soak(BP_HEAD,"melee")
- apply_damage(b_loss/3, BRUTE, BP_HEAD, blocked, soaked, 0, "Airflow")
+ apply_damage(b_loss/3, BRUTE, BP_HEAD, blocked, soaked, 0)
blocked = run_armor_check(BP_TORSO,"melee")
soaked = get_armor_soak(BP_TORSO,"melee")
- apply_damage(b_loss/3, BRUTE, BP_TORSO, blocked, soaked, 0, "Airflow")
+ apply_damage(b_loss/3, BRUTE, BP_TORSO, blocked, soaked, 0)
blocked = run_armor_check(BP_GROIN,"melee")
soaked = get_armor_soak(BP_GROIN,"melee")
- apply_damage(b_loss/3, BRUTE, BP_GROIN, blocked, soaked, 0, "Airflow")
+ apply_damage(b_loss/3, BRUTE, BP_GROIN, blocked, soaked, 0)
if(airflow_speed > 10)
Paralyse(round(airflow_speed * vsc.airflow_stun))
diff --git a/code/ZAS/Fire.dm b/code/ZAS/Fire.dm
index c47c7cc24c..44ba6f5e6b 100644
--- a/code/ZAS/Fire.dm
+++ b/code/ZAS/Fire.dm
@@ -425,10 +425,10 @@ If it gains pressure too slowly, it may leak or just rupture instead of explodin
//Always check these damage procs first if fire damage isn't working. They're probably what's wrong.
- apply_damage(2.5*mx*head_exposure, BURN, BP_HEAD, 0, 0, "Fire")
- apply_damage(2.5*mx*chest_exposure, BURN, BP_TORSO, 0, 0, "Fire")
- apply_damage(2.0*mx*groin_exposure, BURN, BP_GROIN, 0, 0, "Fire")
- apply_damage(0.6*mx*legs_exposure, BURN, BP_L_LEG, 0, 0, "Fire")
- apply_damage(0.6*mx*legs_exposure, BURN, BP_R_LEG, 0, 0, "Fire")
- apply_damage(0.4*mx*arms_exposure, BURN, BP_L_ARM, 0, 0, "Fire")
- apply_damage(0.4*mx*arms_exposure, BURN, BP_R_ARM, 0, 0, "Fire")
+ apply_damage(2.5*mx*head_exposure, BURN, BP_HEAD, 0, 0)
+ apply_damage(2.5*mx*chest_exposure, BURN, BP_TORSO, 0, 0)
+ apply_damage(2.0*mx*groin_exposure, BURN, BP_GROIN, 0, 0)
+ apply_damage(0.6*mx*legs_exposure, BURN, BP_L_LEG, 0, 0)
+ apply_damage(0.6*mx*legs_exposure, BURN, BP_R_LEG, 0, 0)
+ apply_damage(0.4*mx*arms_exposure, BURN, BP_L_ARM, 0, 0)
+ apply_damage(0.4*mx*arms_exposure, BURN, BP_R_ARM, 0, 0)
diff --git a/code/__byond_version_compat.dm b/code/__byond_version_compat.dm
index 6604aea70b..8272fa4671 100644
--- a/code/__byond_version_compat.dm
+++ b/code/__byond_version_compat.dm
@@ -9,7 +9,7 @@
//Update this whenever you need to take advantage of more recent byond features
#define MIN_COMPILER_VERSION 514
#define MIN_COMPILER_BUILD 1556
-#if (DM_VERSION < MIN_COMPILER_VERSION || DM_BUILD < MIN_COMPILER_BUILD) && !defined(SPACEMAN_DMM)
+#if (DM_VERSION < MIN_COMPILER_VERSION || DM_BUILD < MIN_COMPILER_BUILD) && !defined(SPACEMAN_DMM) && !defined(OPENDREAM)
//Don't forget to update this part
#error Your version of BYOND is too out-of-date to compile this project. Go to https://secure.byond.com/download and update.
#error You need version 514.1556 or higher
diff --git a/code/__odlint.dm b/code/__odlint.dm
new file mode 100644
index 0000000000..f425171337
--- /dev/null
+++ b/code/__odlint.dm
@@ -0,0 +1,11 @@
+// This file is included right at the start of the DME.
+// Its purpose is to enable multiple lints (pragmas) that are supported by OpenDream to better validate the codebase
+// These are essentially nitpicks the DM compiler should pick up on but doesnt
+
+#ifndef SPACEMAN_DMM
+#ifdef OPENDREAM
+// These are in their own file as you need to do it with an include as a hack to avoid
+// SpacemanDMM evaluating the #pragma lines, even if its outside a block it cares about
+#include "__pragmas.dm"
+#endif
+#endif
diff --git a/code/__pragmas.dm b/code/__pragmas.dm
new file mode 100644
index 0000000000..ac6541a4a1
--- /dev/null
+++ b/code/__pragmas.dm
@@ -0,0 +1,30 @@
+//1000-1999
+#pragma FileAlreadyIncluded error
+#pragma MissingIncludedFile error
+#pragma MisplacedDirective error
+#pragma UndefineMissingDirective error
+#pragma DefinedMissingParen error
+#pragma ErrorDirective error
+#pragma WarningDirective error
+#pragma MiscapitalizedDirective error
+
+//2000-2999
+#pragma SoftReservedKeyword error
+#pragma DuplicateVariable error
+#pragma DuplicateProcDefinition error
+#pragma PointlessParentCall error
+#pragma PointlessBuiltinCall error
+#pragma SuspiciousMatrixCall error
+#pragma MalformedRange error
+#pragma InvalidRange error
+#pragma InvalidSetStatement error
+#pragma InvalidOverride error
+#pragma DanglingVarType error
+#pragma MissingInterpolatedExpression error
+#pragma InvalidIndexOperation error
+#pragma PointlessPositionalArgument error
+#pragma ProcArgumentGlobal error
+
+//3000-3999
+#pragma EmptyBlock error
+#pragma AmbiguousInOrder error
diff --git a/code/_helpers/icons/flatten.dm b/code/_helpers/icons/flatten.dm
index 0435f7b6e1..e92fb896fb 100644
--- a/code/_helpers/icons/flatten.dm
+++ b/code/_helpers/icons/flatten.dm
@@ -90,8 +90,11 @@
var/ourdir = dir
if(!none && ourdir != SOUTH)
if(length(icon_states(icon(icon, state, NORTH))))
+ pass()
else if(length(icon_states(icon(icon, state, EAST))))
+ pass()
else if(length(icon_states(icon(icon, state, WEST))))
+ pass()
else
ourdir = SOUTH
diff --git a/code/_helpers/type2type.dm b/code/_helpers/type2type.dm
index 0e0dd58295..e7f779c508 100644
--- a/code/_helpers/type2type.dm
+++ b/code/_helpers/type2type.dm
@@ -48,7 +48,7 @@
while (i)
var/char = text2ascii(hex, i)
switch(char)
- if(48) // 0 -- do nothing
+ if(48) pass() // 0 -- do nothing
if(49 to 57) num += (char - 48) * power // 1-9
if(97, 65) num += power * 10 // A
if(98, 66) num += power * 11 // B
@@ -166,6 +166,28 @@
if (NORTHWEST) return 315
if (SOUTHWEST) return 225
+/// Returns a list(x, y), being the change in position required to step in the passed in direction
+/proc/dir2offset(dir)
+ switch(dir)
+ if(NORTH)
+ return list(0, 1)
+ if(SOUTH)
+ return list(0, -1)
+ if(EAST)
+ return list(1, 0)
+ if(WEST)
+ return list(-1, 0)
+ if(NORTHEAST)
+ return list(1, 1)
+ if(SOUTHEAST)
+ return list(1, -1)
+ if(NORTHWEST)
+ return list(-1, 1)
+ if(SOUTHWEST)
+ return list(-1, -1)
+ else
+ return list(0, 0)
+
// Converts a blend_mode constant to one acceptable to icon.Blend()
/proc/blendMode2iconMode(blend_mode)
switch (blend_mode)
diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm
index c9820e5915..55ffbbce7e 100644
--- a/code/_helpers/unsorted.dm
+++ b/code/_helpers/unsorted.dm
@@ -1499,6 +1499,10 @@ var/mob/dview/dview_mob = new
return !QDELETED(D)
return FALSE
+/// No op
+/proc/pass(...)
+ return
+
//gives us the stack trace from CRASH() without ending the current proc.
/proc/stack_trace(msg)
CRASH(msg)
diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm
index e52d917b48..d5caf60cf3 100644
--- a/code/datums/components/_component.dm
+++ b/code/datums/components/_component.dm
@@ -281,7 +281,8 @@
var/datum/component/C = dc[c_type]
if(C)
if(length(C))
- C = C[1]
+ var/list/component_list = C
+ C = component_list[1]
if(C.type == c_type)
return C
return null
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 7d5534aaba..ff7d06bc41 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -363,7 +363,7 @@
to_chat(H, span_danger("You somehow have become the recepient of a loyalty transplant, and it just activated!"))
H.implant_loyalty(override = TRUE)
log_admin("[key_name_admin(usr)] has loyalty implanted [current].")
- else
+
else if (href_list["silicon"])
BITSET(current.hud_updateflag, SPECIALROLE_HUD)
switch(href_list["silicon"])
diff --git a/code/game/antagonist/antagonist_print.dm b/code/game/antagonist/antagonist_print.dm
index 15ed54af49..d17f5d1080 100644
--- a/code/game/antagonist/antagonist_print.dm
+++ b/code/game/antagonist/antagonist_print.dm
@@ -51,7 +51,7 @@
/datum/antagonist/proc/print_player_lite(var/datum/mind/ply)
var/role = ply.assigned_role ? "\improper[ply.assigned_role]" : "\improper[ply.special_role]"
- var/text = "
" + span_bold("[ply.name]") + " (" + span_bold("[ply.key]") + ") as \a " + span_bold("[role]") + " ("
+ var/text = "
" + span_bold("[ply.name]") + " (" + span_bold("[ply.key]") + ") as " + span_bold("\a [role]") + " ("
if(ply.current)
if(ply.current.stat == DEAD)
text += "died"
diff --git a/code/game/dna/dna2_domutcheck.dm b/code/game/dna/dna2_domutcheck.dm
index a922891326..d710cce5ae 100644
--- a/code/game/dna/dna2_domutcheck.dm
+++ b/code/game/dna/dna2_domutcheck.dm
@@ -19,7 +19,7 @@
if(!M || !M.dna)
return
if(gene.block)
- if(gene.name in M.active_genes || gene.flags & GENE_ALWAYS_ACTIVATE)
+ if((gene.name in M.active_genes) || gene.flags & GENE_ALWAYS_ACTIVATE)
enabled_genes.Add(gene)
else
disabled_genes.Add(gene)
diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm
index 99b8d854ce..3b1784a1fb 100644
--- a/code/game/dna/dna_modifier.dm
+++ b/code/game/dna/dna_modifier.dm
@@ -298,7 +298,6 @@
ex_act(severity)
qdel(src)
return
- else
return
/obj/machinery/computer/scan_consolenew
@@ -356,7 +355,6 @@
if(prob(50))
qdel(src)
return
- else
return
/obj/machinery/computer/scan_consolenew/Initialize()
diff --git a/code/game/gamemodes/events/holidays/Holidays.dm b/code/game/gamemodes/events/holidays/Holidays.dm
index 68b9a0cdf8..b761941a99 100644
--- a/code/game/gamemodes/events/holidays/Holidays.dm
+++ b/code/game/gamemodes/events/holidays/Holidays.dm
@@ -274,7 +274,7 @@ var/global/list/Holiday = list() //Holidays are lists now, so we can have more t
for(var/blurb in holiday_blurbs)
to_world(span_filter_system(span_blue("
[blurb]
")))
switch(Holiday) //special holidays
- if("Easter")
+ //if("Easter")
//do easter stuff
if("Christmas Eve","Christmas")
Christmas_Game_Start()
@@ -286,7 +286,7 @@ var/global/list/Holiday = list() //Holidays are lists now, so we can have more t
if(isemptylist(Holiday))
return 0
switch(Holiday) //special holidays
- if("Easter") //I'll make this into some helper procs at some point
+ //if("Easter") //I'll make this into some helper procs at some point
/* var/list/turf/simulated/floor/Floorlist = list()
for(var/turf/simulated/floor/T)
if(T.contents)
diff --git a/code/game/gamemodes/events/power_failure.dm b/code/game/gamemodes/events/power_failure.dm
index 5ebf1e07bc..bc01308fce 100644
--- a/code/game/gamemodes/events/power_failure.dm
+++ b/code/game/gamemodes/events/power_failure.dm
@@ -7,7 +7,7 @@
for(var/obj/machinery/power/smes/S in GLOB.smeses)
var/area/current_area = get_area(S)
- if(current_area.type in skipped_areas || !(S.z in using_map.station_levels))
+ if((current_area.type in skipped_areas) || !(S.z in using_map.station_levels))
continue
S.last_charge = S.charge
S.last_output_attempt = S.output_attempt
@@ -33,7 +33,7 @@
C.cell.charge = C.cell.maxcharge
for(var/obj/machinery/power/smes/S in GLOB.smeses)
var/area/current_area = get_area(S)
- if(current_area.type in skipped_areas || isNotStationLevel(S.z))
+ if((current_area.type in skipped_areas) || isNotStationLevel(S.z))
continue
S.charge = S.last_charge
S.output_attempt = S.last_output_attempt
diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm
index 7d9d97acb7..27c0919106 100644
--- a/code/game/machinery/OpTable.dm
+++ b/code/game/machinery/OpTable.dm
@@ -39,7 +39,6 @@
if(3.0)
if(prob(25))
density = FALSE
- else
return
/obj/machinery/optable/attack_hand(mob/user as mob)
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index 9f7fbe5441..1b019df32a 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -161,7 +161,6 @@
//SN src = null
qdel(src)
return
- else
return
/obj/machinery/bodyscanner/tgui_host(mob/user)
@@ -617,7 +616,6 @@
//SN src = null
qdel(src)
return
- else
return
/obj/machinery/body_scanconsole/proc/findscanner()
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 6411223e13..8fdc228f55 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -440,7 +440,6 @@
ex_act(severity)
qdel(src)
return
- else
return
/obj/machinery/clonepod/update_icon()
diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm
index ed57ca45a2..9bf2249097 100644
--- a/code/game/machinery/computer/computer.dm
+++ b/code/game/machinery/computer/computer.dm
@@ -56,7 +56,6 @@
for(var/x in verbs)
src.verbs -= x
set_broken()
- else
return
/obj/machinery/computer/bullet_act(var/obj/item/projectile/Proj)
diff --git a/code/game/machinery/doors/door_vr.dm b/code/game/machinery/doors/door_vr.dm
index 1c663cc065..cca71ec8d5 100644
--- a/code/game/machinery/doors/door_vr.dm
+++ b/code/game/machinery/doors/door_vr.dm
@@ -85,7 +85,7 @@
var/obj/item/weldingtool/welder = I.get_welder()
if(welder.remove_fuel(0,user))
- to_chat(user, span_notice("You start weld \the plasteel into place."))
+ to_chat(user, span_notice("You start welding the plasteel into place."))
playsound(src, welder.usesound, 50, 1)
if(do_after(user, 10 * welder.toolspeed) && welder && welder.isOn())
to_chat(user, span_notice("You finish reinforcing \the [src]."))
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index 9006a66545..51bfb68a63 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -196,7 +196,6 @@ Class Procs:
if(prob(25))
fall_apart(severity)
return
- else
return
/obj/machinery/vv_edit_var(var/var_name, var/new_value)
diff --git a/code/game/machinery/oxygen_pump.dm b/code/game/machinery/oxygen_pump.dm
index e44d8046d0..db9d6f87ae 100644
--- a/code/game/machinery/oxygen_pump.dm
+++ b/code/game/machinery/oxygen_pump.dm
@@ -119,7 +119,7 @@
return
//when there is a breather:
if(breather && target != breather)
- to_chat(user, span_warning("\The pump is already in use."))
+ to_chat(user, span_warning("\The [src] is already in use."))
return
//Checking if breather is still valid
if(target == breather && target.wear_mask != contained)
diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm
index c54674c7b9..0b3f5139b9 100644
--- a/code/game/machinery/telecomms/broadcaster.dm
+++ b/code/game/machinery/telecomms/broadcaster.dm
@@ -731,7 +731,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
/atom/proc/test_telecomms()
var/datum/signal/signal = src.telecomms_process()
var/pos_z = get_z(src)
- return (pos_z in signal.data["level"] && signal.data["done"])
+ return ((pos_z in signal.data["level"]) && signal.data["done"])
/atom/proc/telecomms_process(var/do_sleep = 1)
diff --git a/code/game/machinery/telecomms/logbrowser.dm b/code/game/machinery/telecomms/logbrowser.dm
index 7bdccd06db..234065a7e2 100644
--- a/code/game/machinery/telecomms/logbrowser.dm
+++ b/code/game/machinery/telecomms/logbrowser.dm
@@ -131,7 +131,7 @@
var/newnet = tgui_input_text(ui.user, "Which network do you want to view?", "Comm Monitor", network, 15)
newnet = sanitize(newnet,15)
- if(newnet && ((ui.user in range(1, src) || issilicon(ui.user))))
+ if(newnet && ((ui.user in range(1, src)) || issilicon(ui.user)))
if(length(newnet) > 15)
set_temp("FAILED: NETWORK TAG STRING TOO LENGTHY", "bad")
return TRUE
diff --git a/code/game/machinery/telecomms/telemonitor.dm b/code/game/machinery/telecomms/telemonitor.dm
index 2042e3611b..d5d29ad838 100644
--- a/code/game/machinery/telecomms/telemonitor.dm
+++ b/code/game/machinery/telecomms/telemonitor.dm
@@ -102,7 +102,7 @@
if("network")
var/newnet = tgui_input_text(ui.user, "Which network do you want to view?", "Comm Monitor", network, 15)
newnet = sanitize(newnet,15) //Honestly, I'd be amazed if someone managed to do HTML in 15 chars.
- if(newnet && ((ui.user in range(1, src) || issilicon(ui.user))))
+ if(newnet && ((ui.user in range(1, src)) || issilicon(ui.user)))
if(length(newnet) > 15)
set_temp("FAILED: NETWORK TAG STRING TOO LENGTHY", "bad")
return TRUE
diff --git a/code/game/machinery/telecomms/traffic_control.dm b/code/game/machinery/telecomms/traffic_control.dm
index 73e1e111f3..9d3da2bef7 100644
--- a/code/game/machinery/telecomms/traffic_control.dm
+++ b/code/game/machinery/telecomms/traffic_control.dm
@@ -195,7 +195,7 @@
var/newnet = tgui_input_text(usr, "Which network do you want to view?", "Comm Monitor", network, 15)
newnet = sanitize(newnet,15)
- if(newnet && ((usr in range(1, src) || issilicon(usr))))
+ if(newnet && ((usr in range(1, src)) || issilicon(usr)))
if(length(newnet) > 15)
temp = "- FAILED: NETWORK TAG STRING TOO LENGHTLY -"
diff --git a/code/game/machinery/wall_frames.dm b/code/game/machinery/wall_frames.dm
index e1aefd2468..61330cb291 100644
--- a/code/game/machinery/wall_frames.dm
+++ b/code/game/machinery/wall_frames.dm
@@ -70,11 +70,11 @@
var/turf/loc = get_turf(user)
var/area/A = loc.loc
if(!istype(loc, /turf/simulated/floor))
- to_chat(user, span_danger("\The frame cannot be placed on this spot."))
+ to_chat(user, span_danger("\The [src] cannot be placed on this spot."))
return
if(A.requires_power == 0 || A.name == "Space")
- to_chat(user, span_danger("\The [src] Alarm cannot be placed in this area."))
+ to_chat(user, span_danger("\The [src] cannot be placed in this area."))
return
if(gotwallitem(loc, ndir))
diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm
index f059cfc494..6a3783e081 100644
--- a/code/game/objects/items/devices/flash.dm
+++ b/code/game/objects/items/devices/flash.dm
@@ -195,7 +195,7 @@
H.eye_blurry = max(H.eye_blurry, flash_strength + 5)
H.flash_eyes()
H.adjustHalLoss(halloss_per_flash * (flash_strength / 5)) // Should take four flashes to stun.
- H.apply_damage(flash_strength * H.species.flash_burn/5, BURN, BP_HEAD, 0, 0, "Photon burns")
+ H.apply_damage(flash_strength * H.species.flash_burn/5, BURN, BP_HEAD, 0, 0)
else
flashfail = 1
diff --git a/code/game/objects/items/weapons/capture_crystal.dm b/code/game/objects/items/weapons/capture_crystal.dm
index f21a39abc8..71def1ca5b 100644
--- a/code/game/objects/items/weapons/capture_crystal.dm
+++ b/code/game/objects/items/weapons/capture_crystal.dm
@@ -477,7 +477,7 @@
//IF the crystal somehow ends up in a tummy and digesting with a bound mob who doesn't want to be eaten, let's move them to the ground
/obj/item/capture_crystal/digest_act(var/atom/movable/item_storage = null)
- if(bound_mob in contents && !bound_mob.devourable)
+ if((bound_mob in contents) && !bound_mob.devourable)
bound_mob.forceMove(src.drop_location())
return ..()
diff --git a/code/game/objects/items/weapons/material/shards.dm b/code/game/objects/items/weapons/material/shards.dm
index b04f6926d0..a2a28d4df8 100644
--- a/code/game/objects/items/weapons/material/shards.dm
+++ b/code/game/objects/items/weapons/material/shards.dm
@@ -89,11 +89,11 @@
if(user.gloves && !protected_hands)
to_chat(user, span_warning("\The [src] partially cuts into your hand through your gloves as you hit \the [target]!"))
- user.apply_damage(light_glove_d + will_break ? break_damage : 0, BRUTE, active_hand, 0, 0, src, src.sharp, src.edge) // Ternary to include break damage
+ user.apply_damage(light_glove_d + will_break ? break_damage : 0, BRUTE, active_hand, 0, 0, src.sharp, src.edge, src) // Ternary to include break damage
else if(!user.gloves)
to_chat(user, span_warning("\The [src] cuts into your hand as you hit \the [target]!"))
- user.apply_damage(no_glove_d + will_break ? break_damage : 0, BRUTE, active_hand, 0, 0, src, src.sharp, src.edge)
+ user.apply_damage(no_glove_d + will_break ? break_damage : 0, BRUTE, active_hand, 0, 0, src.sharp, src.edge, src)
if(will_break && src.loc == user) // If it's not in our hand anymore
user.visible_message(span_danger("[user] hit \the [target] with \the [src], shattering it!"), span_warning("You shatter \the [src] in your hand!"))
diff --git a/code/game/objects/items/weapons/traps.dm b/code/game/objects/items/weapons/traps.dm
index cbd31a5b5b..b33f06d3f7 100644
--- a/code/game/objects/items/weapons/traps.dm
+++ b/code/game/objects/items/weapons/traps.dm
@@ -351,7 +351,7 @@
L.add_modifier(/datum/modifier/entangled, 3 SECONDS)
- if(!L.apply_damage(force * (issilicon(L) ? 0.25 : 1), BRUTE, target_zone, blocked, soaked, src, sharp, edge))
+ if(!L.apply_damage(force * (issilicon(L) ? 0.25 : 1), BRUTE, target_zone, blocked, soaked, sharp, edge, src))
return
playsound(src, 'sound/effects/glass_step.ogg', 50, 1) // not sure how to handle metal shards with sounds
diff --git a/code/game/objects/micro_structures.dm b/code/game/objects/micro_structures.dm
index 44d2ca1a85..d95e11b266 100644
--- a/code/game/objects/micro_structures.dm
+++ b/code/game/objects/micro_structures.dm
@@ -70,7 +70,6 @@ var/global/list/micro_tunnels = list()
for(var/datum/planet/P in SSplanets.planets)
if(myturf.z in P.expected_z_levels)
planet = P
- else
for(var/obj/structure/micro_tunnel/t in micro_tunnels)
if(t == src)
continue
@@ -85,7 +84,6 @@ var/global/list/micro_tunnels = list()
if(targetturf.z in planet.expected_z_levels)
destinations |= t
continue
- else
var/above = GetAbove(myturf)
if(above && t.z == z + 1)
destinations |= t
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index 4d1ba478ed..5170037b66 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -152,7 +152,6 @@
if (prob(50))
qdel(src)
return
- else
return
/obj/structure/closet/crate/secure
diff --git a/code/game/objects/structures/gargoyle.dm b/code/game/objects/structures/gargoyle.dm
index aee62c0f20..e467837a85 100644
--- a/code/game/objects/structures/gargoyle.dm
+++ b/code/game/objects/structures/gargoyle.dm
@@ -40,7 +40,7 @@
comp.paused = FALSE
identifier = length(comp.identifier) > 0 ? comp.identifier : initial(identifier)
material = length(comp.material) > 0 ? comp.material : initial(material)
- tint = length(comp.tint) > 0 ? comp.tint : initial(tint)
+ tint = length(comp.tint) > 0 ? comp.tint : initial(comp.tint)
adjective = length(comp.adjective) > 0 ? comp.adjective : initial(adjective)
if (copytext_char(adjective, -1) != "s")
adjective += "s"
diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
index 3c63119222..6948383ffe 100644
--- a/code/game/objects/structures/girders.dm
+++ b/code/game/objects/structures/girders.dm
@@ -321,7 +321,6 @@
if (prob(5))
dismantle()
return
- else
return
/obj/structure/girder/cult
diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm
index d84c9b3e50..8b3aebafe1 100644
--- a/code/game/objects/structures/lattice.dm
+++ b/code/game/objects/structures/lattice.dm
@@ -50,7 +50,6 @@
return
if(3.0)
return
- else
return
/obj/structure/lattice/attackby(obj/item/C as obj, mob/user as mob)
diff --git a/code/game/objects/structures/medical_stand_vr.dm b/code/game/objects/structures/medical_stand_vr.dm
index 050027b329..2f5dae3ff0 100644
--- a/code/game/objects/structures/medical_stand_vr.dm
+++ b/code/game/objects/structures/medical_stand_vr.dm
@@ -275,7 +275,7 @@
to_chat(user, span_warning("There is no tank in \the [src]."))
return
if(is_loosen)
- to_chat(user, span_warning("Tighten \the nut with a wrench first."))
+ to_chat(user, span_warning("Tighten the nut with a wrench first."))
return
if(!Adjacent(target))
return
diff --git a/code/game/objects/structures/railing.dm b/code/game/objects/structures/railing.dm
index 863f957c1f..46283b7d2c 100644
--- a/code/game/objects/structures/railing.dm
+++ b/code/game/objects/structures/railing.dm
@@ -277,7 +277,6 @@
if(3.0)
qdel(src)
return
- else
return
// Duplicated from structures.dm, but its a bit different.
diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm
index cd5547a566..2e17cc232c 100644
--- a/code/game/objects/structures/signs.dm
+++ b/code/game/objects/structures/signs.dm
@@ -1833,7 +1833,7 @@
desc = "The red flag of the Five Arrows."
description_fluff = "The Five Arrows is an independent government entity that seceded from the Solar Confederate Government in 2570, in response to perceived \
failures in aiding the Sagittarius Heights during the Skathari Incursion. The success of the government in achieving effective local defense and prosperity has \
- since attracted the membership of Kauq'xum, a remote Skrellian colony. \The Five Arrows formed the model for SolGov's own semi-autonomous \"Regional Blocs\"."
+ since attracted the membership of Kauq'xum, a remote Skrellian colony. The Five Arrows formed the model for SolGov's own semi-autonomous \"Regional Blocs\"."
icon_state = "fivearrows"
flagtype = /obj/item/flag/fivearrows
@@ -1848,7 +1848,7 @@
desc = "The red flag of the Five Arrows."
description_fluff = "The Five Arrows is an independent government entity that seceded from the Solar Confederate Government in 2570, in response to perceived \
failures in aiding the Sagittarius Heights during the Skathari Incursion. The success of the government in achieving effective local defense and prosperity has \
- since attracted the membership of Kauq'xum, a remote Skrellian colony. \The Five Arrows formed the model for SolGov's own semi-autonomous \"Regional Blocs\"."
+ since attracted the membership of Kauq'xum, a remote Skrellian colony. The Five Arrows formed the model for SolGov's own semi-autonomous \"Regional Blocs\"."
flag_path = "fivearrows"
/obj/item/flag/fivearrows/l
diff --git a/code/game/objects/structures/transit_tubes.dm b/code/game/objects/structures/transit_tubes.dm
index 2a3e25fee1..29bf0b9535 100644
--- a/code/game/objects/structures/transit_tubes.dm
+++ b/code/game/objects/structures/transit_tubes.dm
@@ -581,7 +581,6 @@
return 6
if("SOUTHWEST", "SW")
return 10
- else
return 0
@@ -606,5 +605,4 @@
return "NW"
if(10)
return "SW"
- else
return
diff --git a/code/game/turfs/simulated/outdoors/outdoors.dm b/code/game/turfs/simulated/outdoors/outdoors.dm
index 3503f8c783..dbdf8d9e32 100644
--- a/code/game/turfs/simulated/outdoors/outdoors.dm
+++ b/code/game/turfs/simulated/outdoors/outdoors.dm
@@ -52,7 +52,7 @@ var/list/turf_edge_cache = list()
user.setClickCooldown(delay)
if(do_after(user, delay, src))
new/obj/structure/closet/grave/dirthole(src)
- to_chat(user, span_notice("You dug up \a hole!"))
+ to_chat(user, span_notice("You dug up a hole!"))
return
else
to_chat(user, span_notice("\The [user] begins digging into \the [src] with \the [C]."))
diff --git a/code/modules/admin/verbs/buildmode.dm b/code/modules/admin/verbs/buildmode.dm
index 0b3fd91c09..2c6fd01e63 100644
--- a/code/modules/admin/verbs/buildmode.dm
+++ b/code/modules/admin/verbs/buildmode.dm
@@ -275,7 +275,7 @@
var/list/locked = list("vars", "key", "ckey", "client", "firemut", "ishulk", "telekinesis", "xray", "virus", "viruses", "cuffed", "ka", "last_eaten", "urine")
master.buildmode.varholder = tgui_input_text(usr,"Enter variable name:" ,"Name", "name")
- if(master.buildmode.varholder in locked && !check_rights(R_DEBUG,0))
+ if((master.buildmode.varholder in locked) && !check_rights(R_DEBUG,0))
return 1
var/thetype = tgui_input_list(usr,"Select variable type:", "Type", list("text","number","mob-reference","obj-reference","turf-reference"))
if(!thetype) return 1
diff --git a/code/modules/admin/view_variables/debug_variables.dm b/code/modules/admin/view_variables/debug_variables.dm
index 58345fac6c..7be70af3f0 100644
--- a/code/modules/admin/view_variables/debug_variables.dm
+++ b/code/modules/admin/view_variables/debug_variables.dm
@@ -3,11 +3,12 @@
var/header
if(DA)
if (islist(DA))
+ var/list/data_list = DA
var/index = name
if (value)
- name = DA[name] //name is really the index until this line
+ name = data_list[name] //name is really the index until this line
else
- value = DA[name]
+ value = data_list[name]
header = "(E) (C) (-) "
else
header = "(E) (C) (M) "
diff --git a/code/modules/ai/_defines.dm b/code/modules/ai/_defines.dm
index 8075c6d2ee..d64d7e2bdd 100644
--- a/code/modules/ai/_defines.dm
+++ b/code/modules/ai/_defines.dm
@@ -5,7 +5,7 @@
#define AI_SMART 3 // Will do more processing to be a little smarter, like not walking while confused if it could risk stepping randomly onto a bad tile.
//#define ai_log(M,V) if(debug_ai) ai_log_output(M,V)
-#define ai_log(M,V)
+#define ai_log(M,V) // If you restore this, also remove the extra pass() calls in ai_holder_movement
// Logging level defines.
#define AI_LOG_OFF 0 // Don't show anything.
diff --git a/code/modules/ai/ai_holder_movement.dm b/code/modules/ai/ai_holder_movement.dm
index 52926df28c..f4841f9dfd 100644
--- a/code/modules/ai/ai_holder_movement.dm
+++ b/code/modules/ai/ai_holder_movement.dm
@@ -62,6 +62,7 @@
give_destination(home_turf, max_home_distance)
else
ai_log("go_home() : Told to go home without home_turf.", AI_LOG_ERROR)
+ pass() // Remove this ever ai_log does something
/datum/ai_holder/proc/give_destination(turf/new_destination, min_distance = 1, combat = FALSE)
ai_log("give_destination() : Entering.", AI_LOG_DEBUG)
@@ -75,6 +76,7 @@
return TRUE
else
ai_log("give_destination() : Given null destination.", AI_LOG_ERROR)
+ pass() // Remove this ever ai_log does something
ai_log("give_destination() : Exiting.", AI_LOG_DEBUG)
diff --git a/code/modules/asset_cache/iconforge/universal_icon.dm b/code/modules/asset_cache/iconforge/universal_icon.dm
index 8afcc7e657..a655ff395c 100644
--- a/code/modules/asset_cache/iconforge/universal_icon.dm
+++ b/code/modules/asset_cache/iconforge/universal_icon.dm
@@ -62,6 +62,25 @@
transform.crop(x1, y1, x2, y2)
return src
+/// Internally performs a crop.
+/datum/universal_icon/proc/shift(dir, amount, icon_width, icon_height)
+ if(!transform)
+ transform = new
+ var/list/offsets = dir2offset(dir)
+ var/shift_x = -offsets[1] * amount
+ var/shift_y = -offsets[2] * amount
+ transform.crop(1 + shift_x, 1 + shift_y, icon_width + shift_x, icon_height + shift_y)
+ return src
+
+/// Internally performs a color blend.
+/// Amount ranges from 0-1 (100% opacity)
+/datum/universal_icon/proc/change_opacity(amount)
+ if(!transform)
+ transform = new
+ transform.blend_color("#ffffff[num2hex(clamp(amount, 0, 1) * 255, 2)]", ICON_MULTIPLY)
+ return src
+
+
/datum/universal_icon/proc/to_list()
RETURN_TYPE(/list)
return list("icon_file" = "[icon_file]", "icon_state" = icon_state, "dir" = dir, "frame" = frame, "transform" = !isnull(transform) ? transform.to_list() : list())
@@ -93,17 +112,17 @@
for(var/transform in src.transforms)
switch(transform["type"])
if(RUSTG_ICONFORGE_BLEND_COLOR)
- target.Blend(target["color"], target["blend_mode"])
+ target.Blend(transform["color"], transform["blend_mode"])
if(RUSTG_ICONFORGE_BLEND_ICON)
- var/datum/universal_icon/icon_object = target["icon"]
+ var/datum/universal_icon/icon_object = transform["icon"]
if(!istype(icon_object))
stack_trace("Invalid icon found in icon transformer during apply()! [icon_object]")
continue
- target.Blend(icon_object.to_icon(), target["blend_mode"])
+ target.Blend(icon_object.to_icon(), transform["blend_mode"])
if(RUSTG_ICONFORGE_SCALE)
- target.Scale(target["width"], target["height"])
+ target.Scale(transform["width"], transform["height"])
if(RUSTG_ICONFORGE_CROP)
- target.Crop(target["x1"], target["y1"], target["x2"], target["y2"])
+ target.Crop(transform["x1"], transform["y1"], transform["x2"], transform["y2"])
return target
/datum/icon_transformer/proc/copy()
@@ -115,36 +134,60 @@
return new_transformer
/datum/icon_transformer/proc/blend_color(color, blend_mode)
+ #ifdef UNIT_TEST
+ if(!istext(color))
+ CRASH("Invalid color provided to blend_color: [color]")
+ if(!isnum(blend_mode))
+ CRASH("Invalid blend_mode provided to blend_color: [blend_mode]")
+ #endif
transforms += list(list("type" = RUSTG_ICONFORGE_BLEND_COLOR, "color" = color, "blend_mode" = blend_mode))
/datum/icon_transformer/proc/blend_icon(datum/universal_icon/icon_object, blend_mode)
+ #ifdef UNIT_TEST
+ // icon_object's type is checked later in to_list
+ if(!isnum(blend_mode))
+ CRASH("Invalid blend_mode provided to blend_icon: [blend_mode]")
+ #endif
transforms += list(list("type" = RUSTG_ICONFORGE_BLEND_ICON, "icon" = icon_object, "blend_mode" = blend_mode))
/datum/icon_transformer/proc/scale(width, height)
+ #ifdef UNIT_TEST
+ if(!isnum(width) || !isnum(height))
+ CRASH("Invalid arguments provided to scale: [width],[height]")
+ #endif
transforms += list(list("type" = RUSTG_ICONFORGE_SCALE, "width" = width, "height" = height))
/datum/icon_transformer/proc/crop(x1, y1, x2, y2)
+ #ifdef UNIT_TEST
+ if(!isnum(x1) || !isnum(y1) || !isnum(x2) || !isnum(y2))
+ CRASH("Invalid arguments provided to crop: [x1],[y1],[x2],[y2]")
+ #endif
transforms += list(list("type" = RUSTG_ICONFORGE_CROP, "x1" = x1, "y1" = y1, "x2" = x2, "y2" = y2))
+/// Recursively converts all contained [/datum/universal_icon]s and their associated [/datum/icon_transformer]s into list form so the transforms can be JSON encoded.
/datum/icon_transformer/proc/to_list()
RETURN_TYPE(/list)
var/list/transforms_out = list()
- for(var/transform in src.transforms.Copy())
- var/this_transform = transform
+ var/list/transforms_original = src.transforms.Copy()
+ for(var/list/transform as anything in transforms_original)
+ var/list/this_transform = transform.Copy() // copy it so we don't mutate the original
if(transform["type"] == RUSTG_ICONFORGE_BLEND_ICON)
var/datum/universal_icon/icon_object = this_transform["icon"]
if(!istype(icon_object))
stack_trace("Invalid icon found in icon transformer during to_list()! [icon_object]")
continue
+ // This mutates the inner transform list!!! Make sure it only runs on copies.
this_transform["icon"] = icon_object.to_list()
transforms_out += list(this_transform)
return transforms_out
+/// Reverse operation of /datum/icon_transformer/to_list()
/proc/icon_transformer_from_list(list/input)
RETURN_TYPE(/datum/icon_transformer)
var/list/transforms = list()
- for(var/transform in input)
- var/this_transform = transform
+ for(var/list/transform as anything in input)
+ // don't mutate the input :(
+ var/this_transform = transform.Copy()
if(transform["type"] == RUSTG_ICONFORGE_BLEND_ICON)
this_transform["icon"] = universal_icon_from_list(transform["icon"])
transforms += list(this_transform)
diff --git a/code/modules/client/preference_setup/general/06_flavor.dm b/code/modules/client/preference_setup/general/06_flavor.dm
index e84628dd27..bb3a07dd87 100644
--- a/code/modules/client/preference_setup/general/06_flavor.dm
+++ b/code/modules/client/preference_setup/general/06_flavor.dm
@@ -60,6 +60,7 @@
if(href_list["flavor_text"])
switch(href_list["flavor_text"])
if("open")
+ pass()
if("general")
var/msg = strip_html_simple(tgui_input_text(user,"Give a general description of your character. This will be shown regardless of clothings. Put in a single space to make blank.","Flavor Text",html_decode(pref.flavor_texts[href_list["flavor_text"]]), multiline = TRUE, prevent_enter = TRUE)) //VOREStation Edit: separating out OOC notes
if(CanUseTopic(user) && msg)
@@ -74,6 +75,7 @@
else if(href_list["flavour_text_robot"])
switch(href_list["flavour_text_robot"])
if("open")
+ pass()
if("Default")
var/msg = strip_html_simple(tgui_input_text(user,"Set the default flavour text for your robot. It will be used for any module without individual setting. Put in a single space to make blank.","Flavour Text",html_decode(pref.flavour_texts_robot["Default"]), multiline = TRUE, prevent_enter = TRUE))
if(CanUseTopic(user) && msg)
diff --git a/code/modules/client/preference_setup/vore/07_traits.dm b/code/modules/client/preference_setup/vore/07_traits.dm
index 122b58f95d..039ccec0dd 100644
--- a/code/modules/client/preference_setup/vore/07_traits.dm
+++ b/code/modules/client/preference_setup/vore/07_traits.dm
@@ -538,7 +538,6 @@ var/global/list/valid_bloodreagents = list("default",REAGENT_ID_IRON,REAGENT_ID_
else
picklist = everyone_traits_negative.Copy() - pref.neg_traits
mylist = pref.neg_traits
- else
if(isnull(picklist))
return TOPIC_REFRESH
@@ -605,11 +604,11 @@ var/global/list/valid_bloodreagents = list("default",REAGENT_ID_IRON,REAGENT_ID_
tgui_alert_async(user, "The trait you've selected cannot be taken by the species you've chosen!", "Error")
return TOPIC_REFRESH
- if(trait_choice in pref.pos_traits + pref.neu_traits + pref.neg_traits)
+ if(trait_choice in (pref.pos_traits + pref.neu_traits + pref.neg_traits))
conflict = instance.name
varconflict:
- for(var/P in pref.pos_traits + pref.neu_traits + pref.neg_traits)
+ for(var/P in (pref.pos_traits + pref.neu_traits + pref.neg_traits))
var/datum/trait/instance_test = all_traits[P]
if(path in instance_test.excludes)
conflict = instance_test.name
diff --git a/code/modules/clothing/accessories/badges.dm b/code/modules/clothing/accessories/badges.dm
index 3c8a6d2309..ce151b35a1 100644
--- a/code/modules/clothing/accessories/badges.dm
+++ b/code/modules/clothing/accessories/badges.dm
@@ -114,7 +114,7 @@
var/found = FALSE
for(var/access in valid_access)
- if(access in id_card.GetAccess() || emagged)
+ if((access in id_card.GetAccess()) || emagged)
to_chat(user, "You imprint your ID details onto the badge.")
set_name(user.real_name)
found = TRUE
diff --git a/code/modules/economy/vending.dm b/code/modules/economy/vending.dm
index 78ea883564..33c80a4264 100644
--- a/code/modules/economy/vending.dm
+++ b/code/modules/economy/vending.dm
@@ -178,7 +178,6 @@ GLOBAL_LIST_EMPTY(vending_products)
malfunction()
return
return
- else
return
/obj/machinery/vending/emag_act(var/remaining_charges, var/mob/user)
diff --git a/code/modules/food/drinkingglass/extras.dm b/code/modules/food/drinkingglass/extras.dm
index 501b00fe76..1b9832a9e8 100644
--- a/code/modules/food/drinkingglass/extras.dm
+++ b/code/modules/food/drinkingglass/extras.dm
@@ -103,7 +103,7 @@
if(victim.vore_taste)
to_chat(user, span_infoplain(span_bold("[victim]") + " tastes like... [victim.vore_taste]!"))
- victim.apply_damage(5, used_weapon = "straw")
+ victim.apply_damage(5, used_weapon=src)
// If you're human you get the reagent
if(ishuman(user))
diff --git a/code/modules/food/recipe.dm b/code/modules/food/recipe.dm
index f656b31b87..6c8b5b7a4a 100644
--- a/code/modules/food/recipe.dm
+++ b/code/modules/food/recipe.dm
@@ -273,7 +273,7 @@
switch(reagent_mix)
if (RECIPE_REAGENT_REPLACE)
- //We do no transferring
+ pass() //We do no transferring
if (RECIPE_REAGENT_SUM)
//Sum is easy, just shove the entire buffer into the result
buffer.trans_to_holder(holder, buffer.total_volume)
diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm
index ab24e9cb17..41d86f7839 100644
--- a/code/modules/hydroponics/seed.dm
+++ b/code/modules/hydroponics/seed.dm
@@ -140,7 +140,7 @@
if(affecting)
to_chat(target, span_danger("\The [fruit]'s thorns pierce your [affecting.name] greedily!"))
- target.apply_damage(damage, BRUTE, target_limb, blocked, soaked, TRUE, has_edge, "Thorns")
+ target.apply_damage(damage, BRUTE, target_limb, blocked, soaked, TRUE, has_edge)
else
to_chat(target, span_danger("\The [fruit]'s thorns pierce your flesh greedily!"))
target.adjustBruteLoss(damage)
@@ -149,7 +149,7 @@
has_edge = prob(get_trait(TRAIT_POTENCY)/5)
if(affecting)
to_chat(target, span_danger("\The [fruit]'s thorns dig deeply into your [affecting.name]!"))
- target.apply_damage(damage, BRUTE, target_limb, blocked, soaked, TRUE, has_edge, "Thorns")
+ target.apply_damage(damage, BRUTE, target_limb, blocked, soaked, TRUE, has_edge)
else
to_chat(target, span_danger("\The [fruit]'s thorns dig deeply into your flesh!"))
target.adjustBruteLoss(damage)
diff --git a/code/modules/hydroponics/spreading/spreading.dm b/code/modules/hydroponics/spreading/spreading.dm
index bd8be78101..aa7d0476da 100644
--- a/code/modules/hydroponics/spreading/spreading.dm
+++ b/code/modules/hydroponics/spreading/spreading.dm
@@ -307,7 +307,6 @@
if (prob(5))
die_off()
return
- else
return
/obj/effect/plant/proc/check_health()
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 efa2379efb..9ce3699d1d 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/library/lib_items.dm b/code/modules/library/lib_items.dm
index 5c8e53c59c..f59914f470 100644
--- a/code/modules/library/lib_items.dm
+++ b/code/modules/library/lib_items.dm
@@ -87,7 +87,6 @@
b.loc = (get_turf(src))
qdel(src)
return
- else
return
/obj/structure/bookcase/update_icon()
diff --git a/code/modules/materials/sheets/supermatter.dm b/code/modules/materials/sheets/supermatter.dm
index f2969a9409..1f2bb72a06 100644
--- a/code/modules/materials/sheets/supermatter.dm
+++ b/code/modules/materials/sheets/supermatter.dm
@@ -34,8 +34,8 @@
if(burn_user)
H.visible_message(span_danger("\The [src] flashes as it scorches [H]'s hands!"))
- H.apply_damage(amount / 2 + 5, BURN, "r_hand", used_weapon="Supermatter Chunk")
- H.apply_damage(amount / 2 + 5, BURN, "l_hand", used_weapon="Supermatter Chunk")
+ H.apply_damage(amount / 2 + 5, BURN, "r_hand", used_weapon=src)
+ H.apply_damage(amount / 2 + 5, BURN, "l_hand", used_weapon=src)
H.drop_from_inventory(src, get_turf(H))
return
@@ -43,7 +43,7 @@
burn_user = FALSE
if(burn_user)
- M.apply_damage(amount, BURN, null, used_weapon="Supermatter Chunk")
+ M.apply_damage(amount, BURN, null, used_weapon=src)
/obj/item/stack/material/supermatter/ex_act(severity) // An incredibly hard to manufacture material, SM chunks are unstable by their 'stabilized' nature.
if(prob((4 / severity) * 20))
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index a89956eeea..86f42db31b 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -157,10 +157,10 @@
if (shock_damage<1)
return 0
- src.apply_damage(0.2 * shock_damage, BURN, def_zone, used_weapon="Electrocution") //shock the target organ
- src.apply_damage(0.4 * shock_damage, BURN, BP_TORSO, used_weapon="Electrocution") //shock the torso more
- src.apply_damage(0.2 * shock_damage, BURN, null, used_weapon="Electrocution") //shock a random part!
- src.apply_damage(0.2 * shock_damage, BURN, null, used_weapon="Electrocution") //shock a random part!
+ src.apply_damage(0.2 * shock_damage, BURN, def_zone) //shock the target organ
+ src.apply_damage(0.4 * shock_damage, BURN, BP_TORSO) //shock the torso more
+ src.apply_damage(0.2 * shock_damage, BURN, null) //shock a random part!
+ src.apply_damage(0.2 * shock_damage, BURN, null) //shock a random part!
playsound(src, "sparks", 50, 1, -1)
if (shock_damage > 15)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index a27d5c451f..0219319f71 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -1802,7 +1802,7 @@
var/obj/item/organ/external/e = organs_by_name[name]
if(!e)
continue
- if((e.status & ORGAN_BROKEN && (!e.splinted || (e.splinted in e.contents && prob(30))) || e.status & ORGAN_BLEEDING) && (getBruteLoss() + getFireLoss() >= 100))
+ if((e.status & ORGAN_BROKEN && (!e.splinted || ((e.splinted in e.contents) && prob(30))) || e.status & ORGAN_BLEEDING) && (getBruteLoss() + getFireLoss() >= 100))
return 1
else
return ..()
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index a45fec0ec2..b53e5752a7 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -798,13 +798,13 @@
if(breath.temperature >= species.heat_discomfort_level)
if(breath.temperature >= species.breath_heat_level_3)
- apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, BURN, BP_HEAD, used_weapon = "Excessive Heat")
+ apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, BURN, BP_HEAD)
throw_alert("temp", /obj/screen/alert/hot, HOT_ALERT_SEVERITY_MAX)
else if(breath.temperature >= species.breath_heat_level_2)
- apply_damage(HEAT_GAS_DAMAGE_LEVEL_2, BURN, BP_HEAD, used_weapon = "Excessive Heat")
+ apply_damage(HEAT_GAS_DAMAGE_LEVEL_2, BURN, BP_HEAD)
throw_alert("temp", /obj/screen/alert/hot, HOT_ALERT_SEVERITY_MODERATE)
else if(breath.temperature >= species.breath_heat_level_1)
- apply_damage(HEAT_GAS_DAMAGE_LEVEL_1, BURN, BP_HEAD, used_weapon = "Excessive Heat")
+ apply_damage(HEAT_GAS_DAMAGE_LEVEL_1, BURN, BP_HEAD)
throw_alert("temp", /obj/screen/alert/hot, HOT_ALERT_SEVERITY_LOW)
else if(species.get_environment_discomfort(src, ENVIRONMENT_COMFORT_MARKER_HOT))
throw_alert("temp", /obj/screen/alert/warm, HOT_ALERT_SEVERITY_LOW)
@@ -814,13 +814,13 @@
else if(breath.temperature <= species.cold_discomfort_level)
if(breath.temperature <= species.breath_cold_level_3)
- apply_damage(COLD_GAS_DAMAGE_LEVEL_3, BURN, BP_HEAD, used_weapon = "Excessive Cold")
+ apply_damage(COLD_GAS_DAMAGE_LEVEL_3, BURN, BP_HEAD)
throw_alert("temp", /obj/screen/alert/cold, COLD_ALERT_SEVERITY_MAX)
else if(breath.temperature <= species.breath_cold_level_2)
- apply_damage(COLD_GAS_DAMAGE_LEVEL_2, BURN, BP_HEAD, used_weapon = "Excessive Cold")
+ apply_damage(COLD_GAS_DAMAGE_LEVEL_2, BURN, BP_HEAD)
throw_alert("temp", /obj/screen/alert/cold, COLD_ALERT_SEVERITY_MODERATE)
else if(breath.temperature <= species.breath_cold_level_1)
- apply_damage(COLD_GAS_DAMAGE_LEVEL_1, BURN, BP_HEAD, used_weapon = "Excessive Cold")
+ apply_damage(COLD_GAS_DAMAGE_LEVEL_1, BURN, BP_HEAD)
throw_alert("temp", /obj/screen/alert/cold, COLD_ALERT_SEVERITY_LOW)
else if(species.get_environment_discomfort(src, ENVIRONMENT_COMFORT_MARKER_COLD))
throw_alert("temp", /obj/screen/alert/chilly, COLD_ALERT_SEVERITY_LOW)
diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm
index c520b80a10..138e40485f 100644
--- a/code/modules/mob/living/carbon/human/say.dm
+++ b/code/modules/mob/living/carbon/human/say.dm
@@ -131,7 +131,7 @@
message_data[2] = pick(M.say_verbs)
. = 1
- else if(CE_SPEEDBOOST in chem_effects || is_jittery) // motor mouth
+ else if((CE_SPEEDBOOST in chem_effects) || is_jittery) // motor mouth
// Despite trying to url/html decode these, byond is just being bad and I dunno.
var/static/regex/speedboost_initial = new (@"&[a-z]{2,5};|\d{2};","g")
// Not herestring because bad vs code syntax highlight panics at apostrophe
diff --git a/code/modules/mob/living/carbon/human/species/station/alraune.dm b/code/modules/mob/living/carbon/human/species/station/alraune.dm
index f8d5d52981..24ba9afa82 100644
--- a/code/modules/mob/living/carbon/human/species/station/alraune.dm
+++ b/code/modules/mob/living/carbon/human/species/station/alraune.dm
@@ -268,19 +268,19 @@
var/bodypart = pick(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_TORSO,BP_GROIN,BP_HEAD)
if(breath.temperature >= breath_heat_level_1)
if(breath.temperature < breath_heat_level_2)
- H.apply_damage(HEAT_GAS_DAMAGE_LEVEL_1, BURN, bodypart, used_weapon = "Excessive Heat")
+ H.apply_damage(HEAT_GAS_DAMAGE_LEVEL_1, BURN, bodypart)
else if(breath.temperature < breath_heat_level_3)
- H.apply_damage(HEAT_GAS_DAMAGE_LEVEL_2, BURN, bodypart, used_weapon = "Excessive Heat")
+ H.apply_damage(HEAT_GAS_DAMAGE_LEVEL_2, BURN, bodypart)
else
- H.apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, BURN, bodypart, used_weapon = "Excessive Heat")
+ H.apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, BURN, bodypart)
else if(breath.temperature <= breath_cold_level_1)
if(breath.temperature > breath_cold_level_2)
- H.apply_damage(COLD_GAS_DAMAGE_LEVEL_1, BURN, bodypart, used_weapon = "Excessive Cold")
+ H.apply_damage(COLD_GAS_DAMAGE_LEVEL_1, BURN, bodypart)
else if(breath.temperature > breath_cold_level_3)
- H.apply_damage(COLD_GAS_DAMAGE_LEVEL_2, BURN, bodypart, used_weapon = "Excessive Cold")
+ H.apply_damage(COLD_GAS_DAMAGE_LEVEL_2, BURN, bodypart)
else
- H.apply_damage(COLD_GAS_DAMAGE_LEVEL_3, BURN, bodypart, used_weapon = "Excessive Cold")
+ H.apply_damage(COLD_GAS_DAMAGE_LEVEL_3, BURN, bodypart)
//breathing in hot/cold air also heats/cools you a bit
diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm
index 34c5e03298..d9befa5f27 100644
--- a/code/modules/mob/living/carbon/human/species/station/station.dm
+++ b/code/modules/mob/living/carbon/human/species/station/station.dm
@@ -507,7 +507,7 @@
for(var/K in damageable)
if(!(K in covered))
- H.apply_damage(light_amount/4, BURN, K, 0, 0, "Abnormal growths")
+ H.apply_damage(light_amount/4, BURN, K, 0, 0)
/datum/species/diona
name = SPECIES_DIONA
diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm
index 0479a7baa7..e91f8105e0 100644
--- a/code/modules/mob/living/damage_procs.dm
+++ b/code/modules/mob/living/damage_procs.dm
@@ -8,7 +8,7 @@
Returns
standard 0 if fail
*/
-/mob/living/proc/apply_damage(var/damage = 0,var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/soaked = 0, var/used_weapon = null, var/sharp = FALSE, var/edge = FALSE, var/obj/used_weapon = null, var/projectile = 0)
+/mob/living/proc/apply_damage(var/damage = 0, var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/soaked = 0, var/sharp = FALSE, var/edge = FALSE, var/obj/used_weapon = null, var/projectile = 0)
if(Debug2)
to_world_log("## DEBUG: apply_damage() was called on [src], with [damage] damage, and an armor value of [blocked].")
if(!damage || (blocked >= 100))
@@ -77,8 +77,8 @@
damage = 0
adjustFireLoss(damage * blocked)
if(SEARING)
- apply_damage(round(damage / 3), BURN, def_zone, initial_blocked, soaked, used_weapon, sharp, edge)
- apply_damage(round(damage / 3 * 2), BRUTE, def_zone, initial_blocked, soaked, used_weapon, sharp, edge)
+ apply_damage(round(damage / 3), BURN, def_zone, initial_blocked, soaked, sharp, edge, used_weapon)
+ apply_damage(round(damage / 3 * 2), BRUTE, def_zone, initial_blocked, soaked, sharp, edge, used_weapon)
if(TOX)
adjustToxLoss(damage * blocked)
if(OXY)
@@ -91,7 +91,7 @@
electrocute_act(damage, used_weapon, 1.0, def_zone)
if(BIOACID)
if(isSynthetic())
- apply_damage(damage, BURN, def_zone, initial_blocked, soaked, used_weapon, sharp, edge) // Handle it as normal burn.
+ apply_damage(damage, BURN, def_zone, initial_blocked, soaked, sharp, edge, used_weapon) // Handle it as normal burn.
else
adjustToxLoss(damage * blocked)
if(ELECTROMAG)
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 48c5c437ee..6c9a510161 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -122,12 +122,12 @@
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, projectile=TRUE)
+ apply_damage(P.damage, P.damage_type, def_zone, absorb, soaked, 0, sharp=proj_sharp, edge=proj_edge, used_weapon=P, projectile=TRUE)
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, projectile=TRUE)
+ apply_damage(P.damage, P.damage_type, def_zone, absorb, soaked, 0, sharp=proj_sharp, edge=proj_edge, used_weapon=P, projectile=TRUE)
P.on_hit(src, absorb, soaked, def_zone)
if(absorb == 100)
diff --git a/code/modules/mob/living/silicon/pai/pai_vr.dm b/code/modules/mob/living/silicon/pai/pai_vr.dm
index 05294334fc..a568411835 100644
--- a/code/modules/mob/living/silicon/pai/pai_vr.dm
+++ b/code/modules/mob/living/silicon/pai/pai_vr.dm
@@ -232,8 +232,7 @@
/mob/living/silicon/pai/verb/pick_eye_color()
set category = "Abilities.pAI Commands"
set name = "Pick Eye Color"
- if(chassis in allows_eye_color)
- else
+ if(!(chassis in allows_eye_color))
to_chat(src, span_warning("Your selected chassis eye color can not be modified. The color you pick will only apply to supporting chassis and your card screen."))
var/new_eye_color = tgui_color_picker(src, "Choose your character's eye color:", "Eye Color")
@@ -271,7 +270,6 @@
eye_layer = image('icons/mob/pai_vr64x32.dmi', "type13-eyes")
else if(holo_icon_dimension_X == 64 && holo_icon_dimension_Y == 64)
eye_layer = image('icons/mob/pai_vr64x64.dmi', "type13-eyes")
- else
else if(chassis in allows_eye_color)
eye_layer = image(icon, "[icon_state]-eyes")
else 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 c2c76d1c04..363b382a71 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
@@ -462,7 +462,7 @@
/obj/item/dogborg/sleeper/proc/inject_chem(mob/user, chem)
if(patient && patient.reagents)
- if(chem in injection_chems + REAGENT_ID_INAPROVALINE)
+ if(chem in (injection_chems + REAGENT_ID_INAPROVALINE))
if(hound.cell.charge < 800) //This is so borgs don't kill themselves with it.
to_chat(hound, span_notice("You don't have enough power to synthesize fluids."))
return
diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm
index a258964a5a..55ad29dae1 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm
@@ -547,7 +547,7 @@
if(wood)
wood.add_charge(4000)
else if(istype(W,/obj/item/pipe))
- // This allows drones and engiborgs to clear pipe assemblies from floors.
+ pass() // This allows drones and engiborgs to clear pipe assemblies from floors.
else
continue
diff --git a/code/modules/mob/living/simple_mob/defense.dm b/code/modules/mob/living/simple_mob/defense.dm
index c974608d04..da4c74d24c 100644
--- a/code/modules/mob/living/simple_mob/defense.dm
+++ b/code/modules/mob/living/simple_mob/defense.dm
@@ -56,11 +56,11 @@
L.visible_message(span_warning("\The [L] uselessly hits \the [src]!"))
L.do_attack_animation(src)
return
- apply_damage(damage = real_damage, damagetype = hit_dam_type, def_zone = null, blocked = armor, blocked = resistance, used_weapon = null, sharp = FALSE, edge = FALSE)
+ apply_damage(damage = real_damage, damagetype = hit_dam_type, def_zone = null, blocked = armor, blocked = resistance, sharp = FALSE, edge = FALSE, used_weapon = null)
L.visible_message(span_warning("\The [L] [pick(attack.attack_verb)] \the [src]!"))
L.do_attack_animation(src)
return //VOREStation EDIT END
- apply_damage(damage = harm_intent_damage, damagetype = BRUTE, def_zone = null, blocked = armor, blocked = resistance, used_weapon = null, sharp = FALSE, edge = FALSE) //VOREStation EDIT Somebody set this to burn instead of brute.
+ apply_damage(damage = harm_intent_damage, damagetype = BRUTE, def_zone = null, blocked = armor, blocked = resistance, sharp = FALSE, edge = FALSE, used_weapon = null) //VOREStation EDIT Somebody set this to burn instead of brute.
L.visible_message(span_warning("\The [L] [response_harm] \the [src]!"))
L.do_attack_animation(src)
@@ -145,7 +145,7 @@
if (3.0)
bombdam = 30
- apply_damage(damage = bombdam, damagetype = BRUTE, def_zone = null, blocked = armor, blocked = resistance, used_weapon = null, sharp = FALSE, edge = FALSE)
+ apply_damage(damage = bombdam, damagetype = BRUTE, def_zone = null, blocked = armor, blocked = resistance, sharp = FALSE, edge = FALSE, used_weapon = null)
if(bombdam > maxHealth)
gib()
@@ -194,7 +194,7 @@
if(shock_damage < 1)
return 0
- apply_damage(damage = shock_damage, damagetype = BURN, def_zone = null, blocked = null, blocked = resistance, used_weapon = null, sharp = FALSE, edge = FALSE)
+ apply_damage(damage = shock_damage, damagetype = BURN, def_zone = null, blocked = null, blocked = resistance, sharp = FALSE, edge = FALSE, used_weapon = null)
playsound(src, "sparks", 50, 1, -1)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
@@ -223,11 +223,11 @@
if(stun_amount)
stunDam += stun_amount * 0.5
- apply_damage(damage = stunDam, damagetype = BURN, def_zone = null, blocked = armor, blocked = resistance, used_weapon = used_weapon, sharp = FALSE, edge = FALSE)
+ apply_damage(damage = stunDam, damagetype = BURN, def_zone = null, blocked = armor, blocked = resistance, sharp = FALSE, edge = FALSE, used_weapon = used_weapon)
if(agony_amount)
agonyDam += agony_amount * 0.5
- apply_damage(damage = agonyDam, damagetype = BURN, def_zone = null, blocked = armor, blocked = resistance, used_weapon = used_weapon, sharp = FALSE, edge = FALSE)
+ apply_damage(damage = agonyDam, damagetype = BURN, def_zone = null, blocked = armor, blocked = resistance, sharp = FALSE, edge = FALSE, used_weapon = used_weapon)
// Electromagnetism
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm
index 7f68db04e4..f53f4b9e60 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm
@@ -814,7 +814,9 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have?
ai_holder.set_busy(FALSE)
-/mob/living/simple_mob/vore/alienanimals/teppi/perform_the_nom(user, mob/living/prey, user, belly, delay)
+/mob/living/simple_mob/vore/alienanimals/teppi/perform_the_nom(mob/living/user, mob/living/prey, mob/living/pred, obj/belly/belly, delay)
+ if(!pred)
+ pred = user
if(client)
return ..()
var/current_affinity = affinity[prey.real_name]
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/kururak.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/kururak.dm
index f331de379b..15f09e3af1 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/kururak.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/kururak.dm
@@ -193,7 +193,7 @@
to_chat(H, span_alien("You are disoriented by \the [src]!"))
H.eye_blurry = max(H.eye_blurry, flash_strength + 5)
H.flash_eyes()
- H.apply_damage(flash_strength * H.species.flash_burn/5, BURN, BP_HEAD, 0, 0, "Photon burns")
+ H.apply_damage(flash_strength * H.species.flash_burn/5, BURN, BP_HEAD, 0, 0)
else if(issilicon(L))
if(isrobot(L))
@@ -271,7 +271,7 @@
var/mob/living/L = A
if(ishuman(L))
var/mob/living/carbon/human/H = L
- H.apply_damage(damage_to_apply, BRUTE, BP_TORSO, 0, 0, "Animal claws")
+ H.apply_damage(damage_to_apply, BRUTE, BP_TORSO, 0, 0)
else
L.adjustBruteLoss(damage_to_apply)
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/squirrel.dm b/code/modules/mob/living/simple_mob/subtypes/animal/squirrel.dm
index 902e012ad5..4543462c2a 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/squirrel.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/squirrel.dm
@@ -160,6 +160,7 @@
if(prob(1))
winterize()
if("summer")
+ pass()
if("autumn")
vore_bump_chance = 20
if(prob(50))
diff --git a/code/modules/mob/mob_grab_specials.dm b/code/modules/mob/mob_grab_specials.dm
index 78582aa64c..4095cf7434 100644
--- a/code/modules/mob/mob_grab_specials.dm
+++ b/code/modules/mob/mob_grab_specials.dm
@@ -101,7 +101,7 @@
var/armor = target.run_armor_check(BP_HEAD, "melee")
var/soaked = target.get_armor_soak(BP_HEAD, "melee")
target.apply_damage(damage, BRUTE, BP_HEAD, armor, soaked)
- attacker.apply_damage(10, BRUTE, BP_HEAD, attacker.run_armor_check(BP_HEAD), attacker.get_armor_soak(BP_HEAD), "melee")
+ attacker.apply_damage(10, BRUTE, BP_HEAD, attacker.run_armor_check(BP_HEAD), attacker.get_armor_soak(BP_HEAD))
if(!armor && target.headcheck(BP_HEAD) && prob(damage))
target.apply_effect(20, PARALYZE)
diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm
index f1780c31ec..0a59aa6482 100644
--- a/code/modules/mob/new_player/preferences_setup.dm
+++ b/code/modules/mob/new_player/preferences_setup.dm
@@ -225,7 +225,7 @@
if(job_civilian_low & ASSISTANT)
previewJob = job_master.GetJob(JOB_ALT_VISITOR)
else if(client && ispAI(client.mob)) //VOREStation Edit! - pAIs shouldn't wear job gear~!
- //Don't do anything!
+ pass() //Don't do anything!
else
for(var/datum/job/job in job_master.occupations)
var/job_flag
diff --git a/code/modules/modular_computers/hardware/nano_printer.dm b/code/modules/modular_computers/hardware/nano_printer.dm
index bdd45f08f4..1e56d2e8dc 100644
--- a/code/modules/modular_computers/hardware/nano_printer.dm
+++ b/code/modules/modular_computers/hardware/nano_printer.dm
@@ -78,7 +78,7 @@
qdel(W)
else if(B.pages.len == 1) //if only one item left, extract item and delete the one-item bundle
user.drop_from_inventory(B)
- user.put_in_hands(B[1])
+ user.put_in_hands(B.pages[1])
qdel(B)
else //if at least two items remain, just update the bundle icon
B.update_icon()
@@ -89,4 +89,4 @@
if(holder2 && (holder2.nano_printer == src))
holder2.nano_printer = null
holder2 = null
- return ..()
\ No newline at end of file
+ return ..()
diff --git a/code/modules/overmap/events/event_handler.dm b/code/modules/overmap/events/event_handler.dm
index b2782c2450..396b3b1c91 100644
--- a/code/modules/overmap/events/event_handler.dm
+++ b/code/modules/overmap/events/event_handler.dm
@@ -145,7 +145,7 @@ GLOBAL_DATUM_INIT(overmap_event_handler, /decl/overmap_event_handler, new)
/decl/overmap_event_handler/proc/is_event_in_turf(var/datum/event/E, var/turf/T)
for(var/obj/effect/overmap/event/hazard in hazard_by_turf[T])
- if(E in hazard.events && E.severity == hazard.difficulty)
+ if((E in hazard.events) && E.severity == hazard.difficulty)
return TRUE
/decl/overmap_event_handler/proc/is_event_included(var/list/hazards, var/obj/effect/overmap/event/E, var/equal_or_better)//this proc is only used so it can break out of 2 loops cleanly
diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm
index 8b6d042234..6152a6e42d 100644
--- a/code/modules/paperwork/paper_bundle.dm
+++ b/code/modules/paperwork/paper_bundle.dm
@@ -172,7 +172,7 @@
to_chat(usr, span_notice("You remove the [W.name] from the bundle."))
if(pages.len <= 1)
- var/obj/item/paper/P = src[1]
+ var/obj/item/paper/P = pages[1]
usr.drop_from_inventory(src)
usr.put_in_hands(P)
qdel(src)
diff --git a/code/modules/planet/virgo3b_vr.dm b/code/modules/planet/virgo3b_vr.dm
index 75afb6fcf3..c6cc301c9c 100644
--- a/code/modules/planet/virgo3b_vr.dm
+++ b/code/modules/planet/virgo3b_vr.dm
@@ -428,7 +428,7 @@ var/datum/planet/virgo3b/planet_virgo3b = null
if(amount_soaked >= damage)
continue // No need to apply damage.
- H.apply_damage(damage, BRUTE, target_zone, amount_blocked, amount_soaked, used_weapon = "hail")
+ H.apply_damage(damage, BRUTE, target_zone, amount_blocked, amount_soaked)
if(show_message)
to_chat(H, effect_message)
diff --git a/code/modules/planet/virgo3c_vr.dm b/code/modules/planet/virgo3c_vr.dm
index 8b9d4978cb..b5ac54598e 100644
--- a/code/modules/planet/virgo3c_vr.dm
+++ b/code/modules/planet/virgo3c_vr.dm
@@ -418,7 +418,7 @@ var/datum/planet/virgo3c/planet_virgo3c = null
if(amount_soaked >= damage)
continue // No need to apply damage.
- H.apply_damage(damage, BRUTE, target_zone, amount_blocked, amount_soaked, used_weapon = "hail")
+ H.apply_damage(damage, BRUTE, target_zone, amount_blocked, amount_soaked)
if(show_message)
to_chat(H, effect_message)
diff --git a/code/modules/planet/virgo4_vr.dm b/code/modules/planet/virgo4_vr.dm
index 937d870420..b5f900fcc3 100644
--- a/code/modules/planet/virgo4_vr.dm
+++ b/code/modules/planet/virgo4_vr.dm
@@ -402,7 +402,7 @@ var/datum/planet/virgo4/planet_virgo4 = null
if(amount_soaked >= damage)
continue // No need to apply damage.
- H.apply_damage(damage, BRUTE, target_zone, amount_blocked, amount_soaked, used_weapon = "hail")
+ H.apply_damage(damage, BRUTE, target_zone, amount_blocked, amount_soaked)
if(show_message)
to_chat(H, effect_message)
diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
index 19f3a386c8..ccbe26b596 100644
--- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
@@ -152,7 +152,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
if (prob(25))
qdel(src)
return
- else
return
/obj/structure/particle_accelerator/update_icon()
@@ -324,7 +323,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
if (prob(25))
qdel(src)
return
- else
return
/obj/machinery/particle_accelerator/proc/update_state()
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 1be4df2524..3809758d15 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -725,7 +725,7 @@
in_chamber.on_hit(M)
if(in_chamber.damage_type != HALLOSS && !in_chamber.nodamage)
log_and_message_admins("commited suicide using \a [src]", user)
- user.apply_damage(in_chamber.damage*2.5, in_chamber.damage_type, "head", used_weapon = "Point blank shot in the mouth with \a [in_chamber]", sharp = TRUE)
+ user.apply_damage(in_chamber.damage*2.5, in_chamber.damage_type, "head", sharp = TRUE, used_weapon = src)
user.death()
else if(in_chamber.damage_type == HALLOSS)
to_chat(user, span_notice("Ow..."))
diff --git a/code/modules/projectiles/projectile/hook.dm b/code/modules/projectiles/projectile/hook.dm
index 1e09cf00ce..0a06c21f10 100644
--- a/code/modules/projectiles/projectile/hook.dm
+++ b/code/modules/projectiles/projectile/hook.dm
@@ -133,7 +133,7 @@
else if(firer)
var/obj/T
- if(original in target.contents && istype(original, /obj))
+ if((original in target.contents) && istype(original, /obj))
T = original
var/list/possible_targets = list()
diff --git a/code/modules/reagents/hoses/connector.dm b/code/modules/reagents/hoses/connector.dm
index 91c265e80b..74d15146b2 100644
--- a/code/modules/reagents/hoses/connector.dm
+++ b/code/modules/reagents/hoses/connector.dm
@@ -65,7 +65,7 @@
if(C.my_hose)
return FALSE
- if(C.flow_direction in list(HOSE_INPUT, HOSE_OUTPUT) - flow_direction)
+ if(C.flow_direction in (list(HOSE_INPUT, HOSE_OUTPUT) - flow_direction))
return TRUE
return FALSE
diff --git a/code/modules/reagents/machinery/dispenser/reagent_tank.dm b/code/modules/reagents/machinery/dispenser/reagent_tank.dm
index aeb3299d94..002356141f 100644
--- a/code/modules/reagents/machinery/dispenser/reagent_tank.dm
+++ b/code/modules/reagents/machinery/dispenser/reagent_tank.dm
@@ -76,7 +76,6 @@
new /obj/effect/effect/water(src.loc)
qdel(src)
return
- else
return
/obj/structure/reagent_dispensers/blob_act()
diff --git a/code/modules/reagents/reagents/food_drinks_vr.dm b/code/modules/reagents/reagents/food_drinks_vr.dm
index 0e820a9044..6e33fa159a 100644
--- a/code/modules/reagents/reagents/food_drinks_vr.dm
+++ b/code/modules/reagents/reagents/food_drinks_vr.dm
@@ -87,6 +87,7 @@
if(M.species.organic_food_coeff) //it's still food!
switch(alien)
if(IS_DIONA) //Diona don't get any nutrition from nutriment or protein.
+ pass()
if(IS_SKRELL)
M.adjustToxLoss(0.25 * removed) //Equivalent to half as much protein, since it's half protein.
if(IS_TESHARI)
@@ -453,6 +454,7 @@
if(M.species.organic_food_coeff) //it's still food!
switch(alien)
if(IS_DIONA) //Diona don't get any nutrition from nutriment or protein.
+ pass()
if(IS_SKRELL)
M.adjustToxLoss(0.25 * removed) //Equivalent to half as much protein, since it's half protein.
if(IS_TESHARI)
diff --git a/code/modules/samples/samples.dm b/code/modules/samples/samples.dm
index 1cc0f6726f..22aabcbbd1 100644
--- a/code/modules/samples/samples.dm
+++ b/code/modules/samples/samples.dm
@@ -87,12 +87,12 @@
switch(damage_type)
if("BRUTE")
H.visible_message(span_danger("\The [src] creaks as it ravages [H]'s hands!"))
- H.apply_damage(rand(min_damage,max_damage), BRUTE, "r_hand", used_weapon="Anomalous Material")
- H.apply_damage(rand(min_damage,max_damage), BRUTE, "l_hand", used_weapon="Anomalous Material")
+ H.apply_damage(rand(min_damage,max_damage), BRUTE, "r_hand", used_weapon=src)
+ H.apply_damage(rand(min_damage,max_damage), BRUTE, "l_hand", used_weapon=src)
if("BURN")
H.visible_message(span_danger("\The [src] flashes as it scorches [H]'s hands!"))
- H.apply_damage(rand(min_damage,max_damage), BURN, "r_hand", used_weapon="Anomalous Material")
- H.apply_damage(rand(min_damage,max_damage), BURN, "l_hand", used_weapon="Anomalous Material")
+ H.apply_damage(rand(min_damage,max_damage), BURN, "r_hand", used_weapon=src)
+ H.apply_damage(rand(min_damage,max_damage), BURN, "l_hand", used_weapon=src)
if("TOX")
H.visible_message(span_danger("\The [src] seethes and hisses like burning acid!"))
if(!H.isSynthetic())
@@ -119,7 +119,7 @@
burn_user = FALSE
if(burn_user)
- M.apply_damage(rand(min_damage,max_damage), BURN, null, used_weapon="Anomalous Material")
+ M.apply_damage(rand(min_damage,max_damage), BURN, null, used_weapon=src)
/obj/item/research_sample/attack_self(mob/user)
var/mob/living/M = user
@@ -144,12 +144,12 @@
switch(damage_type)
if("BRUTE")
H.visible_message(span_danger("\The [src] creaks as it ravages [H]'s hands!"))
- H.apply_damage(rand(min_damage,max_damage), BRUTE, "r_hand", used_weapon="Anomalous Material")
- H.apply_damage(rand(min_damage,max_damage), BRUTE, "l_hand", used_weapon="Anomalous Material")
+ H.apply_damage(rand(min_damage,max_damage), BRUTE, "r_hand", used_weapon=src)
+ H.apply_damage(rand(min_damage,max_damage), BRUTE, "l_hand", used_weapon=src)
if("BURN")
H.visible_message(span_danger("\The [src] flashes as it scorches [H]'s hands!"))
- H.apply_damage(rand(min_damage,max_damage), BURN, "r_hand", used_weapon="Anomalous Material")
- H.apply_damage(rand(min_damage,max_damage), BURN, "l_hand", used_weapon="Anomalous Material")
+ H.apply_damage(rand(min_damage,max_damage), BURN, "r_hand", used_weapon=src)
+ H.apply_damage(rand(min_damage,max_damage), BURN, "l_hand", used_weapon=src)
if("TOX")
H.visible_message(span_danger("\The [src] seethes and hisses like burning acid!"))
if(!H.isSynthetic())
@@ -186,7 +186,7 @@
burn_user = FALSE
if(burn_user)
- M.apply_damage(rand(min_damage,max_damage), BURN, null, used_weapon="Anomalous Material")
+ M.apply_damage(rand(min_damage,max_damage), BURN, null, used_weapon=src)
/obj/item/research_sample/attackby(obj/item/P as obj, mob/user as mob)
..()
diff --git a/code/modules/scripting/Interpreter/Interpreter.dm b/code/modules/scripting/Interpreter/Interpreter.dm
index 5287c55dff..8f9ef9b979 100644
--- a/code/modules/scripting/Interpreter/Interpreter.dm
+++ b/code/modules/scripting/Interpreter/Interpreter.dm
@@ -132,7 +132,7 @@ Runs each statement in a block of code.
else if(istype(S, /node/statement/FunctionCall))
RunFunction(S)
else if(istype(S, /node/statement/FunctionDefinition))
- //do nothing
+ pass() //do nothing
else if(istype(S, /node/statement/WhileLoop))
RunWhile(S)
else if(istype(S, /node/statement/IfStatement))
diff --git a/code/modules/spells/general/area_teleport.dm b/code/modules/spells/general/area_teleport.dm
index 36c6c8751e..9358d2703e 100644
--- a/code/modules/spells/general/area_teleport.dm
+++ b/code/modules/spells/general/area_teleport.dm
@@ -37,7 +37,8 @@
/spell/area_teleport/cast(area/thearea, mob/user)
if(!istype(thearea))
if(istype(thearea, /list))
- thearea = thearea[1]
+ var/list/area_list = thearea
+ thearea = area_list[1]
var/list/L = list()
for(var/turf/T in get_area_turfs(thearea.type))
if(!T.density)
diff --git a/code/modules/xenoarcheaology/finds/special.dm b/code/modules/xenoarcheaology/finds/special.dm
index 5c5a06c420..f2ae8dc1a4 100644
--- a/code/modules/xenoarcheaology/finds/special.dm
+++ b/code/modules/xenoarcheaology/finds/special.dm
@@ -76,7 +76,7 @@
//see if we've identified anyone nearby
if(world.time - last_bloodcall > bloodcall_interval && nearby_mobs.len)
var/mob/living/carbon/human/M = pop(nearby_mobs)
- if(M in view(7,src) && M.health > 20)
+ if((M in view(7,src)) && M.health > 20)
if(prob(50))
bloodcall(M)
nearby_mobs.Add(M)
diff --git a/code/modules/xenoarcheaology/tools/tools.dm b/code/modules/xenoarcheaology/tools/tools.dm
index 12d2bef1d9..ed131e2bd2 100644
--- a/code/modules/xenoarcheaology/tools/tools.dm
+++ b/code/modules/xenoarcheaology/tools/tools.dm
@@ -80,9 +80,7 @@
SSxenoarch.digsite_spawning_turfs.Remove(T)
if(SSxenoarch && ((nearestTargetDist == -1) || (nearestSimpleTargetDist == -1)) && user.z && (world.time - last_repopulation_time >= repopulation_delay))
- if(user.z in using_map.xenoarch_exempt_levels) //We found no artifacts and our Z level is not spawn exempt. Time for random generation.
- //Yeah we do nothing here. I tried to make the above a !user.z ... but VSC compiler screeched at me.
- else
+ if(!(user.z in using_map.xenoarch_exempt_levels)) //We found no artifacts and our Z level is not spawn exempt. Time for random generation.
last_repopulation_time = world.time
to_chat(user, "The [src] beeps and buzzes, a warning popping up on screen stating 'No artifacts detected on current wavelength. Swapping to different wavelength. Please try scanning momentarily.'")
SSxenoarch.continual_generation(user)
diff --git a/vorestation.dme b/vorestation.dme
index 9d4dcf1f57..697e00d238 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -11,6 +11,7 @@
// END_PREFERENCES
// BEGIN_INCLUDE
#include "code\__byond_version_compat.dm"
+#include "code\__odlint.dm"
#include "code\__spaceman_dmm.dm"
#include "code\_macros.dm"
#include "code\_macros_vr.dm"