Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
204 commits
Select commit Hold shift + click to select a range
e040d24
Add 'in wallet' abstract inventory slot
noelle-lavenza Nov 16, 2025
1989ef8
Allow quick-equip to place items in backpacks/wallets
noelle-lavenza Nov 18, 2025
c1c4c4f
Porting quadbikes from Polaris.
MistakeNot4892 Dec 26, 2025
88d07f3
Porting cliffs and mines from Polaris.
MistakeNot4892 Dec 28, 2025
a4a86a0
Move 'helping hands' out of augments module
out-of-phaze Dec 28, 2025
fd05aa7
Move augments into a modpack
out-of-phaze Dec 28, 2025
e563b3f
Make power debug objects not use the power subtype
out-of-phaze Dec 21, 2025
fcf694b
Clean up cable/power helper procs
out-of-phaze Dec 21, 2025
9936c12
Clean up length checks in powernet code
out-of-phaze Dec 21, 2025
bfbca92
Avoid unnecessary list allocation in powernet code
out-of-phaze Dec 21, 2025
aad616b
Add support for saltwater turfs
out-of-phaze Jan 21, 2025
c999bdb
Add flavor strings to flooded turfs
out-of-phaze Sep 26, 2025
eecb58c
Readd missing update_turf_strings call
out-of-phaze Sep 26, 2025
89f529a
Fix get_fluid_name() for flooded turfs
out-of-phaze Sep 26, 2025
75af494
Fix base rock and path turfs runtiming in init
out-of-phaze Sep 26, 2025
d786fd1
Make maint_all_access defined on map
out-of-phaze Dec 28, 2025
e3b546d
Make keycard auth device use decls
out-of-phaze Dec 28, 2025
8867199
Removes now-unneeded drake marking override.
MistakeNot4892 Dec 31, 2025
b4f6be0
Add map migration
out-of-phaze Dec 30, 2025
092d7c1
Prevents tile removal sound on non-tile floor removal.
MistakeNot4892 Dec 31, 2025
afcafb9
Automatic changelog generation [ci skip]
NebulaSS13Bot Dec 31, 2025
48d37ba
Fixes double-mult issue with natural basalt wall ramps.
MistakeNot4892 Dec 31, 2025
68a0063
Tweaking foley for some material dropped sounds.
MistakeNot4892 Dec 31, 2025
1612802
Prevent nulls in inventory slot priority list
noelle-lavenza Dec 31, 2025
b64f9a2
Digging a ramp now opens the turf above.
MistakeNot4892 Dec 31, 2025
a867261
Cleans up some ramp code.
MistakeNot4892 Dec 31, 2025
939d649
Prevents effects from showing 'it won't budge' on ctrl-click.
MistakeNot4892 Dec 31, 2025
37a182c
Merge pull request #5230 from out-of-phaze/codequality/debug-power
MistakeNot4892 Dec 31, 2025
f17b72c
Merge pull request #5233 from out-of-phaze/refactor/keycard-auth
MistakeNot4892 Dec 31, 2025
8301e31
Streamlining and updating neo-avians and tail code.
MistakeNot4892 Jan 1, 2026
8ecf0f0
Fixes copypasted loadout path for hooded cloaks.
MistakeNot4892 Jan 1, 2026
8cb15ed
Adding a macro for defining natural material walls/floors.
MistakeNot4892 Jan 1, 2026
42b0a7e
Optimize floor smoothing
out-of-phaze Jan 1, 2026
da652e0
Merge pull request #5238 from MistakeNot4892/fix/drakes
out-of-phaze Jan 1, 2026
6e3ee57
Merge pull request #5215 from noelle-lavenza/feature/equip-in-backpack
out-of-phaze Jan 1, 2026
8266894
Automatic changelog generation for PR #5215 [ci skip]
NebulaSS13Bot Jan 1, 2026
4c80fd1
Porting various projectile impact effects and sounds from Polaris.
MistakeNot4892 Jan 1, 2026
a0fbf40
Move ERT into a modpack
out-of-phaze Dec 29, 2025
2815379
Fix lighting runtimes from map template loading
out-of-phaze Jan 1, 2026
2addfa5
Lint modpack include map instead of default map
out-of-phaze Jan 1, 2026
0b2d586
Fix linter failure in undead modpack
out-of-phaze Jan 1, 2026
68c44e1
Compile modpack testing map with OD instead of default
out-of-phaze Jan 1, 2026
975b611
Make global.overmap_sectors use an alist
out-of-phaze Jan 1, 2026
edbf7f9
Automatic changelog generation [ci skip]
NebulaSS13Bot Jan 2, 2026
3b93cd8
Adjust actual_range in recalc_corner to respect dirlights
out-of-phaze Jan 2, 2026
2bca5f4
Fix lighting corners not being lit from space
out-of-phaze Jan 2, 2026
cb19fad
Lightly optimize update_corners
out-of-phaze Jan 2, 2026
179067b
Normalized EOL for .sh, .dme and .py files.
MistakeNot4892 Jan 2, 2026
17f2c5e
Merge pull request #5232 from out-of-phaze/modpack/emergency-response…
MistakeNot4892 Jan 3, 2026
144bb59
Merge pull request #5247 from out-of-phaze/fix/modpack-lint
MistakeNot4892 Jan 3, 2026
8d02381
Porting some minor vox outfit reworking from Polaris.
MistakeNot4892 Jan 2, 2026
ff5ea45
Changing /decl/material/gas out for a filterable material proc.
MistakeNot4892 Dec 31, 2025
c67376d
Merge pull request #5249 from out-of-phaze/experiment/overmap-alist
out-of-phaze Jan 3, 2026
fda27ef
Merge pull request #5243 from MistakeNot4892/tweak/turfmacro
out-of-phaze Jan 3, 2026
473fb90
Merge pull request #5240 from MistakeNot4892/fix/grabbables
out-of-phaze Jan 3, 2026
53123a3
Merge pull request #5242 from MistakeNot4892/fix/loadout
out-of-phaze Jan 3, 2026
21561a5
Adding many missing signs from Polaris Cynosure branch and tidying si…
MistakeNot4892 Nov 26, 2025
7c77ccb
Merge pull request #5145 from out-of-phaze/feature/saltwater
MistakeNot4892 Jan 3, 2026
e073eab
Merge pull request #5228 from out-of-phaze/codequality/cable-power
MistakeNot4892 Jan 3, 2026
de5e5a0
Merge pull request #5244 from out-of-phaze/optimize/floor-smooth-boost
MistakeNot4892 Jan 3, 2026
fc4c0b6
Automatic changelog generation [ci skip]
NebulaSS13Bot Jan 4, 2026
0ee1626
Ported/reindexed parkas from Polaris.
MistakeNot4892 Jan 4, 2026
a36bb85
Added very basic alt title decl structure.
MistakeNot4892 Jan 4, 2026
315108f
Merge pull request #5241 from MistakeNot4892/tweak/neoavians
out-of-phaze Jan 5, 2026
f8fedc2
Merge pull request #5220 from out-of-phaze/modpack/augment-pack
out-of-phaze Jan 5, 2026
6f369bb
Automatic changelog generation for PR #5241 [ci skip]
NebulaSS13Bot Jan 5, 2026
13965a7
Optimize nanoui merge_templates
out-of-phaze Jan 5, 2026
7a239d1
Make extensions use an alist
out-of-phaze Jan 6, 2026
bab6408
Add a subset of lazylist macros for alists
out-of-phaze Jan 6, 2026
4ef0253
Automatic changelog generation [ci skip]
NebulaSS13Bot Jan 6, 2026
93cbd7c
Make random subset supplypacks use expected price instead of raw sum
out-of-phaze Jan 6, 2026
651e457
Merge pull request #5253 from MistakeNot4892/fix/renormalize
out-of-phaze Jan 6, 2026
7cee95d
Merge pull request #5257 from MistakeNot4892/feature/alt_titles
out-of-phaze Jan 6, 2026
a6bb480
Merge pull request #5256 from MistakeNot4892/feature/parka
out-of-phaze Jan 6, 2026
af53df9
Fix unit tests stalling under load due to stoplag
out-of-phaze Jan 6, 2026
b305875
Make cellular automata slightly faster
out-of-phaze Jan 7, 2026
9e81856
Merge pull request #5258 from out-of-phaze/experiment/extension-alist
MistakeNot4892 Jan 8, 2026
c434b19
Merge pull request #5259 from out-of-phaze/optimize/nano-merge
MistakeNot4892 Jan 8, 2026
44777f4
Merge pull request #5261 from out-of-phaze/optimize/automata
MistakeNot4892 Jan 8, 2026
321cbdb
Merge pull request #5260 from out-of-phaze/fix/unit-test-stall
MistakeNot4892 Jan 8, 2026
fcc1de1
Merge branch 'stable' of github.com:NebulaSS13/Nebula into dev
MistakeNot4892 Jan 8, 2026
e268313
Merge pull request #5266 from MistakeNot4892/dev
MistakeNot4892 Jan 8, 2026
9f3f012
Make corner generation checks clearer
out-of-phaze Jan 9, 2026
3195df9
Enlarges the stamina bar and moves it centrally above the hand select…
MistakeNot4892 Jan 9, 2026
89e439b
Merge pull request #5239 from MistakeNot4892/tweak/gas
out-of-phaze Jan 9, 2026
2c79d31
Merge pull request #5246 from MistakeNot4892/port/impacteffects
out-of-phaze Jan 9, 2026
987b409
Merge pull request #5219 from MistakeNot4892/port/hazards
out-of-phaze Jan 9, 2026
aca7b93
Porting new hivebot icons and subtypes from Polaris.
MistakeNot4892 Jan 9, 2026
359222f
Porting map effects from Polaris.
MistakeNot4892 Jan 8, 2026
54e4829
Merge pull request #5264 from out-of-phaze/fix/supplypack-avgprice
MistakeNot4892 Jan 9, 2026
2f6130a
Automatic changelog generation for PR #5264 [ci skip]
NebulaSS13Bot Jan 9, 2026
5b16cf8
Ported/reimplemented salvageable machines and devices from Polaris.
MistakeNot4892 Jan 8, 2026
e718a6f
Clarified cable coil/network cable coil singular/plural names.
MistakeNot4892 Jan 9, 2026
94363b0
Automatic changelog generation [ci skip]
NebulaSS13Bot Jan 10, 2026
5d0f48b
Merge pull request #5250 from out-of-phaze/fix/lighting-correctness
MistakeNot4892 Jan 11, 2026
92a30b8
Porting and modpacking exploration and xenofauna content from Polaris.
MistakeNot4892 Dec 31, 2025
796dc9a
Set category for Check Sky button
quardbreak Jan 11, 2026
4a2bcd9
Merge pull request #5204 from MistakeNot4892/feature/moresigns
out-of-phaze Jan 11, 2026
918d080
Merge pull request #5268 from MistakeNot4892/port/map_effects
out-of-phaze Jan 11, 2026
e067271
Merge pull request #5251 from MistakeNot4892/port/voxclothes
out-of-phaze Jan 11, 2026
93e272a
Merge pull request #5216 from MistakeNot4892/port/quads
out-of-phaze Jan 11, 2026
6c72356
Merge pull request #5269 from MistakeNot4892/port/hivebots
out-of-phaze Jan 12, 2026
89b35e5
Merge pull request #5208 from MistakeNot4892/port/xenofauna
out-of-phaze Jan 12, 2026
5b86c45
Merge pull request #5272 from quardbreak/check-sky-category
out-of-phaze Jan 12, 2026
6d27eec
Merge pull request #5265 from MistakeNot4892/feature/salvage
out-of-phaze Jan 12, 2026
97dc984
Merge pull request #5270 from MistakeNot4892/tweak/stamina
out-of-phaze Jan 13, 2026
0f3bc11
Port recursion limit error handling from TG
out-of-phaze Jan 12, 2026
0360920
Merge pull request #5273 from out-of-phaze/fix/recurse-error
MistakeNot4892 Jan 14, 2026
d4050f2
Tidying up network/channel defines.
MistakeNot4892 Jan 15, 2026
0aa400a
Adding a naked preset that will pass CI.
MistakeNot4892 Jan 15, 2026
f65ec9c
Adding a single-tile barsign.
MistakeNot4892 Jan 15, 2026
d5849b3
Adding security presets for GPS.
MistakeNot4892 Jan 15, 2026
5a24a56
Adding a bronze ashtray.
MistakeNot4892 Jan 15, 2026
73571e4
Adding a box of shotgun blanks.
MistakeNot4892 Jan 15, 2026
6bb5b0f
Adding a random mug spawner.
MistakeNot4892 Jan 15, 2026
de40a4c
Holopads generate unique IDs.
MistakeNot4892 Jan 8, 2026
8d4fa0a
Added a var for allowing areas to remove all access from doors.
MistakeNot4892 Jan 8, 2026
cc7965f
Added endless candles for mapping purposes.
MistakeNot4892 Jan 8, 2026
74d7724
Added random poncho spawner.
MistakeNot4892 Jan 8, 2026
f19c95b
Added several random subtypes for mapping.
MistakeNot4892 Jan 8, 2026
9b06886
Added an orange comfy chair preset.
MistakeNot4892 Jan 8, 2026
bc6e50e
Added medical curtain subtype.
MistakeNot4892 Jan 8, 2026
fd56435
Fences now take material color and name.
MistakeNot4892 Jan 8, 2026
d20b360
Added a doggy door.
MistakeNot4892 Jan 8, 2026
856a312
Added a couple of coloured structure subtypes for mapping.
MistakeNot4892 Jan 8, 2026
0975b33
Added several turf subtypes/colour settings for mapping.
MistakeNot4892 Jan 8, 2026
07382be
Fixes template placement verb.
MistakeNot4892 Jan 8, 2026
8336e57
Adds winter boots to boot loadout.
MistakeNot4892 Jan 8, 2026
b630a6a
Allows map unit tests to skip all checks (for variable areas like sub…
MistakeNot4892 Jan 8, 2026
5bfeac0
Minor evacuation controller adjustments.
MistakeNot4892 Jan 8, 2026
40689f1
Adding mapped subtypes for ore stacks.
MistakeNot4892 Jan 8, 2026
83e2905
Prevents mounted spawner from failing CI when mapped.
MistakeNot4892 Jan 8, 2026
20852a3
Minor fix for ore box unloading.
MistakeNot4892 Jan 8, 2026
03c962b
Repathing satchels to ore_satchel and plant_satchel.
MistakeNot4892 Jan 8, 2026
589d7b0
Allows lobby handler to override initial size of lobby joiner.
MistakeNot4892 Jan 8, 2026
efd483a
Firedoors do not trip UT failures for being mapped over open space.
MistakeNot4892 Jan 8, 2026
657cf15
Adds a security filing cabinet.
MistakeNot4892 Jan 8, 2026
7841bd6
Adds an unlocked APC subtype.
MistakeNot4892 Jan 8, 2026
00d3a58
Separating captain's laser and old retro laser types.
MistakeNot4892 Jan 8, 2026
71894b6
Added a used hypospray subtype for mapping.
MistakeNot4892 Jan 8, 2026
ecd92f9
Expanding disposal pipe UT failure info.
MistakeNot4892 Jan 8, 2026
bd843d7
Removing empty outfit path.
MistakeNot4892 Jan 9, 2026
1719fc2
Compile fixes for Polaris change commits.
MistakeNot4892 Jan 15, 2026
7474083
Adding several turfs for mapping ease.
MistakeNot4892 Jan 15, 2026
31998c4
Generalized explosive code in matches/cigs.
MistakeNot4892 Jan 15, 2026
f2791e1
Moved body length descriptor into main code.
MistakeNot4892 Jan 15, 2026
5578785
Adding matter to the gigadrill.
MistakeNot4892 Jan 15, 2026
e32e256
Adding brute med syringe.
MistakeNot4892 Jan 15, 2026
20c658e
Renaming H2 Special to Toxins Special, sounds nicer and is more general.
MistakeNot4892 Jan 15, 2026
faf6036
Allowed radiation chem subtypes to override base radiation treatment …
MistakeNot4892 Jan 15, 2026
7791974
Adding unlocked rig subtypes.
MistakeNot4892 Jan 15, 2026
6990016
Removes unimplemented parent type.
MistakeNot4892 Jan 15, 2026
470880c
Requested changes.
MistakeNot4892 Jan 19, 2026
846b15c
Fix issues with blood volume calculations
out-of-phaze Jan 23, 2026
38c4b5d
Fix small mobs taking forever to metabolize reagents out
out-of-phaze Jan 23, 2026
2638304
Unify unary freezers/heaters under a shared type
out-of-phaze Jan 23, 2026
a60c8c9
Fix unary heaters massively overshooting their target
out-of-phaze Jan 23, 2026
574d3f1
Merge pull request #5281 from out-of-phaze/codequality/unary-unify
out-of-phaze Jan 24, 2026
5019b16
Merge pull request #5279 from out-of-phaze/fix/yinglet-dose
MistakeNot4892 Jan 24, 2026
7c62a0d
Merge pull request #5278 from out-of-phaze/codequality/make-blood-mak…
MistakeNot4892 Jan 24, 2026
55984dd
Various fixes/tweaks for unit tests.
MistakeNot4892 Jan 15, 2026
17c1f60
Merge pull request #5276 from MistakeNot4892/misc_polaris_changes
out-of-phaze Jan 26, 2026
d7df53d
Adds a per-level persistence system.
MistakeNot4892 Oct 31, 2025
d133295
Merge pull request #5176 from MistakeNot4892/feature/limited_persistence
out-of-phaze Jan 29, 2026
c3b0622
Merge pull request #5275 from MistakeNot4892/organ_validation_test
out-of-phaze Feb 1, 2026
7a5ea2d
Fix blood opacity incorrectly using a bool
out-of-phaze Feb 3, 2026
74c6c43
Make oil stains opaque again
out-of-phaze Feb 3, 2026
a706992
Make soap opaque
out-of-phaze Feb 3, 2026
b8c3a39
Fix nutriment subtypes being transparent
out-of-phaze Feb 3, 2026
6c4e781
Make coagulated blood opaque
out-of-phaze Feb 3, 2026
4c3f98a
Make tar opaque
out-of-phaze Feb 3, 2026
b41e14b
Copy cherry jelly opacity to slime jelly
out-of-phaze Feb 3, 2026
3223078
Make pigments opaque
out-of-phaze Feb 3, 2026
5fb76e1
Merge pull request #5277 from MistakeNot4892/port/more_polaris_changes
out-of-phaze Feb 3, 2026
b7fa220
Merge branch 'stable' of github.com:NebulaSS13/Nebula into dev
MistakeNot4892 Feb 4, 2026
c6a37a8
Merge pull request #5287 from MistakeNot4892/dev
MistakeNot4892 Feb 4, 2026
1ffd134
Merge pull request #5283 from out-of-phaze/fix/opacity-materials
MistakeNot4892 Feb 4, 2026
9959e65
Added sound effect to large blanks box opening.
MistakeNot4892 Feb 4, 2026
c58cab7
Minor radiation collector refactor to support changing the tank type.
MistakeNot4892 Feb 4, 2026
6ad298b
Added empty gun cell type for mapping/loot.
MistakeNot4892 Feb 4, 2026
27a32a6
Adding CHECK_TICK to noisemap generation.
MistakeNot4892 Feb 4, 2026
2546729
Added subtype boxes for tea and coffee cups.
MistakeNot4892 Feb 4, 2026
574e65a
Adding synthetic citizenship.
MistakeNot4892 Feb 4, 2026
fe961dc
Minor clothing string tweaks.
MistakeNot4892 Feb 4, 2026
849cb82
Fix Torch/Splint Crafting - Stable
Typhin Feb 4, 2026
26b7708
Merge pull request #5290 from Typhin/stable
out-of-phaze Feb 5, 2026
dd1009e
Added reinforced concrete wall subtype.
MistakeNot4892 Feb 4, 2026
9f3ee85
Added limestone.
MistakeNot4892 Feb 4, 2026
1ffe9e1
Added crystal stack type.
MistakeNot4892 Feb 4, 2026
332927c
Added supporting code for EFTPOS terminals to not use a station account.
MistakeNot4892 Feb 4, 2026
bac5b3e
Oxford comma in codex category.
MistakeNot4892 Feb 4, 2026
2d2eaf5
Generalises Baylore reference in titles.
MistakeNot4892 Feb 4, 2026
b15f543
Minor list formatting changes to support phoron insertion downstream.
MistakeNot4892 Feb 4, 2026
611f066
Adding null guard to bodytype sprite accessories setting.
MistakeNot4892 Feb 4, 2026
908de45
Adds capitalize proc to cryopod message.
MistakeNot4892 Feb 6, 2026
c521912
Merge pull request #5262 from MistakeNot4892/port/polaris_main_code
out-of-phaze Feb 6, 2026
c3e2595
Merge branch 'stable' of github.com:NebulaSS13/Nebula into dev
MistakeNot4892 Feb 8, 2026
5070903
Merge branch 'dev' of github.com:MistakeNot4892/Nebula into pyrelight
MistakeNot4892 Feb 8, 2026
e42db8f
Compile fixes for updated Pyrelight.
MistakeNot4892 Feb 8, 2026
8c52909
Should prevent random Shaded Hills testing failures.
MistakeNot4892 Feb 8, 2026
9e6ac92
Merge pull request #5293 from MistakeNot4892/dev
MistakeNot4892 Feb 8, 2026
f625e76
Merge branch 'dev' of github.com:NebulaSS13/Nebula into pyrelight
MistakeNot4892 Feb 8, 2026
846ae19
Line encoding changes for Pyrelight dme?
MistakeNot4892 Feb 8, 2026
30bf302
Compile fixes for post-rebase Pyrelight.
MistakeNot4892 Feb 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 6 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ html/changelog.html merge=union
# Declare files that will always have CRLF line endings on checkout.
*.dm text eol=crlf
*.dmm text eol=crlf
*.dme text eol=crlf
*.py text eol=crlf
*.txt text eol=crlf
*.md text eol=crlf
*.yml text eol=crlf
*.yml text eol=crlf

# Declare files that will always have LF line endings on checkout.
*.sh text eol=lf
4 changes: 2 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ jobs:
- name: Run Dreamchecker
run: |
set -o pipefail
~/dreamchecker 2>&1 | tee ${GITHUB_WORKSPACE}/output-annotations.txt
./test/lint-all-modpacks.sh nebula.dme
./test/lint-each-modpack.sh nebula.dme
- name: Annotate Lints
uses: yogstation13/DreamAnnotate@v2
if: always()
Expand Down Expand Up @@ -67,7 +67,7 @@ jobs:
fileName: "DMCompiler_linux-x64.tar.gz"
extract: true
- name: Run OpenDream
run: ./DMCompiler_linux-x64/DMCompiler nebula.dme --define=UNIT_TEST --suppress-unimplemented --skip-anything-typecheck --version=${BYOND_MAJOR}.${BYOND_MINOR} | bash test/annotate_od.sh
run: ./test/compile-od-all-modpacks.sh nebula.dme
Code:
runs-on: ubuntu-latest
steps:
Expand Down
1 change: 1 addition & 0 deletions code/__defines/armor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
#define ARMOR_RAD_MINOR 10
#define ARMOR_RAD_SMALL 25
#define ARMOR_RAD_RESISTANT 40
#define ARMOR_RAD_LARGE 60
#define ARMOR_RAD_SHIELDED 100

#define ARMOR_BOMB_MINOR 10
Expand Down
1 change: 1 addition & 0 deletions code/__defines/items_clothing.dm
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@
#define slot_r_store_str "slot_r_store"
#define slot_s_store_str "slot_s_store"
#define slot_in_backpack_str "slot_in_backpack"
#define slot_in_wallet_str "slot_in_wallet"

// Defined here for consistency, not actually used for slots, just for species clothing offsets.
#define slot_undershirt_str "slot_undershirt"
Expand Down
8 changes: 8 additions & 0 deletions code/__defines/lists.dm
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,14 @@
// Reads L or an empty list if L is not a list. Note: Does NOT assign, L may be an expression.
#define SANITIZE_LIST(L) ( islist(L) ? L : list() )

// The above but for alists. Prefixed with A_ because inserting "A" randomly in the name just made it confusing
#define A_LAZYINITLIST(AL) if (!AL) { AL = alist(); }
#define A_UNSETEMPTY(AL) if(!length(AL)) { AL = null; }
#define A_LAZYREMOVE(AL, I) if(AL) { AL -= I; A_UNSETEMPTY(AL) }
#define A_LAZYSET(AL, A, I) if(!AL) { AL = alist(); } AL[A] = I;
#define A_LAZYCLEARLIST(AL) if(AL) { AL.Cut(); AL = null; }
#define A_LAZYLEN(AL) length(AL)

/// Passed into BINARY_INSERT to compare keys
#define COMPARE_KEY __BIN_LIST[__BIN_MID]
/// Passed into BINARY_INSERT to compare values
Expand Down
31 changes: 15 additions & 16 deletions code/__defines/machinery.dm
Original file line number Diff line number Diff line change
Expand Up @@ -42,28 +42,27 @@ var/global/defer_powernet_rebuild = 0 // True if net rebuild will be called

// Camera channels
// Station channels
#define CAMERA_CHANNEL_PUBLIC "Public"
#define CAMERA_CHANNEL_ENGINEERING "Engineering"
#define CAMERA_CHANNEL_MEDICAL "Medical"
#define CAMERA_CHANNEL_RESEARCH "Research"
#define CAMERA_CHANNEL_SECURITY "Security"

#define CAMERA_CHANNEL_ROBOTS "Robots"
#define CAMERA_CHANNEL_MINE "Mining"
#define CAMERA_CHANNEL_SECRET "Secret"
#define CAMERA_CHANNEL_PUBLIC "Public"
#define CAMERA_CHANNEL_ENGINEERING "Engineering"
#define CAMERA_CHANNEL_MEDICAL "Medical"
#define CAMERA_CHANNEL_RESEARCH "Research"
#define CAMERA_CHANNEL_SECURITY "Security"
#define CAMERA_CHANNEL_ROBOTS "Robots"
#define CAMERA_CHANNEL_MINE "Mining"
#define CAMERA_CHANNEL_SECRET "Secret"

// Non-station channels
#define CAMERA_CHANNEL_CRESCENT "Crescent"
#define CAMERA_CHANNEL_ERT "ZeEmergencyResponseTeam"
#define CAMERA_CHANNEL_MERCENARY "MercurialNet"
#define CAMERA_CHANNEL_TELEVISION "Television"
#define CAMERA_CHANNEL_CRESCENT "Crescent"
#define CAMERA_CHANNEL_ERT "Emergency Response Team"
#define CAMERA_CHANNEL_MERCENARY "MercurialNet"
#define CAMERA_CHANNEL_TELEVISION "Television"

// Alarm networks
#define NETWORK_ALARM_ATMOS "Atmosphere Alarms"
#define NETWORK_ALARM_ATMOS "Atmosphere Alarms"
#define NETWORK_ALARM_CAMERA "Camera Alarms"
#define NETWORK_ALARM_FIRE "Fire Alarms"
#define NETWORK_ALARM_FIRE "Fire Alarms"
#define NETWORK_ALARM_MOTION "Motion Alarms"
#define NETWORK_ALARM_POWER "Power Alarms"
#define NETWORK_ALARM_POWER "Power Alarms"

//singularity defines
#define STAGE_ONE 1
Expand Down
39 changes: 20 additions & 19 deletions code/__defines/misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -87,27 +87,28 @@
#define EVENT_LEVEL_MAJOR 3

//Area flags, possibly more to come
#define AREA_FLAG_RAD_SHIELDED BITFLAG(1) // Shielded from radiation, clearly.
#define AREA_FLAG_EXTERNAL BITFLAG(2) // External as in exposed to space, not outside in a nice, green, forest.
#define AREA_FLAG_ION_SHIELDED BITFLAG(3) // Shielded from ionospheric anomalies.
#define AREA_FLAG_IS_NOT_PERSISTENT BITFLAG(4) // SSpersistence will not track values from this area.
#define AREA_FLAG_IS_BACKGROUND BITFLAG(5) // Blueprints can create areas on top of these areas. Cannot edit the name of or delete these areas.
#define AREA_FLAG_MAINTENANCE BITFLAG(6) // Area is a maintenance area.
#define AREA_FLAG_SHUTTLE BITFLAG(7) // Area is a shuttle area.
#define AREA_FLAG_HALLWAY BITFLAG(8) // Area is a public hallway suitable for event selection
#define AREA_FLAG_PRISON BITFLAG(9) // Area is a prison for the purposes of brigging objectives.
#define AREA_FLAG_HOLY BITFLAG(10) // Area is holy for the purposes of marking turfs as cult-resistant.
#define AREA_FLAG_SECURITY BITFLAG(11) // Area is security for the purposes of newscaster init.
#define AREA_FLAG_HIDE_FROM_HOLOMAP BITFLAG(12) // if we shouldn't be drawn on station holomaps
#define AREA_FLAG_RAD_SHIELDED BITFLAG(1) // Shielded from radiation, clearly.
#define AREA_FLAG_EXTERNAL BITFLAG(2) // External as in exposed to space, not outside in a nice, green, forest.
#define AREA_FLAG_ION_SHIELDED BITFLAG(3) // Shielded from ionospheric anomalies.
#define AREA_FLAG_NO_LEGACY_PERSISTENCE BITFLAG(4) // SSpersistence will not track values from this area.
#define AREA_FLAG_IS_BACKGROUND BITFLAG(5) // Blueprints can create areas on top of these areas. Cannot edit the name of or delete these areas.
#define AREA_FLAG_MAINTENANCE BITFLAG(6) // Area is a maintenance area.
#define AREA_FLAG_SHUTTLE BITFLAG(7) // Area is a shuttle area.
#define AREA_FLAG_HALLWAY BITFLAG(8) // Area is a public hallway suitable for event selection
#define AREA_FLAG_PRISON BITFLAG(9) // Area is a prison for the purposes of brigging objectives.
#define AREA_FLAG_HOLY BITFLAG(10) // Area is holy for the purposes of marking turfs as cult-resistant.
#define AREA_FLAG_SECURITY BITFLAG(11) // Area is security for the purposes of newscaster init.
#define AREA_FLAG_HIDE_FROM_HOLOMAP BITFLAG(12) // if we shouldn't be drawn on station holomaps
#define AREA_FLAG_ALLOW_LEVEL_PERSISTENCE BITFLAG(13) // Whether or not this area should pass changed turfs to SSpersistence.

//Map template flags
#define TEMPLATE_FLAG_ALLOW_DUPLICATES BITFLAG(0) // Lets multiple copies of the template to be spawned
#define TEMPLATE_FLAG_SPAWN_GUARANTEED BITFLAG(1) // Makes it ignore away site budget and just spawn (only for away sites)
#define TEMPLATE_FLAG_CLEAR_CONTENTS BITFLAG(2) // if it should destroy objects it spawns on top of
#define TEMPLATE_FLAG_NO_RUINS BITFLAG(3) // if it should forbid ruins from spawning on top of it
#define TEMPLATE_FLAG_NO_RADS BITFLAG(4) // Removes all radiation from the template after spawning.
#define TEMPLATE_FLAG_TEST_DUPLICATES BITFLAG(5) // Makes unit testing attempt to spawn mutliple copies of this template. Assumes unit testing is spawning at least one copy.
#define TEMPLATE_FLAG_GENERIC_REPEATABLE BITFLAG(6) // Template can be picked repeatedly for the same level gen run.
#define TEMPLATE_FLAG_ALLOW_DUPLICATES BITFLAG(0) // Lets multiple copies of the template to be spawned
#define TEMPLATE_FLAG_SPAWN_GUARANTEED BITFLAG(1) // Makes it ignore away site budget and just spawn (only for away sites)
#define TEMPLATE_FLAG_CLEAR_CONTENTS BITFLAG(2) // if it should destroy objects it spawns on top of
#define TEMPLATE_FLAG_NO_RUINS BITFLAG(3) // if it should forbid ruins from spawning on top of it
#define TEMPLATE_FLAG_NO_RADS BITFLAG(4) // Removes all radiation from the template after spawning.
#define TEMPLATE_FLAG_TEST_DUPLICATES BITFLAG(5) // Makes unit testing attempt to spawn mutliple copies of this template. Assumes unit testing is spawning at least one copy.
#define TEMPLATE_FLAG_GENERIC_REPEATABLE BITFLAG(6) // Template can be picked repeatedly for the same level gen run.

// Convoluted setup so defines can be supplied by Bay12 main server compile script.
// Should still work fine for people jamming the icons into their repo.
Expand Down
15 changes: 0 additions & 15 deletions code/__defines/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -160,21 +160,6 @@
// Robo Organs.
#define BP_VOICE "vocal synthesiser"

//Augmetations
#define BP_AUGMENT_R_ARM "right arm augment"
#define BP_AUGMENT_L_ARM "left arm augment"
#define BP_AUGMENT_R_HAND "right hand augment"
#define BP_AUGMENT_L_HAND "left hand augment"
#define BP_AUGMENT_R_LEG "right leg augment"
#define BP_AUGMENT_L_LEG "left leg augment"
#define BP_AUGMENT_CHEST_ARMOUR "chest armor augment"
#define BP_AUGMENT_CHEST_ACTIVE "active chest augment"
#define BP_AUGMENT_HEAD "head augment"

//Augment flags
#define AUGMENTATION_MECHANIC 1
#define AUGMENTATION_ORGANIC 2

// Prosthetic helpers.
#define BP_IS_PROSTHETIC(org) (!QDELETED(org) && (org.organ_properties & ORGAN_PROP_PROSTHETIC))
#define BP_IS_ROBOTIC(org) (!QDELETED(org) && (org.bodytype?.is_robotic))
Expand Down
5 changes: 5 additions & 0 deletions code/__defines/persistence.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Handled elsewhere, do not let them load like vars.
var/global/list/_forbid_field_load = list(
(nameof(/datum::type)) = TRUE,
(nameof(/atom::loc)) = TRUE
)
64 changes: 64 additions & 0 deletions code/__defines/serde.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#define SERDE_HINT_FINISHED 1
#define SERDE_HINT_POSTINIT 2

#define SERDE_REAGENT_LIST "_reagent_list"
#define SERDE_REAGENT_VOLUME "_reagent_volume"

#define SERIALIZE_VALUE(V, T, VAL) .[nameof(T::V)] = VAL;
#define SERIALIZE(V, T) SERIALIZE_VALUE(V, T, V)
#define SERIALIZE_IF_MODIFIED(V, T) if(V != initial(V)) { SERIALIZE_VALUE(V, T, V) }
#define SERIALIZE_TYPE_IF_MODIFIED(V, T) if(V != initial(V)) { SERIALIZE_VALUE(V, T, "[V]") }
#define SERIALIZE_DECL_IF_MODIFIED(V, T) if((isnull(V) && !isnull(initial(V))) || ((istext(V) || istype(V, /decl) || ispath(V, /decl)) && !DECLS_ARE_EQUIVALENT(V, initial(V)))) { var/decl/__D = RESOLVE_TO_DECL(V); SERIALIZE_VALUE(V, T, __D?.uid) }
#define SERIALIZE_DECL_LIST(V, T) if(islist(V)) { var/list/__decl_uids = list(); for(var/decl/__decl in V) { __decl_uids += __decl.uid }; SERIALIZE_VALUE(V, T, __decl_uids) }
#define SERIALIZE_REAGENTS(V, T, I) if(istype(V, /datum/reagents)) { \
.[I + SERDE_REAGENT_VOLUME] = UNLINT(V.maximum_volume); \
if(UNLINT(V.total_volume)) { \
var/list/__compiled_reagents = list(); \
for(var/decl/material/R in UNLINT(V.liquid_volumes)) { \
__compiled_reagents[++__compiled_reagents.len] = list(R.uid, UNLINT(V.liquid_volumes[R]), (MAT_PHASE_LIQUID)); \
} \
for(var/decl/material/R in UNLINT(V.solid_volumes)) { \
__compiled_reagents[++__compiled_reagents.len] = list(R.uid, UNLINT(V.solid_volumes[R]), (MAT_PHASE_SOLID)); \
} \
.[I + SERDE_REAGENT_LIST] = __compiled_reagents; \
} else { \
.[I + SERDE_REAGENT_LIST] = list(); \
} \
} else { \
.[I + SERDE_REAGENT_LIST] = list(); \
.[I + SERDE_REAGENT_VOLUME] = 0; \
}

#define DESERIALIZE_REAGENTS(V, I) if(((I + SERDE_REAGENT_LIST) in __deserialization_payload) && ((I + SERDE_REAGENT_VOLUME) in __deserialization_payload)) { \
V = list((SERDE_REAGENT_VOLUME) = __deserialization_payload[I + SERDE_REAGENT_VOLUME], (SERDE_REAGENT_LIST) = __deserialization_payload[I + SERDE_REAGENT_LIST]); \
}

#define DESERIALIZE_DECL_TO_TYPE(V) if(istext(V) || ispath(V, /decl) || istype(V, /decl)) { var/decl/__D = RESOLVE_TO_DECL(V); V = __D?.type; } else { V = null; }
#define DESERIALIZE_TYPE(V) if(istext(V)) { V = text2path(V); } else if(!ispath(V)) { V = null; }
#define DESERIALIZE_DECL(V) if(istext(V) || ispath(V)) { V = RESOLVE_TO_DECL(V); } else { V = null; }

// List cast is to avoid OpenDream complaining about V typically being typed as a reagents datum, but holding a list for serde.
#define FINALIZE_REAGENTS_SERDE_BODY(V) try { \
if((SERDE_REAGENT_LIST in V) && (SERDE_REAGENT_VOLUME in V)) { \
var/list/LV = V; \
var/__serde_volume = LV[SERDE_REAGENT_VOLUME]; \
if(__serde_volume <= 0) { \
V = null; \
} else { \
var/list/__serde_reagents = LV[SERDE_REAGENT_LIST]; \
V = new /datum/reagents(__serde_volume, src); \
for(var/list/entry in __serde_reagents) { \
V.add_reagent(RESOLVE_TO_DECL(entry[1]), entry[2], phase = entry[3], defer_update = TRUE); \
} \
V.handle_update(); \
} \
} else { \
V = null; \
} \
} catch(var/exception/E) { \
log_error("Exception while finalizing reagents load for [type]: [EXCEPTION_TEXT(E)]"); \
V = null; \
}

#define FINALIZE_REAGENTS_SERDE(V) if(islist(V)) { FINALIZE_REAGENTS_SERDE_BODY(V); }
#define FINALIZE_REAGENTS_SERDE_AND_RETURN(V) if(islist(V)) { FINALIZE_REAGENTS_SERDE_BODY(V); return; }
13 changes: 7 additions & 6 deletions code/__defines/subsystems.dm
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,13 @@
// Subsystems shutdown in the reverse of the order they initialize in
// The numbers just define the ordering, they are meaningless otherwise.

#define SS_INIT_INPUT 22
#define SS_INIT_EARLY 21
#define SS_INIT_WEBHOOKS 20
#define SS_INIT_MODPACKS 19
#define SS_INIT_SECRETS 18
#define SS_INIT_GARBAGE 17
#define SS_INIT_INPUT 23
#define SS_INIT_EARLY 22
#define SS_INIT_WEBHOOKS 21
#define SS_INIT_MODPACKS 20
#define SS_INIT_SECRETS 19
#define SS_INIT_GARBAGE 18
#define SS_INIT_SERDE 17
#define SS_INIT_MATERIALS 16
#define SS_INIT_PLANTS 15
#define SS_INIT_LORE 14
Expand Down
5 changes: 3 additions & 2 deletions code/_global_vars/lists/clothing.dm
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ var/global/list/airtight_slots = list(

var/global/list/abstract_inventory_slots = list(
slot_in_backpack_str,
slot_in_wallet_str,
slot_undershirt_str,
slot_underpants_str,
slot_socks_str
Expand All @@ -40,7 +41,7 @@ var/global/list/vitals_sensor_equip_slots = list(
)

var/global/list/headphone_slots = list(
slot_l_ear_str,
slot_r_ear_str,
slot_l_ear_str,
slot_r_ear_str,
slot_head_str
)
1 change: 1 addition & 0 deletions code/_global_vars/lists/flavor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ GLOBAL_GETTER(cable_colors, /list, SetupCableColors())
. = list()

var/list/valid_cable_coils = typesof(/obj/item/stack/cable_coil) - typesof(
/obj/item/stack/cable_coil/five,
/obj/item/stack/cable_coil/single,
/obj/item/stack/cable_coil/cut,
/obj/item/stack/cable_coil/cyborg,
Expand Down
3 changes: 2 additions & 1 deletion code/_global_vars/lists/names.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@ var/global/list/verbs = file2list("config/names/verbs.txt")
var/global/list/adjectives = file2list("config/names/adjectives.txt")

var/global/list/abstract_slot_names = list(
slot_in_backpack_str = "In Backpack"
slot_in_backpack_str = "In Backpack",
slot_in_wallet_str = "In Wallet"
)
9 changes: 8 additions & 1 deletion code/_global_vars/sound.dm
Original file line number Diff line number Diff line change
Expand Up @@ -128,4 +128,11 @@ var/global/list/sweeping_sound = list(
'sound/foley/sweeping5.ogg',
'sound/foley/sweeping6.ogg',
'sound/foley/sweeping7.ogg',
)
)

var/global/list/ricochet_sound = list(
'sound/weapons/guns/ricochet1.ogg',
'sound/weapons/guns/ricochet2.ogg',
'sound/weapons/guns/ricochet3.ogg',
'sound/weapons/guns/ricochet4.ogg'
)
4 changes: 2 additions & 2 deletions code/_helpers/logging.dm
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ var/global/log_end= world.system_type == UNIX ? ascii2text(13) : ""
return "[..()] ([isnum(z) ? "[x],[y],[z]" : "0,0,0"])"

/turf/get_log_info_line()
var/obj/effect/overmap/visitable/O = global.overmap_sectors[num2text(z)]
var/obj/effect/overmap/visitable/O = global.overmap_sectors[z]
if(istype(O))
return "[..()] ([x],[y],[z] - [O.name]) ([loc ? loc.type : "NULL"])"
else
Expand All @@ -188,7 +188,7 @@ var/global/log_end= world.system_type == UNIX ? ascii2text(13) : ""
/atom/movable/get_log_info_line()
var/turf/t = get_turf(src)
if(t)
var/obj/effect/overmap/visitable/O = global.overmap_sectors[num2text(t.z)]
var/obj/effect/overmap/visitable/O = global.overmap_sectors[t.z]
if(istype(O))
return "[..()] ([t]) ([t.x],[t.y],[t.z] - [O.name]) ([t.type])"
return "[..()] ([t]) ([t.x],[t.y],[t.z]) ([t.type])"
Expand Down
2 changes: 1 addition & 1 deletion code/_helpers/overmap.dm
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var/global/list/overmap_sectors = list()
var/global/alist/overmap_sectors = alist()
var/global/list/overmaps_by_name = list()
var/global/list/overmaps_by_z = list()

Expand Down
Loading
Loading