* Enable whitelisting specific DNM prototypes per map
* Enable whitelisting directories
* Rename fields
* Use a HashSet instead of an array
* Add check for unused whitelist entries
* Remove whitelisting for meta (warden's rubber stamp was removed)
* Add glob support courtesy of @IProduceWidgets
* Update xmldoc
* Fix usages of TryIndex()
Most usages of TryIndex() were using it incorrectly. Checking whether prototype IDs specified in prototypes actually existed before using them. This is not appropriate as it's just hiding bugs that should be getting caught by the YAML linter and other tools. (#39115)
This then resulted in TryIndex() getting modified to log errors (94f98073b0), which is incorrect as it causes false-positive errors in proper uses of the API: external data validation. (#39098)
This commit goes through and checks every call site of TryIndex() to see whether they were correct. Most call sites were replaced with the new Resolve(), which is suitable for these "defensive programming" use cases.
Fixes#39115
Breaking change: while doing this I noticed IdCardComponent and related systems were erroneously using ProtoId<AccessLevelPrototype> for job prototypes. This has been corrected.
* fix tests
---------
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
* Add altInteract option to interaction test helper methods
* Add water cooler interaction test
* Oops, that's not a NetEntity
* Is.Not.Empty
* SPlayer
* Assert.Multiple
* Document parameters
* Make yaml gas serialization cleaner
* fix exception
* fix validation code
* rudimentary test & permissive loading
* change it a bit
* Test fixes and adjustments
This PR adds delta-pressure damage. In short, airtight structures can now take damage proportional to the difference in pressures between the sides of the structure.
* Init Commit
* Typos
* Commit 2
* Save Interaction Test Mob from failing
* ssss
* Confident I've gotten all the correct prototypes
* Whoops forgot to edit those
* aaaaa
* Better solution
* Test fail fixes
* Yaml fix
* THE FINAL TEST FIX
* Final fix(?)
* whoops
* Added a WeightlessnessChangedEvent
* Check out this diff
* Wait I'm dumb
* Final optimization and don't duplicate code
* Death to IsWeightless
* File scoped namespaces
* REVIEW
* Fix test fails
* FIX TEST FAILS REAL
* A
* Commit of doom
* borgar
* We don't need to specify on map init apparently
* Fuck it
* LOAD BEARING COMMENT
---------
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
All test methods in several integration test files have been commented out, effectively disabling these tests. This may be for temporary troubleshooting, refactoring, or to address failing or unstable tests.
* Add Crash to Windlands survival gamemode and map
Introduces the CP14CrashToWindlandsRule and its component for a new survival gamemode where a ship crashes into wildlands. Adds the 'nautilus_ship' map, updates English and Russian locale files with new gamemode titles and descriptions, and modifies relevant prototype and map pool files to support the new mode.
* fix FTL map
* firebombing is real
* fix biome dungen all grid overriding
* Update PostMapInitTest.cs
* Update DungeonJob.CP14Biome.cs
* Refactor demiplane generation and crash rules
Replaces the old demiplane job system with a new procedural location generation system (CP14LocationGenerationSystem and CP14SpawnProceduralLocationJob). Splits the crash-to-windlands rule into CP14CrashingShipRule (handles explosions) and CP14ExpeditionToWindlandsRule (handles map generation and FTL), with corresponding new components. Updates roundstart game rule prototype and moves/renames several files for clarity and modularity.
* Refactor location generation to support optional seed and position
Updated the GenerateLocation method to accept an optional seed and position, defaulting to a random seed if none is provided. Adjusted all call sites and the procedural job to support these changes, improving flexibility and consistency in procedural location generation.
* procedural integration into game map
* Demiplanes deletion
* clear demiplane content
* remapping procedural + frigid coast deletion
* clear demiplane guidebook
* dungeons generations
* Refactor procedural location configs and add ComossIsland
Consolidated and renamed procedural location and dungeonConfig prototypes for demiplane locations, replacing T1-prefixed and legacy IDs with new, consistent names. Updated map YAMLs to reference new location IDs and configs. Added a new ComossIsland location and dungeonConfig. Refactored code to support passing custom dungeon layers and removed unused ExamineProb field from CP14ProceduralLocationPrototype.
* Enhance procedural world gen and location configs
Improved procedural world generation by adding location generation probability, adjusting level ranges, and refining modifier uniqueness. Updated CP14ProceduralLocationPrototype and CP14ProceduralModifierPrototype, refactored node data generation logic, and made related test and map changes. Added new venicialis_fort station map and updated several procedural location and modifier YAMLs for consistency.
* fix
* connections room spawners
* track finishing global world generation
* real connection
* Update PostMapInitTest.cs
* Update venicialis.yml
* Update venicialis.yml
* fix raids, decrease city island sizes
* Update migration.yml
* Update migration.yml
* fix shutdowning
* Update CP14SpawnProceduralLocationJob.cs
* enum -> prototype
* move sprites
* more dirt sprites
* some food data stucking fixing
* pumpkin fix
* pie move sprites
* refactor components
* pie refactor
* remove outdated proto
* new pie types
* Update SliceableFoodSystem.cs
* Refactor food cooking system and add fat flavor
Added 'Fat' to the flavor profile. Refactored food cooking logic to use CreateFoodData and UpdateFoodDataVisuals instead of CookFood and ApplyFoodVisuals. Introduced RenameCooker property to CP14FoodCookerComponent to control entity renaming during cooking. Improved separation of food data creation and visual updates.
* Update migration.yml
* Refactor food visual and sliceable logic in cooking system
Moved sliceable food logic from OnCookFinished to UpdateFoodDataVisuals for better encapsulation. Made UpdateFoodDataVisuals overridable and updated its usage in random food initialization. Added Rename field to CP14RandomFoodDataComponent and cleaned up unused BecomeSliceable field in CP14FoodCookerComponent. Updated pie_pan.yml to add SliceableFood and a new random food entity.
* Update pie_pan.yml
* fill levels
* Update shield.yml
* Add soup bowls
Introduced new bowl entities (wooden, iron, gold, copper) for soups, including their sprites and prototype definitions. Added 'Soup' to the CP14FoodType enum and updated the food holder logic. Removed the unused CP14Plate tag from plate.yml and misc.yml.
* Add misc soup ingredient sprites and metadata
Introduced new 32x32 sprites for various soup ingredients, including flyagaric, flylumish, lumish, meat, meat2, meat_salad, mole, mud, pumpkin, sawdust, trash, and veg_stew. Added corresponding meta.json with state definitions and licensing information.
* veg soup recipe for testing
* soup displacement maps
* meal displacement eating
* fix double cookin plates
* soup cooking
* Update cooking_pot.yml
* Refactor solution handling for cooking and containers
Updated solution component names and types for cooking pots, bowls, buckets, barrels, and wells to improve consistency and functionality. Added and removed solution-related components, adjusted transfer logic, and cleaned up unused solution states and visual metadata. Also added food type checks in cooking system to prevent incorrect transfers.
* new soup recipes
* Unit test
* fix
* trading requests
* Update CP14Cooking.cs
* Update CP14Cooking.cs
* audio improve, egg and bread fix
* fix bugs
* integration
* Improve and expand `TakeRoleAndReturn` to fail on bug #38292
* fix#38292 and expanded test cases
* use validated EntProtoIds for tests
remove unusued using declarations
* use const strings that match the TestPrototypes
* refactor: move puddle evaporation + absorbents to shared
* refactor: move SolutionRegeneration to shared
* refactor: make AbsorbentSystem visuals clientside
* style: general formatting/cleanup on touched files
- Few logical simplifications
- Add field for hard-coded sparkle effect ent
- Switch stuff to Entity<T>
No actual prediction fixes in this commit (though in
retrospect I should've done this commit last).
* fix: use predicted variants for predicted code
* fix: average out evaporation rates in mixtures
* refactor: move SolutionPurge to shared
* style: Basic SolutionPurgeComponent field cleanup
* fix: general prediction + timing + networking fixes
- Moves client side visuals back to shared because other
players exist
- Don't accumulate CurTime in Purge/RegenerationSystem
- Network the next update field in Purge/RegenerationSystem to
deal with UI mispredictions???
* fix: add udder bug workaround
Not needed for SolutionPurgeSystem which doesn't resolve
solutions (probably fine that SolutionPurgeSystem doesn't
cache since it's much rarer, though it probably should), and
likely not needed for AbsorbentSystem since it only resolves
against puddles which, I don't think can be in containers.
* fix: don't divide by zero for evaporation speed = 0.
* refactor: revert evaporation changes
Will cherry-pick these out in another PR.
Also reverting the evaporation speed bugfix since it's easier
to revert all at once. :)
* fix: component cleanup; autopause fields, use ProtoID
* fix: remove unused AbsorbentComponentState
* fix: ProtoId is not string
* refactor: move PuddleSystem.UpdateAppearance to shared
* style: general PuddleSystem.UpdateAppearance tweaks
- Switch to Entity<T>
- Use ProtoIds
- Minor simplifications
* fix: add udderly silly PVS workaround
* cleanup
* fix
---------
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
* Convert string literals to protoids in Content.Tests
* Convert string literals to protoids or consts in Content.IntegrationTests
* Fix linter failures
Tricksy static using misled me