diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index ac83a00b311b..39378eff6531 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -11,7 +11,11 @@
"$dreammaker",
"$eslint-stylish"
],
- "group": "build",
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ },
+ "dependsOn": "dm: reparse",
"label": "Build All"
},
{
@@ -34,6 +38,11 @@
],
"group": "build",
"label": "tgui: build"
+ },
+ {
+ "command": "${command:dreammaker.reparse}",
+ "group": "build",
+ "label": "dm: reparse"
}
]
}
diff --git a/Build.bat b/Build.bat
index dd3a6fd9d981..8225158e4d87 100644
--- a/Build.bat
+++ b/Build.bat
@@ -1,2 +1,2 @@
-@call tools\build\build
+@call "%~dp0\tools\build\build"
@pause
diff --git a/SpacemanDMM.toml b/SpacemanDMM.toml
index b82747225467..81aff0d55768 100644
--- a/SpacemanDMM.toml
+++ b/SpacemanDMM.toml
@@ -1,2 +1,9 @@
[langserver]
dreamchecker = true
+
+[code_standards]
+disallow_relative_type_definitions = true
+disallow_relative_proc_definitions = true
+
+[dmdoc]
+use_typepath_names = true
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index b2c0ff0af31c..8b6b3966514d 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -1031,7 +1031,7 @@ B --><-- A
return closest_atom
-proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types())
+/proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types())
if (value == FALSE) //nothing should be calling us with a number, so this is safe
value = input("Enter type to find (blank for all, cancel to cancel)", "Search for type") as null|text
if (isnull(value))
diff --git a/code/datums/traits/good.dm b/code/datums/traits/good.dm
index 36a47dcb345b..07eeedae3625 100644
--- a/code/datums/traits/good.dm
+++ b/code/datums/traits/good.dm
@@ -61,7 +61,7 @@
lose_text = "You feel isolated from others."
medical_record_text = "Patient is highly perceptive of and sensitive to social cues, or may possibly have ESP. Further testing needed."
-datum/quirk/fan_clown
+/datum/quirk/fan_clown
name = "Clown Fan"
desc = "You enjoy clown antics and get a mood boost from wearing your clown pin."
value = 1
@@ -81,7 +81,7 @@ datum/quirk/fan_clown
var/datum/atom_hud/fan = GLOB.huds[DATA_HUD_FAN]
fan.add_hud_to(H)
-datum/quirk/fan_mime
+/datum/quirk/fan_mime
name = "Mime Fan"
desc = "You enjoy mime antics and get a mood boost from wearing your mime pin."
value = 1
diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm
index 8dd52dcb7868..94fd49e452bc 100644
--- a/code/datums/traits/neutral.dm
+++ b/code/datums/traits/neutral.dm
@@ -30,7 +30,7 @@
var/datum/species/species = H.dna.species
if(initial(species.liked_food) & MEAT)
species.liked_food |= MEAT
- if(!initial(species.disliked_food) & MEAT)
+ if(!(initial(species.disliked_food) & MEAT))
species.disliked_food &= ~MEAT
/datum/quirk/snob
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 710684cd504a..cf1f13a0b4d3 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -778,7 +778,7 @@
else
. += "It looks very robust."
- if(issilicon(user) && (!machine_stat & BROKEN))
+ if(issilicon(user) && !(machine_stat & BROKEN))
. += "Shift-click [src] to [ density ? "open" : "close"] it."
. += "Ctrl-click [src] to [ locked ? "raise" : "drop"] its bolts."
. += "Alt-click [src] to [ secondsElectrified ? "un-electrify" : "permanently electrify"] it."
diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm
index bb3195333e9f..b26c08c44571 100644
--- a/code/game/machinery/hologram.dm
+++ b/code/game/machinery/hologram.dm
@@ -84,7 +84,7 @@ Possible to do for anyone motivated enough:
desc = "It's a floor-mounted device for projecting holographic images. This one will refuse to auto-connect incoming calls."
secure = TRUE
-obj/machinery/holopad/secure/Initialize()
+/obj/machinery/holopad/secure/Initialize()
. = ..()
var/obj/item/circuitboard/machine/holopad/board = circuit
board.secure = TRUE
diff --git a/code/game/mecha/combat/durand.dm b/code/game/mecha/combat/durand.dm
index 6c2532633a80..99f803076915 100644
--- a/code/game/mecha/combat/durand.dm
+++ b/code/game/mecha/combat/durand.dm
@@ -94,7 +94,7 @@ Expects a turf. Returns true if the attack should be blocked, false if not.*/
. = TRUE
return
-obj/mecha/combat/durand/attack_generic(mob/user, damage_amount = 0, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, armor_penetration = 0)
+/obj/mecha/combat/durand/attack_generic(mob/user, damage_amount = 0, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, armor_penetration = 0)
if(defense_check(user.loc))
log_message("Attack absorbed by defense field. Attacker - [user].", LOG_MECHA, color="orange")
shield.attack_generic(user, damage_amount, damage_type, damage_flag, sound_effect, armor_penetration)
diff --git a/code/game/objects/items/dice.dm b/code/game/objects/items/dice.dm
index 205caa3f600e..4b599292f090 100644
--- a/code/game/objects/items/dice.dm
+++ b/code/game/objects/items/dice.dm
@@ -93,7 +93,7 @@
/obj/item/dice/d6
name = "d6"
-obj/item/dice/d6/ebony
+/obj/item/dice/d6/ebony
name = "ebony die"
desc = "A die with six sides made of dense black wood. It feels cold and heavy in your hand."
icon_state = "de6"
diff --git a/code/game/objects/items/grenades/festive.dm b/code/game/objects/items/grenades/festive.dm
index f5b534d95787..cedcb23dcca6 100644
--- a/code/game/objects/items/grenades/festive.dm
+++ b/code/game/objects/items/grenades/festive.dm
@@ -84,7 +84,7 @@
/obj/item/grenade/firecracker/fire_act(exposed_temperature, exposed_volume)
prime()
-obj/item/grenade/firecracker/wirecutter_act(mob/living/user, obj/item/I)
+/obj/item/grenade/firecracker/wirecutter_act(mob/living/user, obj/item/I)
if(active)
return
if(det_time)
@@ -96,7 +96,7 @@ obj/item/grenade/firecracker/wirecutter_act(mob/living/user, obj/item/I)
else
to_chat(user, "You've already removed all of the fuse!")
-obj/item/grenade/firecracker/preprime(mob/user, delayoverride, msg = TRUE, volume = 80)
+/obj/item/grenade/firecracker/preprime(mob/user, delayoverride, msg = TRUE, volume = 80)
var/turf/T = get_turf(src)
log_grenade(user, T)
if(user)
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 95e2814eafe2..b815f5d66fd3 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -118,7 +118,7 @@
to_chat(user, "Throwing [pushed_mob] onto the table might hurt them!")
return
var/added_passtable = FALSE
- if(!pushed_mob.pass_flags & PASSTABLE)
+ if(!(pushed_mob.pass_flags & PASSTABLE))
added_passtable = TRUE
pushed_mob.pass_flags |= PASSTABLE
pushed_mob.Move(src.loc)
diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm
index faad838fd4f3..7ccf61eb733c 100644
--- a/code/modules/admin/verbs/one_click_antag.dm
+++ b/code/modules/admin/verbs/one_click_antag.dm
@@ -378,7 +378,7 @@
chosen_candidate.client.prefs.copy_to(ERTOperative)
ERTOperative.key = chosen_candidate.key
- if(ertemplate.enforce_human || !ERTOperative.dna.species.changesource_flags & ERT_SPAWN) // Don't want any exploding plasmemes
+ if(ertemplate.enforce_human || !(ERTOperative.dna.species.changesource_flags & ERT_SPAWN)) // Don't want any exploding plasmemes
ERTOperative.set_species(/datum/species/human)
//Give antag datum
diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm
index ec8faf19147b..de12c9235d81 100644
--- a/code/modules/antagonists/_common/antag_datum.dm
+++ b/code/modules/antagonists/_common/antag_datum.dm
@@ -273,7 +273,7 @@ GLOBAL_LIST_EMPTY(antagonists)
show_name_in_check_antagonists = TRUE //They're all different
var/datum/team/custom_team
-datum/antagonist/custom/create_team(datum/team/team)
+/datum/antagonist/custom/create_team(datum/team/team)
custom_team = team
/datum/antagonist/custom/get_team()
diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm
index 2eeb00a34047..e379c1715f11 100644
--- a/code/modules/atmospherics/gasmixtures/reactions.dm
+++ b/code/modules/atmospherics/gasmixtures/reactions.dm
@@ -246,18 +246,18 @@
return cached_results["fire"] ? REACTING : NO_REACTION
//freon reaction (is not a fire yet)
-datum/gas_reaction/freonfire
+/datum/gas_reaction/freonfire
priority = -3
name = "Freon combustion"
id = "freonfire"
-datum/gas_reaction/freonfire/init_reqs()
+/datum/gas_reaction/freonfire/init_reqs()
min_requirements = list(
/datum/gas/oxygen = MINIMUM_MOLE_COUNT,
/datum/gas/freon = MINIMUM_MOLE_COUNT
)
-datum/gas_reaction/freonfire/react(datum/gas_mixture/air, datum/holder)
+/datum/gas_reaction/freonfire/react(datum/gas_mixture/air, datum/holder)
var/energy_released = 0
var/old_heat_capacity = air.heat_capacity()
var/temperature = air.return_temperature()
diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm
index dd0485661d94..4db287b5167e 100644
--- a/code/modules/client/preferences_toggles.dm
+++ b/code/modules/client/preferences_toggles.dm
@@ -284,7 +284,7 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings, listen_ooc)()
return C.prefs.chat_toggles & CHAT_OOC
//BeginWS Edit
-TOGGLE_CHECKBOX(datum/verbs/menu/settings, listen_looc)()
+TOGGLE_CHECKBOX(/datum/verbs/menu/settings, listen_looc)()
set name = "Show/Hide LOOC"
set category = "Preferences"
set desc = "Toggles seeing Local Out Of Character chat"
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm
index 8dfcb5b9097e..94419a58c283 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm
@@ -23,7 +23,7 @@
)
result = /obj/item/reagent_containers/food/snacks/donut/chaos
-datum/crafting_recipe/food/donut/meat
+/datum/crafting_recipe/food/donut/meat
time = 15
name = "Meat donut"
reqs = list(
diff --git a/code/modules/mining/aux_base_camera.dm b/code/modules/mining/aux_base_camera.dm
index 89b6bbb0b2e6..dd98e05079db 100644
--- a/code/modules/mining/aux_base_camera.dm
+++ b/code/modules/mining/aux_base_camera.dm
@@ -202,27 +202,27 @@
name = "Select Airlock Type"
button_icon_state = "airlock_select"
-datum/action/innate/aux_base/airlock_type/Activate()
+/datum/action/innate/aux_base/airlock_type/Activate()
if(..())
return
B.RCD.change_airlock_setting()
-datum/action/innate/aux_base/window_type
+/datum/action/innate/aux_base/window_type
name = "Select Window Type"
button_icon_state = "window_select"
-datum/action/innate/aux_base/window_type/Activate()
+/datum/action/innate/aux_base/window_type/Activate()
if(..())
return
B.RCD.toggle_window_type()
-datum/action/innate/aux_base/place_fan
+/datum/action/innate/aux_base/place_fan
name = "Place Tiny Fan"
button_icon_state = "build_fan"
-datum/action/innate/aux_base/place_fan/Activate()
+/datum/action/innate/aux_base/place_fan/Activate()
if(..())
return
@@ -244,11 +244,11 @@ datum/action/innate/aux_base/place_fan/Activate()
to_chat(owner, "Tiny fan placed. [B.fans_remaining] remaining.")
playsound(fan_turf, 'sound/machines/click.ogg', 50, TRUE)
-datum/action/innate/aux_base/install_turret
+/datum/action/innate/aux_base/install_turret
name = "Install Plasma Anti-Wildlife Turret"
button_icon_state = "build_turret"
-datum/action/innate/aux_base/install_turret/Activate()
+/datum/action/innate/aux_base/install_turret/Activate()
if(..())
return
diff --git a/code/modules/mob/living/carbon/human/species_types/IPC.dm b/code/modules/mob/living/carbon/human/species_types/IPC.dm
index df6437c5a2c9..e2d24821d8a8 100644
--- a/code/modules/mob/living/carbon/human/species_types/IPC.dm
+++ b/code/modules/mob/living/carbon/human/species_types/IPC.dm
@@ -65,7 +65,7 @@
else if(MUTCOLORS in C.dna.species.species_traits)
C.dna.species.species_traits -= MUTCOLORS
-datum/species/ipc/on_species_loss(mob/living/carbon/C)
+/datum/species/ipc/on_species_loss(mob/living/carbon/C)
. = ..()
if(change_screen)
change_screen.Remove(C)
diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm
index 8d9d60326740..946a9e52c125 100644
--- a/code/modules/mob/living/simple_animal/hostile/bear.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bear.dm
@@ -123,7 +123,7 @@
to_chat(user, "You strap the armor plating to [A] and sharpen [A.p_their()] claws with the nail filer. This was a great idea.")
qdel(src)
-mob/living/simple_animal/hostile/bear/butter //The mighty companion to Cak. Several functions used from it.
+/mob/living/simple_animal/hostile/bear/butter //The mighty companion to Cak. Several functions used from it.
name = "Terrygold"
icon_state = "butterbear"
icon_living = "butterbear"
@@ -168,7 +168,7 @@ mob/living/simple_animal/hostile/bear/butter //The mighty companion to Cak. Seve
to_chat(src, "Your name is now \"new_name\"!")
name = new_name
-mob/living/simple_animal/hostile/bear/butter/AttackingTarget() //Makes some attacks by the butter bear slip those who dare cross its path.
+/mob/living/simple_animal/hostile/bear/butter/AttackingTarget() //Makes some attacks by the butter bear slip those who dare cross its path.
if(isliving(target))
var/mob/living/L = target
if((L.body_position == STANDING_UP))
diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
index 720c4d555b53..f4df86cafb60 100644
--- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
@@ -389,7 +389,7 @@
name = "Wrap"
panel = "Spider"
active = FALSE
- datum/action/spell_action/action = null
+ action = null
desc = "Wrap something or someone in a cocoon. If it's a living being, you'll also consume them, allowing you to lay eggs."
ranged_mousepointer = 'icons/effects/mouse_pointers/wrap_target.dmi'
action_icon = 'icons/mob/actions/actions_animal.dmi'
diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm
index f52ffbebcd35..2ee08eb33b43 100644
--- a/code/modules/mob/living/simple_animal/hostile/hostile.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm
@@ -466,7 +466,7 @@
DestroyObjectsInDirection(direction)
-mob/living/simple_animal/hostile/proc/DestroySurroundings() // for use with megafauna destroying everything around them
+/mob/living/simple_animal/hostile/proc/DestroySurroundings() // for use with megafauna destroying everything around them
if(environment_smash)
EscapeConfinement()
for(var/dir in GLOB.cardinals)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
index 87da8560327c..120245bdb6e4 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
@@ -521,7 +521,7 @@ Difficulty: Medium
else
animate(src, pixel_x = -16, pixel_z = 0, time = 5)
-obj/effect/temp_visual/fireball
+/obj/effect/temp_visual/fireball
icon = 'icons/obj/wizard.dmi'
icon_state = "fireball"
name = "fireball"
diff --git a/code/modules/mob/living/simple_animal/hostile/space_dragon.dm b/code/modules/mob/living/simple_animal/hostile/space_dragon.dm
index 4b369c86e425..abdd04a7fd05 100644
--- a/code/modules/mob/living/simple_animal/hostile/space_dragon.dm
+++ b/code/modules/mob/living/simple_animal/hostile/space_dragon.dm
@@ -208,7 +208,7 @@
* Arguments:
* * turf/T - The turf to trigger the effects on.
*/
-mob/living/simple_animal/hostile/space_dragon/proc/dragon_fire_line(turf/T)
+/mob/living/simple_animal/hostile/space_dragon/proc/dragon_fire_line(turf/T)
var/list/hit_list = list()
hit_list += src
new /obj/effect/hotspot(T)
diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
index e8bdca48400a..c22ae43a3e58 100644
--- a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
+++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
@@ -186,5 +186,5 @@
* Arguments:
* * datum/beam/vine - The vine to be removed from the list.
*/
-mob/living/simple_animal/hostile/venus_human_trap/proc/remove_vine(datum/beam/vine, force)
+/mob/living/simple_animal/hostile/venus_human_trap/proc/remove_vine(datum/beam/vine, force)
vines -= vine
diff --git a/code/modules/photography/photos/album.dm b/code/modules/photography/photos/album.dm
index 835b93c09d36..2ba5f5499307 100644
--- a/code/modules/photography/photos/album.dm
+++ b/code/modules/photography/photos/album.dm
@@ -96,10 +96,10 @@
name = "photo album (Library)"
persistence_id = "library"
-obj/item/storage/photo_album/chapel
+/obj/item/storage/photo_album/chapel
name = "photo album (Chapel)"
persistence_id = "chapel"
-obj/item/storage/photo_album/prison
+/obj/item/storage/photo_album/prison
name = "photo album (Prison)"
persistence_id = "prison"
diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm
index 178668b251ee..b545bdbd4709 100644
--- a/code/modules/projectiles/guns/ballistic/rifle.dm
+++ b/code/modules/projectiles/guns/ballistic/rifle.dm
@@ -16,11 +16,11 @@
tac_reloads = FALSE
weapon_weight = WEAPON_MEDIUM
-obj/item/gun/ballistic/rifle/update_overlays()
+/obj/item/gun/ballistic/rifle/update_overlays()
. = ..()
. += "[icon_state]_bolt[bolt_locked ? "_locked" : ""]"
-obj/item/gun/ballistic/rifle/rack(mob/user = null)
+/obj/item/gun/ballistic/rifle/rack(mob/user = null)
if (bolt_locked == FALSE)
to_chat(user, "You open the bolt of \the [src].")
playsound(src, rack_sound, rack_sound_volume, rack_sound_vary)
@@ -30,12 +30,12 @@ obj/item/gun/ballistic/rifle/rack(mob/user = null)
return
drop_bolt(user)
-obj/item/gun/ballistic/rifle/can_shoot()
+/obj/item/gun/ballistic/rifle/can_shoot()
if (bolt_locked)
return FALSE
return ..()
-obj/item/gun/ballistic/rifle/attackby(obj/item/A, mob/user, params)
+/obj/item/gun/ballistic/rifle/attackby(obj/item/A, mob/user, params)
if (!bolt_locked)
to_chat(user, "The bolt is closed!")
return
diff --git a/code/modules/reagents/reagent_containers/chem_pack.dm b/code/modules/reagents/reagent_containers/chem_pack.dm
index 4bb64506100e..666f812e7054 100644
--- a/code/modules/reagents/reagent_containers/chem_pack.dm
+++ b/code/modules/reagents/reagent_containers/chem_pack.dm
@@ -33,7 +33,7 @@
. += "Alt-click to seal it."
-obj/item/reagent_containers/chem_pack/attack_self(mob/user)
+/obj/item/reagent_containers/chem_pack/attack_self(mob/user)
if(sealed)
return
..()
diff --git a/code/modules/research/nanites/nanite_programs.dm b/code/modules/research/nanites/nanite_programs.dm
index 7ae9c8faac8a..06c7bf13d45f 100644
--- a/code/modules/research/nanites/nanite_programs.dm
+++ b/code/modules/research/nanites/nanite_programs.dm
@@ -247,14 +247,14 @@
software_error()
/datum/nanite_program/proc/on_shock(shock_damage)
- if(!program_flags & NANITE_SHOCK_IMMUNE)
+ if(!(program_flags & NANITE_SHOCK_IMMUNE))
if(prob(10))
software_error()
else if(prob(33))
qdel(src)
/datum/nanite_program/proc/on_minor_shock()
- if(!program_flags & NANITE_SHOCK_IMMUNE)
+ if(!(program_flags & NANITE_SHOCK_IMMUNE))
if(prob(10))
software_error()
diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
index 2d988b8aed11..be4a4d6714c7 100644
--- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
@@ -222,7 +222,7 @@
duration = -1
alert_type = null
-datum/status_effect/rebreathing/tick()
+/datum/status_effect/rebreathing/tick()
owner.adjustOxyLoss(-6, 0) //Just a bit more than normal breathing.
///////////////////////////////////////////////////////
@@ -504,7 +504,7 @@ datum/status_effect/rebreathing/tick()
ADD_TRAIT(owner, TRAIT_NOSLIPWATER, "slimestatus")
return ..()
-datum/status_effect/stabilized/blue/on_remove()
+/datum/status_effect/stabilized/blue/on_remove()
REMOVE_TRAIT(owner, TRAIT_NOSLIPWATER, "slimestatus")
/datum/status_effect/stabilized/metal
diff --git a/code/modules/shuttle/spaceship_navigation_beacon.dm b/code/modules/shuttle/spaceship_navigation_beacon.dm
index ec6efb1e6b4f..e5b4cf4ea79c 100644
--- a/code/modules/shuttle/spaceship_navigation_beacon.dm
+++ b/code/modules/shuttle/spaceship_navigation_beacon.dm
@@ -21,7 +21,7 @@
. = ..()
SSshuttle.beacons |= src
-obj/machinery/spaceship_navigation_beacon/emp_act()
+/obj/machinery/spaceship_navigation_beacon/emp_act()
locked = TRUE
/obj/machinery/spaceship_navigation_beacon/Destroy()
diff --git a/code/world.dm b/code/world.dm
index 728f1ccefcc4..77183816d388 100644
--- a/code/world.dm
+++ b/code/world.dm
@@ -18,7 +18,7 @@
view = "15x15"
hub = "Exadv1.spacestation13"
hub_password = "kMZy3U5jJHSiBQjr"
- name = "White Sands"
+ name = "Shiptest 13"
fps = 20
#ifdef FIND_REF_NO_CHECK_TICK
loop_checks = FALSE
diff --git a/tgui/packages/tgui/components/AnimatedNumber.js b/tgui/packages/tgui/components/AnimatedNumber.js
index e8d5e618fac9..05b89c96d022 100644
--- a/tgui/packages/tgui/components/AnimatedNumber.js
+++ b/tgui/packages/tgui/components/AnimatedNumber.js
@@ -63,7 +63,7 @@ export class AnimatedNumber extends Component {
if (!isSafeNumber(targetValue)) {
return targetValue || null;
}
- let formattedValue = currentValue;
+ let formattedValue;
// Use custom formatter
if (format) {
formattedValue = format(currentValue);
diff --git a/tgui/packages/tgui/format.js b/tgui/packages/tgui/format.js
index 6ee02b4b1314..6de63f29cef6 100644
--- a/tgui/packages/tgui/format.js
+++ b/tgui/packages/tgui/format.js
@@ -100,7 +100,7 @@ export const formatMoney = (value, precision = 0) => {
*/
export const formatDb = value => {
const db = 20 * Math.log(value) / Math.log(10);
- const sign = db >= 0 ? '+' : db < 0 ? '–' : '';
+ const sign = db >= 0 ? '+' : '–';
let formatted = Math.abs(db);
if (formatted === Infinity) {
formatted = 'Inf';
diff --git a/tools/bootstrap/node.bat b/tools/bootstrap/node.bat
index 5e721641463e..ac0a76c41612 100644
--- a/tools/bootstrap/node.bat
+++ b/tools/bootstrap/node.bat
@@ -1 +1,9 @@
-@call powershell.exe -NoLogo -ExecutionPolicy Bypass -File "%~dp0\node_.ps1" %*
+@echo off
+where node.exe >nul 2>nul
+if %errorlevel% == 0 (
+ echo | set /p printed_str="Using system-wide Node "
+ call node.exe --version
+ call node.exe %*
+) else (
+ call powershell.exe -NoLogo -ExecutionPolicy Bypass -File "%~dp0\node_.ps1" %*
+)
diff --git a/tools/bootstrap/node_.ps1 b/tools/bootstrap/node_.ps1
index 935b7e7a8518..6730975370bb 100644
--- a/tools/bootstrap/node_.ps1
+++ b/tools/bootstrap/node_.ps1
@@ -1,15 +1,21 @@
-# bootstrap/node_.ps1
-#
-# Node bootstrapping script for Windows.
-#
-# Automatically downloads a Node version to a cache directory and invokes it.
-#
-# The underscore in the name is so that typing `bootstrap/node` into
-# PowerShell finds the `.bat` file first, which ensures this script executes
-# regardless of ExecutionPolicy.
-$host.ui.RawUI.WindowTitle = "starting :: node $args"
+## bootstrap/node_.ps1
+##
+## Node bootstrapping script for Windows.
+##
+## Automatically downloads a Node version to a cache directory and invokes it.
+##
+## The underscore in the name is so that typing `bootstrap/node` into
+## PowerShell finds the `.bat` file first, which ensures this script executes
+## regardless of ExecutionPolicy.
+
+#Requires -Version 4.0
+
+$Host.ui.RawUI.WindowTitle = "starting :: node $Args"
$ErrorActionPreference = "Stop"
-Add-Type -AssemblyName System.IO.Compression.FileSystem
+
+## This forces UTF-8 encoding across all powershell built-ins
+$OutputEncoding = [System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8
+$PSDefaultParameterValues['*:Encoding'] = 'utf8'
function ExtractVersion {
param([string] $Path, [string] $Key)
@@ -21,47 +27,31 @@ function ExtractVersion {
throw "Couldn't find value for $Key in $Path"
}
-# Convenience variables
-$Bootstrap = Split-Path $script:MyInvocation.MyCommand.Path
-$Cache = "$Bootstrap/.cache"
+## Convenience variables
+$BaseDir = Split-Path $script:MyInvocation.MyCommand.Path
+$Cache = "$BaseDir/.cache"
if ($Env:TG_BOOTSTRAP_CACHE) {
$Cache = $Env:TG_BOOTSTRAP_CACHE
}
-$NodeVersion = ExtractVersion -Path "$Bootstrap/../../dependencies.sh" -Key "NODE_VERSION_PRECISE"
-$NodeFullVersion = "node-v$NodeVersion-win-x64"
-$NodeDir = "$Cache/$NodeFullVersion"
+$NodeVersion = ExtractVersion -Path "$BaseDir/../../dependencies.sh" -Key "NODE_VERSION_PRECISE"
+$NodeDir = "$Cache/node-v$NodeVersion"
$NodeExe = "$NodeDir/node.exe"
-$Log = "$Cache/last-command.log"
-# Download and unzip Node
+## Download and unzip Node
if (!(Test-Path $NodeExe -PathType Leaf)) {
- $host.ui.RawUI.WindowTitle = "Downloading Node $NodeVersion..."
- New-Item $Cache -ItemType Directory -ErrorAction silentlyContinue | Out-Null
-
- $Archive = "$Cache/node-v$NodeVersion.zip"
+ $Host.ui.RawUI.WindowTitle = "Downloading Node $NodeVersion..."
+ New-Item $NodeDir -ItemType Directory -ErrorAction silentlyContinue | Out-Null
Invoke-WebRequest `
- "https://nodejs.org/download/release/v$NodeVersion/$NodeFullVersion.zip" `
- -OutFile $Archive `
+ "https://nodejs.org/download/release/v$NodeVersion/win-x86/node.exe" `
+ -OutFile $NodeExe `
-ErrorAction Stop
- $tmp = "$Cache/tmp"
- if (Test-Path $tmp) {
- Remove-Item $tmp -Recurse
- }
- [System.IO.Compression.ZipFile]::ExtractToDirectory($Archive, $tmp)
- Move-Item $tmp/node-* $Cache
- Remove-Item $tmp
- Remove-Item $Archive
}
-# Invoke Node with all command-line arguments
-Write-Output $NodeExe | Out-File -Encoding utf8 $Log
-[System.String]::Join([System.Environment]::NewLine, $args) | Out-File -Encoding utf8 -Append $Log
-Write-Output "---" | Out-File -Encoding utf8 -Append $Log
-$Env:PATH = "$NodeDir;$ENV:Path" # Set PATH so that recursive calls find it
-$host.ui.RawUI.WindowTitle = "node $args"
+## Set PATH so that recursive calls find it
+$Env:PATH = "$NodeDir;$ENV:Path"
+
+## Invoke Node with all command-line arguments
+$Host.ui.RawUI.WindowTitle = "node $Args"
$ErrorActionPreference = "Continue"
-& $NodeExe $args 2>&1 | ForEach-Object {
- "$_" | Out-File -Encoding utf8 -Append $Log
- "$_" | Out-Host
-}
+& "$NodeExe" @Args
exit $LastExitCode
diff --git a/tools/build/cbt/fs.js b/tools/build/cbt/fs.js
index f479a32bd645..68a5a8bfbf07 100644
--- a/tools/build/cbt/fs.js
+++ b/tools/build/cbt/fs.js
@@ -132,5 +132,4 @@ module.exports = {
compareFiles,
stat,
resolveGlob,
- compareFiles,
};
diff --git a/tools/build/cbt/glob.js b/tools/build/cbt/glob.js
index df6e153b38d1..234a5ad011d5 100644
--- a/tools/build/cbt/glob.js
+++ b/tools/build/cbt/glob.js
@@ -1851,7 +1851,7 @@ function mark (self, p) {
// lotta situps...
function makeAbs (self, f) {
- var abs = f;
+ var abs;
if (f.charAt(0) === '/') {
abs = path__default['default'].join(self.root, f);
} else if (pathIsAbsolute(f) || f === '') {
diff --git a/tools/build/cbt/task.js b/tools/build/cbt/task.js
index 8b2ccbf3bb8f..f074ec0b8b71 100644
--- a/tools/build/cbt/task.js
+++ b/tools/build/cbt/task.js
@@ -69,7 +69,7 @@ class Task {
if (!this.script) {
return;
}
- console.warn(` => Starting '${this.name}': ${needsRebuild}`);
+ console.warn(` => Starting '${this.name}'`);
const startedAt = Date.now();
// Run the script
await this.script();
diff --git a/tools/mapmerge2/dmm.py b/tools/mapmerge2/dmm.py
index 2d87cfc17244..453cdf5c8af5 100644
--- a/tools/mapmerge2/dmm.py
+++ b/tools/mapmerge2/dmm.py
@@ -58,7 +58,7 @@ def set_tile(self, coord, tile):
self.grid[coord] = self.get_or_generate_key(tile)
def generate_new_key(self):
- free_keys = self._ensure_free_keys(1)
+ self._ensure_free_keys(1)
max_key = max_key_for(self.key_length)
# choose one of the free keys at random
key = random.randint(0, max_key - 1)
diff --git a/whitesands/code/datums/status_effects/debuffs.dm b/whitesands/code/datums/status_effects/debuffs.dm
index 3be643c76aa0..9d40f494d2c7 100644
--- a/whitesands/code/datums/status_effects/debuffs.dm
+++ b/whitesands/code/datums/status_effects/debuffs.dm
@@ -1,4 +1,4 @@
-datum/status_effect/metab_frozen
+/datum/status_effect/metab_frozen
id = "metab_frozen"
duration = 5 SECONDS
status_type = STATUS_EFFECT_REFRESH
diff --git a/whitesands/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm b/whitesands/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm
index 1d800bd1a7f4..459d35ea965f 100644
--- a/whitesands/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm
+++ b/whitesands/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm
@@ -102,7 +102,7 @@
projectiletype = /obj/projectile/temp/basilisk_heat
addtimer(CALLBACK(src, .proc/cool_down), 3000)
-mob/living/simple_animal/hostile/asteroid/basilisk/proc/cool_down()
+/mob/living/simple_animal/hostile/asteroid/basilisk/proc/cool_down()
visible_message("[src] appears to be cooling down...")
if(stat != DEAD)
icon_state = "Basilisk"
@@ -144,14 +144,14 @@ mob/living/simple_animal/hostile/asteroid/basilisk/proc/cool_down()
return FALSE
return TRUE
-mob/living/simple_animal/hostile/asteroid/basilisk/whitesands/attacked_by(obj/item/I, mob/living/user)
+/mob/living/simple_animal/hostile/asteroid/basilisk/whitesands/attacked_by(obj/item/I, mob/living/user)
if(I.force)
if(shell_damage(I.force)) // Damage was absorbed by the shell, no need to go further
send_item_attack_message(I, user)
return TRUE
return ..()
-
-mob/living/simple_animal/hostile/asteroid/basilisk/whitesands/bullet_act(obj/projectile/P)
+
+/mob/living/simple_animal/hostile/asteroid/basilisk/whitesands/bullet_act(obj/projectile/P)
shell_damage(BULLET_SHELL_DAMAGE)
return ..()
@@ -160,7 +160,7 @@ mob/living/simple_animal/hostile/asteroid/basilisk/whitesands/bullet_act(obj/pro
shell_damage(BULLET_SHELL_DAMAGE)
..()
-mob/living/simple_animal/hostile/asteroid/basilisk/whitesands/drop_loot()
+/mob/living/simple_animal/hostile/asteroid/basilisk/whitesands/drop_loot()
if(has_shell)
for(var/l in shell_loot) // You get the stuff anyways
new l(loc)
diff --git a/whitesands/code/modules/mob/say_vr.dm b/whitesands/code/modules/mob/say_vr.dm
index 1e7ee3672387..9791bf0ebed6 100644
--- a/whitesands/code/modules/mob/say_vr.dm
+++ b/whitesands/code/modules/mob/say_vr.dm
@@ -39,7 +39,7 @@
return M.get_top_level_mob()
return src
-proc/get_top_level_mob(var/mob/S)
+/proc/get_top_level_mob(var/mob/S)
if(istype(S.loc,/mob)&&S.loc!=S)
var/mob/M=S.loc
return M.get_top_level_mob()
diff --git a/whitesands/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/whitesands/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
index 4589cd693541..1d9d905c7a23 100644
--- a/whitesands/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/whitesands/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -193,7 +193,7 @@
M.add_atom_colour(color, TEMPORARY_COLOUR_PRIORITY) // Changes color to puce
..()
-datum/reagent/medicine/puce_essence/expose_atom(atom/A, volume)
+/datum/reagent/medicine/puce_essence/expose_atom(atom/A, volume)
if(!iscarbon(A))
A.add_atom_colour(color, WASHABLE_COLOUR_PRIORITY)
..()
@@ -221,7 +221,7 @@ datum/reagent/medicine/puce_essence/expose_atom(atom/A, volume)
M.add_atom_colour(color, TEMPORARY_COLOUR_PRIORITY) // Changes color to chartreuse
..()
-datum/reagent/medicine/chartreuse/expose_atom(atom/A, volume)
+/datum/reagent/medicine/chartreuse/expose_atom(atom/A, volume)
if(!iscarbon(A))
A.add_atom_colour(color, WASHABLE_COLOUR_PRIORITY)
..()