diff --git a/code/_onclick/hud/action.dm b/code/_onclick/hud/action.dm
index 0512b8ce1e7..dbd392509b6 100644
--- a/code/_onclick/hud/action.dm
+++ b/code/_onclick/hud/action.dm
@@ -22,11 +22,14 @@
var/obj/screen/action_button/button = null
var/button_icon = 'icons/obj/action_buttons/actions.dmi'
var/button_icon_state = "default"
+ /// The icon to use for the background icon state. Defaults to button_icon if unset.
+ var/background_icon = 'icons/obj/action_buttons/actions.dmi'
var/background_icon_state = "bg_default"
var/mob/living/owner
/datum/action/New(var/Target)
target = Target
+ background_icon ||= button_icon
/datum/action/Destroy()
if(owner)
diff --git a/code/_onclick/hud/screen/screen_action_button.dm b/code/_onclick/hud/screen/screen_action_button.dm
index 2681beeabc8..33bf849cb9c 100644
--- a/code/_onclick/hud/screen/screen_action_button.dm
+++ b/code/_onclick/hud/screen/screen_action_button.dm
@@ -16,7 +16,7 @@
/obj/screen/action_button/on_update_icon()
if(!action)
return
- icon = action.button_icon
+ icon = action.background_icon
icon_state = action.background_icon_state
cut_overlays()
diff --git a/code/_onclick/hud/screen/screen_maneuver.dm b/code/_onclick/hud/screen/screen_maneuver.dm
index 76c524467e5..203bffc6943 100644
--- a/code/_onclick/hud/screen/screen_maneuver.dm
+++ b/code/_onclick/hud/screen/screen_maneuver.dm
@@ -8,7 +8,7 @@
var/mob/living/user_living = user
user_living.prepare_maneuver()
-/obj/screen/maneuver/examine(mob/user)
+/obj/screen/maneuver/examine(mob/user, distance)
. = ..()
if(!isliving(user))
return
diff --git a/code/datums/supplypacks/galley.dm b/code/datums/supplypacks/galley.dm
index c72edc97336..1cbeceeaeff 100644
--- a/code/datums/supplypacks/galley.dm
+++ b/code/datums/supplypacks/galley.dm
@@ -108,7 +108,7 @@
/obj/item/chems/drinks/bottle/premiumvodka = 3,
/obj/item/chems/drinks/bottle/whiskey = 3
)
- containertype = /obj/structure/closet/crate/freezer
+ containertype = /obj/structure/closet/crate/plastic
containername = "premium drinks crate"
/decl/hierarchy/supply_pack/galley/barsupplies
diff --git a/code/game/objects/items/flame/_flame.dm b/code/game/objects/items/flame/_flame.dm
index 72fc0349305..3865a9f8f09 100644
--- a/code/game/objects/items/flame/_flame.dm
+++ b/code/game/objects/items/flame/_flame.dm
@@ -64,7 +64,7 @@
/obj/item/flame/proc/get_sconce_overlay()
return null
-/obj/item/flame/get_tool_quality(archetype, property)
+/obj/item/flame/get_tool_quality(archetype)
return (!lit && archetype == TOOL_CAUTERY) ? TOOL_QUALITY_NONE : ..()
/obj/item/flame/proc/has_fuel(amount)
diff --git a/code/game/objects/items/weapons/material/swiss.dm b/code/game/objects/items/weapons/material/swiss.dm
index f11c1f061be..8ecae6134fa 100644
--- a/code/game/objects/items/weapons/material/swiss.dm
+++ b/code/game/objects/items/weapons/material/swiss.dm
@@ -19,12 +19,12 @@
material_alteration = MAT_FLAG_ALTERATION_COLOR | MAT_FLAG_ALTERATION_NAME
var/active_tool = SWISSKNF_CLOSED
- var/can_use_tools = FALSE
var/list/tools = list(SWISSKNF_LBLADE, SWISSKNF_CLIFTER, SWISSKNF_COPENER)
var/static/list/sharp_tools = list(SWISSKNF_LBLADE, SWISSKNF_SBLADE, SWISSKNF_GBLADE, SWISSKNF_WBLADE)
/obj/item/knife/folding/swiss/Initialize(ml, material_key)
- set_extension(src, /datum/extension/tool/variable/simple, list(
+ // Variable tool qualities are handled by proc below.
+ set_extension(src, /datum/extension/tool, list(
TOOL_CROWBAR = TOOL_QUALITY_MEDIOCRE,
TOOL_SCREWDRIVER = TOOL_QUALITY_MEDIOCRE,
TOOL_WIRECUTTERS = TOOL_QUALITY_MEDIOCRE,
@@ -33,16 +33,18 @@
. = ..()
/obj/item/knife/folding/swiss/proc/get_tool_archetype()
- if(can_use_tools)
- if(active_tool == SWISSKNF_CROWBAR)
- return TOOL_CROWBAR
- if(active_tool == SWISSKNF_CLIFTER || active_tool == SWISSKNF_COPENER)
- return TOOL_SCREWDRIVER
- if(active_tool == SWISSKNF_WCUTTER)
- return TOOL_WIRECUTTERS
+ if(active_tool == SWISSKNF_CROWBAR)
+ return TOOL_CROWBAR
+ if(active_tool == SWISSKNF_CLIFTER || active_tool == SWISSKNF_COPENER)
+ return TOOL_SCREWDRIVER
+ if(active_tool == SWISSKNF_WCUTTER)
+ return TOOL_WIRECUTTERS
if(active_tool == SWISSKNF_WBLADE)
return TOOL_HATCHET
+/obj/item/knife/folding/swiss/get_tool_property(archetype, property)
+ . = (archetype == get_tool_archetype()) ? ..() : null
+
/obj/item/knife/folding/swiss/get_tool_speed(archetype)
. = (archetype == get_tool_archetype()) ? ..() : 0
@@ -50,6 +52,7 @@
. = (archetype == get_tool_archetype()) ? ..() : 0
/obj/item/knife/folding/swiss/attack_self(mob/user)
+
var/choice
if(user.a_intent != I_HELP && ((SWISSKNF_LBLADE in tools) || (SWISSKNF_SBLADE in tools)) && active_tool == SWISSKNF_CLOSED)
open = TRUE
@@ -65,7 +68,8 @@
open = FALSE
if(!choice || !CanPhysicallyInteract(user))
- return
+ return TRUE
+
if(choice == SWISSKNF_CLOSED)
open = FALSE
user.visible_message("\The [user] closes the [name].")
@@ -81,6 +85,7 @@
update_force()
update_icon()
add_fingerprint(user)
+ return TRUE
/obj/item/knife/folding/swiss/examine(mob/user)
. = ..()
@@ -115,16 +120,8 @@
/obj/item/knife/folding/swiss/resolve_attackby(obj/target, mob/user)
if((istype(target, /obj/structure/window) || istype(target, /obj/structure/grille)) && active_tool == SWISSKNF_GBLADE)
force = force * 8
- . = ..()
- update_force()
- return
- if(istype(target, /obj/item))
- if(target.w_class <= ITEM_SIZE_NORMAL)
- can_use_tools = TRUE
- . = ..()
- can_use_tools = FALSE
- return
- return ..()
+ . = ..()
+ update_force()
/obj/item/knife/folding/swiss/officer
name = "officer's combi-knife"
diff --git a/code/game/objects/random/random_multi.dm b/code/game/objects/random/random_multi.dm
index aef5ffd5e15..11ad1cd96df 100644
--- a/code/game/objects/random/random_multi.dm
+++ b/code/game/objects/random/random_multi.dm
@@ -10,6 +10,10 @@
var/id // Group id
var/weight // Probability weight for this spawn point
+/obj/random_multi/modify_mapped_vars(map_hash)
+ . = ..()
+ ADJUST_TAG_VAR(id, map_hash)
+
/obj/random_multi/Initialize()
. = ..()
weight = max(1, round(weight))
diff --git a/code/game/objects/random/subtypes/multi.dm b/code/game/objects/random/subtypes/multi.dm
index d54cb0b0f02..34cd5d7077e 100644
--- a/code/game/objects/random/subtypes/multi.dm
+++ b/code/game/objects/random/subtypes/multi.dm
@@ -1,16 +1,22 @@
-/hook/roundstart/proc/generate_multi_spawn_items()
+/hook/roundstart/proc/roundstart_multi_spawn()
+ generate_multi_spawn_items()
+ return TRUE
+
+/proc/generate_multi_spawn_items()
for(var/id in multi_point_spawns)
var/list/spawn_points = multi_point_spawns[id]
var/obj/random_multi/rm = pickweight(spawn_points)
rm.generate_items()
- for(var/entry in spawn_points)
- qdel(entry)
- return 1
+ QDEL_LIST(spawn_points)
+ LAZYCLEARLIST(multi_point_spawns)
/obj/random_multi/single_item
var/item_path // Item type to spawn
+ var/spawn_nothing_chance = 0 /// Chance to spawn nothing.
/obj/random_multi/single_item/generate_items()
+ if(prob(spawn_nothing_chance))
+ return
new item_path(loc)
/obj/random_multi/single_item/captains_spare_id
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index bb9feda3c86..43dff791397 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -77,6 +77,16 @@
desc = "A rectangular plastic crate."
closet_appearance = /decl/closet_appearance/crate/plastic
+/obj/structure/closet/crate/plastic/rations //For use in the escape shuttle
+ name = "emergency rations"
+ desc = "A crate of emergency rations."
+
+/obj/structure/closet/crate/plastic/rations/WillContain()
+ return list(
+ /obj/random/mre = 6,
+ /obj/item/chems/drinks/cans/waterbottle = 12
+ )
+
/obj/structure/closet/crate/internals
name = "internals crate"
desc = "A internals crate."
@@ -151,13 +161,6 @@
/obj/structure/closet/crate/freezer/ProcessAtomTemperature()
return PROCESS_KILL
-/obj/structure/closet/crate/freezer/rations //For use in the escape shuttle
- name = "emergency rations"
- desc = "A crate of emergency rations."
-
-/obj/structure/closet/crate/freezer/rations/WillContain()
- return list(/obj/random/mre = 6, /obj/item/chems/drinks/cans/waterbottle = 12)
-
/obj/structure/closet/crate/freezer/meat
name = "meat crate"
desc = "A crate of meat."
diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm
index c997a7e0780..d5fcfd51455 100644
--- a/code/game/objects/structures/signs.dm
+++ b/code/game/objects/structures/signs.dm
@@ -98,6 +98,7 @@
abstract_type = /obj/structure/sign
parts_type = /obj/item/sign
parts_amount = 1
+ material = /decl/material/solid/organic/plastic
/obj/structure/sign/Initialize(ml, _mat, _reinf_mat)
. = ..()
diff --git a/code/modules/atmospherics/_atmos_setup.dm b/code/modules/atmospherics/_atmos_setup.dm
index b19e6b1958b..57b3c67d140 100644
--- a/code/modules/atmospherics/_atmos_setup.dm
+++ b/code/modules/atmospherics/_atmos_setup.dm
@@ -14,7 +14,8 @@ var/global/list/pipe_colors = list(
"yellow" = PIPE_COLOR_YELLOW,
"black" = PIPE_COLOR_BLACK,
"orange" = PIPE_COLOR_ORANGE,
- "white" = PIPE_COLOR_WHITE)
+ "white" = PIPE_COLOR_WHITE,
+ "dark gray" = COLOR_DARK_GRAY)
/proc/pipe_color_check(var/color)
if(!color)
diff --git a/code/modules/client/preference_setup/general/01_basic.dm b/code/modules/client/preference_setup/general/01_basic.dm
index 7cb0b51b682..57d310f200d 100644
--- a/code/modules/client/preference_setup/general/01_basic.dm
+++ b/code/modules/client/preference_setup/general/01_basic.dm
@@ -36,7 +36,8 @@
W.write("real_name", pref.real_name)
W.write("name_is_always_random", pref.be_random_name)
var/decl/spawnpoint/spawnpoint = GET_DECL(pref.spawnpoint)
- W.write("spawnpoint", spawnpoint.uid)
+ if(spawnpoint)
+ W.write("spawnpoint", spawnpoint.uid)
/datum/category_item/player_setup_item/physical/basic/sanitize_character()
diff --git a/code/modules/clothing/masks/smokable.dm b/code/modules/clothing/masks/smokable.dm
index 7227459f044..343fbf0d733 100644
--- a/code/modules/clothing/masks/smokable.dm
+++ b/code/modules/clothing/masks/smokable.dm
@@ -22,7 +22,7 @@
var/smoke_effect = 0
var/smoke_amount = 1
-/obj/item/clothing/mask/smokable/get_tool_quality(archetype, property)
+/obj/item/clothing/mask/smokable/get_tool_quality(archetype)
return (!lit && archetype == TOOL_CAUTERY) ? TOOL_QUALITY_NONE : ..()
/obj/item/clothing/mask/smokable/dropped(mob/user)
diff --git a/code/modules/fabrication/designs/replicator/designs_food.dm b/code/modules/fabrication/designs/replicator/designs_food.dm
index 0e281b318f4..5f88f2eedb4 100644
--- a/code/modules/fabrication/designs/replicator/designs_food.dm
+++ b/code/modules/fabrication/designs/replicator/designs_food.dm
@@ -2,6 +2,28 @@
fabricator_types = list(FABRICATOR_CLASS_FOOD)
path = /obj/item/chems/food/tofurkey
+// Remove matter from plates from the recipe, since we don't print food with plates.
+/datum/fabricator_recipe/food/get_resources()
+ . = ..()
+ var/obj/item/chems/food/food_result = path
+ if(!ispath(food_result, /obj/item/chems/food))
+ return // why?? why would this not be food??
+ var/plate_path = initial(food_result.plate)
+ if(ispath(plate_path))
+ var/list/plate_matter = atom_info_repository.get_matter_for(plate_path)
+ for(var/key in plate_matter)
+ resources[key] -= (plate_matter[key] * FABRICATOR_EXTRA_COST_FACTOR)
+ if(resources[key] <= 0)
+ resources -= key
+
+// Print the resulting food without a plate.
+/datum/fabricator_recipe/food/build(turf/location, datum/fabricator_build_order/order)
+ // TODO: On dev, we can just spawn it with skip_plate = TRUE instead. Without that we need a workaround.
+ . = ..()
+ for(var/obj/item/chems/food/food in .)
+ if(istype(food.plate))
+ QDEL_NULL(food.plate)
+
/datum/fabricator_recipe/food/soylentviridians
path = /obj/item/chems/food/soylenviridians
diff --git a/code/modules/fabrication/fabricator_food.dm b/code/modules/fabrication/fabricator_food.dm
index 99098e446b3..2655645e74f 100644
--- a/code/modules/fabrication/fabricator_food.dm
+++ b/code/modules/fabrication/fabricator_food.dm
@@ -6,6 +6,7 @@
icon_state = "replicator"
base_icon_state = "replicator"
base_storage_capacity_mult = 5
+ base_type = /obj/machinery/fabricator/replicator
/obj/machinery/fabricator/replicator/hear_talk(var/mob/M, var/text, var/verb, var/decl/language/speaking)
if(speaking && !speaking.machine_understands)
diff --git a/code/modules/maps/_map_template.dm b/code/modules/maps/_map_template.dm
index 447f6d8acea..5ac8cfb679f 100644
--- a/code/modules/maps/_map_template.dm
+++ b/code/modules/maps/_map_template.dm
@@ -237,6 +237,7 @@
if(!QDELETED(mark))
qdel(mark)
subtemplates_to_spawn = null
+ generate_multi_spawn_items()
/datum/map_template/proc/extend_bounds_if_needed(var/list/existing_bounds, var/list/new_bounds)
var/list/bounds_to_combine = existing_bounds
diff --git a/code/modules/maps/helper_landmarks.dm b/code/modules/maps/helper_landmarks.dm
index 08824ecc50c..926b7849e4e 100644
--- a/code/modules/maps/helper_landmarks.dm
+++ b/code/modules/maps/helper_landmarks.dm
@@ -133,6 +133,9 @@ INITIALIZE_IMMEDIATE(/obj/abstract/landmark/map_load_mark)
. = ..()
if(!prob(probability))
return // Do nothing.
+ var/turf/our_turf = get_turf(src)
+ if(ispath(type_to_find, /turf) && istype(our_turf, type_to_find) && try_set_variable(our_turf))
+ return INITIALIZE_HINT_QDEL
for(var/atom/candidate_atom in get_turf(src))
if(!istype(candidate_atom, type_to_find))
continue
@@ -167,6 +170,10 @@ INITIALIZE_IMMEDIATE(/obj/abstract/landmark/map_load_mark)
. = ..()
if(!prob(probability))
return // Do nothing.
+ // turf is not in turf contents, oops
+ var/turf/our_turf = get_turf(src)
+ if(ispath(type_to_find, /turf) && istype(our_turf, type_to_find) && try_call_proc(our_turf))
+ return INITIALIZE_HINT_QDEL
// we don't use locate in case try_call_proc returns false on our first attempt
for(var/atom/candidate_atom in get_turf(src))
if(!istype(candidate_atom, type_to_find))
@@ -187,7 +194,7 @@ INITIALIZE_IMMEDIATE(/obj/abstract/landmark/map_load_mark)
/obj/abstract/landmark/proc_caller/floor_burner
type_to_find = /turf/floor
- proc_to_call = /turf/floor/proc/burn_tile
+ proc_to_call = TYPE_PROC_REF(/turf/floor, burn_tile)
arguments_to_pass = null
/// Used to tell pipe leak unit tests that a leak is intentional. Placed over the pipe that leaks, not the tile missing a pipe.
diff --git a/code/modules/maps/template_types/random_exoplanet/planet_types/volcanic.dm b/code/modules/maps/template_types/random_exoplanet/planet_types/volcanic.dm
index f4d6e9f4604..98034069279 100644
--- a/code/modules/maps/template_types/random_exoplanet/planet_types/volcanic.dm
+++ b/code/modules/maps/template_types/random_exoplanet/planet_types/volcanic.dm
@@ -99,8 +99,7 @@
/datum/level_data/planetoid/exoplanet/underground
)
possible_themes = list(
- /datum/exoplanet_theme/mountains = 100,
- /datum/exoplanet_theme = 90,
+ /datum/exoplanet_theme/mountains = 190,
/datum/exoplanet_theme/robotic_guardians = 10
)
diff --git a/code/modules/maps/template_types/random_exoplanet/random_exoplanet.dm b/code/modules/maps/template_types/random_exoplanet/random_exoplanet.dm
index aa5e3bd1242..8eb2764c4c1 100644
--- a/code/modules/maps/template_types/random_exoplanet/random_exoplanet.dm
+++ b/code/modules/maps/template_types/random_exoplanet/random_exoplanet.dm
@@ -11,8 +11,7 @@
/datum/level_data/planetoid/exoplanet,
)
possible_themes = list(
- /datum/exoplanet_theme = 30,
- /datum/exoplanet_theme/mountains = 100,
+ /datum/exoplanet_theme/mountains = 130,
/datum/exoplanet_theme/radiation_bombing = 10,
/datum/exoplanet_theme/ruined_city = 5,
/datum/exoplanet_theme/robotic_guardians = 10
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 9d2ca26ba77..15933dd3233 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -386,7 +386,7 @@ default behaviour is:
switch_from_dead_to_living_mob_list()
timeofdeath = 0
- stat = CONSCIOUS
+ set_stat(CONSCIOUS)
update_icon()
BITSET(hud_updateflag, HEALTH_HUD)
diff --git a/code/modules/mob/living/silicon/robot/drone/drone_remote_control.dm b/code/modules/mob/living/silicon/robot/drone/drone_remote_control.dm
index 9563d47d807..f3c92813e3b 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone_remote_control.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone_remote_control.dm
@@ -36,7 +36,7 @@
add_language(/decl/language/machine, 1)
default_language = controlling_ai.default_language
- stat = CONSCIOUS
+ set_stat(CONSCIOUS)
if(user.mind)
user.mind.transfer_to(src)
else
diff --git a/code/modules/modular_computers/networking/machinery/relay.dm b/code/modules/modular_computers/networking/machinery/relay.dm
index 4710d86c3e1..5283cc7294f 100644
--- a/code/modules/modular_computers/networking/machinery/relay.dm
+++ b/code/modules/modular_computers/networking/machinery/relay.dm
@@ -31,4 +31,5 @@
name = "long-ranged network relay"
icon = 'icons/obj/machines/tcomms/relay.dmi'
icon_state = "relay"
- network_device_type = /datum/extension/network_device/broadcaster/relay/long_range
+ network_device_type = /datum/extension/network_device/broadcaster/relay/long_range
+ base_type = /obj/machinery/network/relay/long_range
diff --git a/code/modules/organs/internal/brain_computer.dm b/code/modules/organs/internal/brain_computer.dm
index 3d298b04b30..78689d8f059 100644
--- a/code/modules/organs/internal/brain_computer.dm
+++ b/code/modules/organs/internal/brain_computer.dm
@@ -11,6 +11,7 @@
/decl/material/solid/metal/gold = MATTER_AMOUNT_TRACE,
/decl/material/solid/gemstone/diamond = MATTER_AMOUNT_TRACE
)
+ bodytype = /decl/bodytype/prosthetic/basic_human
can_use_brain_interface = FALSE
var/searching = FALSE
var/brain_name
@@ -23,7 +24,6 @@
/obj/item/organ/internal/brain/robotic/Initialize()
. = ..()
- set_bodytype(/decl/bodytype/prosthetic/basic_human)
update_icon()
brain_name = "[pick(list("ADA","DOS","GNU","MAC","WIN"))]-[random_id(type,1000,9999)]"
SetName("[name] ([brain_name])")
diff --git a/code/modules/overmap/overmap_shuttle.dm b/code/modules/overmap/overmap_shuttle.dm
index 153ed401c14..40a1add39dc 100644
--- a/code/modules/overmap/overmap_shuttle.dm
+++ b/code/modules/overmap/overmap_shuttle.dm
@@ -24,13 +24,13 @@
fuel_ports += fuel_port_in_area
/datum/shuttle/autodock/overmap/fuel_check()
- if(!src.try_consume_fuel()) //insufficient fuel
- for(var/area/A in shuttle_area)
- for(var/mob/living/M in A)
- M.show_message(SPAN_WARNING("You hear the shuttle engines sputter... perhaps it doesn't have enough fuel?"), AUDIBLE_MESSAGE,
+ if(!try_consume_fuel()) //insufficient fuel
+ for(var/mob/hearer in global.living_mob_list_ + global.ghost_mob_list)
+ if(is_type_in_list(get_area(hearer), shuttle_area))
+ hearer.show_message(SPAN_WARNING("You hear the shuttle engines sputter... perhaps it doesn't have enough fuel?"), AUDIBLE_MESSAGE,
SPAN_WARNING("The shuttle shakes but fails to take off."), VISIBLE_MESSAGE)
- return 0 //failure!
- return 1 //sucess, continue with launch
+ return FALSE //failure
+ return TRUE //sucess, continue with launch
/datum/shuttle/autodock/overmap/proc/can_go()
if(!next_location)
diff --git a/code/modules/reagents/chems/chems_ethanol.dm b/code/modules/reagents/chems/chems_ethanol.dm
index 7982a87a312..9e63763c239 100644
--- a/code/modules/reagents/chems/chems_ethanol.dm
+++ b/code/modules/reagents/chems/chems_ethanol.dm
@@ -25,6 +25,7 @@
)
bypass_chilling_products_for_root_type = /decl/material/liquid/ethanol
affect_blood_on_ingest = FALSE // prevents automatic toxins/inebriation as though injected
+ affect_blood_on_inhale = FALSE
var/strength = 10 // This is, essentially, units between stages - the lower, the stronger. Less fine tuning, more clarity.
var/alcohol_toxicity = 1
@@ -41,6 +42,12 @@
M.take_damage(removed * 2 * alcohol_toxicity, TOX)
M.add_chemical_effect(CE_ALCOHOL_TOXIC, alcohol_toxicity)
+/decl/material/liquid/ethanol/affect_inhale(mob/living/M, removed, datum/reagents/holder)
+ if(M.has_trait(/decl/trait/metabolically_inert))
+ return
+ ..()
+ affect_ingest(M, removed, holder) // a bit of a hack, but it avoids code duplication
+
/decl/material/liquid/ethanol/affect_ingest(var/mob/living/M, var/removed, var/datum/reagents/holder)
if(M.has_trait(/decl/trait/metabolically_inert))
diff --git a/code/modules/tools/archetypes/tool_extension.dm b/code/modules/tools/archetypes/tool_extension.dm
index e61e4314221..a75a8d9488b 100644
--- a/code/modules/tools/archetypes/tool_extension.dm
+++ b/code/modules/tools/archetypes/tool_extension.dm
@@ -29,14 +29,14 @@
var/decl/tool_archetype/tool_archetype = GET_DECL(tool)
tool_use_sounds[tool] = tool_archetype.tool_sound
-/datum/extension/tool/proc/get_tool_speed(var/archetype)
+/datum/extension/tool/proc/get_tool_speed(archetype)
. = clamp((TOOL_QUALITY_BEST - get_tool_quality(archetype)), TOOL_SPEED_BEST, TOOL_SPEED_WORST)
-/datum/extension/tool/proc/get_tool_quality(var/archetype)
+/datum/extension/tool/proc/get_tool_quality(archetype)
return LAZYACCESS(tool_values, archetype)
/**Return the value of the property specified for the given tool archetype. */
-/datum/extension/tool/proc/get_tool_property(var/archetype, var/property)
+/datum/extension/tool/proc/get_tool_property(archetype, property)
var/list/props = LAZYACCESS(tool_properties, archetype)
//If we don't override, check the datum's default values
if(!LAZYLEN(props))
@@ -45,14 +45,14 @@
return LAZYACCESS(props, property)
/**Set the given tool property for the given tool archetype */
-/datum/extension/tool/proc/set_tool_property(var/archetype, var/property, var/value)
+/datum/extension/tool/proc/set_tool_property(archetype, property, value)
var/list/props = LAZYACCESS(tool_properties, archetype)
if(!props)
LAZYSET(tool_properties, archetype, list()) //Init the properties override list
props = tool_properties[archetype]
LAZYSET(props, property, value)
-/datum/extension/tool/proc/handle_physical_manipulation(var/mob/user)
+/datum/extension/tool/proc/handle_physical_manipulation(mob/user)
return FALSE
/datum/extension/tool/proc/get_tool_message(archetype)
@@ -70,7 +70,7 @@
. = max(round(.), 5)
// Returns a failure message as a string if the interaction fails.
-/proc/handle_tool_interaction(var/archetype, var/mob/user, var/obj/item/tool, var/atom/target, var/delay = (1 SECOND), var/start_message, var/success_message, var/failure_message, var/fuel_expenditure = 0, var/check_skill = SKILL_CONSTRUCTION, var/prefix_message, var/suffix_message, var/check_skill_threshold, var/check_skill_prob = 50, var/set_cooldown = FALSE)
+/proc/handle_tool_interaction(archetype, mob/user, obj/item/tool, atom/target, delay = (1 SECOND), start_message, success_message, failure_message, fuel_expenditure = 0, check_skill = SKILL_CONSTRUCTION, prefix_message, suffix_message, check_skill_threshold, check_skill_prob = 50, set_cooldown = FALSE)
if(!istype(user) || !istype(target))
return TOOL_USE_FAILURE_NOMESSAGE
diff --git a/code/modules/tools/archetypes/tool_extension_variable.dm b/code/modules/tools/archetypes/tool_extension_variable.dm
index fdfcc651c6b..df714e62a92 100644
--- a/code/modules/tools/archetypes/tool_extension_variable.dm
+++ b/code/modules/tools/archetypes/tool_extension_variable.dm
@@ -27,10 +27,10 @@
return
current_tool = tool_values[1]
-/datum/extension/tool/variable/get_tool_quality(var/archetype)
+/datum/extension/tool/variable/get_tool_quality(archetype)
return (current_tool == archetype) ? ..() : 0
-/datum/extension/tool/variable/get_tool_speed(var/archetype)
+/datum/extension/tool/variable/get_tool_speed(archetype)
return (current_tool == archetype) ? ..() : INFINITY
/datum/extension/tool/variable/handle_physical_manipulation(var/mob/user)
diff --git a/code/modules/tools/archetypes/tool_item.dm b/code/modules/tools/archetypes/tool_item.dm
index 0f3310a89a2..6440f857dc9 100644
--- a/code/modules/tools/archetypes/tool_item.dm
+++ b/code/modules/tools/archetypes/tool_item.dm
@@ -64,16 +64,26 @@
return FALSE
/obj/item/examine(mob/user, distance, infix, suffix)
+
. = ..()
+
if(!user || user.get_preference_value(/datum/client_preference/inquisitive_examine) == PREF_OFF)
return
+
var/datum/extension/tool/tool = get_extension(src, /datum/extension/tool)
+ if(!istype(tool))
+ return
+
var/list/tool_strings
for(var/tool_type in tool?.tool_values)
+ var/tool_quality = get_tool_quality(tool_type)
+ if(tool_quality < TOOL_QUALITY_WORST)
+ continue
var/decl/tool_archetype/tool_archetype = GET_DECL(tool_type)
- var/tool_string = tool_archetype.get_tool_quality_descriptor(tool.tool_values[tool_type])
+ var/tool_string = tool_archetype.get_tool_quality_descriptor(tool_quality)
if(tool_archetype.codex_key)
tool_string = "[tool_string]"
LAZYADD(tool_strings, tool_string)
+
if(length(tool_strings))
to_chat(user, "[gender == PLURAL ? "They look" : "It looks"] like [english_list(tool_strings)].")
diff --git a/code/unit_tests/machine_tests.dm b/code/unit_tests/machine_tests.dm
index fc1da183105..bcb10b27b2f 100644
--- a/code/unit_tests/machine_tests.dm
+++ b/code/unit_tests/machine_tests.dm
@@ -66,3 +66,23 @@
else
pass("All machines had valid construction states.")
return 1
+
+/datum/unit_test/machine_circuit_matches_basetype
+ name = "MACHINE: All mapped machines with a circuit for their exact type will have a matching basetype."
+
+/datum/unit_test/machine_circuit_matches_basetype/start_test()
+ var/failed = list()
+ for(var/obj/machinery/machine in SSmachines.machinery)
+ if(failed[machine.type])
+ continue
+ var/exact_circuit = get_circuit_by_build_path(machine.type)
+ var/base_circuit = machine.base_type && get_circuit_by_build_path(machine.base_type)
+ if(exact_circuit && base_circuit && (exact_circuit != base_circuit) && (machine.base_type != machine.type))
+ failed[machine.type] = TRUE
+ log_bad("[machine.type] exactly matches [exact_circuit] but its base type is [machine.base_type], which has [base_circuit].")
+
+ if(length(failed))
+ fail("One or more machines had an invaild basetype.")
+ else
+ pass("All machines had valid basetypes.")
+ return 1
diff --git a/maps/antag_spawn/ert/ert_base.dmm b/maps/antag_spawn/ert/ert_base.dmm
index a5904e18667..41a96a8b86c 100644
--- a/maps/antag_spawn/ert/ert_base.dmm
+++ b/maps/antag_spawn/ert/ert_base.dmm
@@ -2452,7 +2452,7 @@
/obj/machinery/door/blast/regular/open{
id_tag = "rescuebridge";
name = "Cockpit Blast Shutters";
-
+
},
/obj/effect/wallframe_spawn/reinforced/titanium,
/obj/effect/paint/blue,
@@ -2462,7 +2462,7 @@
/obj/machinery/door/blast/regular/open{
id_tag = "rescuedock";
name = "Blast Shutters";
-
+
},
/obj/effect/wallframe_spawn/reinforced/titanium,
/obj/effect/paint/blue,
@@ -2696,7 +2696,7 @@
dir = 4;
id_tag = "rescuebridge";
name = "Cockpit Blast Shutters";
-
+
},
/obj/effect/wallframe_spawn/reinforced/titanium,
/obj/effect/paint/blue,
@@ -2756,7 +2756,7 @@
dir = 4;
id_tag = "rescueeva";
name = "Blast Shutters";
-
+
},
/obj/effect/wallframe_spawn/reinforced/titanium,
/obj/effect/paint/blue,
@@ -2982,7 +2982,7 @@
/turf/floor/tiled/dark,
/area/map_template/rescue_base/start)
"gs" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/turf/floor/plating,
/area/map_template/rescue_base/start)
"gt" = (
@@ -3162,7 +3162,7 @@
dir = 4;
id_tag = "rescuebridge";
name = "Blast Shutters";
-
+
},
/obj/effect/paint/blue,
/turf/floor/plating,
@@ -3213,7 +3213,7 @@
dir = 4;
id_tag = "rescueinfirm";
name = "Blast Shutters";
-
+
},
/obj/effect/paint/blue,
/turf/floor/plating,
diff --git a/maps/away/errant_pisces/errant_pisces.dmm b/maps/away/errant_pisces/errant_pisces.dmm
index 73a12cad534..b4ea6d9d054 100644
--- a/maps/away/errant_pisces/errant_pisces.dmm
+++ b/maps/away/errant_pisces/errant_pisces.dmm
@@ -4040,7 +4040,7 @@
/turf/floor/tiled,
/area/errant_pisces/cryo)
"kO" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/turf/floor/plating,
/area/errant_pisces/general_storage)
"kP" = (
@@ -4140,7 +4140,7 @@
/obj/machinery/light/small{
dir = 8
},
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/turf/floor/plating,
/area/errant_pisces/general_storage)
"li" = (
diff --git a/maps/away/lost_supply_base/lost_supply_base.dmm b/maps/away/lost_supply_base/lost_supply_base.dmm
index 31eca7ad177..6bbdff65898 100644
--- a/maps/away/lost_supply_base/lost_supply_base.dmm
+++ b/maps/away/lost_supply_base/lost_supply_base.dmm
@@ -979,7 +979,7 @@
/turf/floor/airless,
/area/lost_supply_base/common)
"cO" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/turf/floor/airless,
/area/lost_supply_base)
"cP" = (
diff --git a/maps/away/slavers/slavers_base.dmm b/maps/away/slavers/slavers_base.dmm
index f3c3c34d4e0..3eaae3dbb7e 100644
--- a/maps/away/slavers/slavers_base.dmm
+++ b/maps/away/slavers/slavers_base.dmm
@@ -442,7 +442,7 @@
/turf/floor/airless,
/area/slavers_base/cells)
"bv" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/turf/floor/airless,
/area/slavers_base/cells)
"bw" = (
@@ -465,7 +465,7 @@
/turf/floor/airless,
/area/slavers_base/powatm)
"bz" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 1
@@ -1306,12 +1306,12 @@
/turf/floor/airless,
/area/slavers_base/med)
"dE" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/obj/item/chems/food/liquidfood,
/turf/floor/airless,
/area/slavers_base/med)
"dF" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/turf/floor/airless,
/area/slavers_base/med)
"dG" = (
diff --git a/maps/away/smugglers/smugglers.dmm b/maps/away/smugglers/smugglers.dmm
index 9de3527ba05..6350c90c5d2 100644
--- a/maps/away/smugglers/smugglers.dmm
+++ b/maps/away/smugglers/smugglers.dmm
@@ -819,7 +819,7 @@
/turf/floor/tiled,
/area/smugglers/dorms)
"ci" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/obj/effect/decal/cleanable/cobweb2,
/obj/effect/decal/cleanable/dirt,
/turf/floor/tiled,
diff --git a/maps/away/unishi/unishi-3.dmm b/maps/away/unishi/unishi-3.dmm
index c2f2ddd1c94..33f16f02823 100644
--- a/maps/away/unishi/unishi-3.dmm
+++ b/maps/away/unishi/unishi-3.dmm
@@ -272,7 +272,7 @@
/turf/floor/tiled,
/area/unishi/living)
"aZ" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 8
},
@@ -282,7 +282,7 @@
/turf/floor/tiled,
/area/unishi/bridge)
"ba" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 8
},
@@ -1297,7 +1297,7 @@
/turf/floor/tiled/freezer,
/area/unishi/kitchen)
"dI" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/obj/machinery/light/small{
dir = 4;
icon_state = "bulb1"
diff --git a/maps/away/yacht/yacht.dmm b/maps/away/yacht/yacht.dmm
index 57cb7aa166f..9a9dcc80b7b 100644
--- a/maps/away/yacht/yacht.dmm
+++ b/maps/away/yacht/yacht.dmm
@@ -996,7 +996,7 @@
/turf/floor/plating,
/area/yacht/engine)
"dg" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/obj/effect/decal/cleanable/dirt,
/turf/floor/plating,
/area/yacht/engine)
diff --git a/maps/exodus/exodus-admin.dmm b/maps/exodus/exodus-admin.dmm
index 73a6ea89d62..b9f0a83ea47 100644
--- a/maps/exodus/exodus-admin.dmm
+++ b/maps/exodus/exodus-admin.dmm
@@ -1011,7 +1011,7 @@
/obj/structure/emergency_dispenser{
pixel_x = -28
},
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/floor/tiled/dark/monotile,
/area/shuttle/escape_shuttle)
@@ -2235,7 +2235,7 @@
},
/area/centcom/holding)
"cGo" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/obj/machinery/camera/network/crescent{
c_tag = "Shuttle West Storage";
dir = 4
diff --git a/maps/ministation/space.dmm b/maps/ministation/space.dmm
index 42f8eb5b5df..ec8b28cf017 100644
--- a/maps/ministation/space.dmm
+++ b/maps/ministation/space.dmm
@@ -321,7 +321,7 @@
/turf/floor/shuttle/yellow,
/area/shuttle/escape_shuttle)
"aX" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/turf/floor/shuttle/yellow,
/area/shuttle/escape_shuttle)
"aY" = (
diff --git a/maps/random_ruins/exoplanet_ruins/crashed_pod/crashed_pod.dmm b/maps/random_ruins/exoplanet_ruins/crashed_pod/crashed_pod.dmm
index 52104140d5d..58bb010573c 100644
--- a/maps/random_ruins/exoplanet_ruins/crashed_pod/crashed_pod.dmm
+++ b/maps/random_ruins/exoplanet_ruins/crashed_pod/crashed_pod.dmm
@@ -947,7 +947,7 @@
/turf/floor/tiled/techfloor/grid,
/area/map_template/crashed_pod)
"bY" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/obj/item/bag/trash,
/obj/item/bag/trash,
/obj/item/box/donkpockets,
diff --git a/maps/random_ruins/exoplanet_ruins/deserted_lab/deserted_lab.dmm b/maps/random_ruins/exoplanet_ruins/deserted_lab/deserted_lab.dmm
index eb58a431cf7..f88a3a7043a 100644
--- a/maps/random_ruins/exoplanet_ruins/deserted_lab/deserted_lab.dmm
+++ b/maps/random_ruins/exoplanet_ruins/deserted_lab/deserted_lab.dmm
@@ -83,7 +83,7 @@
/turf/template_noop,
/area/template_noop)
"as" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/obj/abstract/landmark/clear,
/turf/template_noop,
/area/template_noop)
diff --git a/maps/random_ruins/exoplanet_ruins/hut/hut.dmm b/maps/random_ruins/exoplanet_ruins/hut/hut.dmm
index a3bb1dbe12a..21fc564bfdd 100644
--- a/maps/random_ruins/exoplanet_ruins/hut/hut.dmm
+++ b/maps/random_ruins/exoplanet_ruins/hut/hut.dmm
@@ -31,7 +31,7 @@
/turf/floor/tiled/dark,
/area/template_noop)
"j" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/obj/effect/decal/cleanable/cobweb2,
/turf/floor/tiled/dark,
/area/template_noop)
diff --git a/maps/random_ruins/exoplanet_ruins/oldpod/oldpod.dmm b/maps/random_ruins/exoplanet_ruins/oldpod/oldpod.dmm
index 1562dd282a0..ed155d0788a 100644
--- a/maps/random_ruins/exoplanet_ruins/oldpod/oldpod.dmm
+++ b/maps/random_ruins/exoplanet_ruins/oldpod/oldpod.dmm
@@ -365,7 +365,7 @@
/obj/structure/window/reinforced{
dir = 1
},
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/obj/effect/decal/cleanable/dirt,
/obj/item/gun/projectile/zipgun,
/obj/item/gun/projectile/zipgun,
diff --git a/maps/random_ruins/exoplanet_ruins/playablecolony/colony.dmm b/maps/random_ruins/exoplanet_ruins/playablecolony/colony.dmm
index 7ab290325a1..a750e66c114 100644
--- a/maps/random_ruins/exoplanet_ruins/playablecolony/colony.dmm
+++ b/maps/random_ruins/exoplanet_ruins/playablecolony/colony.dmm
@@ -422,7 +422,7 @@
/turf/wall/r_wall,
/area/map_template/colony/airlock)
"bi" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/obj/effect/floor_decal/techfloor{
dir = 9
},
@@ -6654,7 +6654,7 @@
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 1
},
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/obj/effect/floor_decal/techfloor{
dir = 10
},
@@ -6666,7 +6666,7 @@
/turf/floor/tiled/techfloor,
/area/map_template/colony)
"mN" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/obj/effect/floor_decal/techfloor,
/obj/item/mre/menu10,
/obj/item/mre/menu9,
diff --git a/maps/tradeship/tradeship-2.dmm b/maps/tradeship/tradeship-2.dmm
index 13774ee3362..a456d9a86ee 100644
--- a/maps/tradeship/tradeship-2.dmm
+++ b/maps/tradeship/tradeship-2.dmm
@@ -4910,7 +4910,7 @@
dir = 4;
icon_state = "bulb1"
},
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/turf/floor/plating,
/area/ship/trade/shuttle/outgoing/engineering)
"qv" = (
diff --git a/mods/content/corporate/away_sites/lar_maria/lar_maria-1.dmm b/mods/content/corporate/away_sites/lar_maria/lar_maria-1.dmm
index 711c89fd8c5..204a6fe9433 100644
--- a/mods/content/corporate/away_sites/lar_maria/lar_maria-1.dmm
+++ b/mods/content/corporate/away_sites/lar_maria/lar_maria-1.dmm
@@ -603,7 +603,7 @@
/turf/floor/tiled,
/area/lar_maria/cells)
"bU" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/turf/floor/tiled,
/area/lar_maria/cells)
"bV" = (
@@ -975,7 +975,7 @@
/turf/floor/tiled,
/area/lar_maria/cells)
"cR" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/obj/machinery/alarm{
alarm_id = "xenobio1_alarm";
pixel_y = 24
@@ -1510,7 +1510,7 @@
/turf/floor/tiled,
/area/lar_maria/cells)
"es" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/turf/floor/plating,
/area/lar_maria/cells)
"et" = (
@@ -1913,7 +1913,7 @@
/turf/floor/tiled/white,
/area/lar_maria/vir_aux)
"fu" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/obj/machinery/power/apc{
dir = 4;
name = "east bump";
diff --git a/mods/content/government/away_sites/icarus/icarus-1.dmm b/mods/content/government/away_sites/icarus/icarus-1.dmm
index 5e8ae63d89a..00833acfc31 100644
--- a/mods/content/government/away_sites/icarus/icarus-1.dmm
+++ b/mods/content/government/away_sites/icarus/icarus-1.dmm
@@ -329,7 +329,7 @@
/turf/floor/tiled/freezer,
/area/icarus/vessel)
"bs" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/turf/floor/tiled/freezer,
/area/icarus/vessel)
"bt" = (
@@ -1883,7 +1883,7 @@
/turf/floor/plating,
/area/icarus/vessel)
"gc" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/turf/floor/plating,
/area/icarus/vessel)
"gd" = (
diff --git a/mods/content/government/ruins/ec_old_crash/ec_old_crash.dmm b/mods/content/government/ruins/ec_old_crash/ec_old_crash.dmm
index 17b27012cb4..457b5762167 100644
--- a/mods/content/government/ruins/ec_old_crash/ec_old_crash.dmm
+++ b/mods/content/government/ruins/ec_old_crash/ec_old_crash.dmm
@@ -255,7 +255,7 @@
/turf/floor/tiled/airless,
/area/map_template/ecship/crew)
"aP" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/obj/structure/handrail{
dir = 8
},
diff --git a/mods/content/psionics/system/psionics/mob/mob.dm b/mods/content/psionics/system/psionics/mob/mob.dm
index e51d5aeedae..e4b033d6f70 100644
--- a/mods/content/psionics/system/psionics/mob/mob.dm
+++ b/mods/content/psionics/system/psionics/mob/mob.dm
@@ -7,9 +7,6 @@
return
/mob/living/set_psi_rank(var/faculty, var/rank, var/take_larger, var/defer_update, var/temporary)
- if(!get_target_zone()) // Can't target a zone, so you can't really invoke psionics.
- to_chat(src, SPAN_NOTICE("You feel something strange brush against your mind... but your brain is not able to grasp it."))
- return
var/datum/ability_handler/psionics/psi = get_ability_handler(/datum/ability_handler/psionics)
var/current_rank = psi?.get_rank(faculty)
if(!current_rank && !rank)
diff --git a/mods/gamemodes/heist/heist_base.dmm b/mods/gamemodes/heist/heist_base.dmm
index 9d5c5150cf7..17ac1eec159 100644
--- a/mods/gamemodes/heist/heist_base.dmm
+++ b/mods/gamemodes/heist/heist_base.dmm
@@ -1488,7 +1488,7 @@
/turf/floor/plating,
/area/map_template/skipjack_station/start)
"dK" = (
-/obj/structure/closet/crate/freezer/rations,
+/obj/structure/closet/crate/plastic/rations,
/obj/item/clothing/mask/gas/cyborg,
/obj/item/box/donkpockets{
pixel_x = 3;
diff --git a/nano/css/layout_default.css b/nano/css/layout_default.css
index c9762874dec..3a7d875cfd5 100644
--- a/nano/css/layout_default.css
+++ b/nano/css/layout_default.css
@@ -1,6 +1,5 @@
body {
background: #121212 url(uiBackground.png) 50% 0 repeat;
- box-shadow: 0px 0px 5px 5px #000;
}
#uiWrapper {
diff --git a/scripts/server.sh b/scripts/server.sh
index 77b99788cef..b65b6b33d16 100755
--- a/scripts/server.sh
+++ b/scripts/server.sh
@@ -12,6 +12,7 @@
cd $SERVERDIR
cleanup() { # $1: server pid
+ cd $SERVERDIR
rm server_running
[[ $1 != "" ]] && kill -s SIGTERM $1
}
@@ -62,6 +63,7 @@ while [[ ! -e stopserver ]]; do
cp "$GITDIR/$DME.rsc" .
cp -r "$GITDIR/nano" . # Necessary for NanoUI
cp -r "$GITDIR/maps" . # Necessary for runtime submap loading
+ cp -r "$GITDIR/mods" . # Also necessary for runtime submap loading. TODO: a better solution
[[ ! -e btime.so && -e "$GITDIR/btime.so" ]] && cp "$GITDIR/btime.so" .
[[ ! -e .git/logs ]] && mkdir -p .git/logs
cp "$GITDIR/.git/HEAD" ./.git/HEAD