* Solving #43723 by making zombies clumsy (they are unable to hold anything in their hands, passing items to them will fail).
Also made zombies uncuff themselves whenever they transform (seeing as they no longer lose their hands meaning that cuffs would otherwise remain on them)
* Cleaning up the code
* Renamed ClumsyHoldStatusEffectComponent.cs to ClumsyGrabStatusEffectComponent.cs (and renamed associated files).
I think "ClumsyGrab" works better than "ClumsyHold" (as the effect happens when the item is first grabbed, not whilst the item is being held).
everything still works
Reordered appropriate functions in ClumsyStatusTest.cs and ClumsyStatusEffectSystem.cs to retain alphabetical order.
* oopsies :p
* Appeased the YAMLLinter (at the cost of a somewhat hackier implementation).
ZombieSystem.Transform.cs now applies the zombie clumsiness via creating a new PermanentStatusEffectComponent with StatusEffectClumsyZombie as its status effect.
* requested changes have been made
(also re-added newline to end of clumsy-component.ftl because it has a newline at the end of it on the master branch, I guess it's probably supposed to be there)
* reordering so private members (including new one) are before the internal member
* hands are forcibly emptied - even if something's glued to them.
* UnZombify should remove the lingering ZombieClumsy status effect
(still needs to revert the rest of the zombification process, but at least the new bit I added can be undone)
* Minor refactor of my own refactor. New order of operations:
1. Uncuffs zombie (if needed)
2. Attempts to `DropAll` items from hands
3. Iterates through hand containers to empty them (removes otherwise unremovable items from hands)
Will refactor process to force drop all items if #45844 becomes implementable + is merged.
* formatting
* how the hell did the metabolizer code go missing!?
* uncuffing now happens in a safer way
less likely to accidentally infinitely loop
* tweaking that one comment I was asked to tweak (this is unrelated to the hand malarkey)
hopefully it won't lead to any merge conflicts later on
* formatting
* file style
---------
Co-authored-by: Pok245 <113675512+Pok27@users.noreply.github.com>
* change solution from 1u max to 600u max
* Added in a helper method to BloodstreamSystem to account for changing the BloodRefreshAmount. Added datafield to ZombieComponent to store the original BloodRefreshAmount on UnZombify. Added a tag 'CannotRegainBlood', that applies in Bloodstream's TryModifyBloodLevel, to account for Saline or other reagents directly modifying blood level.
* we properly use a bool this time and not a tag
* should probably remove a tag that's unused. makes sense why test failed
* remove the tag causing the errors. i forgot the second spot.
* remove unneeded reference to TagSystem, scale new BloodReferenceSolution to the previous MaxVolume
* set the hardcoded 600 back to a 1 for scaling purposes
* removed MetabolizerComponent from organs of zombies during Zombify
* What sitting on code does to a branch + no mo owner v2
* Replacing ViewVariables with AutoNetworkedField + Missed One V2
* Removing Virtual Methods & Renaming ForensicsSystem to SharedForensicsSystem (Also made it abstract) V2
* IProduceWidgets Review Changes & some of my own V2
* Lil Cleanup V2
* Part 1 of Review Changes (Only thing left is the BUI stuff and the constructor) V2
* It now WORKS!!! (Still needs the BUI and constuctor changes, ill figure it out later)
* Test (Removal of ServerSide VomitSystem.cs)
* Ok...
* Moved System BloodstreamSystem.cs to SharedBloodstreamSystem.cs & deleted client BloodStreamSystem.cs to make SharedBloodstreamSystem.cs sealed. (No Unregistered errors)
* Prediction
* Fix?
* No mo log error?
* Revert "No mo log error?"
This reverts commit 50c15a3deab6af9dffd7baed45820bae5558e41f.
* Constructor going up
* No ForensicScannerBoundUserInterface.cs (It doesnt wanna scan anymore but it doesnt crash)
* For Conflicts
* Guh
* Yea
* Organization & no ErrorHell (maybe)
* Dirtying
* Dirtying take 2
* Revert "Dirtying take 2"
This reverts commit 5735012e21f43808db3ae010fce268eac24d0583.
* the dirties dont do much here
* For Conflict
* Readded
* Another Conflict Commit Fix
* Conflict Fix Thrice
* Empty Space
* Keep it simple
* Add it back in
* Move BloodstreamSystem stuff thats causing the error back to system. This'll prob fix the conflict
* Conflict fix?
* Trust the fix
* Looked at other prediction PR's, they had better code.
* To not mix up the system in client
* Removing Conflict
* For conflict
* For the conflic fix, will be removed later
* Scuffed Fix
* Removal & Adding the Decouple
* Took some HEAVY pointers from SirWarocks work. The Roadblock has been CLEARED, DOAFTERS WORK NOW!!
* Cleanup & Optimizing, mostly comps.
* More Optimization, most of this is just imported Warock Code, his QOL included. Did not want to remove SolutionDNA's tho, mostly due to a Log.Debug in OnPrint.
* Forgot that the Print Refreshes, more of Warocks work.
* Removing Loc.GetString
* All of BloodStream to Shared, hopefully no errors.
* Sketchy Dirty Removed
* Removed Timer.Spawn, added FrameUpdate cause anything else only updated when the window opened, & a bit of cleanup.
* No mo Mispredict
* GenerateDnaEvent Predicted
* Forgot the user
* I knew it was real, bloodstutter is REAL and now GONE.
* Cant dirty NewEntityBloodData due to potential stutter, so its safer to put it all back into server. again...
* Clearer
* Thank you leahcat, no more identity leak.
* Routine Maintenance
* sealing the class
* it checks for this now?!
* While im here, FileScope Namespaces & removing unused namespaces
* Update Attribute Type (SirWarock Import), it works and is much easier to read.
* Forever Fixing Conflicts
* Readonly Genocide & Partial Maxing
* LGTM, BloodstreamSystem moved to SharedBloodstreamSystem!
* Sohn
* If OG Github back push this commit
* One Billionth Commit Fix
* Removed client/server stuff
* Made implicit
* NewLine & comment on why AutoGenCompState is true
* Updatin the rest of the Popups to use Entity
* I think that's what they meant? It looks cleaner at least.
* Mass Attribute for LocalEvents that are safe to change.
* Putting it back as abstract
* maybe?
* Guhh, rolling back empty client/server of BloodStream
* Removed Client/Server BloodstreamSystems, changed access modifier from protected to private, & renamed SharedBloodstreamSystem to BloodstreamSystem
* From Protected to Private
* Removed comment & made it explicit on what changed to true
* Guh, hopefully thats all of it...
* Forgot
* Review
* Test Push
* Line 316 in SharedForensicsSystem was causing the errors, better to play it safe
* Review Changes
* Update Content.Shared/Forensics/Events.cs
Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com>
* The only thing SolutionDNAs does is search and clears itself. I see no reason to keep it
* The print.disabled didnt properly disable when cleared. So ill just use the old if check
* Figured out the rest of the SubscribeLocalEvents and networking BloodData cause its fully in Shared
---------
Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com>
* stub
* Revert "stub"
This reverts commit c1204b88d3ae1bbdca2deeb075a9dd0d6c529326.
* PoC
* As a successful member of society with a stable unflinching psyche and limitless drive, natural affinity for finance and domination, you have been selected, no, you have been effortlessly guided by divine (biological) trauma towards this moment. The gates of destiny fling open, and once again you're left standing on pulsating nothingness. A strobing headache of the soul.
* i feel bad
* Revert "PoC"
This reverts commit fafafac77f9cbd62497376c70e078e0155cb7ef6.
---------
Co-authored-by: nomdéraisonnablementlong <you@example.com>
* Remove all IPrototypeManager instances
* Remove redundant IComponentFactory instances too
* Found some stragglers
* DestructibleSystem.PrototypeManager: no dependency
* not based
* initial visual nubody
* oops overlay
* im so pheeming rn
* conversion...
* tests
* comeback of the underwear
* oops eyes
* blabbl
* zeds
* yaml linted
* search and visible count constraints
* reordering
* preserve previously selected markings colors
* fix test
* some ui niceties
* ordering
* make DB changes backwards-compatible/downgrade-friendly
* fix things again
* fix migration
* vulpkanin markings limit increase
* wrapping
* code cleanup and more code cleanup and more code cleanup and more code cleanup and
* fix slop ports
* better sampling API
* make filter work + use the method i made for its intended purpose
* fix test fails real quick
* magic mirror cleanup, remove TODO
* don't 0-init the organ profile data
* remove deltastates
---------
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
* 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>
* Make zombie system not fard
* Actually who cares if our owner is not a zombie, let melee weapons be zombies that's funny as fuck
---------
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
* move to shared
* entity effect to shared
* refactor: whitespaces+xml-doc typo fixups
* refactor: a little bit more of xml-doc typos fixups
---------
Co-authored-by: pa.pecherskij <pa.pecherskij@interfax.ru>
* 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>
* Added Zombie faction roles everywhere that makes sense for initial infected to be associated with Zombies.
* Adding faction component to round start zombie. (not hopeful)
* Removed stupid attempts and added zombie faction component to the zombie system when the player is given the ability to force themself to zombify.
* Changed use of "zombie" for ProtoId<NpcFactionPrototype>
* Update Content.Server/Zombies/ZombieSystem.cs
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
* Update Content.Server/Zombies/ZombieSystem.cs
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
* Removed faction component from ZombieOutbreak event. Shouldn't cause problems with the event as II gets component with their ability to self zombify.
---------
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
* cloning refactor
* cleanup and fixes
* don't pick from 0
* give dwarves the correct species
* fix dna and bloodstream reagent data cloning
* don't copy helmets
* be less redundant
* Zombies keep their anomalies on zombification
* Refactor anombies to isolate anomalies and zombies
InnerBodyAnomalies now send an event when the host dies.
Zombies cancels this event if the host is turning into a zombie.
* Anomazombies: deprecate CancellableEntityEventArgs
CancellableEntityEventArgs is deprecated. Use structs
with bool Cancelled instead.
* Mega Antag Refactor
* last minute delta save
* more workshopping
* more shit
* ok tested this for once
* okkkkk sure
* generic delays for starting rules
* well darn
* nukies partially
* ouagh
* ballin' faded and smonkin wed
* obliterated the diff
* Spread my arms and soak up congratulations
* I've got plenty of love, but nothing to show for it
* but there’s too much sunlight
Shining on my laptop monitor, so I
Can’t see anything with any amount of clarity
* ok this junk
* OOK!
* fubar
* most of sloth's review
* oh boy
* eek
* hell yea!
* ASDFJASDJFvsakcvjkzjnhhhyh
* remove deprecated entity coordinate extension functions. Reduces warning count by approximately 50
* final toCoords Removed
* Remove all unused variables and dead code paths
* remove always true variable, should be a cvar or something instead
* remove superfluous variables from tests
* Fix drones
* They dont need a full bloodstream
* Incorrect indentation
* Nuke drones
* Fix ClothingHeadHatCatEars
* Remove last mention of drones
* Implement requested changes
This reverts f391ff28 and implements an alternate messure where mice and other small animals can no longer infect people as zombies.
This is done through a component which if present cancels the check that would cause zombie components to be added on people that get infected due to a bite.
This still allows other special stuff that happens in that function that may affect already infected individuals.
This is a compromise between what's discussed in discord which would much rather see mice and other animals just die from the infection and people on github which would see no change happen.
Since bats can't go under doors it may not be necessary to make them non spreaders.
If someone disagrees please tell me to just add it back.
* zombie mode redux
* the great zombie changes
* fix this
* 65 down to 50
* empty
* Changes to address stalling
* make zombie nukies no longer nukies
* actually work
* Added component and functionality.
* Fixed ZombieImmune.
* Zombies now have zombie blood.
* Ambuzol plus.
* Ambuzol plus spawns in bundle.
* Fine CBURN get one too.
* Reworked the reaction
* No more magic blood refilling.
* ok CE i fixed it
* Component change.
* Nerf Space zombies, get DoT in space (barotrauma) and spawn stunned.
- Also discard any helmet or mask you might be wearing.
* Zombies have heal over time, infection far more fatal
- Stun time reduced to 2 seconds
* Zombification occurs after you die, rather than after you crit.
- Zombies cannot inflict Zombification DoT on other zombies.
* Heal shock damage, space zombies are back.
* Lower the chance of infection per hit
* Removed the stun, reduced zombification virus slightly
* Add AutoEmote comp/system
* Reduce groan chance so it's the same as before
Old code did 0.2 and then 0.5, now it's just one Prob(0.1)
* Fix typo, curTime var, don't log Resolve
* Maybe fix pausing?
* Fix mistake
* Update NextEmoteTime if an auto emote is removed
* Fix stuff
Get CurTime outside update loop
Use MapInit instead of ComponentInit
Fix a typo in a comment
Debug assert prototype ID in RemoveEmote
Do += PausedTime in OnUnpaused
Add prototype as arg to ResetTimer to avoid an indexing