* Update DamageableSystem to modern standards
* DamageContainerId -> DamageContainerID with lint flag
* Replace strings with protoids
* Make CVar subscription declarations all consistently whitespaced
* ChangeDamage -> TryChangeDamage, cope with C# jank
* Revert event signature changes
* Restore a comment
* Re-add two queries
* Init the queries
* Use appearanceQuery in DamageChanged
* Use damageableQuery in TryChangeDamage
* Use damageableQuery in SetDamageModifierSetId
* Final cleanup, fix sandboxing
* Rectify ExplosionSystem:::ProcessEntity's call to TryChangeDamage
* Re-organize DamageableSystem
* first big fuck you breaking change.
* THATS A LOT OF DAMAGE!!!
* Fix test fails
* test fixes 2
* push it
---------
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
* Offbrand medical
* what if we regrade
* zombies are mostly there thats it thats a wrap xd
* here's changeling
* some bonus gut punches
* start working on the guidebook
* fix rsi and yaml lints
* my agrichem so fits
* we stay rejuvenated
* my china so laked
* debrute
* fix suicide
* fix the suicide tests
* my surgery so requires laying down
* the guidebook continues
* READ KEB PAGES
* keb vascular recoupler
* read keb medicine
* fix yaml lint
* fix the EntityRemoveConstructionGraphStep
* fix overlay init
* scalpels are not a food tool
* return of the programmer art
* my line so nieuw
* boxes deserve veins too
* mrrrp yaml
* what if we redid brain damage alerts
* bloot pressure
* kill mannitol drowsiness
* get licensed
* my read so me
* get feedbacked nerd
* fine-tune the heart stoppage conditions
* cryostasis adjustments, guidebook adjustments, fix negative strain issues
* my surgery so table
* fix heart surgery and guidebook
* medicine & defibrillator pass
* iv bags and stands
* prefills
* janet gets very sidetracked
* mostly finished iv stuff
* what if we fixed the guidebook
* halve decapoid cryostasis
* my medicines so IV
* finetune cryostasis
* less logspam
* metabolism-aware iv stands and cryopods
* give people painkillers
* yaml lint real
* fix blood build
* finish rebase
* tidy up localization
* clean up my yaml beasties...
* soft curve after exceeding maximum damage
* husks/bonedeaths
Grabbag of Offmed fixes & improvements (#3461)
* CPR moment
* Mob AI fix
* Fix brain oxygenation not updating on regeneration
* sorry gamers you cannot resist the pull
* Troll combat abilities more in softcrit
praying rn (#3467)
dont have CPR be 50% (#3468)
Make offbrand murder easier to contend with (#3473)
* e
* disrupt people in softcrit when attacking them
* ok gamers we're gaming
* forgor
Hopefully final pass before Offbrand merge (#3475)
First pass of Offbrand adjustments (#3477)
Swap blood pressure values in health analyzer (#3476)
Systolic over diastolic
Co-authored-by: Kip <32859367+kipdotnet@users.noreply.github.com>
Offbrand pass 2: Mostly bugfixes (#3480)
Fix zeds causing PVS reloads (#3482)
Offbrand pass 3: I hate surgery I hate surgery I hate surgery I (#3481)
* set up surgery ui
* test fail real
Pain/braingasps (#3487)
Offmed bundle 5 - the evil one (#3489)
* Evil cavity surgery
* les borgues
* nicotine moment
* epinephrine RNG
* legalese
* test fail real
* ok jamers cope with c4
Pass 6
Many newer overlays use IRenderTextures that are sized to the rendered viewport. This was completely broken, because a single viewport can be rendered on multiple viewports in a single frame.
The end result of this was that in the better case, constant render targets were allocated and freed, which is extremely inefficient. In the worse case, many of these overlays completely failed to Dispose() their render targets, leading to *extremely* swift VRAM OOMs.
This fixes all the overlays to properly cache resources per viewport. This uses new engine functionality, so it requires engine master.
This is still a pretty lousy way to do GPU resource management but, well, anything better needs a render graph, so...
* 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>
* Convert all shader prototype string literals to protoids in overlays
* Convert more shader prototype literal strings to protoids
* Convert ValidatePrototypeId to ProtoId
* Later
* Cleanup warnings in ClickableSystem
* Cleanup warnings in FultonSystem
* Cleanup warning in HolidaySystem
* Cleanup warning in DoAfterOverlay
* Cleanup warning in EntityHealthBarOverlay
* Cleanup warning in SmokeVisualizerSystem
* Cleanup warning in VaporVisualizerSystem
* Cleanup warning in ColorFlashEffectSystem
* Cleanup warnings in StealthSystem
* Cleanup warnings in TrayScannerSystem
* Cleanup warnings in InventoryUIController
* Cleanup warnings in HideMechanismsCommand
* Cleanup warning in ShowMechanismsCommand
* Cleanup warnings in EntityPickupAnimationSystem
* Cleanup warnings in PointingSystem
* Cleanup warning in StickyVisualizerSystem
* Cleanup warnings in TabletopSystem
* Cleanup warnings in PillSystem
* Cleanup warnings in DiceSystem
* Cleanup warnings in ProjectileSystem
* Fake Mindshield (With some bad sprites)
- Add FakeMindshield System and Component
- Add FakeMindsheildImplantSystem and Component
- modify ShowMindShieldIconsSystem to check for FakeMindshields
- add all supporting yaml for the Implants, action and uplink
- add loc file stuff
- add unfinished sprites
* Cleanup, add to thief toolbox, remove metagame
- Move Implant sameness check to AFTER the implant DoAfter
to prevent instant identification of Deception Implants
- cleanup the systems and components
- add the fake mindshield to the Thief toolbox
* part 1 of fixing the folder problem
* Make the fakemindshield sprite folder lowercase
* CR - Move ImplantCheck into shared, cleanup
- Moved ImplantCheck and eventsubscription into Shared
- Remove Client/Server extensions of FakeMindshieldImplantSystem and
FakeMindShieldSystem and make shared Sealed
- make OnToggleMindshield Private, use the event!
* CR - Cleanup extra lines, fix some Prototype
- cleaned up extra liens in ImplanterSystem and
SharedFakeMindshieldSystem from when i was developing
- Uplink catalog no longer lists the implant in 2 spots,
only implants now, also uses the On state action icon
- added a comment about why it's reraising the action event
rather than directly interacting with the FakeMindshield Component
* Fake Mindshield CR:
- Added a comment about IsEnabled
- moved OnFakeMindShieldToggle to Entity<> from Uid, Comp
- fixed some formatting in uplink_catalog
* CR - Add a bit more comment
* Borg type switching.
This allows borgs (new spawn or constructed) to select their chassis type on creation, like in SS13. This removes the need for the many different chassis types, and means round-start borgs can actually play the game immediately instead of waiting for science to unlock everything.
New borgs have an additional action that allows them to select their type. This opens a nice window with basic information about the borgs and a select button. Once a type has been selected it is permanent for that borg chassis.
These borg types also immediately start the borg with specific modules, so they do not need to be printed. Additional modules can still be inserted for upgrades, though this is now less critical. The built-in modules cannot be removed, but are shown in the UI.
The modules that each borg type starts with:
* Generic: tools
* Engineering: advanced tools, construction, RCD, cable
* Salvage: Grappling gun, appraisal, mining
* Janitor: cleaning, light replacer
* Medical: treatment
* Service: music, service, clowning
Specialized borgs have 3 additional module slots available on top of the ones listed above, generic borgs have 5.
Borg types are specified in a new BorgTypePrototype. These prototypes specify all information about the borg type. It is assigned to the borg entity through a mix of client side, server, and shared code. Some of the involved components were made networked, others are just ensured they're set on both sides of the wire.
The most gnarly change is the inventory template prototype, which needs to change purely to modify the borg hat offset. I managed to bodge this in with an API that *probably* won't explode for specifically for this use case, but it's still not the most clean of API designs.
Parts for specific borg chassis have been removed (so much deleted YAML) and specialized borg modules that are in the base set of a type have been removed from the exosuit fab as there's no point to printing those.
The ability to "downgrade" a borg so it can select a new chassis, like in SS13, is something that would be nice, but was not high enough priority for me to block the feature on. I did keep it in mind with some of the code, so it may be possible in the future.
There is no fancy animation when selecting borg types like in SS13, because I didn't think it was high priority, and it would add a lot of complex code.
* Fix sandbox failure due to collection expression.
* Module tweak
Fix salvage borg modules still having research/lathe recipes
Engie borg has regular tool module, not advanced.
* Fix inventory system breakage
* Fix migrations
Some things were missing
* Guidebook rewordings & review
* MinWidth on confirm selection button
* add tooltips to agentid job icons
* forgot to stage this
* make StatusIconPrototype abstract
* minor visual improvements
* cleanup
* use currentculture to sort job names
* review
* StatusIcon: add field to set if icon should be rendered with shading
* set/unset shader based on icon field
* set new field to true for hud icons
* re-shade health bars
* Improvements to the medical hud interface
* Adds an icon for SSD players
* Indentation fix
* Update sprites, changes direction and adds new status icon.
* Adds decomposing icon
* Code cleaning
* Changes Crit Icon sprite
* Simplifies the decision structure
* Changes copyright line
* Changes Critical Icon sprite
* Makes the Critical Icon border darker
* Changes sprites to /tg/ station
* Updates copyright
* Makes Dead Icon animation slight faster
* Code cleaning
* Remove some unused imports
* Code cleaning and rename icon
* Minor code cleaning
* Security hud shows icon based on criminal record status
* Criminal status now linked to name instead of identity
* parole loc
* Test fix
* review changes
* Check station records instead of storing names on criminal record consoles.
* cleanup
* more cleanup
* review changes
* change outdated comments
* rename
* review changes
* remove event subscription
* replaced event with trycomp
* default value
* PR 1
* fix an error with health bar overlay (#1292)
* Revert "Revert "Replace `ResourcePath` with `ResPath` (#15308)" (#155… (#15566)
* [1612] change ShowHealthBarsComponent's DamageContainer field to a list (#1662)
* fix build
* no crit entities from not updating
* cleanup
* namespace
* undu irrelevant changes
* undo icon change
* make health bar 1 px taller and icon 1 px shorter
* fix medibot
* fix comment
* don't show health bar ratio when in crit
* fix build
* put the crit bar back
* don't render healthbars for mobs that are in containers
* draw more boxes without the background sprite
* fine status icon for all bio mobs
* add wacky mandatory things
* attempt 2
* whoops wrong file
* cool, this works too
* move null check to top
* only 1 init
* security huds
* remove shader
* fix build after cleanup
* slight cleanup
* little more cleanup
* Remove clothing grant component system
* security HUD now shows a job icon on entities with a body
* remove sec stuff and do similar changes to split off PR + remove unused comp
* process comments
* don't return
* update to ComponentAddedOverlaySystemBase
* no cache
* colors and not rendering out of sight
* touch ups
* fix build & cleanup
* undo
* remove shader from icons
* process comments
* documentation
* fix licence
* validate prototype id
* just use args
* rename method and append in method
* type
* just fucken delete the command
* space
* undo
* remove
* don't use LocalPlayer
* re-add showhealthbars command, but working
* rename icon lists and conform health icon code to the others
* space
* undo
* update command
* oops
---------
Co-authored-by: Rane <60792108+Elijahrane@users.noreply.github.com>
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Gateway generation
* Gateway stuff
* gatewehs
* mercenaries
* play area
* Range fixes and tweaks
* weh
* Gateway UI polish
* Lots of fixes
* Knock some items off
* Fix dungeon spawning
Realistically we should probably be using a salvage job.
* wahwah
* wehvs
* expression
* weh
* eee
* a
* a
* WEH
* frfr
* Gatwey
* Fix gateway windows
* Fix gateway windows
* a
* a
* Better layer masking
* a
* a
* Noise fixes
* a
* Fix fractal calculations
* a
* More fixes
* Fixes
* Add layers back in
* Fixes
* namespaces and ftl
* Other TODO
* Fix distance
* Cleanup
* Fix test