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"