* Engine namespace changes.
* Automated remove redundant using statements.
* Simplified Graphics namespace.
* Apparently the container system stores full type names in the map file.😞 This updates those names.
* API Changes to LocalizationManager.LoadCulture.
* Update submodule to v0.3.2
* Janitor trashbag upgrade + FANCY ANIMATIONS
* Review, Bug fixes and Sounds
- Fixed hand-pickup animation playing if the entity originated from inside a container (e.g. bag on the ground) or from inside ourselves (e.g. something in our own inventory)
* Fix/Change. Just log if AnimateEntityPickup is called with an entity that has no SpriteComponent.
* More explicit log message. Error log.
* Merge. Fix.
* A big hecking chemistry-related refactor.
Changed SolutionContainerCaps. It now describes "stock" behavior for interacting with solutions that is pre-implemented by SolutionContainerComponent. As such things like syringes do not check it anymore (on themselves) to see "can we remove reagent from ourselves". That's assumed by it... being a syringe.
SolutionContainerCaps now has different flags more accurately describing possible reagent interaction behaviors.
ISolutionInteractionsComponent is the interface that describes the common behaviors like "what happens when injected with a syringe". This is implemented by SolutionContainerComponent but could be implemented by other classes. One notable example that drove me to making this interface was the /vg/station circuit imprinter which splits reagent poured in into its two reservoir beakers. Having this interface allows us to do this "proxying" behavior hack-free. (the hacks in /vg/ code were somewhat dirty...).
PourableComponent has been replaced SolutionTransferComponent. It now describes both give-and-take behavior for the common reagent containers. This is in line with /vg/'s /obj/item/weapon/reagent_containers architecture. "Taking" in this context is ONLY from reagent tanks like fuel tanks.
Oh, should I mention that fuel tanks and such have a proper component now? They do.
Because of this behavioral change, reagent tanks DO NOT have Pourable anymore. Removing from reagent tanks is now in the hands of the item used on them. Welders and fire extinguishers now have code for removing from them. This sounds bad at first but remember that all have quite unique behavior related to this: Welders cause explosions if lit and can ONLY be fueled at fuel tanks. Extinguishers can be filled at any tank, etc... The code for this is also simpler due to ISolutionInteractionsComponent now so...
IAfterInteract now works like IInteractUsing with the Priority levels and "return true to block further handlers" behavior. This was necessary to make extinguishers prioritize taking from tanks over spraying.
Explicitly coded interactions like welders refueling also means they refuse instantly to full now, which they didn't before. And it plays the sound. Etc...
Probably more stuff I'm forgetting.
* Review improvements.
* Ported sprites from eris
* Added yml
* lid open/close logic
* interactivity
* Working on new secret stash component
* Object will drop on destruction
* Can get item and examine message
* Reagent container and some cleaning
* Moved potted plant to stash
* New base prefab
* Now you can deconstruct toilet
* Small fixes
* Fixed unknown components errors
* Fixed grammar errors
Co-authored-by: Paul Ritter <ritter.paul1@googlemail.com>
* Now use prob
* More grammar
* Update Content.Server/Construction/Conditions/ToiletLidClosed.cs
Aaaaaaaa
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* No delays
* Amazing sound design
* Moved sound to mono
* Toilet viz
Co-authored-by: Paul Ritter <ritter.paul1@googlemail.com>
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Revert "Make handheld explosives affect tiles (#2806)"
This reverts commit 005e142949.
* Fixes tiles being destroyed under walls by an explosion
* Extra imports removed
* Handles explosion in space and different grids
This handle explosions across different grids, and tiles are still protected if there is an entity airtight and currently blocking air on top of them that survived the explosion.
* Some bug fixes
- The way tiles were being protected was silly.
- Big explosions cause a lot of objects to trigger multiple events and at the same time they are destroyed.
- Explosions spawning inside containers like closets work now.
* Range bug fixes
* Explosive
The explosion works even if the entity exploding is inside multiple 'layers' of containers like.
bomb -> survival box -> tool box -> closet
* Explosions are different now
Explosion can't jump over walls now.
Explosions work like rays now, if an explosion breaks a wall it can scatter inside the room.
If entities are behind impassable entities that survive the blast they are left unscathed.
* Little fix
* Remove the extra lookup of tiles
* Another small change
* Restore the second lookup
I thought this was extra, but this protects the tile under it if there is an Impassable entity on top. None wants anchored girders on top of lattice/space
* Changing order of conditions
IsBlockedTurf is cheaper to run than InRangeUnobstructed.
* Yep
* Async Interface
* Update Content.Server/GameObjects/Components/Fluids/MopComponent.cs
Co-authored-by: Paul Ritter <ritter.paul1@googlemail.com>
* Changed the glassbeaker
* Update Content.Shared/Interfaces/GameObjects/Components/Interaction/IAfterInteract.cs
Co-authored-by: Paul Ritter <ritter.paul1@googlemail.com>
* Update Content.Shared/Interfaces/GameObjects/Components/Interaction/IAfterInteract.cs
Co-authored-by: Paul Ritter <ritter.paul1@googlemail.com>
* Interaction system fix
* Removed I from the interface
* Changed all implementations of the interface I could find
* all public void implementation fixed
* All built, no errors should remain
* Update Resources/Prototypes/Entities/Objects/Specific/chemistry.yml
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Update Content.Server/GameObjects/Components/Portal/TeleporterComponent.cs
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Update Content.Server/GameObjects/Components/ActionBlocking/HandcuffComponent.cs
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Commit based off Sloth's commentary
* Removed the Rag file from the PR
* Reverted sloth's commentary changes on the publcity of the function
* Injector component properly implemented interface
* Update Content.Server/GameObjects/Components/Fluids/MopComponent.cs
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Update Content.Server/GameObjects/Components/Fluids/SprayComponent.cs
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: BlueberryShortcake <rubetskoy234@mail.ru>
Co-authored-by: Paul Ritter <ritter.paul1@googlemail.com>
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Update usages of ! is with is not
* Content.IntegrationTests commit
* Content.Server commit
* Content.Shared commit
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Disable Pulling When Buckling an entity
* Projectile Improvements
If you shoot at a person that is critted now it will only hit if you aim at that person otherwise go "above" him and hit other targets.
- Dead people are still unhitable
* Update Content.Server/GameObjects/Components/Buckle/BuckleComponent.cs
Co-authored-by: Víctor Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>
* Firelock In Progress
* Revert "Projectile Improvements"
This reverts commit 5821afc798e49e530d4086d7a9ddbe097805fdc4.
* Firelock Graph
* Revert "Merge branch 'master' into test2"
This reverts commit c69661cc7d9dcdc6d8c0dd45770f9eb94b231463, reversing
changes made to 5f1de8b8d24cd52190addb3df5617cb1012fd52c.
* Bunch of stuff
- Metal Rods
- Reinforced Glass
- SetStackCount Condition
- Tables
- Lattice
* Output2 to FloorTileItemComponent
* Plating, Underplating and Tiles (+FloorTile Improvements)
* Turf Fixes
+ APC Electronics
* Reinforced Glass In-hand textures
* All the fixes
* Final Changes
* (Hopefully) Last commit
* Update Resources/Prototypes/Entities/Constructible/Doors/firelock_frame.yml
Co-authored-by: Paul Ritter <ritter.paul1@googlemail.com>
* Update Content.Server/GameObjects/Components/Atmos/FirelockComponent.cs
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* A Few more things
* Edit FirelockComponent.cs
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
Co-authored-by: Víctor Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>
Co-authored-by: Paul Ritter <ritter.paul1@googlemail.com>
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Align storage welders with door welders
* Spamming the button doesn't punish you.
* Requires lit welder to start
*
* Nulla-builda-buddy
* A certain smug in a bucket
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* FloorTileItemComponent can now extend the station, or create new grids.
* Fixes wrong interaction system EntityCoordinates check.
Needed for all this to work.
* Body bags!
* Morgue Trays and the Crematorium!
Reorganised body bags to be under Morgue, not Medical
* Fix. Things outside of EntityStorageComponents now use the Try*Storage() not just *Storage() methods - Allows mobs to be trapped in a morgue/crematorium whose tray can't open.
* Fix tests. Modernise component dependency and nullability.
* Update Content.Server/GameObjects/Components/Morgue/MorgueTrayComponent.cs
Co-authored-by: Víctor Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>
* Rename usages of collidable to physics
* high tier PANIQUE
* aaaaaaaaAAAAAa
* cursed commit dont research
* Fix urist and items being anchored
* Fix the rest
* Early commit
* Early commit 2
* merging master broke my git
* does anyone even read these
* life is fleeting
* it just works
* this time passing integration tests
* Remove hashset yaml serialization for now
* You got a license for those nullables?
* No examine, no context menu, part and mechanism parenting and visibility
* Fix wrong brain sprite state
* Removing layers was a mistake
* just tear body system a new one and see if it still breathes
* Remove redundant code
* Add that comment back
* Separate damage and body, component states, stomach rework
* Add containers for body parts
* Bring layers back pls
* Fix parts magically changing color
* Reimplement sprite layer visibility
* Fix tests
* Add leg test
* Active legs is gone
Crab rave
* Merge fixes, rename DamageState to CurrentState
* Remove IShowContextMenu and ICanExamine
* refactored storagefill component to allow for random items, amount, and conditional exclusion
* i fudged it
* yaml for the already deleted filler components
* ignoredcomponents & janifill
* remainder of toolboxes done
* emergencyclosetfill
* really makes you think
* it DOES really make you think
* orGroup
* exp111 suggestions
* last touches
* isNullOrEmpty
* 1779 Add extinguisher cabinet base item, rsi, and class based on potted plant
* Pretty much the rest of the owl
* Allow construction
* no more deconstruction
* pr fixes
* Sort out InRangeUnobstructed and add extension methods
* Rename client RangeChecks to RangeExtensions
* Add container extension methods and test
* Add missing component methods
Component to container
Grid coordinates to container
Map coordinates to container
Local player to container
* Actually use the field
* Merge fixes
* Add popup argument to local player extension methods
* Reduce code repetition for client range extensions