mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-11 10:11:09 +00:00
* Fixes stacking machine and adds a drone dispenser to Tram as well as the required map items list (#75653) ## About The Pull Request Fixes #75611 Fixes #75609 This makes a small change to a few tiles outside of Science. There were three turfs that were never actually linked to any of the modular maintenance areas, so they just sat there as dirt turfs with nothing on them. I changed them to metal so they'll fit with the surroundings in each template and put the fab there, since we want it to show up in all three of them. I can go back and add that area to each of the templates instead if MMMiracles thinks that's a better choice, but I feel like this works fine. Also adds the drone dispenser to required map items so unit tests will fail if they're not present. ## Why It's Good For The Game Map consistency and bug fixes are good. ## Changelog 🆑 fix: Adds a drone dispenser to Tramstation. fix: The stacking machine on Tramstation no longer has incorrect input and output directions at roundstart. config: Drone dispensers are now listed as required map items for passing unit tests. If one is not present on your map, it will fail the test. /🆑 * Fixes stacking machine and adds a drone dispenser to Tram as well as the required map items list --------- Co-authored-by: TheVekter <TheVekter@users.noreply.github.com> Co-authored-by: Jolly-66 <70232195+Jolly-66@users.noreply.github.com>
64 lines
2.7 KiB
Plaintext
64 lines
2.7 KiB
Plaintext
/**
|
|
* Tests that all expected items are mapped in roundstart.
|
|
*
|
|
* How to add an item to this test:
|
|
* - Add the typepath(s) to setup_expected_types
|
|
* - In the type's initialize, REGISTER_REQUIRED_MAP_ITEM() a minimum and maximum
|
|
*/
|
|
/datum/unit_test/required_map_items
|
|
/// A list of all typepaths that we expect to be in the required items list
|
|
var/list/expected_types = list()
|
|
|
|
/// Used to fill the expected types list with all the types we look for on the map.
|
|
/// This list will just be full of typepaths that we expect.
|
|
/// More detailed information about each item (mainly, how much of each should exist) is set on a per item basis
|
|
/datum/unit_test/required_map_items/proc/setup_expected_types()
|
|
expected_types += subtypesof(/obj/item/stamp/head)
|
|
expected_types += subtypesof(/obj/machinery/computer/department_orders)
|
|
expected_types += /obj/machinery/computer/communications
|
|
expected_types += /mob/living/carbon/human/species/monkey/punpun
|
|
expected_types += /mob/living/basic/pet/dog/corgi/ian
|
|
expected_types += /mob/living/simple_animal/parrot/poly
|
|
expected_types += /obj/machinery/drone_dispenser
|
|
|
|
/datum/unit_test/required_map_items/Run()
|
|
setup_expected_types()
|
|
|
|
var/list/required_map_items = GLOB.required_map_items.Copy()
|
|
for(var/got_type in expected_types)
|
|
var/datum/required_item/item = required_map_items[got_type]
|
|
var/items_found = item?.total_amount || 0
|
|
required_map_items -= got_type
|
|
if(items_found <= 0)
|
|
TEST_FAIL("Item [got_type] was not found, but is expected to be mapped in on mapload!")
|
|
continue
|
|
|
|
if(items_found < item.minimum_amount)
|
|
TEST_FAIL("Item [got_type] should have at least [item.minimum_amount] mapped in but only had [items_found] on mapload!")
|
|
continue
|
|
|
|
if(items_found > item.maximum_amount)
|
|
TEST_FAIL("Item [got_type] should have at most [item.maximum_amount] mapped in but had [items_found] on mapload!")
|
|
continue
|
|
|
|
// This primarily serves as a reminder to include the typepath in the expected types list above.
|
|
// However we can easily delete this line in the future if it runs into false positives.
|
|
TEST_ASSERT(length(required_map_items) == 0, "The following paths were found in required map items, but weren't checked: [english_list(required_map_items)]")
|
|
|
|
/// Datum for tracking required map items
|
|
/datum/required_item
|
|
/// Type (exact) being tracked
|
|
var/tracked_type
|
|
/// How many exist in the world
|
|
var/total_amount = 0
|
|
/// Min. amount of this type that should exist roundstart (inclusive)
|
|
var/minimum_amount = 1
|
|
/// Max. amount of this type that should exist roundstart (inclusive)
|
|
var/maximum_amount = 1
|
|
|
|
/datum/required_item/New(tracked_type, minimum_amount = 1, maximum_amount = 1)
|
|
src.tracked_type = tracked_type
|
|
src.minimum_amount = minimum_amount
|
|
src.maximum_amount = maximum_amount
|
|
total_amount += 1
|