* 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>
* vampire returns + transformstions redo
* carcat fangs fix + greetings music update
* vampire skill trees
* Blood essence gathering
Introduces the vampire blood essence mechanic, including the CP14SpellVampireGatherEssence spell, new skill point consumable component, and related UI/localization updates. Adds clientside effects for spell casting, new vampire skill and action, and refines skill point gain/loss popups. Also restructures vampire components, updates spell logic for client/server prediction, and removes unused parallax files.
* perma damage
* Add skill point cost to magic system and vampire essence spell
Introduced CP14MagicEffectSkillPointCostComponent to allow magic effects to consume skill points. Updated the shared magic system to handle skill point checks and consumption. Added a new vampire spell for creating blood essence, including new icons and localization. Adjusted vampire component to grant and remove skill points, and updated related skill tree and spell prototypes. Minor fixes and refactoring in spell logic and descriptions.
* blood step + blood vision skills
* vampire clans icons
* 50 players limit + vampire objectives
* fixes
* devourers altar transmutation
* Remove StealTarget component from animal, dino, and mole NPCs
The StealTarget component and associated stealGroup were removed from boar, dinosaur, and mole NPC definitions. This likely disables these entities from being targeted for stealing, possibly to adjust gameplay balance or fix unintended behavior.
* fix
* essence creation improve
* altars
* voice masks
* transmutation fix
* teleportation glyph
* crimson candles
* candle crafting
* fix pointer predictions
* Add Vampire Clan Battle gamemode and update vampire roles
Introduces the 'Vampire Clan Battle' gamemode with new localization in English and Russian, updated game preset definitions, and secret weights. Refactors vampire antagonist briefings and objectives for multiple clans, adjusts vampire role preferences and team settings, and reduces the damage of the Vampire Gather Essence spell. Also includes minor improvements to spell and game mode descriptions, and corrects file naming for game preset locales.
* powerful kicks in
* time gates + vampire tree
* vampire proto faction
* fix
* fixes
* tree progression
* search enemy
* Update CP14SharedVampireSystem.cs
* blood essence gathering redo
* essence gathering refactor 2
* blood healing
* Update secret_weights.yml
* tree planting
* boodgrass
* tree upgrade announcement
* construction graph integration
* delete transmutation system
* workbench crafting returns
* cloaks crafting + cloak invisibility
* make vampire tree is generic red tree (sad)
* clan heart sprite
* Refactor vampire tree to clan heart system
Replaces the CP14VampireTreeComponent with CP14VampireClanHeartComponent, updating all related logic, appearance, and localization. Adjusts skill requirements, examination, and level progression to use the new clan heart system. Updates entity prototypes, visuals, and adds new orb sprites for clan heart levels. Localization strings and logic are updated to reflect the new terminology and mechanics.
* Update SpeciesBlacklist.cs
* Refactor vampire clan heart and remove tree spell
Refactored the vampire clan heart to support essence regeneration over time and adjusted level thresholds. Removed the vampire tree planting spell and related prototype fields, as well as unused tree system code. Updated localization, entity prototypes, and faction definitions to reflect these changes.
* Add clan heart construction for vampire clans
Introduces construction graphs, entities, and conditions for building unique clan hearts for each vampire clan (Unnameable, Devourers, NightChildrens). Adds new construction conditions (all clan vampires required, singleton enforcement), updates skill tree to unlock constructions, and removes the now-obsolete CP14MagicEffectAllVampireClanRequiredComponent. Also adds new frame sprites and updates localization and prototype files accordingly.
* level up vfx
* VFX + lobby track
* orb resprite
* sprites
* Add vampire altar mechanics and improve clan heart behavior
Introduces the CP14VampireAltarComponent and altar entity, which doubles blood essence extraction when victims are strapped to the altar. Adds a custom explosion behavior for vampire clan hearts upon destruction, updates construction graphs and recipes for altars, and improves localization. Also refines skill description handling and adjusts vampire bite action text.
* essence get when heart destruction
* Add clan heart damage and destruction announcements
Introduces announcements for when a vampire clan heart is damaged or destroyed, with cooldown to prevent spam. Refactors examination logic and updates localization files for both English and Russian to support new messages and sender formatting.
* glyph adaptation
* resurrection
* Add round end summary for Vampire Clan Battles
Implemented detailed round end text for the Vampire Clan Battles game mode, displaying victory, defeat, or draw outcomes based on surviving factions and population percentage. Refactored alive player percentage logic into a shared method and updated localization files with new outcome messages in English and Russian. Also removed an unused field from the defence condition component.
* Update vampire_cloak.yml
* fix
* fix
* Update portal_glyph.yml
* Shelve
* 22 file diff
* What if it was just better
* Hold that thought
* Near final Commit, then YAML hell
* 95% done with cs
* Working Commit
* Final Commit (Before reviews tear it apart and kill me)
* Add a really stupid comment.
* KILL
* EXPLODE TEST FAILS WITH MY MIND
* I hate it here
* TACTICAL NUCLEAR STRIKE
* Wait what the fuck was I doing?
* Comments
* Me when I'm stupid
* Food doesn't need solutions
* API improvements with some API weirdness
* Move non-API out of API
* Better comment
* Fixes and spelling mistakes
* Final fixes
* Final fixes for real...
* Kill food and drink localization files because I hate them.
* Water droplet fix
* Utensil fixes
* Fix verb priority (It should've been 2)
* A few minor localization fixes
* merge conflict and stuff
* MERGE CONFLICT NUCLEAR WAR!!!
* Cleanup
---------
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
* initial it works
* clean it up
* yml
* datafield the LocIds
* move from the other branch
* no max vol on puddles and anoms
* closed
* Changes inspired by #39008
* small bug and more color range
* puddle changes and more examinable solutions
* lint
* small change
* requested changes
* un-delete
* tiny comment
* 1 less loc id in this world
* request and last second change
---------
Co-authored-by: iaada <iaada@users.noreply.github.com>
* Make melee sounds respect their audio params
* Make food sounds respect audio params
* Plushie sound 1984
Most plushies have been made quieter (by varying degrees depending on how obnoxious the original sound was)
Made plushies 3x slower to use (squeak every 3 seconds / hit somebody every 3 seconds)
* 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
* frying pan start
* fix data saving
* Refactor cooking system and add localization support
Refactored food data handling in the cooking system to use Visuals instead of FoodData on holders, improved food transfer logic, and added popups and examine messages for user feedback. Added English and Russian localization files for cooking examine and meal descriptions, and updated prototype files to increase plate solution volume and add a whitelist for the cooking furnace.
* Refactor cooking system solution handling
Removed Solution field from CP14FoodData and updated CP14SharedCookingSystem to use solution containers directly. Improved solution transfer, mixing, and overflow handling during cooking. Increased pan max volume from 30 to 100 in cooking_furnace.yml.
* Improve cooking system trash handling and update food sprites
Enhanced trash distribution in CP14SharedCookingSystem to randomly assign trash to plates, only adding all trash to the last plate. Updated meat_dish and salad prototypes to use new wooden plate sprites. Added wideAnimationRotation and DrainableSolution to cooking_furnace for improved functionality.
* Remove unused usings and redundant comments in cooking components
Cleaned up CP14 cooking-related components by removing unused using directives and empty XML comments. This improves code readability and maintainability.
* Add tag-based cooking requirements and new meal recipes
Introduces tag-based cooking requirement classes (TagRequired, TagBlocked, SolutionRequired) and updates the cooking system to support tag checks. Adds new tags for food items, updates food and meal prototypes to include relevant tags, and implements new meal recipes (Zellasian Breakfast, Monster Egg) with corresponding sprites and localization. Also refactors and renames some tag and structure prototype files for better organization.
* Refactor and expand CP14 cooking recipes and tags
Reworked meal recipes to use tag-based requirements, added new tags for food categorization (meat, cheese, vegetables, etc.), and removed hardcoded entity recipes for ham in cheese and stuffed potato. Updated and added new meal recipes (bread plate, ham in cheese, stuffed potato), localized their names and descriptions, and migrated/added corresponding sprites. Deprecated SolutionRequired requirement, cleaned up unused tags, and improved TagRequired/TagBlocked logic. Updated prototype files to use new tags and added missing tags to food entities.
* Refactor and expand green salad recipes and assets
Replaces the old green salad entity and workbench recipe with new cooking recipes for green salad and green salad with meat. Updates English and Russian localization, moves and adds new salad textures, and removes obsolete salad assets and trading request.
* mashed potatoes
* Add mashed potatoes with herbs meal
Introduced a new 'mashed potatoes with herbs' meal, including English and Russian localization, recipe definition, and associated sprite. Updated the texture metadata and added the new image asset.
* Update dye.yml
* Fix frying pan item size and update plate recipe
Moved the 'size: Ginormous' property to the correct component in frying_pen.yml. Renamed the plate recipe and result from 'CP14Plate' to 'CP14PlateWooden' in misc.yml for clarity.
* Update meals.yml
* Update migration.yml
* fixes
* fix heating food sounds
* Nyranu temperature transmission
* Update plate.yml
* Cooking DoAfter works
* burning logic
* cooking more work
* auto transform transformable
* Update CP14SharedCookingSystem.DoAfter.cs
* cool burning visuals!
* Add MIT license headers to cooking system files
Added sublicensing notice and MIT license header to all files in the CP14 cooking system. Also made minor code cleanups, such as removing unnecessary default initializations and improving XML documentation for clarity.
* constant heating required
* cooking visuals improve!
* sandwiches with processed cheese + reagent burnt fuckuping
* inhand pan sprites + FIRE fuckup
* crafting & buying pan
* fix predicting
* random food spawner + chef closet
* mapping update
* Update frying_pen.yml
* move WIP to blacksmith lol
* checkpoint
* pt 2
* pt... i forgot
* pt 4
* patch
* More test fixes
* optimization!!!
* the REAL hand system
* fix RetractableItemActionSystem.cs oversight
* the review
* test
* remove test usage of body prototype
* Update Content.IntegrationTests/Tests/Interaction/InteractionTest.cs
Co-authored-by: Tayrtahn <tayrtahn@gmail.com>
* hellcode
* hellcode 2
* Minor cleanup
* test
* Chasing the last of the bugs
* changes
---------
Co-authored-by: Tayrtahn <tayrtahn@gmail.com>
* add sounds
* change _active to BurningComponent
* play sound when lighting and snuffing a cigar
* network it
* mono
* attribution
* doc
---------
Co-authored-by: deltanedas <@deltanedas:kde.org>
* Separate udder hunger examine into ExamineableHunger
* Fluent grammar improvements
* Add ExamineableHunger to chickens and ducks.
* Use starving message as "dead" message
* reduce network burden of the hunger system
* explicit start + last updated
* remove auto reformat changes to otherwise untouched code
add clamp helper
* imagine making breaking changes, documenting them, and then not thinking to check the yaml
* comments
* Remove unused net manager in hunger system
Remove lastAuthoritativeHungerValue from prototypes
* Changed comments to be more clear and uniform.
EggLayer uses NextGrowth instead of frame accumulation.
Egglayer uses much less energy to make eggs, and lay time is randomized for player and AI chicken.
* UdderComponent ReagentId can be changed now
UdderSystem and WoolySystem use SharedSolutionContainerSystem now
* Entities with udders can be examined to see a rough hunger level
udders and wooly stop reagent generation/extra nutrient usage once the solution container is full
* Moved stuff to Shared
AutoPausedField now
* Cleanup moving stuff to Shared
* Oops. Make UdderSystem sealed instead of abstract.
* Switch PopupEntity for PopupClient
* Didn't mean to delete Access
* new() instead of default! prototype
revert egglayer balance change
NextGrowth += timespan in egglayer
* forgot [Datafield] for NextGrowth
* forgot NetworkedComponent again...
* Renaming Shared Animal to Shared Animals to match Server
Hopefully also resolve merge conflicts.
* Fix incorrect filename
* Update with requested changes
Put UdderSystem dependencies in alphabetical order.
Initialise NextGrowth for Udder and Wooly components on MapInitEvent.
Clean-up EggLayerSystem a little.
Re-write OnExamine function for UdderSystem, improving clarity.
Add full stops to end of udder examine locales.
And more :)
* Add some additional descriptions for cow hunger levels.
* Add Udder and Wooly quantity to AutoNetworkedField
* Account for less than starving threshold.
---------
Co-authored-by: sirionaut <sirionaut@gmail.com>
Co-authored-by: Sirionaut <148076704+Sirionaut@users.noreply.github.com>
Co-authored-by: Tayrtahn <tayrtahn@gmail.com>