Added a ruins UT (#18290)

* sdfa

* fas

* the godness guides, the godness protects

* sadf

* sdf

* fsa

* exoplanets_ruins config for UT

* sdaf

* sdf

* curse upon me
This commit is contained in:
Fluffy
2024-01-30 11:00:23 +00:00
committed by GitHub
parent 45390466f7
commit 1da2f6e7b8
21 changed files with 450 additions and 294 deletions
+123
View File
@@ -799,3 +799,126 @@ jobs:
name: condensed-${{ matrix.map }}-${{ matrix.pod }}.log
path: ./data/logs/**/condensed.log
retention-days: 5
###########################################
################ TEST RUINS ###############
###########################################
ruins-tests:
name: Run Ruins Tests
runs-on: ubuntu-22.04
if: ${{ !(contains(github.event.head_commit.message, '[ci skip]')) && !(contains(github.event.head_commit.message, '[ut skip]'))}}
needs: [validate-structure, lint-spacemandmm, lint-opendream, lint-tgui, lint-misc]
services:
mariadb:
image: mariadb:10.11
ports:
- 3306
env:
MYSQL_USER: build
MYSQL_PASSWORD: build
MYSQL_DATABASE: game
MYSQL_ROOT_PASSWORD: root
concurrency:
group: unit-tests-ruins-tests-${{ matrix.map }}-${{ matrix.pod }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
strategy:
matrix:
map: [runtime]
pod: [ruins]
fail-fast: false
steps:
#This allows us to SSH into the pod, and it's only enabled if we're running in debug mode
- name: Setup TMATE session (Debug only)
uses: mxschmitt/action-tmate@v3
if: ${{ env.RUNNER_DEBUG_SHELL == true }}
with:
detached: true
timeout-minutes: 5
#Checkout the repository
- name: Checkout repository
uses: actions/checkout@v4
#Initialize the environment variables
- name: Set ENV variables
run: bash dependencies.sh
#Restores BYOND cache
- name: Restore BYOND cache
uses: actions/cache@v3
with:
path: ~/BYOND/*
key: ${{ runner.os }}-byond-${{ env.BYOND_MAJOR }}-${{ env.BYOND_MINOR }}
- name: Restore FlyWay cache
uses: actions/cache@v3
with:
path: ~/flyway
key: ${{ runner.os }}-flyway-${{ env.FLYWAY_BUILD }}
#Add the x86 architecture and update apt-get's local indexes
- name: Prepare OS Environtment
run: |
sudo dpkg --add-architecture i386
sudo apt-get update
#Installs the packages we need, from a cache
- name: Install OS Packages
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: gcc-multilib zlib1g-dev:i386 libssl-dev:i386 libgcc-s1:i386 libc6:i386
version: 1.1
#And natively, the packages that break from a cache
- name: Install OS Packages (Native)
run: |
sudo apt-get install libgcc-s1:i386 libssl-dev:i386
#Install flyway
- name: Install Flyway
run: |
tools/ci/install_flyway.sh
#Apply the database migration
- name: Apply Database Migrations (FlyWay)
env:
PORT: ${{ job.services.mariadb.ports[3306] }}
run: |
$HOME/flyway/flyway-$FLYWAY_BUILD/flyway migrate -user=root -password=root -url="jdbc:mariadb://localhost:$PORT/game" -validateMigrationNaming="true"
- name: Install BYOND & rust_g
run: |
source dependencies.sh
bash tools/ci/install_byond.sh
source $HOME/BYOND/byond/bin/byondsetup
bash tools/ci/install_rust_g.sh
- name: Configure pod, build and run
env:
PORT: ${{ job.services.mariadb.ports[3306] }}
POD: ${{ matrix.pod }}
run: |
export LD_LIBRARY_PATH=./:$PWD:$HOME/BYOND/byond/bin:/usr/local/lib:$LD_LIBRARY_PATH
scripts/dm.sh -DUNIT_TEST -M${{ matrix.map }} aurorastation.dme
grep "0 warnings" build_log.txt
echo -n "$POD" > config/unit_test/identifier.txt
cp config/example/* config/ && cp config/ut/config-db.txt config/config.txt && cp config/ut/dbconfig.txt config/dbconfig.txt
echo "PORT $PORT" >> config/dbconfig.txt
$HOME/BYOND/byond/bin/DreamDaemon aurorastation.dmb -invisible -trusted -core 2>&1 | tee log.txt
grep "All Unit Tests Passed" log.txt
(! grep "runtime error:" log.txt)
- name: Upload Condensed UT Log
uses: actions/upload-artifact@v3
if: failure() || ${{ runner.debug }}
with:
name: condensed-${{ matrix.map }}-${{ matrix.pod }}.log
path: ./data/logs/**/condensed.log
retention-days: 5
+1
View File
@@ -3520,6 +3520,7 @@
#include "code\unit_tests\overmap_tests.dm"
#include "code\unit_tests\power_tests.dm"
#include "code\unit_tests\recipe_tests.dm"
#include "code\unit_tests\ruins_tests.dm"
#include "code\unit_tests\shuttle_tests.dm"
#include "code\unit_tests\smart_token_bucket.dm"
#include "code\unit_tests\spawner_tests.dm"
+24 -10
View File
@@ -22,18 +22,27 @@
/// Unused?
var/player_cost = 0
/// This ruin can only spawn in the sectors in this list.
/// Should contain names of sectors as defined in `space_sectors.dm`.
/// This list is flattened so it can contain nested lists like, for example, `ALL_POSSIBLE_SECTORS`.
/**
* This ruin can only spawn in the sectors in this list
*
* Should contain names of sectors as defined in `code\__DEFINES\space_sectors.dm`
*
* This list is flattened so it can contain nested lists, eg `ALL_POSSIBLE_SECTORS`
*/
var/list/sectors = list()
/// Sectors in this list are removed from the `sectors` list.
/// Usage is same as of `sectors`.
/// Intention is to allow to, for example, set `sectors` to `ALL_POSSIBLE_SECTORS`,
/// but then disallow just one sector from that list.
/**
* Sectors in this list are removed from the `sectors` list
*
* Usage is same as of `sectors`
*
* It allows to, for example, set `sectors` to `ALL_POSSIBLE_SECTORS` and then disallow it in specific ones
*/
var/list/sectors_blacklist = list()
/// Prefix part of the path to the dmm maps.
var/prefix = null
/// A list of suffix parts of paths of the dmm maps.
/// Combined with prefix to get the actual path.
var/list/suffixes = null
@@ -41,9 +50,14 @@
/// Template flags for this ruin
template_flags = TEMPLATE_FLAG_NO_RUINS
var/list/force_ruins // Listed ruins are always spawned unless disallowed by flags.
var/list/allow_ruins // Listed ruins are added to the set of available spawns.
var/list/ban_ruins // Listed ruins are removed from the set of available spawns. Beats allowed.
///Listed ruins are always spawned unless disallowed by flags
var/list/force_ruins
//Listed ruins are added to the set of available spawns
var/list/allow_ruins
///Listed ruins are removed from the set of available spawns
var/list/ban_ruins
/datum/map_template/ruin/New()
// get the map paths
+1 -1
View File
@@ -506,7 +506,7 @@ pixel_x = 10;
return
var/icon_level = danger_level
if (alarm_area.atmosalm)
if(alarm_area?.atmosalm)
icon_level = max(icon_level, 1) //if there's an atmos alarm but everything is okay locally, no need to go past yellow
alarm_overlay = make_screen_overlay(icon, "alarm[icon_level]")
+8 -7
View File
@@ -88,10 +88,16 @@
var/refill_rate = 0.5 //Rate per process() tick mop refills itself
var/refill_reagent = /singleton/reagent/water //Determins what reagent to use for refilling, just in case someone wanted to make a HOLY MOP OF PURGING
/obj/item/mop/advanced/New()
..()
/obj/item/mop/advanced/Initialize()
. = ..()
START_PROCESSING(SSprocessing, src)
/obj/item/mop/advanced/Destroy()
STOP_PROCESSING(SSprocessing, src)
. = ..()
/obj/item/mop/advanced/attack_self(mob/user)
refill_enabled = !refill_enabled
if(refill_enabled)
@@ -108,8 +114,3 @@
/obj/item/mop/advanced/examine(mob/user)
. = ..()
to_chat(user, SPAN_NOTICE("\The condenser switch is set to <b>[refill_enabled ? "ON" : "OFF"]</b>."))
/obj/item/mop/advanced/Destroy()
if(refill_enabled)
STOP_PROCESSING(SSprocessing, src)
return ..()
+1 -1
View File
@@ -300,7 +300,7 @@ GLOBAL_LIST_EMPTY(total_active_bonfires)
/obj/structure/bonfire/proc/burn(var/mob/living/M, var/entered = FALSE)
if(safe)
return
if(M && prob((fuel / max_fuel) * 100))
if(istype(M) && prob((fuel / max_fuel) * 100))
if(entered)
to_chat(M, SPAN_WARNING("You are covered by fire and heat from entering \the [src]!"))
if(isanimal(M))
+11 -10
View File
@@ -62,20 +62,21 @@
else
add_overlay(get_flooring_overlay("[flooring.icon]_[flooring.icon_base]-edge-[direction]", "[flooring.icon_base]_edges", direction,(flooring.flags & TURF_HAS_EDGES)))
if(!isnull(broken) && (flooring.flags & TURF_CAN_BREAK))
if(flooring.has_damage_state)
add_overlay(get_damage_overlay("[flooring.icon_base]_broken[broken]", flooring_icon = flooring.icon, flooring_color = flooring.damage_uses_color ? flooring.color : null)) //example, material floors damage. like diamond_broken0.
else // EVERYTHING BELOW, SEE DAMAGE.DMI
add_overlay(get_damage_overlay("[broken_overlay ? "[broken_overlay]_" : ""]broken[broken]", BLEND_MULTIPLY, flooring_color = flooring.damage_uses_color ? flooring.color : null)) //example, broken overlay. carpet_broken0.
if(!isnull(burnt) && (flooring.flags & TURF_CAN_BURN))
if(flooring.has_burn_state)
add_overlay(get_damage_overlay("[flooring.icon_base]_burned[broken]", flooring_icon = flooring.icon, flooring_color = flooring.damage_uses_color ? flooring.color : null))
else
add_overlay(get_damage_overlay("[burned_overlay ? "[burned_overlay]_" : ""]burned[burnt]"))
if(decals && decals.len)
for(var/image/I in decals)
add_overlay(I)
if(!isnull(broken) && (flooring.flags & TURF_CAN_BREAK))
if(flooring.has_damage_state)
add_overlay(get_damage_overlay("[flooring.icon_base]_broken[broken]", flooring_icon = flooring.icon, flooring_color = flooring.damage_uses_color ? flooring.color : null)) //example, material floors damage. like diamond_broken0.
else // EVERYTHING BELOW, SEE DAMAGE.DMI
add_overlay(get_damage_overlay("[broken_overlay ? "[broken_overlay]_" : ""]broken[broken]", BLEND_MULTIPLY, flooring_color = flooring.damage_uses_color ? flooring.color : null)) //example, broken overlay. carpet_broken0.
if(!isnull(burnt) && (flooring.flags & TURF_CAN_BURN))
if(flooring.has_burn_state)
add_overlay(get_damage_overlay("[flooring.icon_base]_burned[broken]", flooring_icon = flooring.icon, flooring_color = flooring.damage_uses_color ? flooring.color : null))
else
add_overlay(get_damage_overlay("[burned_overlay ? "[burned_overlay]_" : ""]burned[burnt]"))
if(update_neighbors)
for(var/turf/simulated/floor/F in RANGE_TURFS(1, src))
+2
View File
@@ -41,6 +41,8 @@
return bounds
/datum/map_template/proc/load_new_z(var/no_changeturf = TRUE)
RETURN_TYPE(/turf)
var/x = round((world.maxx - width)/2)
var/y = round((world.maxy - height)/2)
var/initial_z = world.maxz + 1
@@ -27,6 +27,8 @@
set_light(MINIMUM_USEFUL_LIGHT_RANGE, E.lightlevel, COLOR_WHITE)
if(E.planetary_area && istype(loc, world.area))
ChangeArea(src, E.planetary_area)
else
log_module_exoplanets("Simulated exoplanet turf NAME: [src.name] LOC [src.x]-[src.y]-[src.z] did not find any exoplanet to copy info from!")
..()
/turf/simulated/floor/exoplanet/attackby(obj/item/C, mob/user)
+40 -2
View File
@@ -57,10 +57,15 @@
var/features_budget = 4
var/list/possible_features = list()
var/list/spawned_features
/// List of ruin types that can be chosen from; supercedes ruin tags system, ignores TEMPLATE_FLAG_RUIN_STARTS_DISALLOWED
var/list/ruin_type_whitelist
// Ruin tags: used to dynamically select what ruins are valid for this exoplanet, if any
// See code/__defines/ruin_tags.dm
/**
* Ruin tags: used to dynamically select what ruins are valid for this exoplanet, if any
*
* See `code/__DEFINES/ruin_tags.dm`
*/
var/ruin_planet_type = PLANET_BARREN
var/ruin_allowed_tags = RUIN_ALL_TAGS
@@ -107,12 +112,44 @@
if(LAZYLEN(possible_themes))
var/datum/exoplanet_theme/T = pick(possible_themes)
theme = new T
#if defined(UNIT_TEST)
///If we have shown one warning for the exoplanets_ruins config preventing us from loading ruins
var/shown_warning_for_exoplanets_ruins_config = FALSE
#endif //UNIT_TEST
if(ruin_type_whitelist)
for(var/T in ruin_type_whitelist)
//If the exoplanet_ruins setting in the UT is FALSE, do not generate ruins
//yes we could skip the list traversing but it would be more shitcode to do that, since it's not that expensive, fuck it
#if defined(UNIT_TEST)
if((SSunit_tests_config.config["exoplanets_ruins"] == FALSE))
if(!shown_warning_for_exoplanets_ruins_config)
LOG_GITHUB_WARNING("Not spawning ruins in 'ruin_type_whitelist' for [src.name] because 'exoplanets_ruins' is FALSE in the UT config")
shown_warning_for_exoplanets_ruins_config = TRUE
LOG_GITHUB_DEBUG("Ruin [T] in 'ruin_type_whitelist' for [src.name] not spawned because 'exoplanets_ruins' is FALSE in the UT config")
continue
#endif //UNIT_TEST
var/datum/map_template/ruin/exoplanet/ruin = T
possible_features += new ruin
else
for(var/T in subtypesof(/datum/map_template/ruin/exoplanet))
//If the exoplanet_ruins setting in the UT is FALSE or the type is not listed, do not generate ruins
//If it's set to TRUE, we want the normal behavior, otherwise check if the subtype is present in the list
#if defined(UNIT_TEST)
if((SSunit_tests_config.config["exoplanets_ruins"] == FALSE) || ((SSunit_tests_config.config["exoplanets_ruins"] != TRUE) && !(T in SSunit_tests_config.config["exoplanets_ruins"])))
if(!shown_warning_for_exoplanets_ruins_config && (SSunit_tests_config.config["exoplanets_ruins"] == FALSE))
LOG_GITHUB_WARNING("Not spawning ruins for [src.name] because 'exoplanets_ruins' is FALSE in the UT config")
shown_warning_for_exoplanets_ruins_config = TRUE
LOG_GITHUB_DEBUG("Ruin [T] for [src.name] not spawned because either 'exoplanets_ruins' is FALSE or it does not contain it in the UT config")
continue
#endif //UNIT_TEST
var/datum/map_template/ruin/exoplanet/ruin = T
if((initial(ruin.template_flags) & TEMPLATE_FLAG_RUIN_STARTS_DISALLOWED))
continue
@@ -122,6 +159,7 @@
if(filtered_tags != initial(ruin.ruin_tags))
continue
possible_features += new ruin
..()
/obj/effect/overmap/visitable/sector/exoplanet/proc/build_level()
+47
View File
@@ -0,0 +1,47 @@
/*
* Ruins tests
* Basically loads the ruins to then check them
*/
/datum/unit_test/ruins_test
name = "Ruins Test"
groups = list("ruins")
priority = 100 //Have to load the ruins first if you want to check them later
/datum/unit_test/ruins_test/start_test()
return UNIT_TEST_SKIPPED
/datum/unit_test/ruins_test/exoplanet_ruins
name = "Exoplanet Ruins"
/datum/unit_test/ruins_test/exoplanet_ruins/start_test()
//Generate a planet WITH VACUUM ATMOS to use as a baseline
var/obj/effect/overmap/visitable/sector/exoplanet/barren/asteroid/test_exoplanet = new()
test_exoplanet.generate_atmosphere()
TEST_ASSERT(length(test_exoplanet.map_z), "The test exoplanet somehow doesn't have any level!")
//Set the exoplanet like it exists on the zlevel, so that exoplanet turfs can copy the atmosphere from and not cause
//active edges with the vacuum of space, since the exoplanet is without atmos as per above
for(var/zlevel in test_exoplanet.map_z[length(test_exoplanet.map_z)] to 1024) //I pray to the lord we won't ever have 1024 ruins
GLOB.map_sectors["[zlevel]"] = test_exoplanet
for(var/ruin in subtypesof(/datum/map_template/ruin/exoplanet))
var/datum/map_template/ruin/exoplanet/tested_ruin = new ruin()
var/turf/center_ruin = tested_ruin.load_new_z(FALSE)
if(!tested_ruin)
TEST_FAIL("Failed to load ruin [ruin]!")
return UNIT_TEST_FAILED
var/loaded_zlevel = null
if(center_ruin)
loaded_zlevel = center_ruin.z
else
TEST_WARN("Ruin [tested_ruin.name] didn't load in a Z level, or it could not be located, or it was not returned by the loader")
loaded_zlevel = "Unknown, read above!"
TEST_DEBUG("Loaded ruin [tested_ruin.name] in Z [loaded_zlevel]")
TEST_PASS("All the ruins in [src.name] loaded successfully!")
return UNIT_TEST_PASSED
+2 -1
View File
@@ -139,13 +139,14 @@ SUBSYSTEM_DEF(unit_tests)
for(var/group in D.groups)
if((group in SSunit_tests_config.config["unit_test_groups"]) || (SSunit_tests_config.config["unit_test_groups"][1] == "*"))
queue += D
BINARY_INSERT_PROC_COMPARE(D, queue, /datum/unit_test, D, compare_priority, COMPARE_KEY)
break
SSunit_tests_config.UT.notice("[queue.len] unit tests loaded.", __FILE__, __LINE__)
return SS_INIT_SUCCESS
/datum/controller/subsystem/unit_tests/proc/start_game()
if (SSticker.current_state == GAME_STATE_PREGAME)
SSticker.current_state = GAME_STATE_SETTING_UP
+9
View File
@@ -52,6 +52,9 @@ var/ascii_reset = "[ascii_esc]\[0m"
///A list of strings, each of which represents a group which this UT belongs to, the UT pods will only run UTs that are in their list
var/list/groups = list()
///The priority of the test, the larger it is the later it fires
var/priority = 1000
/*
* Log levels used to prettify correctly, only defined in this file (aka undef'd at the end)
@@ -140,6 +143,12 @@ var/ascii_reset = "[ascii_esc]\[0m"
fail("No check results proc")
return 1
/**
* Used to compare the priority of the tests to order them according to the `priority` var,
* so that tests with a lower value runs first
*/
/datum/unit_test/proc/compare_priority(datum/unit_test/comparedto)
return cmp_numeric_dsc(src.priority, comparedto.priority)
/proc/load_unit_test_changes()
/*
+3 -2
View File
@@ -206,8 +206,9 @@
return UNIT_TEST_PASSED
/**Something went wrong
* compose a message and fail the test, let the poor soul try to figure out where the issue is, assuming it's not intermittent
/*
Something went wrong
compose a message and fail the test, let the poor soul try to figure out where the issue is, assuming it's not intermittent
*/
var/fail_message = "[SSair.active_edges.len] edges active at round-start!\n"
for(var/connection_edge/E in SSair.active_edges)
+18 -6
View File
@@ -1,31 +1,43 @@
{
"generic":{
"unit_test_groups":["generic", "mob", "machinery"],
"map_template_unit_test_groups":[false]
"map_template_unit_test_groups":[false],
"exoplanets_ruins":true
},
"create_and_destroy":{
"unit_test_groups":["create and destroy"],
"map_template_unit_test_groups":[false]
"map_template_unit_test_groups":[false],
"exoplanets_ruins":true
},
"maptest":{
"unit_test_groups":["map"],
"map_template_unit_test_groups":["*"]
"map_template_unit_test_groups":["*"],
"exoplanets_ruins":true
},
"ruins":{
"unit_test_groups":["ruins", "map"],
"map_template_unit_test_groups":[false],
"exoplanets_ruins":false
},
"awaysites-1":{
"unit_test_groups":["map"],
"map_template_unit_test_groups":[1]
"map_template_unit_test_groups":[1],
"exoplanets_ruins":true
},
"awaysites-2":{
"unit_test_groups":["map"],
"map_template_unit_test_groups":[2]
"map_template_unit_test_groups":[2],
"exoplanets_ruins":true
},
"awaysites-3":{
"unit_test_groups":["map"],
"map_template_unit_test_groups":[3]
"map_template_unit_test_groups":[3],
"exoplanets_ruins":true
}
}
@@ -0,0 +1,44 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# wip (For works in progress)
# tweak
# soundadd
# sounddel
# rscadd (general adding of nice things)
# rscdel (general deleting of nice things)
# imageadd
# imagedel
# maptweak
# spellcheck (typo fixes)
# experiment
# balance
# admin
# backend
# security
# refactor
#################################
# Your name.
author: FluffyGhost
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True
# Any changes you've made. See valid prefix list above.
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
# SCREW THIS UP AND IT WON'T WORK.
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
changes:
- rscadd: "Added a ruins UT."
- backend: "UTs now have a priority config to decide when they run."
- bugfix: "Fixed various bugs that popped out during tests."
- maptweak: "Reworked some ruins maps to not have active edges at roundstart."
@@ -524,13 +524,6 @@
/obj/structure/flora/ausbushes/stalkybush,
/turf/simulated/floor/exoplanet/konyang,
/area/space)
"jo" = (
/obj/structure/ladder/mining{
pixel_y = 16
},
/obj/random/dirt_75,
/turf/simulated/floor/exoplanet/dirt_konyang/cave,
/area/hivebot_burrows_1)
"jt" = (
/obj/structure/rope_post{
dir = 1
@@ -647,18 +640,6 @@
/obj/random/dirt_75,
/turf/simulated/floor/exoplanet/dirt_konyang,
/area/space)
"lT" = (
/obj/structure/lattice/catwalk/indoor/planks{
layer = 2.0;
name = "duckboard"
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
/obj/structure/ladder/mining{
pixel_y = 16
},
/turf/simulated/floor/exoplanet/dirt_konyang/cave,
/area/hivebot_burrows_1)
"lX" = (
/obj/random/dirt_75,
/obj/random/dirt_75,
@@ -695,14 +676,6 @@
/obj/effect/landmark/corpse/miner/hivebot_burrows,
/turf/simulated/floor/exoplanet/dirt_konyang,
/area/space)
"me" = (
/obj/random/dirt_75,
/obj/random/dirt_75,
/obj/structure/ladder/mining{
pixel_y = 16
},
/turf/simulated/floor/exoplanet/basalt/cave,
/area/hivebot_burrows_1)
"my" = (
/obj/random/dirt_75,
/obj/effect/decal/cleanable/generic,
@@ -2012,9 +1985,6 @@
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
/obj/structure/ladder/mining{
pixel_y = 16
},
/obj/structure/rope_post{
dir = 4
},
@@ -2079,18 +2049,6 @@
},
/turf/simulated/floor/exoplanet/barren/cave,
/area/hivebot_burrows_1)
"No" = (
/obj/structure/ladder/mining{
pixel_y = 16
},
/obj/structure/lattice/catwalk/indoor/planks{
layer = 2.0;
name = "duckboard"
},
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/exoplanet/dirt_konyang/cave,
/area/hivebot_burrows_1)
"NB" = (
/obj/item/device/radio,
/obj/structure/lattice/catwalk/indoor/planks{
@@ -2742,9 +2700,6 @@
/turf/simulated/floor/exoplanet/dirt_konyang/cave,
/area/hivebot_burrows_1)
"ZH" = (
/obj/structure/ladder/mining{
pixel_y = 16
},
/obj/random/dirt_75,
/obj/item/trash/broken_electronics{
pixel_x = -4;
@@ -3946,7 +3901,7 @@ eb
Cn
xf
xf
No
hb
Wd
ED
zN
@@ -3976,7 +3931,7 @@ Gh
no
xf
xf
me
Wd
xf
xf
xf
@@ -4004,7 +3959,7 @@ De
zN
xf
xf
lT
hb
YM
CH
xf
@@ -4534,7 +4489,7 @@ KN
xf
xf
xf
jo
NY
Zf
ac
xe
@@ -15,6 +15,20 @@
dir = 1
},
/area/exoplanet)
"rx" = (
/obj/machinery/door/airlock/hatch{
name = "Cockpit";
dir = 4
},
/turf/simulated/floor/tiled/dark,
/area/exoplanet)
"DP" = (
/obj/machinery/door/airlock/hatch{
name = "Cockpit";
dir = 1
},
/turf/simulated/floor/tiled/dark,
/area/exoplanet)
"GU" = (
/mob/living/simple_animal/hostile/retaliate/pra_exploration_drone,
/turf/simulated/floor/tiled/dark,
@@ -27,16 +41,36 @@
(1,1,1) = {"
aX
ab
aX
rx
aX
aX
"}
(2,1,1) = {"
aX
aX
ab
aX
aX
"}
(3,1,1) = {"
DP
pD
GU
br
DP
"}
(3,1,1) = {"
(4,1,1) = {"
aX
aX
HX
aX
aX
"}
(5,1,1) = {"
aX
aX
rx
aX
aX
"}
@@ -771,18 +771,6 @@
temperature = 278.15
},
/area/raskara_okon/mess_hall)
"jY" = (
/obj/effect/floor_decal/corner/red{
dir = 10
},
/obj/structure/cable/green,
/obj/machinery/power/apc/high/south{
req_access = list(209)
},
/turf/simulated/floor/tiled/dark{
temperature = 278.15
},
/area/raskara_okon/entry)
"kd" = (
/obj/machinery/door/airlock/engineering{
req_access = list(209);
@@ -994,14 +982,6 @@
temperature = 278.15
},
/area/raskara_okon/entry)
"md" = (
/obj/effect/floor_decal/corner/red{
dir = 5
},
/turf/simulated/floor/tiled/dark{
temperature = 278.15
},
/area/raskara_okon/entry)
"mf" = (
/obj/structure/closet/excavation,
/obj/effect/floor_decal/corner/mauve/full{
@@ -1032,7 +1012,7 @@
/obj/effect/floor_decal/industrial/warning/cee{
dir = 1
},
/turf/simulated/floor/airless,
/turf/template_noop,
/area/raskara_okon/mining)
"mF" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/cyan,
@@ -1260,7 +1240,7 @@
id = "okon_base_belt"
},
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/airless,
/turf/template_noop,
/area/raskara_okon/mining)
"pY" = (
/obj/structure/table/steel,
@@ -2264,11 +2244,6 @@
d2 = 8;
icon_state = "4-8"
},
/obj/structure/cable/green{
d1 = 2;
d2 = 8;
icon_state = "2-8"
},
/obj/structure/sign/flag/pra{
pixel_y = 32
},
@@ -2594,7 +2569,7 @@
},
/area/raskara_okon/eva)
"HX" = (
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/template_noop,
/area/exoplanet/barren/raskara)
"Ic" = (
/obj/structure/closet/secure_closet/freezer/kitchen{
@@ -4376,7 +4351,7 @@ gs
wj
Re
gs
md
tl
Xv
Oc
ix
@@ -4478,7 +4453,7 @@ AS
jg
Ph
gs
md
tl
Xv
Oc
hj
@@ -4649,7 +4624,7 @@ Ay
Mu
Av
Co
jY
Xv
Oc
Oc
Oc
@@ -6,10 +6,10 @@
name = "altar"
},
/obj/item/material/knife/raskariim,
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/template_noop,
/area/exoplanet/barren/raskara)
"f" = (
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/template_noop,
/area/exoplanet/barren/raskara)
(1,1,1) = {"
@@ -4,35 +4,27 @@
dir = 1
},
/obj/structure/grille/broken,
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"aD" = (
/obj/machinery/floodlight{
dir = 8
},
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"aX" = (
/obj/structure/table/standard,
/obj/item/device/flashlight/lamp,
/turf/simulated/floor/tiled/dark{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"br" = (
/obj/structure/lattice/catwalk/indoor/grate,
/obj/structure/trash_pile,
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"bA" = (
/obj/effect/decal/cleanable/blood/oil/streak,
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/template_noop,
/area/exoplanet/barren/raskara)
"dg" = (
/obj/structure/railing/mapped,
@@ -48,14 +40,12 @@
/obj/machinery/conveyor{
dir = 4
},
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"eU" = (
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/structure/trash_pile,
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"fb" = (
/obj/structure/railing/mapped{
@@ -64,9 +54,7 @@
/obj/structure/sign/vacuum{
pixel_x = -32
},
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"gs" = (
/obj/random/beret,
@@ -77,19 +65,17 @@
/area/exoplanet/barren/raskara)
"iS" = (
/obj/structure/lattice/catwalk,
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"kL" = (
/obj/structure/table/standard,
/obj/item/toy/desk/fan,
/obj/structure/extinguisher_cabinet/west,
/turf/simulated/floor/carpet/art{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"me" = (
/obj/random/hoodie,
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/template_noop,
/area/exoplanet/barren/raskara)
"mF" = (
/obj/effect/floor_decal/industrial/warning{
@@ -99,40 +85,34 @@
/obj/machinery/conveyor{
dir = 4
},
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"mL" = (
/obj/structure/closet/crate/loot,
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/template_noop,
/area/exoplanet/barren/raskara)
"oE" = (
/obj/structure/lattice/catwalk/indoor/grate,
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"pt" = (
/obj/machinery/atmospherics/unary/engine,
/turf/simulated/floor{
temperature = 278.15
},
/obj/structure/lattice,
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"pD" = (
/obj/structure/lattice/catwalk/indoor/grate,
/obj/structure/railing/mapped,
/obj/structure/trash_pile,
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"pL" = (
/obj/effect/decal/cleanable/blood/splatter,
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/template_noop,
/area/exoplanet/barren/raskara)
"qh" = (
/obj/machinery/atmospherics/unary/engine,
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/template_noop,
/area/exoplanet/barren/raskara)
"qm" = (
/obj/machinery/door/airlock/hatch{
@@ -142,24 +122,18 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/door/firedoor,
/turf/simulated/floor/tiled/dark{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"qr" = (
/obj/machinery/door/airlock/external{
dir = 4
},
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"tj" = (
/obj/item/material/shard,
/obj/item/arrow/rod,
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"tF" = (
/obj/structure/railing/mapped{
@@ -167,25 +141,19 @@
},
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/structure/trash_pile,
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"vh" = (
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/blood/splatter,
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"vp" = (
/obj/machinery/portable_atmospherics/hydroponics,
/obj/effect/decal/cleanable/dirt,
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"vA" = (
/obj/effect/decal/cleanable/cobweb,
@@ -193,37 +161,26 @@
/obj/item/storage/toolbox/electrical,
/obj/item/storage/toolbox/syndicate,
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"vD" = (
/obj/machinery/portable_atmospherics/canister/empty/oxygen,
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/template_noop,
/area/exoplanet/barren/raskara)
"yd" = (
/obj/effect/floor_decal/industrial/warning{
dir = 1
},
/obj/effect/floor_decal/industrial/warning,
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"yB" = (
/obj/structure/lattice/catwalk/indoor/grate,
/turf/simulated/floor{
temperature = 278.15
},
/area/exoplanet/barren/raskara)
"yR" = (
/turf/simulated/floor/tiled/dark{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"Ag" = (
/obj/effect/decal/remains/xeno,
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/template_noop,
/area/exoplanet/barren/raskara)
"Aq" = (
/obj/effect/decal/cleanable/blood/oil/streak,
@@ -232,42 +189,27 @@
"Dy" = (
/obj/structure/lattice/catwalk/indoor/grate,
/obj/structure/railing/mapped,
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"DP" = (
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor{
temperature = 278.15
},
/area/exoplanet/barren/raskara)
"EM" = (
/obj/structure/closet/crate/loot,
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"FZ" = (
/obj/structure/trash_pile,
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/template_noop,
/area/exoplanet/barren/raskara)
"Gn" = (
/turf/unsimulated/wall/fakepdoor,
/area/exoplanet/barren/raskara)
"GU" = (
/turf/simulated/floor/carpet/art{
temperature = 278.15
},
/area/exoplanet/barren/raskara)
"Hv" = (
/obj/structure/closet/crate/loot,
/obj/effect/decal/cleanable/dirt,
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"HX" = (
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/template_noop,
/area/exoplanet/barren/raskara)
"Ic" = (
/obj/structure/closet/crate,
@@ -283,52 +225,40 @@
/obj/item/clothing/accessory/tajaran,
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"Iu" = (
/obj/structure/lattice,
/obj/structure/closet/crate/freezer,
/obj/item/storage/field_ration/dpra,
/obj/item/storage/field_ration/dpra,
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/template_noop,
/area/exoplanet/barren/raskara)
"Jw" = (
/obj/structure/computerframe,
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/carpet/art{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"JQ" = (
/obj/structure/reagent_dispensers/keg/mead,
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"Ky" = (
/obj/structure/bed/stool/chair/shuttle,
/turf/simulated/floor/carpet/art{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"LM" = (
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/random/junk,
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"LP" = (
/obj/structure/lattice/catwalk/indoor/grate,
/obj/machinery/light/small{
dir = 8
},
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"Mf" = (
/turf/simulated/wall/shuttle/raider,
@@ -336,40 +266,18 @@
"NL" = (
/obj/structure/lattice/catwalk/indoor/grate,
/obj/random/junk,
/turf/simulated/floor{
temperature = 278.15
},
/area/exoplanet/barren/raskara)
"Ol" = (
/obj/effect/floor_decal/industrial/warning{
dir = 1
},
/obj/effect/floor_decal/industrial/warning,
/obj/machinery/conveyor{
dir = 4
},
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"Pj" = (
/obj/structure/lattice/catwalk/indoor/grate,
/obj/structure/lattice/catwalk/indoor/grate,
/obj/structure/railing/mapped{
dir = 1
},
/turf/simulated/floor{
temperature = 278.15
},
/area/exoplanet/barren/raskara)
"Re" = (
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"RF" = (
/obj/item/arrow/rod,
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/template_noop,
/area/exoplanet/barren/raskara)
"Sg" = (
/obj/structure/window/reinforced{
@@ -380,65 +288,55 @@
},
/obj/structure/window/reinforced,
/obj/structure/grille,
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"Tl" = (
/obj/random/bomb_supply,
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/template_noop,
/area/exoplanet/barren/raskara)
"TG" = (
/obj/random/booze,
/turf/simulated/floor/airless,
/turf/template_noop,
/area/exoplanet/barren/raskara)
"UC" = (
/obj/structure/computerframe,
/turf/simulated/floor/carpet/art{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"WR" = (
/obj/effect/decal/cleanable/blood/splatter,
/obj/structure/lattice,
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/template_noop,
/area/exoplanet/barren/raskara)
"Xd" = (
/obj/random/junk,
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/template_noop,
/area/exoplanet/barren/raskara)
"Xk" = (
/obj/item/material/shard/wood,
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/carpet/art{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"XF" = (
/obj/structure/lattice,
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/template_noop,
/area/exoplanet/barren/raskara)
"YE" = (
/obj/random/gift,
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/template_noop,
/area/exoplanet/barren/raskara)
"YN" = (
/obj/item/material/shard,
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/tiled/dark{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"YV" = (
/obj/structure/lattice/catwalk/indoor/grate,
/obj/item/material/shard/wood,
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
"Zm" = (
/obj/item/material/shard/wood,
/turf/simulated/floor/exoplanet/barren/raskara,
/turf/template_noop,
/area/exoplanet/barren/raskara)
"ZI" = (
/obj/structure/closet/crate,
@@ -455,9 +353,7 @@
/obj/random/contraband,
/obj/item/material/knife/raskariim,
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor{
temperature = 278.15
},
/turf/simulated/floor/airless,
/area/exoplanet/barren/raskara)
(1,1,1) = {"
@@ -668,7 +564,7 @@ HX
HX
Mf
Mf
Ol
mF
fb
DP
Mf
@@ -702,7 +598,7 @@ HX
HX
Mf
pD
Ol
mF
Pj
yB
LP
@@ -853,7 +749,7 @@ bA
HX
HX
XF
XF
pt
gz
Mf
HX
@@ -876,7 +772,7 @@ HX
Mf
Mf
Mf
Re
gz
Mf
Mf
HX
@@ -949,7 +845,7 @@ HX
HX
HX
HX
EM
mL
HX
HX
pL
@@ -963,7 +859,7 @@ HX
HX
HX
qm
yR
gz
Ky
Jw
ab
@@ -999,7 +895,7 @@ XF
Mf
aX
Xk
GU
gz
tj
HX
HX
@@ -1075,7 +971,7 @@ HX
(19,1,1) = {"
HX
HX
pt
qh
HX
HX
HX
@@ -1109,7 +1005,7 @@ HX
(20,1,1) = {"
HX
HX
pt
qh
HX
HX
bA