* Cleanup surgery classes
* Add DoAfter to surgery
* Consolidate doafter, break on user and target move
* Ignore biological surgery data component on the client
* Apply suggestions from code review
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Use a stringbuilder for surgery descriptions
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* 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>
* Singularity Testing Map: Add a command to auto-config the singularity engine
* Singularity Testing Map: Add the singularity testing map
A derivative of 20kdcstation.
* #2744 fix NRE on clicking alerts with no OnClick, and don't send the click
message unless the alert has an onclick
* #2744 fix NRE on clicking alerts with no OnClick, and don't send the click
message unless the alert has an onclick
* Traitor Deathmatch: Add the preset [Rebase onto factors line]
* Traitor Deathmatch: Being a human head or other not-quite-fully-animate object counts as dead. [ROFL]
* Traitor Deathmatch: Add redemption machine (but it doesn't work) [ROFL]
* Traitor Deathmatch: Map in redemption machines [ROFL]
* Traitor Deathmatch: Make the rounds end properly [ROFL]
* Traitor Deathmatch: PDA redemption works [ROFL]
* Traitor Deathmatch: New redemption machine sprite ( @Tomeno )
* Traitor Deathmatch: Get rid of redundant using
* Traitor Deathmatch: Change scoring, prevent redeeming your own PDA, fix bug where PDAs are not tagged with their owner names
* Traitor Deathmatch: Better messages, change cvar name, don't count ghosts for spawnpoint selection
* GamePreset: Add a hook to catch all player spawns for modification.
Unless someone makes the entire job system unpluggable, this is what you get...
* GamePreset: Is now in control of voluntary ghosting
* Clean up ghost code to only rely on a player's Mind
* Added atmos sprites from CEV-Eris
* Moved canister sprites to appropriate dir
* Removed unnecessary sprites, edited canisters prototype
* Created Gas Canister UI and release pressure buttons
* Changed GasMixture's pressure calculation (convert liters to cube meters)
* Added relabeling Canisters
* Reverted changes on GasMixture
* Changed my name in the credits
* Added valve opening on canisters
* Change canister visual state when connected to a port
* Added nullable to SharedGasCanisterComponent
* Replaced nullable contexts
* Changed again nullable annotation context
* Moved name in the credits to correct alphabetical order
* Canisters: Fix the most blatant issues with this PR (the added project interdependencies for no reason whatsoever)
* Canisters: Stop crashes when canisters leave atmosphere
* Canisters: Gas released into no atmosphere gets transferred "into space" (deleted)
* Atmos: Nullability annotations on TileAtmosphere, explaination of the states of TileAtmosphere.Air
* Canisters: If in an airblocked tile, do NOT release gas
* Scrubbers: Fix typo leading to them not connecting properly.
* Revert manual changes to credits file (sorry!) (1/2)
This reverts commit 94f3b0e5df8d9c2fa189866a17a231920f99bdaf.
* Revert manual changes to credits file (sorry!) (2/2)
This reverts commit 1986fb094dfaa44060f08d280f36b755258d17a6.
* Canisters: Apply @Zumorica 's reviews
* Canisters: Add missing localization as suggested by PJB
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
* Canisters: Pressure lights!
* Canisters: Light is now unshaded.
* Canisters: Now using IActivate
* Gas canisters (& air canister), now with their numbers properly calibrated (hopefully)
* Canisters: Refactor how their layers are added to be more like ApcVisualizer
* Canisters: Clean up of the tile invalidation/air release logic
* Canisters: Some gas canister window improvements
* Canisters: Clean up release pressure change button label code
Co-authored-by: Clement-O <topy72.mine@gmail.com>
Co-authored-by: Clément <clement.orlandini@gmail.com>
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
* Make disposal units also flush air
* Make disposals use tile.AssumeAir instead of tile.Air.Merge
Co-authored-by: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>
Technically some stuff could be dependent upon the entity regardless if it's deleted but this is how ICollideBehavior does it (not by my design) so I figured we'd make it consistent.
If someone really needs the functionality even if it's deleted then they can refactor it.
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Remove redundant null checks for atmos
* Remove unnecessary nullability parameter from AtmosphereSystem.GetGridAtmosphere
* Remove more nullability markers
* Bring back null checks for gas tanks
* Remove null checks from GasMixture.Merge and TileAtmosphere.AssumeAir
Co-authored-by: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>
* Remove the unused light bulb crate that explicitly says it needs to be removed
* Crates/Cargo: Add antimatter reactor crates
* Fix AME crate issues
* Descriptions and prices for AME crates.
* More Construction Pieces: Default construction targets
* More Construction Pieces: Unfinished particle accelerator will tell you how to finish it
* More Construction Pieces: Construction system actually pathfinds any-to-any
* More Construction Pieces: Verb to begin deconstruction of an object
* Make damage work through messages and events, make destructible not inherit ruinable or reference damageable
* Copy sound logic to destructible component for now
* Fix typo
* Fix prototype error
* Remove breakable component damageable reference
* Remove breakable construction reference
* Remove ruinable component
* Move thresholds to individual components and away from damageable
* Add threshold property to damageable component code
* Add thresholds to destructible component, add states to damageable, remove damage container, fix up mob states
* Being alive isn't normal
* Fix not reading the id
* Merge fixes
* YAML fixes
* Grammar moment
* Remove unnecessary dependency
* Update thresholds doc
* Change naming of thresholds to states in MobStateComponent
* Being alive is once again normal
* Make DamageState a byte
* Bring out classes structs and enums from DestructibleComponent
* Add test for destructible thresholds
* Merge fixes
* More merge fixes and fix rejuvenate test
* Remove IMobState.IsConscious
* More merge fixes someone please god review this shit already
* Fix rejuvenate test
* Update outdated destructible in YAML
* Fix repeatedly entering the current state
* Fix repeatedly entering the current state, add Threshold.TriggersOnce and expand test
* Update saltern
* Start work on upgradeable machines.
* Upgradeable machines work
* Component requirements for upgradeable machines
* Better container handling
* Remember to not push submodule updates in your PRs, kids!
* Refresh parts after building a machine.
* NetSync false
* Address some reviews, fix some bugs
* Nullable stackhelpers dependencies
* Use container helper method to delete all entities in containers
* Nullable string in AddContainer
* Better examine for machine frame and construction in general
* Machine breakage
* Nullable node
* nullable GraphPrototype
* Re-save saltern for autolathe parts
* Fix SaveLoadSave
* basic implementation
* minor fixes
* objectives temp commit
* proper onstart bind
* changes all conditions to be bound to a mind-instance
* oops
* oops v2
* adds possiblity to enable duplicate assignment of objective
equal objectives are unable to be added
* minor fixes, adds greentext
* refactors incompatability to be defined by requirements
* fixes a wrong whitespace
* minor fix
* addressed reviews v1
* address reviews v2
Co-authored-by: Exp <theexp111@gmail.com>
* final sweep
* adds/refactors traitor&sss cvars
* Update Content.Server/Mobs/Mind.cs
* never trust github web
* adds datasets & makes codewords use them
* addresses exp's reviews
* addressed zumos reviews
Co-authored-by: Paul <ritter.paul1+git@googlemail.com>
Co-authored-by: Exp <theexp111@gmail.com>
* Atmos Debug Overlay: Add a way of showing blocked directions
* Atmos Debug Overlay: Adjustable modes client-side
* Atmos Debug Overlay: Fix atvrange help text
* Atmos Debug Overlay: More flexible and clear gas ID specification
* BlockGamePlayerAction are only executed if _running is true, added italian localization file for blockgame UI
* Added localization functions and files for BlockGame arcade. Removed unused public variable added in the previous commit.
* Added new line to end of file blockgame.yml
* Update Content.Client/Arcade/BlockGameMenu.cs
Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com>
* Moved EndLeft,EndRight and SoftdropEnd actions out of the condition as per suggestion by Paul.
* Added Loc.GetString() to "Nanotrasen" and "Nanotrasen Block Game" to enable transliteration of the name in other alphabets as per suggestion of Remie.
Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com>
* Add command to delete all instances of a component
* Fix help string
* Consistent naming
* Use TryGet for registrations
* Remove newline
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* removes some unused fields
* thats an oopsie
Co-authored-by: Paul <ritter.paul1+git@googlemail.com>
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Implement configuration verbs
* Fix nullable errors
Change getting session from actor to user.PlayerSession()
Fix not having an interaction range
Co-authored-by: Julian Giebel <j.giebel@netrocks.info>
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Improve hurt command feedback and usability
* Move hurt command to its own separate class away from body commands
* NuLlAbLe
* NuLlAbLe part 2
* Change hurt command to use a string builder
* Char overload
* Give back the number of arguments when unexpected
* RemieMoment
* Pulling: Migrate critical pull state from PullController to SharedPullableComponent, fixing two bugs in the process
Bug 1: PullController can be just summoned for no reason when the verb is queried
Bug 2: PullController keeps it's own independent pull state which can (and will) go out of sync (See https://github.com/space-wizards/space-station-14/issues/2619 )
* Pulling: Fix issues with previous commit (or possibly in general?) causing transferring a pull to cause alerts to go wrong
The primary problem is that there is one "pulling slot" for a puller, so SharedPullableComponent needs to stop the existing pull.
* Pulling: Remove debug logs (whoops)
* 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>
* commit skeleton reagent grinder component
* add reagentgrinder bounduserinterface, add suffix to grinder yml, add reagentgrinder sprites
* implement much more of the grinder ui functionality
* get more use out of hasbeaker bool
* complete wiring up most of the chamber/beaker UI controls
* remove whitelist prototype id. add grindable tag component
* add juiceable component
* rename boolparam to be clearer
* more juice
* add some juice reagents and apply them to their drink prototypes
* re add glassyellow
* implement juicing and results
* add time delay to grindjuice
* add reagent grinder visualizer, add reagent grinder sounds, fix some yaml errors too
* interface has clear indication of currennt operation, and busy status
* add ReagentGrinder to Client ignnored components
* Update Content.Client/GameObjects/Components/Kitchen/ReagentGrinderBoundUserInterface.cs
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Update Content.Client/GameObjects/Components/Kitchen/ReagentGrinderBoundUserInterface.cs
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Update Content.Shared/Kitchen/SharedReagentGrinderComponent.cs
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* implemennt sloth changes
* fix isbusy
* Disable grind/juice buttons if there's nothing to grind or juice, also some misc fixes
* unsubscribe from messages on remove + fix xmlcomment
* fix bounding box
* Add these to dictionary
* Add these to client ignore
* Whitespace and unneeded import fixes
* tommy's toes
* Where'd these newlines come from
* power
* improve bounding box
* Check power better & show contents when beaker is ejected
* check power here
* Disable eject buttons when running
* improve comments
* readwrite for viewvars on work time and capacity
* Address most of Sloth's reviews
* Make this cleaner
* add grindablecomponent to motherfucking everything
* Fix reviews
* some more null suppressions
* remove unused random field
Co-authored-by: scuffedjays <yetanotherscuffed@gmail.com>
Co-authored-by: namespace-Memory <66768086+namespace-Memory@users.noreply.github.com>
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* SIMD atmos
* Moles will always be a multiple of four.
* Component dependencies for grid atmos.
* Let's optimize allocations while we're at it!
* Inline this
* A bunch of atmos optimizations
* Fix crimes against atmos
* Microsoft moment
* Remove nuget.config
* do not reference Robust.UnitTests in Content.Benchmarks as it's unneeded.
* Revert "Remove nuget.config"
This reverts commit 872604ae6a51365af4075bb23687bd005befd8ac.
* Gas overlay optimization and fixes
* Lattice is now spess
* minor atmos tweaks
* Add verb to toggle flashlight
* Playing with hand-held light for hard hat
* ClothingEquippedPrefix will update players sprite when changed
* Make abstract prototype for hardhat and fixed hardhat orange sprites
* Fixed all other hard hats
* Fixed requested changes
* Restore prototype and sprites changes
* Nullables
* That's actually nullable
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* temp commit to save progress
* adds objectives
* refactors mind.addobjective a bit
* better names for my testobjectives which i'll remove later on anyways
* nullable errors
* some misc fixes
* no sorted or set, what was i thinking here?
* removes unused imports
* added commands
* fully implements stealcondition
* started uiwork
* moved prototypeicon to engine
* removes objective class & uiwork
* refactors ui to only update when opened
adds progresstexturerect
* adds some margin
* removes some testing code
* ignores objectiveprototypes on clientside
* fixes
* removes using statements for exp
* gets the job
* always show issuer
* locs & _
* giving commands some love
* Update Content.Client/GameObjects/EntitySystems/DoAfter/DoAfterBar.cs
Co-authored-by: Exp <theexp111@gmail.com>
* makes commands use new thingy
* string interpolation
* good catch exp
* loc'd
* linq gone
* runtime
* moves function from engine
* oopsie
* Update Content.Server/Objectives/Conditions/StealCondition.cs
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* makes messages directed
* base call & validation
* shuffle once
* No? Money down!
Co-authored-by: Paul <ritter.paul1+git@googlemail.com>
Co-authored-by: Exp <theexp111@gmail.com>
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Disable automatic on-touch activation of external airlocks
It's a total pain to reliably get inside a two-door airlock without tripping the firelocks, and that's if you're *intending* to use it properly...
People keep draining the entryway air on the sandbox servers (so people have to crowbar the firelocks open, and this reduces available air)
* Disable automatic on-touch activation of external airlocks: Change auto_open to autoOpen
* Change auto to bump
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Added refine component for glass shard
* Add refinable to rest of the shards
* Fixed windows shard count
* Now objects can vary refine time
* Windows will spawn correct shards after destruction
* Added all requested changes
* Client ignore as well
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Make Godmode able to be disabled and more accessible
* You got a license for that exclamation mark?
* Move restore logic to the entity system
* Make MovedByPressureComponent able to be disabled
* Add extension that gives you the moved by pressure component
* Fix not disabling moved by pressure
* 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>
* makes conveyors to use machine linking & refactors machine linking a bit
* nullable errors
* temp commit, starting work on construction
* working recipies & graphs
* fixes crash
* makes items gravitate towards the center when on a conveyor
* makes conveyors take bool signal too
* ignores components clientside
* default arm
entitymanager
maxtransmitters
unsubscribe methods
* twowayLEVER
* _
* componentreference
struct
* yaml run
leverDefinitelyNotCopiedFromGirderNoNoNo dies today :(
* nullable
* no divide by 0
* making sloth happy
* space gone - happy?
* final fix
* yes
* adds item to lathe
* conveyor item -> conveyor assembly
* technology
* reviews ADRESSED
* Update Content.Shared/GameObjects/Verbs/VerbUtility.cs
Co-authored-by: Paul <ritter.paul1+git@googlemail.com>
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.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>
* #272 add bordered panel for effects bar
* #272 avoid mouse overlapping tooltip when near edges,
change tooltip colors to match mockups
* #272 WIP defining status effect states as YML and
sending them as encoded integers
* #272 refactor to use new alert system
* #272 refactor to use new alert system
* #272 fix various bugs with new alert system and update
alerts to have color
* #272 WIP
* #272 rename status effects to alerts
* #272 WIP reworking alert internals to avoid code dup
and eliminate enum
* #272 refactor alerts to use
categories and fix various bugs
* #272 more alert bugfixes
* #272 alert ordering
* #272 callback-based approach for alert clicks
* #272 add debug commands for alerts
* #272 utilize new GridContainer capabilities for sizing of alerts tab
* #272 scale alerts height based on
window size
* #272 fix tooltip flicker
* #272 transparent alert panel
* #272 adjust styles to match injazz mockups more, add cooldown info in tooltip
* #272 adjust styles to match injazz mockups more, add cooldown info in tooltip
* #272 alert prototype tests
* #272 alert manager tests
* #272 alert order tests
* #272 simple unit test for alerts component
* #272 integration test for alerts
* #272 rework alerts to use enums instead
of id / category
* #272 various cleanups for PR
* #272 use byte for more compact alert messages
* #272 rename StatusEffects folder to Alerts,
add missing NetSerializable
* FloorTileItemComponent can now extend the station, or create new grids.
* Fixes wrong interaction system EntityCoordinates check.
Needed for all this to work.
There's also the existing events command as well that's separate. I think there's value in having both? (Where mods can turn it on and off but not change the default?)
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
- Rotatable verbs only show if the entity can be rotated.
- Adds parameter to rotate anchored entities.
- Office chairs can now be rotated regardless of anchoring.
* Fix block game crashing server
* fffff i just noticed
* THIS is the correct property
* Ignore unpause if game has not started
* Init _currentPiece by BlockGame constructor
* Make pointing check for occlusions
* Make pointing ignore the pointer in case you are hella occluding
* Merge branch 'master' of https://github.com/space-wizards/space-station-14 into unoccluded-pointing
Flashlights were calling dirty EVERY TICK so this just means they only call it when absoluetely necessary which saves a lot.
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Revert "Add weightlessness status effect. (#2384)"
This reverts commit 9b751fc079.
* Bring back the icon and status
* Make weightless status track gravity and parent
* Fix throwing an item not moving the player when weightless
* Remove unnecessary code from ThrownItemComponent
* Fix velocity not stopping when hitting a wall after slipping when weightless
* Fix CanMove check being reversed
* Make dead bodies disposable
* Formatting Fixes
* Fixed Returning False in any case
* Revert "Fixed Returning False in any case"
This reverts commit fb1e40ca44f208078816e119976779280922b4c8.
* Fixed Returning False in any case
* Update Submodule
Github will cuck me no more.
I tried the old google machine to find if there's a way to inherit these but it was failing me.
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Put the damage in the windows
* add crack overlays
* Window cracking
* glass related sounds
* let's use a valid state
* run optipng on these for posterity
* Examine damage descriptions
* add "Constructible" to dictionary
* Downmix stereo effects to mono
* breaking and knocking
* Add shard etc. sprites
* shard inhands
* more sprite wrangling
* Expand destructiblecomponent drop system + implement it for windows
* Shard descriptions
* Random sprite component
* no nullbabby
* Random destroysounds
* random offset on destructible drops
* fix fucked yaml
* sound collections
* random pitch for knocking
* Localization
* hascomponent
* better spawnondestroy
* missed one
* Refactor battery/powercell assets and add new ones.
* committing before I fuck things up
* slot component doned I think
* dictionary update
* Fixes
* Moving flashlight to powerslotcomponent
* har har i am using the message tubes
* Better documentation comment
* Reverting this overengineered garbage.
* Off with ye I said
* Examine texts.
* Some minor fixes to IDE complaints
* slot size from yaml
* Ignored component + removing a useless typo entry
* Making stunbatons use this
* Handle the message and remove some unnecessary dirtiness
* actionblocker checks
* remove unused file
* remove updatevisual
* make these nullable
* make these nullable too
* Unrename sprite folder
* check itemcomponent on insertion
* Use SendMessage over Owner.SendMessage
* Add support for auto-recharging batteries, an auto-recharging cell, and make flashlight status update correctly if one is inserted in it.
* get rid of public fields which are Bad
* add a description for the stun baton while i'm in here
* one more public field
* Add the blinky animation to the atomic cell
* Fix the charge indicator being STUPID
* better comments
* this is a better function
* add pause for flashlight, remove unnecessary imports from battery
* potato battery copyright link
* WHO DID THAT
* mr clean has come
* Random pitch
* pausing
* round to nearest levels
* Add Butcherable component to humans.
...What?
* Meat from a meat spike is now named after the source
Note: This doesn't propagate to burgers (add a component maybe)
* 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>
* basic radiation generator
* might need this
* thonk
* big thonk
* oop
* e
* werks
* sprite
* oopsy woopsy
* radiation
* clean up file
* makes it work, probably
* minor fixes
* resources
* progress on component
* this will no longer be necessary
* radiation go brrrr
* finally fix container issues
* out var
Co-authored-by: Remie Richards <remierichards@gmail.com>
* second out fix
* another out fix
Co-authored-by: Remie Richards <remierichards@gmail.com>
* switch case
* fix switch
* sound and improvements
* nullable
* basic containment field system
* ensure alignment
* fix beam placement logic
* field generation fully working
* fix potential crash
* working containment functionality
* extremely basic emitter functionality
* fix radiation panel naming
* emitter stuff
* oopsies
* fixes
* some fixes
* cleanup
* small fix and move emitter file
* add sprite resources for PA
* slight rework of the singulo
adds rads
* pushing for smugleaf :)
* added radiationpanels
* some fixes for the singulo
* containmentfield
* pa wip
* progress
* pa working
* emitter fix
* works :)
* ui works
* some work on ui & pa
* progress
* ui work & misc fixes
* GREYSCALE
* pa ui polish
containmentfieldgen rework
* singulo rework
added snapgrid
* getcomponent get out
* singulo rework
added collisiongroups underplating & passable
* yaml work:
- collision boxes
- singulo now unshaded
* no unlit
* misc changes
* pa wires
* add usability check
* nullable enable
* minor fix
* power need added
* reenables containment field energy drain
menu close button
singularity collider fix
* sprite replacement
* finished singulo pulling
* pjb fixes
* fixing sprites & minor adjustments
* decrease containmentfield power
* some yml adjustments
* unlit layers
singulogenerator
* singulogen
* everything works just not the powergetting on the pa
i wanna die
* Adds PA construction graphs, PA construction works
* Snap to grid parts when completing construction
* updated to newest master
* inb4 i work on power
* fixes upstream merge
adds power need to particleaccelerator
* properly implements power & apc power
* Emitters are now fancy.
* I have actually no idea how this happened.
* Give PA a wiring LayoutId
* PA is an acronym
* indicators
fixes hacking
* Singulo is a word you blasphemous IDE.
* Rewrite the PA.
* Fancy names for PA parts.
* Wiring fixes, strength wire cutting.
* fixes projectile & ignores components
* nullability errors
* fixes integration tests
Co-authored-by: unusualcrow <unusualcrow@protonmail.com>
Co-authored-by: L.E.D <10257081+unusualcrow@users.noreply.github.com>
Co-authored-by: Remie Richards <remierichards@gmail.com>
Co-authored-by: Víctor Aguilera Puerto <zddm@outlook.es>
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
* plants and seeds go brrrr
* update plants
* P L A N T
* brrrr
* Hydroponics actually work! How about that?
* Reuse resource path in visualizer
* They lied to us.
* Several stuffs
* more werk
* Add a bunch of plants
* Logs go brr.
* Brrr moment.
* Remove unused method
* Important comment.
* Seed inventory, yo!
* tomato moment
* Balance consumption
* Makes hydroponics pourable
* Adds plant metabolism effect for sugar, the same as glucose.
* Eggplant moment
* Apple moment
* Corn moment
* Chanterelle mushroom moment
* prototype tweaks
* Seed extractor moment
* typo
* IPlantMetabolizable doc improvement
* I should trust my gut instinct more often.
* egg-plant.....
* localization
* Make WaterLevel and NutritionLevel setters private
* Less code repetition! Wooo!
* Add examine tooltip to ghosts.
* remove ghost name in examine tmsg. reformat time since death
Co-authored-by: scuffedjays <yetanotherscuffed@gmail.com>
* Default grids go poof
* Address review
* Update submodule
* Fix DoAfterSystem for entities without grid.
* Fix SubFloorHideSystem for entities without grid.
* Fix ExplosionHelper for coordinates that aren't in a grid
* Fix TurfHelpers' GetWorldTileBox crash in the case of invalid grid
* Fix tile prying component crash when trying to pry space.
* Spill fixes when passing coordinates without grids.
* Are you static'in, son?
* Change SaveLoadSaveTest grid Id hardcoded value
It's still hardcoded, but at least now it's correct!
* Only send debug AI thing if grid is not invalid
* Update submodule.
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
* Add mechanism events when added/removed to/from body/parts
* Change old usages
* Add TODO
* Remove BodyExtensions and IHasBody
* Remove unnecessary extensions and fix wrong event call in mechanism behavior component
* Complete test and fix event calls
* Fix?
Nuked everything and put my code back in, hope everything works
* Nullable fix?
* nullable fix electric boogaloo
* Haha nullable error go brrr
send help
* Cleanup and fix not clearing the button list
* Remove unnecessary brackets and parentheses
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
* WIP changes
* Merge conflict fixes
* Bring pull controlelr to current year
* Sync and predict PullController on the client
* Clean imports
* Slow down pullers and make pulling tighter
* Stop pulls on pullable or puller component removals
* Make pulling not occur when moving towards the pulled entity
* Adjust your rotation as you move (against walls and drifting)
* Can't use bullets / firelocks / items to push off of.
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Disable job buttons when they aren't available
In real time too, the technology is overwhelming
* Jobs are all unavailable when late join is disallowed.
* Better ToggleDisallowLateJoin command parsing
* Add togglelatejoin to groups.
Co-authored-by: Víctor Aguilera Puerto <zddm@outlook.es>
* Allow hitscan to go through open doors
So the door itself sets physics.Hard as false although that doesn't seem to include hard which I guess makes sense.
* Do the firelock thing
* Fix saltern
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* -Added Crayons + CrayonBox
-Can set any crayon state and color
-Added CrayonDecals
* Allows to cycle through decals (not the final thing)
* ItemStatus
* -UI (WIP)
-Selection thing works
-Changed some shitty state names
* -Icons
-Changed decal name
* Pure Texture Grid
* Charges
* -Reach check
-Toggle interface on use
* Can't draw on windows anymore
* UI now shows selected decal and color
* -UseSound
-Nullable
* Remove unused imports
* -Rotation
-Made decal abstract
* Remove some duplicate images
* Space Cleaner cleans
* Loc Title
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
* Review adressed
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
So the door itself sets physics.Hard as false although that doesn't seem to include hard which I guess makes sense.
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
Climbing now can't be done if you're already climbing. Rest of the changes are just formatting.
I also removed the buckle messages as they were being duplicated for click-drag.
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.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
* initial commit
* I have to switch to master
* oops
* i need to merge master
* finishing touches
* updating submodule
* bye
Co-authored-by: Víctor Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>
- Powerful
- Data-oriented
- Approved by PJB
- Powered by node graphs and AI pathfinding
- Coded by the same nerd who brought you atmos
Co-authored-by: Exp <theexp111@gmail.com>
* add headset component
* add basic headset logic
* fix formatting in listening component, add dependency to headset
* test function for headset
* implement headset as listener
* ANNIHILATES ListeningComponent, refactor of radio/listener sys
* basic headset functionality
* rename RadioComponent to HandheldRadioComponent
* change channel to list of channels
* basic headset implementation complete
* message now always excludes ';'
* add radio color; state channel freq. and source name
* undocumented game breaking bug commit (DO NOT RESEARCH)
actually just changes frequency from 1457 (what signalers are set to by default) to 1459, the actual frequency for common
* Add more sprites
* Reorganizes
* Added job headsets
* Adds headset as an ignored component
* Jobs now spawn with headsets
* remove system.tracing
* Catchup commits
* Add headset property serialization
* Turn GetChannels into a property
* ListenRange property and serializatioon
* Adjust interfaces
* Address reviews
* Cleanup
* Address reviews
* Update rsi
* Fix licenses and copyright
* Fix missing textures
* Merge fixes
* Move headset textures from objects/devices to clothing/ears
* Fix rsi state names and add equipped states
* Fix headsets not working
* Add missing brackets to channel number in chat
* heck
* Fix broken rsi
* Fix radio id and names
* Put quotes around headset messages
* Fix method names
* Fix handheld radios
* Fix capitalization when using radio channels and trim
* Remove unnecessary dependency
* Indent that
* Separate this part
* Goodbye icons
* Implement IActivate in HandheldRadioComponent
* Add examine tooltip to radios and headsets
* Rename IListen methods
Co-authored-by: Bright <nsmoak10@yahoo.com>
Co-authored-by: Swept <jamesurquhartwebb@gmail.com>
Co-authored-by: Bright0 <55061890+Bright0@users.noreply.github.com>
* Fixed flashlights staying enabled after taking the battery out of them
* Refactored code for flashlights shutting off after the battery is removed
* Fixed casing in makeNoise
* Holy crap auth works
* Fix some usages of UserID instead of UserName
* Refactor preferences.
They be non-async now. Also faster.
* Rename DbContext.
* Guest username assignment.
* Fix saving of profiles.
* Don't store data for guests.
* Fix generating invalid random colors.
* Don't allow dumb garbage for char preferences.
* Bans.
* Lol forgot to fill out the command description.
* Connection log.
* Rename all the tables and columns to be snake_case.
* Re-do migrations.
* Fixing tests and warnings.
* Update submodule
* Rehydratable component -> monkey cubes now have some of their behaviour
* Placeholder kitchen spike entity
* KitchenSpike component: the kitchen spike now has basic functionality
still placeholder sprite though
* Kitchen Spike: Import meatspike assets from CEV-Eris
* Kitchen Spike: Actually use sprites somewhat
* Kitchen Spike: Forgot I removed the MeatParts property from Butcherable
* Monkey cubes: Use IReagentReaction even though it doesn't quite work yet. Butcherable: remove imports
* Monkey cubes/Rehydratable: Re-add ISolutionChange
* Update Resources/Prototypes/Entities/Constructible/Ground/kitchen.yml
Co-authored-by: Víctor Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>
* Rate-limit AI updates
Stop the public servers from getting hammered too hard.
* Add logger for the AI limit as well.
* Also support AI maxupdates <= 0
Juuusssttt in case
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Adds new different reaction types.
- Adds touch, injection and ingestion reactions for entities.
- Adds tile reactions.
- Removes GasSprayerComponent in favor of SprayComponent.
- Gives fire extinguishers a safety.
- Gives spray puffs a sprite.
- Improved spray and fire extinguisher in general.
- Fire extinguisher now ACTUALLY puts out fires. Amazing, eh?
- Fire extinguisher sprays three 'clouds' at once.
- Spraying flammable chemicals at fire makes them worse. Whoops!
- Gives spray and fire extinguisher their classic sounds.
- Most chemicals now don't make puddles. Too bad!
- Space lube now makes a very slippery puddle. Honk.
- Spraying water (or using a fire extinguisher) on existing puddles makes them bigger.
* Fix solution tests
* food base now has solution container with noexamine caps
* 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
* Work on refactoring radiation.
* mmmm grayons
* fixes
* Now you can specify whether the pulse will decay or not
* whoops
* Move IRadiationAct to shared, make DamageableComponent implement it instead and add metallic resistances to walls
* General improvements, send draw and decay with state. Rename DPS to RadsPerSecond
* E N T I T Y C O O R D I N A T E S
* Entity coordinates goood
* Remove unused using statements
* resistances: metallicResistances
* - type: Breakable moment
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
* Fixed an issue with the welder messages, not done yet
* Fixes issue #1833
The welder item no longer plays do_after when it cannot be used
* Revert "Add do_after to TryInsert (#1938)"
This reverts commit c09c9176ef.
* Revert "Revert "Add do_after to TryInsert (#1938)""
This reverts commit 078323bc2e10109b63c438f38a7b56103d163994.
* Revert "Fixes issue #1833"
This reverts commit 921712810fce73611e186fe07d7620b8cc309fdb.
* Revert "Fixed an issue with the welder messages, not done yet"
This reverts commit 5e946014451c6f5855cbe4fa553a04c55b907793.
* Added a start to a damage sound system
* Fixes issue #2056 by removing some misplaced code
* Undo changes that carried over through not using git properly
* Forgot to save my file before committing...
* Fix breathing
* WIP changes because I don't trust git stash after 2 weeks
* My imports
* Add gasping, adjust breathing values and fix test
* Make the gasp message appear to others
* Add PopupMessageEveryone extension
* Change used percentage to use a single number instead
* Remove unnecessary logging
* Fix air consistency test
* Add test map to SkippedMaps array
* Separate part management from the rest of body manager component
* Component reference
* Move more methods over
* Fix docs and move over BodyPreset
* Fix up body preset
* Create initialize method and remove constructor for BodyPreset
* Do the same for BodyTemplate and add Initialized properties
* Fix BodyTemplate HashCode test
* BodyTemplate test PLS
* Make the mapping command take the next available map id if one isn't given, draft
* Remove todo
* Update clientside mapping command
* Address reviews
* Moved the uplink creation code to the PresetSuspicion.Start method to ensure uplink created when we give the traitor role
Moved the starting TC balance to cvars
* Added component to handle interaction with Atmospheric system
Added damage from high and cold temperature
* renamed AtmoExposable to AtmosExposed
moved AtmosExposed updates to its own system
refactored TemperatureComponent
renamed fire to heat
added null check for Air
added self-heating and self-cooling to body system
* small refactoring for checking on airless tile in MetabolismComponent
* Added component to handle interaction with Atmospheric system
Added damage from high and cold temperature
* renamed AtmoExposable to AtmosExposed
moved AtmosExposed updates to its own system
refactored TemperatureComponent
renamed fire to heat
added null check for Air
added self-heating and self-cooling to body system
* small refactoring for checking on airless tile in MetabolismComponent
* Removed Pressure property from BarotraumaComponent
Changed CanShiver method to match style of other CanX method in ActionBlockerSystem
* Merged EntityCoordinates and changed components to reflect the change
* Fix typo
* Wrapped string to Loc.GetString
Added CanSweat
Refactored dead state check
* Adds AtmosCooldown to tiles, so they stop being active after a certain number of cycles without a cooldown reset.
* Fixes adjacentTileLength in ProcessCell. It wasn't being set beforehand, (probably) causing some incorrect air shares.
* Removing a tile from active tiles no longer unexcites every other tile in their excited group. (Basically, Dismantle in ExcitedGroup's Dispose() method no longer unexcites tiles)
* Assets
* LightingBehaviours, flares, and such.
* More changes
* More changes, more flare work.
* More work on flares + light behaviours
* another refactor
* missed
* Light behaviours refactor, added sfx, improved graphics, improved lighting effects for glowstick and flare.
* remove unneeded value
* nullables
* remove old code
* nullable
* one last push
* net id
* more work
* more colors for glowsticks
* Adjust flare so it fades in
* fix name
* sprite fix
* Moved the uplink creation code to the PresetSuspicion.Start method to ensure uplink created when we give the traitor role
Moved the starting TC balance to cvars
* Added isVital flag for body parts
Automatically killing creature if last vital body part removed
Marked head as vital part
* Hurt Command
* Fixed not sending help
* Removed unused import
* Use IDamageableComponent
* Optional entityuid arg
* Reviews
* Allow DamageTypes too
* who wrote this
* reviews
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
* Add art assets for cloning
* Added a 'Scan DNA' button to the medical scanner
* Made the UI update unconditional for the medical scanner until checks for power changes are in place
* Update Medical scanner to reflect powered status and fix#1774
* added a 'scan dna' button the the medical scanner that will add the contained bodies Uid to a list in CloningSystem, fixed an issue with the menu not populating if the scanner starts in an unpowered state
* Add disabling logic to 'Scan DNA' button on medical scanner
* Removed un-used libraries
* changed scan dna button to Scan and Save DNA
* Added cloning machine code infrastructure copied from Medical Scanner
* Added a list to cloning menu containing some numbers
* Cloning Machine UI sends a message to the cloning component with the entityUID
* New scans now show up in cloning pod menu
* fixed cloning machine collision shape
* cloning machine can now spawn the right player profile assuming the attatched entity is still correct.
* refactored cloning system to use a map of integer ids to player Minds
* Added a return to body cloning loop for the ghost
* Fixed warning for _playerManager being possibly null, added TODO note for ghost return to body button acting as a toggle
* removed #nullable from cloningMachineWindow"
* Trying to get rid of nullable error
* fix CloningMachine to not initilize with it's owner components
* updated CloningMachine server component to play nice with the new nullable rules
* replace flag with eventBus message for sending a ghosts mind to a clone body
* Refactor cloning so that a popup option is used to get user consent for cloning
* Refactoring
* Reverting unused changes for cloning component
* Added proper cloning pod sprites and a visualizer so 'idle' and 'cloning' states are properly reflected
* added missing robust toolbox contents
* Added cloning NoMind State and made cloning take time
* Added cloning progress bar and mind status indicator to cloning pod
* Added missing localization calls, removeed 'returned to cloned body' from ghostUI
* Added unsubscribe for cloningStartedMessage in Mindcomponent.cs OnRemove
* Added eject button to cloningMachine and clamped the cloning progress bar to 100%
* Added condition to eject body on cloningmachine so bodies can't be ejected until cloning is done
* Add click-dragOn functionality to the medical scanner for things with a bodyManager
* Messed with scan query so it doesn't fail on dead bodies as long as Mind still owns the mob
* refactored clonning scan check on medical scanner so it doesn't do a linq query
* merge with rogue toolbox
* Change the name of Cloning Machine to the less generic Cloning Pod
* Changed Cloning Pod so it pauses cloning while the power is out
* Removed the evil LocalizationManager from the cloning menus and used the static Loc instead
* removed localization dependency from bound accpetCloning user interface
* Removed Ilocalization dependency I accidentally added to ghost ui
* Update Content.Client/GameObjects/Components/MedicalScanner/MedicalScannerComponent.cs
Co-authored-by: Exp <theexp111@gmail.com>
* Changed null check to tryget in case for cloning UiButton.Clone
* Parameterized Cloning time on serverside component
* tried to reset Robust toolbox module to current master
* Added null check to ghost client component message handling, unsubscribe to the mind component listening to the cloning question ui, fixed _clonningProgress typo, moved CloningPod component dependencies to actually be dependencies, removed un-needed disposals of cloning windows, added disposals missing in boundUserInterfaces.
* Reset submodule
* corrected exception for cloning pod visualizer to refer to cloning pod state and not medical scanner state
* Fix typo
* Unsubscribe from onUiReceiveMessage in mindcomponent in the onRemove function, not the acceptcloningui function
* unsubscribe from OnUiReceiveMessage in CloningPodComponent
* unssubscribe from ghostreturn message in cloningpodComponent onRemove
Co-authored-by: Exp <theexp111@gmail.com>
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
* 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
* Add post-checks for do_after
So you can do InRangeUnobstructed or whatever at the end.
Individual components should do their own check upfront to avoid the state ever being sent. I added a pre-made function for people to do InRangeUnobstructed.
* Woops imports
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* -Show tooltip on hover
-Show notify on click
* -Status Effects now get removed instead of going invisible
-Removed empty textures for that
* Revert break in HungerComponent
* No context menu through occluder
* Fix disabled occluders
* Comment
* Server-side verb ray check
Decided to add a buffer because the entity is at the very edge of the context box (0.5, 0.5) then need to make sure that entities at the other end of the box are ignored.
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Implement machine linking
* Cleanup and rename Signals
* Implement signal button
* Add machine linking signal mapping
* Fix signallink command help
* Add localization to signal linking and allow infinite range
* Add feedback for when a transmitter is not connected to any receivers
Refactor PopupMessage to use the entity extension
Refactor dependencies to not have to disable warnings
* Adds IFireAct, ITemperatureExpose
* Use AtmosDirection instead of Direction for Atmos
* Refactor atmos to heavily rely on arrays and bitflags.
Adds F A S T M O S and reduces atmos tech debt heavily.
* Optimize and fix more stuff
* Kinda improve superconduction
* Pipenet is a word
* T U R B O M O S
* Address reviews
* Small optimization
* Superconduct is also a word
* Remove check
* Cleanup tile atmosphere
* Correct a comment
* Add button that displays your SSS role and allies
* Capitalize button name
* Add cases for 0, 1 and invalid number of allies
* Make the ally syncing system saner
* -ItemStatus for BatteryGuns
-EjectCell Verb
-Using the gun throws the battery also on the ground
* Copy the flashlight and call it a day
* Name a red fruit
* Remove SoundGunshot
Recyclers only check for intersecting entities that have been triggered via collision instead of actively querying it every tick. This means they pretty much don't show up on the profiler when idle.
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* First Accent Prototype
* -RegisterSystem
-Fixed addaccent cmd
-Spanish accent
* -list is now ?
-Checks if the accent is already added
-Made components public
* owo whats this
* special word filter
* Eeeeeeeeee
* Better?
* -Use a delegate func
-Made some funcs not static
-Moved SentenceRegex
* InjectDependencies
* Name change?
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
* Add collision to disposal unit and pipes
Make disposal unit and pipes pullable
Implement proper handling of collisions in disposals
* Implement IsExiting
Move DisposalSystem to shared
* Change SharedDisosalUnitComponent to call manager.ContainsEntity directly
* Update saltern.yml
Co-authored-by: Julian Giebel <j.giebel@netrocks.info>
UI was being updated every tick even when not necessary. Ideally you'd just update the UI based on events but this is fine for now.
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Add NPC faction tags
Some stuff isn't easy to represent by the existence of components so tags are intended to provide that functionality for AI usage.
I was 50/50 on having all tags in the 1 component or splitting it into 2. I'm leaning towards 2. This would be for stuff like say "CanMimic" so the mimic knows it's allowed to look like a specific prototype, or something like "smg" on a gun so it can say smg-specific barks for instance (as currently smgs and pistols look the same from a component perspective).
This also means combat behaviors aren't hardcoded per faction, plus it makes it easy to update faction relations during events.
* Factions command
Update faction relationships via commands.
* Remove command TODO
* Woops
Forgot to commit these items
* Serializer writing and parsing
* linq me up fam
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Add art assets for cloning
* Added a 'Scan DNA' button to the medical scanner
* Made the UI update unconditional for the medical scanner until checks for power changes are in place
* Update Medical scanner to reflect powered status and fix#1774
* added a 'scan dna' button the the medical scanner that will add the contained bodies Uid to a list in CloningSystem, fixed an issue with the menu not populating if the scanner starts in an unpowered state
* Add disabling logic to 'Scan DNA' button on medical scanner
* Removed un-used libraries
* Added playing parameter to radiatingLightComponent, changed it's animation key to radiatingLight
* refactored RadiatingLight into a visualizer
* Added different light animations for differnt power states of a flashlight
* split out the radiating light visualizer into two seperate visualizers
* further refactored and tweaked handheldlight animations
* further lantern light tweaks
* removed un-used attributes in flashlight and lantern prototypes
* fix null check in handheldlightcomponent
* Add test that puts all components on an entity and checks for no exceptions
Also fix all the exceptions that happened because of this
* Add comments to the test
* Fix nullable errors
* Fix more nullable errors
* More nullable error fixes
* Unignore basic actor component
* Fix more nullable errors
* NULLABLE ERROR
* Add string interpolation
* Merge if checks
* Remove redundant pragma warning disable 649
* Address reviews
* Remove null wrappers around TryGetComponent
* Merge conflict fixes
* APC battery component error fix
* Fix power test
* Fix atmos mapgrid usages
* As discussed on the Discord, xenos are not humans
* Add living component for living beings without a defined body
* Merge LivingDamageable and Damageable components
* Fix ruinable and state manager inconsistencies
* Fix ruinable exposedata
* Fix new destructibles yamls
* Fix healing not healing
* Fix alive not being a valid state
* Fix valid state checking
* AI pickup changes
Eating and drinking isn't spammed anymore.
AI can do InRangeUnobstructed checks for item pickups.
AI can open drink cans.
AI littering to be coded.
* #nullable enable
* github's nullable fails are actively shortening my lifespan
* Use a const instead
So it's easier to find given the performance implications.
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Geometric mean for AI cons
More forgiving for having more considerations for an action.
* You had 1 job
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
I was a silly billy. AI were only picking up 1 item because 0.5 was being treated as a fail.
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Initial commit
* Climbing uses its own controller now
* Missed a check
* Get rid of hands check
* Cleanup
* Get rid of speciescomponent stuff
* Remove unneeded check, add separate case for moving other players.
* Add DoAfter
* IClientDraggable added to ClimbingComponent
* Added some basic integration tests. Renamed ClimbMode to Climbing.
* oops
* Minor fixes
* ffff
* Table fix
* Revamped system so its more predicted, uses proper logic for de-climbing. Get hype!!!
* Flag check fix
* Distance check and reset numticksblocked
* get rid
* Switches PDAs with tg ones and renames flashlight component
* Which chucklefuck hid the ID cards in the clothing folder
* Removes Mime PDA as i'm gonna do that in another PR
* Moves EVERY SINGLE PDA over by exactly one pixel so they're aligned perfectly with the UI slot
* On second thought moves back the id-cards since I don't want to deal with conflicts
* Add art assets for cloning
* Added a 'Scan DNA' button to the medical scanner
* Made the UI update unconditional for the medical scanner until checks for power changes are in place
* Update Medical scanner to reflect powered status and fix#1774
* added a 'scan dna' button the the medical scanner that will add the contained bodies Uid to a list in CloningSystem, fixed an issue with the menu not populating if the scanner starts in an unpowered state
* Add disabling logic to 'Scan DNA' button on medical scanner
* Removed un-used libraries
* changed scan dna button to Scan and Save DNA
* Random events cannot run in lobby and round ending forces events to end.
* Thanks p4merge
* Get rid of unused
* Apply suggestions from code review
Co-authored-by: Víctor Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>
* Increase all walls hp by 5 times
* Increase reinforced and riveted wall hp as well
* Revert "Increase reinforced and riveted wall hp as well"
This reverts commit a9d95670e3f6c4d7fb2b2cf3c84503496f685e26.
* Increase reinforced and riveted wall hp as well
* Merge conflict fixes
* Reduced wall hp slightly
* added a lantern
* Add A Lantern with radiating light
* Added a GasVapor system and made a base for extinguisher spray.
* switched to using solution component for fire extinguisher
* made it so fire extinguisher's can run out of water vapor
* Added actual Gas to Gas Vapor, now getting atmosphere for touched tiles.
* Made it so gasVapor reacts and dissapates on reacting
* GasVapor now dissapates exponentially while traveling
* Added in-hands for fire extinguisher
* Added Spraysound to gasSprayer and to fire extinguisher prototype
* parameterized GasSprayer and GasVapor
* removed un-used imports in gasSprayer and gasVapor components and systems
* removed accidential threading import into gasmixturecomponent
* add a shared extinguisher component for extinguisher spray rotation instead of piggy-backing on RogueArrow
* paremeterized fuelCost and fuel name in GasSprayerComponent
* Paremeterized gasAmount, removed un-used code from gasVaporComponent
* Removed BaseItem Parent from Extinguisher_spray
* added GasVapor and GasSprayer to Ingored Components list
* reduced offset of spawned extinguisher vapor from player
* Update IgnoredComponents.cs
* renamed SharedExtinguisherComponent to SharedGasSprayerComponent and removed reference to RoguePointingArrow
* renamed shareExtinguisherComponent to SharedGasSprayerComponent
* Update Content.Server/Atmos/GasSprayerComponent.cs
Added check for solution component on GasSprayer.
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
* Update Content.Server/Atmos/GasSprayerComponent.cs
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
* AI sleeping
AI no longer update when dead.
* It was easier to merge master and re-apply it.
* Update AiControllerComponent.cs
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
* Ready Indicator in the lobby
* Use SessionID instead of Name
* Don't show ready state when game is already running
* Make Ready List not selectable
* -Remove disconnected sessions from Ready
-Fix showing ReadyStatus when staying in lobby
* Make IInteractUsing async, make tools use DoAfter.
* Disable warning 1998 in Content.Server
* Update Content.Server/GameObjects/Components/AnchorableComponent.cs
* Things and stuff with grids, unfinished w/ code debug changes.
* Updated submodule and also lost some progress cause I fucked it up xd
* First unfinished draft of the BodySystem. Doesn't compile.
* More changes to make it compile, but still just a framework. Doesn't do anything at the moment.
* Many cleanup changes.
* Revert "Merge branch 'master' of https://github.com/GlassEclipse/space-station-14 into body_system"
This reverts commit ddd4aebbc76cf2a0b7b102f72b93d55a0816c88c, reversing
changes made to 12d0dd752706bdda8879393bd8191a1199a0c978.
* Commit human.yml
* Updated a lot of things to be more classy, more progress overall, etc. etc.
* Latest update with many changes
* Minor changes
* Fixed Travis build bug
* Adds first draft of Body Scanner console, apparently I also forgot to tie Mechanisms into body parts so now a heart just sits in the Torso like a good boy :)
* Commit rest of stuff
* Latest changes
* Latest changes again
* 14 naked cowboys
* Yay!
* Latest changes (probably doesnt compile)
* Surgery!!!!!!!!!~1116y
* Cleaned some stuff up
* More cleanup
* Refactoring of code. Basic surgery path now done.
* Removed readme, has been added to HackMD
* Fixes typo (and thus test errors)
* WIP changes, committing so I can pull latest master changes
* Still working on that god awful merge
* Latest changes
* Latest changes!!
* Beginning of refactor to BoundUserInterface
* Surgery!
* Latest changes - fixes pr change requests and random fixes
* oops
* Fixes bodypart recursion
* Beginning of work on revamping the damage system.
* More latest changes
* Latest changes
* Finished merge
* Commit before removing old healthcode
* Almost done with removing speciescomponent...
* It compiles!!!
* yahoo more work
* Fixes to make it work
* Merge conflict fixes
* Deleting species visualizer was a mistake
* IDE warnings are VERBOTEN
* makes the server not kill itself on startup, some cleanup (#1)
* Namespaces, comments and exception fixes
* Fix conveyor and conveyor switch serialization
SS14 in reactive when
* Move damage, acts and body to shared
Damage cleanup
Comment cleanup
* Rename SpeciesComponent to RotationComponent and cleanup
Damage cleanup
Comment cleanup
* Fix nullable warnings
* Address old reviews
Fix off welder suicide damage type, deathmatch and suspicion
* Fix new test fail with units being able to accept items when unpowered
* Remove RotationComponent, change references to IBodyManagerComponent
* Add a bloodstream to humans
* More cleanups
* Add body conduits, connections, connectors substances and valves
* Revert "Add body conduits, connections, connectors substances and valves"
This reverts commit 9ab0b50e6b15fe98852d7b0836c0cdbf4bd76d20.
* Implement the heart mechanism behavior with the circulatory network
* Added network property to mechanism behaviors
* Changed human organ sprites and added missing ones
* Fix tests
* Add individual body part sprite rendering
* Fix error where dropped mechanisms are not initialized
* Implement client/server body damage
* Make DamageContainer take care of raising events
* Reimplement medical scanner with the new body system
* Improve the medical scanner ui
* Merge conflict fixes
* Fix crash when colliding with something
* Fix microwave suicides and eyes sprite rendering
* Fix nullable reference error
* Fix up surgery client side
* Fix missing using from merge conflict
* Add breathing
*inhale
* Merge conflict fixes
* Fix accumulatedframetime being reset to 0 instead of decreased by the threshold
https://github.com/space-wizards/space-station-14/pull/1617
* Use and add to the new AtmosHelpers
* Fix feet
* Add proper coloring to dropped body parts
* Fix Urist's lungs being too strong
* Merge conflict fixes
* Merge conflict fixes
* Merge conflict fixes
Co-authored-by: GlassEclipse <tsymall5@gmail.com>
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
Co-authored-by: AJCM-git <60196617+AJCM-git@users.noreply.github.com>
* Aghost Button
* Toggle Lights Button (Shitcode)
* Suicide Button
* Toggle Subfloor Button
* Changed the X icon for windows to be slimmer
* ToggleLights and ToggleSubfloor are no longer shitcode!
* Refactors SandboxWindows.cs
* Added Shows Spawns Button
* Fix
* Show Bounding Boxes Button
* I guess this helps somewhat?
* Nested SandboxWindow.cs inside of SandboxManager.cs for simplicity
* Fixes
* I forgot what I added
* Removed CSI console... for now
* Fix build
Co-authored-by: Víctor Aguilera Puerto <zddm@outlook.es>
* Station event system
Adds 2 basic events: (Power) GridCheck and RadiationStorm (based on the goonstation version).
The system itself to choose events is based on tgstation's implementation.
This also adds the event command that can be run to force specific events.
There's still some other TODO items for these to be complete, to my knowledge:
1. There's no worldspace DrawCircle method (though the radstorm could look a lot nicer with a shader).
2. The PlayGlobal power_off / power_on audio seems to cut out halfway-through
3. (I think this is a known issue) lights still emit light until you get closer in a gridcheck so PVS range might need bumping.
* Invariants for event names
* Fix random event shutdown
* Mix stereo announcements to mono
* Address feedback
* Remove redundant client system and use the overlay component instead
* Drop the server prefix
* Fix radiation overlay enum
* use entityquery instead
* zum's feedback
* Use EntityQuery
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Improves the RCD
* oops
* Unnecessary
* Merge 2 checks
* RCD whitelist and reorganization
* Makes the RCD great again
* Ignored components
* loicense
* Fix missing using
* Let there be (vending machine) light
Cut up vending machines to have unshaded layers.
I scripted the cutting up so there might need to be minor tweaks to some of them.
Added the eris vending machine sound (I liked it more than tg's, fight me).
* Tweak sound reduction
* Mark vending as abstract
Appearance is done on each vending based on what sprite states they have (at the moment) and the vendingmachine shouldn't be spawned on its own anyway.
* Add screen layer back in
* Unstuff what was stuffed
* Removed the Soviet and USA vending machines
* Added proper licensing
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
Co-authored-by: Swept <jamesurquhartwebb@gmail.com>
* Server EntitySystem cleanup
I went after low-hanging fruit systems.
* Add / change to internal access modifiers to systems
* Use EntityQuery to get components instead
* Add sealed modifier to systems
* Remove unused imports
* Add jetbrains annotation for unused classes
* Removed some pragmas for dependencies
This should also fix a decent chunk of the server build warnings, at least the ones that matter.
* Also disposals
* Update Content.Server/GameObjects/EntitySystems/GravitySystem.cs
* Fix build
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
Co-authored-by: Víctor Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>
* AI preset curves and expandable optimisation
Added preset curves for considerations to use just to avoid repeating the same variables all over the shop.
Moved common considerations for expanded actions onto the expandable action e.g. you need a free hand to be able to PickUpGloves so we'll just check it the once rather than for each action.
* FIX PRAGMA
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* -Click on the analyzer to get the gas at your pos, click on tile to get gas tehre
-Reduced the auto refresh time
-AutoRefresh ui
* Use a fixed position instead of a offset
* Review
* -ChemDispenser & Master can now open the UI without power
-Both can also eject beaker without power
* -Disables button if not powered
-Disables clear & eject buttons if no beaker
* Fix server freeze
* Add unique gas mixture serialization for atmos
* Refactor doAfterEventArgs
* Adds atmos commands
* Roundstard now has correct ratio of gases
* Fixed hashcode for gasmixture, better grid atmos serialization
* Airlocks create gas based on adjacent tiles now.
* Enables barotrauma component damage
* -Started Gas Analyzer
-TemperatureHelpers
* Formatting
* Adds PopupTooltip to NotifyManager
* Revert Tooltip fuckery
* Gas Analyzer gives proper error messages
* Localization
* Added a very wip gas analyzer ui
* UI works, doesn't look good but hey
* Safety checks
* Fancy WIP gas mix bar
* Gas Color
* Gas Amount shows only 2 decimal places
* -Made bar full width
-Moved gas list into a table
-Some gas bar things
* IDropped something
* Description
* -Percentage
-Padding
* ItemStatus
* -Proper Danger Warnings
-Added Warning danger state
* Pressure unit
Co-authored-by: Víctor Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>
* do_after
Ports (most of) do_after from SS13.
Callers are expected to await the DoAfter task from the DoAfterSystem.
I had a dummy component for in-game testing which I removed for the PR so nothing in game uses do_after at the moment.
Currently only the movement cancellation is predicted client-side.
* Minor do_after doc cleanup
* do_the_shuffle
Fix nullable build errors.
* The last nullable
* Implement NeedHand
Thanks zum.
* nullable dereference
* Adjust the system query
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Removes obsolete PhysicsComponent from wire and power prototypes
* Updates anchorable to use CollidableCOmponent
* Map update
* map update again
* Fixes generators starting unanchored
Co-authored-by: py01 <pyronetics01@gmail.com>
* NodeContainerComponent serializes a set of Nodes with ExposeData
* Fixes Nodes to work when being created by serializer
* ConduitNode
* ConduitPlacer to replace WirePlacer
* ConduitNode ConduitLayer setter
* Map update
* Comments
* Map update again
* Method ordering by privacy
* Removes conduits
* ignored component
* reorg
* map update
* readd wireplacer
Co-authored-by: py01 <pyronetics01@gmail.com>
* Add initial atmospherics framework
* Make walls and airlocks airtight
* Add the basic atmosphere gas system
* Atmos: move CardinalToIntVec and Offset into extention methods in EntityNetworkUtils
* Optimize vending machine code a bit.
* Address feedback from Atmos PR, make code compile
Fix use of OnMove -> SnapGridComponent.OnPositionChanged.
Added pause checking to atmos simulations.
* Improvements to the existing ZAS prototype (#996)
* Rename Volume -> Quantity in GasProperty
This makes the name consistent with the rest of the code, given that
it's meant to be a mol value.
* Replace Gas enum with GasPrototype
Unused as of yet, but laying the groundwork for future changes.
* Update AtmosphereMap, improving maths
Adds a temporary default atmosphere, hardcoded in for testing. It will
be replaced eventually.
Fixed a maths mistake in the original code involving unit conversions.
Added the Take() method to IAtmosphere, for taking some volume of
mixture out of a gas mix. This will be pretty handy in the future, but
for now it's used by walls to delete air where they are built.
* Fix merging, splitting logic for zones
Removing a cell from a zone now correctly reduces its volume.
Adding a cell to a zone now correctly increases its volume.
* Improvements to atmos code, reorganising of types
Moved GasPrototype to shared, because it's going to be used by the
client later.
Split up the atmosphere code. Now zones are explicitly their own kind of
atmosphere, which should speed up some loops and also solve
inconsistencies in the volume calculation.
GasMixtures are another type of atmosphere, for more general use.
Try to fix the splitting/merging code, which was quite cryptic and not
clear at all. It *should* work now.
* Switch zones back to MapIndices
Turns out I'm an idiot who misunderstood the code. MapIndices can be
used as one-per-tile, which is what is needed for atmos. GridCoordinates
are many-per-tile, and were causing lots of problems.
* Add zone debugging overlay
This is the first example of zone information being sent to a client.
It adds the `togglezoneinfo` command, which overlays the tiles and gas
information for the zone currently occupied by the user on the screen.
This was helpful for debugging the GridCoordinates problem.
* Fix position of atmos zone debug text
* Make AirtightComponent only activate on MapInit
This should stop it splitting atmospheres in mapping.
* Doc comments improvements to AtmosphereMap
Fix some malformed comments, inherit some useful docs, document some
more functions.
* Add zone logic for changing tiles to/from space
Zones are now correctly created when all the tiles in a room are built,
and destroyed when one of the tiles is destroyed.
* update engine
* right
* Cleanup code
* Port GasMixture, further cleanup
* Fix windows not being airtight, some other stuff
* Work on atmos
* Difference between ZoneBlocked and AirBlocked
* Big GridAtmosphereManager cleanup, zones are broken now oops
* Remove zones, add excited group implementation
* Further cleanup
* Further work on atmos
* Work on gas overlay.
* PumpGasTo and ReleaseGasTo methods for GasMixture.
* Adds Tile Overlay System.
* More work on atmos
* Gasses spread, equalize and all that
* Fix a few crashes
* Gas can actually spread from room to room after opening airlocks
* Add explosive depressurization, tile prying on depressurization, gas spreading on wall break. Etc.
* More work
* Remove atmoschem, add "performant" gas overlays
* what the fuck git
* More work I guess?
* Fix stuff, create a few (empty) components for future work
* Fix temperature
* Fix tile air sharing
* Atmos optimizations
* Further atmos optimizations
* Even more optimizations!
* Update Content.Client/GameObjects/EntitySystems/GasTileOverlaySystem.cs
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
* Update Content.Client/GameObjects/EntitySystems/GasTileOverlaySystem.cs
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
* Update Content.Client/GameObjects/EntitySystems/GasTileOverlaySystem.cs
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
* Address a few reviews
* Oops, forgot to remove this
* Update Content.Server/Atmos/AtmosphereMap.cs
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
* Fix compile
* Improved client gas tile overlays
* Less allocations
* Even less allocations!
* some stuff dunno
* Big refactor time, oh yeah
* it truly is 1 AM
* bruh
* No idea why now it doesn't work.
Oh well! I'll fix this on thursday 😌
* Basic atmos serialization
* Fix bugs, add VV attributes
* Start adding stuff for gas reactions
* Add a few atmos commands
* Fill gas command
* Changes to gas opacity
* Fixes I guess
* Fixes, add space wind sound
* High pressure movement!
* Better high pressure movements.
* Fix direction, maybe?
* And now it works great
* Science!
* and this is why you don't trust people
* remove logging
* Turns out I'm fucking dumb
* Work on hotspots and reactions, add tritium gas
* IGridAtmosphereComponent interface! For future unsimulated grids.
* Makes atmos updates NoGC.
* C E A S E
* Add settemp atmos command
* Important reminder.
* Remove useless AtmosCooldown.
* More work on hotspots
* Overlays for hotspots. Fire works!
* Turns out I suck at coding
* Fire texture change
* Yeah let's make that an absolute value, hmm?
* Support for atmos after teleporting grid (more or less)
* fix attempt (doesn't actually fix it)
* Make static variable not static
* Remove magic numbers
* Stopwatch moment
* Slight cleanup.
* More cleanup.
* Atmos optimizations
* Fix build
* Remove useless ghost atmos shit
* Adds CanSeeGases component for gas overlay stuff
* Component and prototype ignores
* ExcitedGroups now dispose on being merged with others
* Some tweaking.
* Atmos now uses frame time for updates.
* Nullable boogaloo
* IExamine fix
* Fix build
* Fix restartround
* Atmos tweaking, use invalid direction
* Increase high pressure movement force
* Better sort
* Update submodule.
* NULLABILITY AAAAH
Special thanks to monster860 and all monstermos contributors!
Co-authored-by: Campbell Suter <znix@znix.xyz>
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
Co-authored-by: ComicIronic <comicironic@gmail.com>
Co-authored-by: silicons <2003111+silicons@users.noreply.github.com>
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
* Fix being forever eaten by an unpowered unit
* Add 0 hands check to getting out of an unit
* Add engage check when the power is changed
* Remove redundant serializable field
* Add queueing an autoengage when power is turned back on, the unit is engaged and it doesnt flush with items inside
* Make TryQueueEngage check for no contained entities
* Remove redundant check
* Fix flushing animation not being played when powering an engaged unit
* Makes disposal units able to be entered when unpowered
* Make the unit's light turn off when unpowered
* Remove event handlers on component removal
* Make the disposal unit's lever engage when queueing an auto engage
* Autoengaging the lever on insert was a mistake
* Make the engage button active when engaged
* Make the engage button toggleable
* Fix nullable error
* Add disposal.rsi
* Rename disposal resource to disposal.rsi and create basic components
* Add disposal nets
* Add pushing entities along the disposal network
* Add disposal unit
* Unregister disposable component
* Add flush and selfinsert verbs to disposal unit
* Add gradual disposals movement
* Fix being able to walk through space for a while after exiting disposals
* Multiply disposals speed by 10
And fix early returns when moving an entity
* Rename Disposable component to InDisposals
* Remove DisposalNet and add on anchor events
* Remove anchored events, moved to interfaces
* Code cleanup
* Fix adjacent tubes' connections when a tube connects
* Fix jittery movement in disposals
* Remove Logger.Debug call
* Move disposals updates to InDisposalsComponent
* Fix adjacent connection valid directions check
* Disposal tubes now throw you out where they are facing
* Add disposal unit exit cooldown
* Set different disposal pipe sprite state depending on anchored value
* Add recycler
* Add recycler animation
* Add bloody texture to the recycler when grinding a living being
* Add PowerDevice component to the disposal unit
* Made the Recycler center on the grid
* Add disposal junction
* Add picking a random direction if junction is entered from the output side
* Add disposal flush and clang sounds
Taken from VGStation
* Move disposal flush and clang sound file names to exposedata
* Add disposalsmap.yml to test with
* Add summaries to DisposalUnit fields
* Add sideDegrees yaml property to disposal junctions
* Fix outdated usings
* Add conveyor resources
* Update RobustToolbox
* More merge fixes
Add conveyor collision masks
* Add ConveyorComponent
* Fix crash when reentering a body
* Merge branch 'master' into disposals-1147
* Reduce recycler bounds, set hard to false, add summary and expose "safe" to yaml
* Move IAnchored and IUnAnchored to AnchorableComponent
* Update power components and remove old disposals map
* Remove redundant sprite layers
* Add tile pry command
* Fix tilepry command
* Fix DisposalJunctionComponent missing a component reference
* Add anchor by radius command
* Add Y-Junctions
* Add disposal bend
* Add unanchor command
* Change DisposalJunction prototypes to specify their angles
* Fix disposal units being hidden below the floor
* Removed IAnhored and IUnAnchored interfaces
* Replace CanBeNull annotation with nullable reference types
* Update showwires command
* Add recycler recycling items
* Added angle and speed properties to ConveyorComponent
* Fix conveyort textures
* Add animation to the disposal unit
* Fix anchor and unanchor commands sometimes not finding any entities
* Fix not reading flush_time from disposal unit prototype
* Fix merge conflict wrong using
* Fix disposal, recycling and conveyor texture paths
Delete diverters
* Update visualizer names
* Add DisposableComponent, change drag and drop to work with multiple components
Ignoreinsideblocker client side for drag and drops, like on the server
Add more comments
* Add conveyor belts properly moving entities on top
* Anchorr wires
* Change conveyor bounds to 0.49
* Anchor catwalks, airlocks, gravity generators, low walls, wires and windows
* Add starting/stopping conveyors
* Add reversed conveyors
* Add conveyor switches
* Move InDisposalsComponent code to DisposableComponent
* Add ExitVector method to tubes
* Fix not updating tube references when disconnecting one
* Replace IoCManager call with dependency
* Add tubes disconnecting if they move too far apart from one another
* Move disposals action blocking to shared
* Add rotating and flipping pipes
* Make conveyor intersection calculations approximate
* Fix 1% chance of the server crashing when initializing the map
Happens when emergency lockers remove themselves
* Add disposal unit interface
* Make disposal units refuse items if not powered
* Make disposal tubes hide only when anchored
* Make disposal junction arrows visible to mere mortals
* Add disposal tubes breaking
* Add tubeconnections command
* Add missing verb attribute
* Add flipped disposal junction
* Add ids and linking to conveyors and switches
* Add conveyor switch prying and placing
* Add anchoring conveyor switches and refactor placing them
* Add missing serializable attributes from DisposableComponentState
* Make conveyor speed VV ReadWrite
* Change drawdepth of conveyors to FloorObjects
* Make conveyor anchored check consistent
* Remove anchoring interaction from switches
* Add conveyor switch id syncing and move switches slightly when pried
* Make entities in containers not able to be moved by conveyors
* Add conveyor and switches loose textures
* Merge conflict fixes
* Add disposal unit test
* Add flushing test to disposal unit test
* Add disposal unit flush fail test
* Add disposals to the saltern map
* Fix saltern disposal junctions
* Add power checks to the recycler
* Fix disposal unit placement in maintenance closet
* Remove disposal junctions from saltern
* Readd junctions to saltern
* Add the chemmaster to saltern at the request of Ike
* Move the chemistry disposal unit
* Fix casing of disposal flush sound
* More merge conflict fixes
* Fix a compiler warning.
* Remove popup invocation from buckle
* Remove showPopup parameter from InteractionChecks
* Remove unnecessary physics components
Fixes the physics system dying
* Replace PhysicsComponent usages with CollidableComponent
* Update existing code for the new controller system
* Change conveyors to use a VirtualController instead of teleporting the entity
* Remove visualizer 2d suffix and update physics code
* Transition code to new controller system
* Fix shuttles not moving
* Fix throwing
* Fix guns
* Change hands to use physics.Stop() and remove item fumble method
* Add syncing conveyor switches states
* Fix the recycler wanting to be a conveyor too hard
* Fix showwires > showsubfloor rename in mapping command
* Fix wifi air conveyors
* Fix test error
* Add showsubfloorforever command
Changes drawdepth of the relevant entities
* Disable opening the disposal unit interface while inside
* Add closing the disposal unit interface when getting inside
* Add closing the interface when the disposal unit component is removed
* Add removing entities on disposal unit component removal
* Delay disposal unit flush and fix serialization
* Implement pressure in disposal units
* Fix chain engaging a disposal unit
* Implement states to the disposal unit
* Fix missing imports from merge conflict
* Update Content.Server/GameObjects/Components/Conveyor/ConveyorComponent.cs
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
* Address some reviews
* Fix za buildo
* Use container helper to detach disposables
* Make conveyors use the construction system
* Make conveyor groups and syncing sane
* Make flip flip
brave
* Add activate interface to conveyor switches
* Fix not removing the switch from its group when it's deleted
* Fix not registering conveyors and switches on initialize
* Stop using 0 as null
* Disconnect conveyors and switches when disposing of a group
* Make disposal units not able to be exited when flushing
* Make disposal units flush after a configurable 30 seconds
* Add handle and light layers to the disposal unit
* Merge engaging and flushing
* Update saltern.yml
* I love using 0 as null
* Make disposal unit visual layers make sense
* Remove duplicate remove method in disposal units and update light
* Replace DisposableComponent with disposal holders
* Fix disposal holders deleting their contents on deletion
* Account for disposal unit pressure in tests and make a failed flush autoengage
* Rename disposable to holder
* Fix junction connections
* Disable self insert and flush verbs when inside a disposal unit
* Fix spamming the engage button making the animation reset
* Make the recycler take materials into account properly
Fix cablestack1 not existing
* Merge conflict fixes
* Fix pipes not being saved anchored
* Change conveyors and groups to not use an id
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
* re-do of old PR that got fuckied upp
* simplify foreach as suggested
* pass distance to PassSpeechData for a check, remove GetListenRange()
* adds RadioQuery instead of subscribing/unsubscribing
* change SpreadMessage to accept owner rather than component
* change RadioQuery to EntityQuery
* remove declared EntityQuery (oops, didn't know what shadowcommander meant)
* refactor ListeningSystem & refactor added chat logic into listen sys
* IGNORE the oopsie STOP LOOKING
* Actually set the tool interaction message to handled.
Remove the floating text explaining why deconstruction failed.
* Removed unused IServerNotifyManager dependency.
* Initial framework for pulling.
* Make it possible to pull items via (temporary) keybind Ctrl+Click, make items follow the player correctly.
* Make other objects pullable, implement functionality for moving an object being pulled, make only one object able to be pulled at a time.
* Make sure that MoveTo won't allow collisions with the player
* Update everything to work with the new physics engine
* Update Content.Server/GameObjects/EntitySystems/Click/InteractionSystem.cs
Co-authored-by: ComicIronic <comicironic@gmail.com>
* Physics update and convert to direct type casts
* Add notnull checks
* Add pull keybinds to the tutorial window
* Move PullController to shared
* Fix pulled items getting left behind
* Fix moving pulled objects into walls
* Remove flooring of coordinates when moving pulled objects
* Add missing null check in PutInHand
* Change pulling keybind to control and throwing to alt
* Change PhysicsComponent references to IPhysicsComponent
* Add trying to pull a pulled entity disabling the pull
* Add pulled status effect
* Fix merge conflicts
* Merge fixes
* Make players pullable
* Fix being able to pull yourself
* Change pull moving to use a velocity
* Update pulled and pulling icons to not be buckle
A tragedy
* Make pulled and pulling icons more consistent
* Remove empty not pulled and not pulling images
* Pulled icon update
* Pulled icon update
* Add clicking pulling status effect to stop the pull
* Fix spacewalking when pulling
* Merge conflict fixes
* Add a pull verb
* Fix nullable error
* Add pulling through the entity drop down menu
Co-authored-by: Jackson Lewis <inquisitivepenguin@protonmail.com>
Co-authored-by: ComicIronic <comicironic@gmail.com>
* Multiple hands in gui first pass
* Remove IHandsComponent interface
* Create hand class and more hand textures
* Refactor ServerHandsComponent to use a single list of hands
* Seal SharedHand
* Fix picked up items not showing on top of the hand buttons
* Remove HandsGui buttons and panels dictionaries
* Fix items in hands rendering
* Fix wrong hand container comparison
* Fix not updating the location of duplicate hands
* Change ClientHandsComponent to use a SortedList instead of a dictionary
* More merge conflict fixes
* Change SortedList to List
* Fix hand button order
* Add item tooltip for more than 2 hands and updating when removing hands
* Add add hand and remove hand command
* Merge conflict fixes
* Remove nullable reference type from ContainerSlot
* Fix texture errors
* Fix error when reaching 0 hands
* Fix error when swapping hands with no hands
* Merged remove hand methods
* Fix item panel texture errors
* Merge conflict fixes
* Fix addhand and removehand command descriptions
* Add properly displaying tooltips for 2 hands
* Make hand indexes and locations consistent across the client and server
* Add dropping held entity if a hand is removed
* Change hand location to be calculated by index
* Made different hand gui updates more consistent
* Remove human body yml testing changes
* Sanitize addhand and removehand commands
* Merge conflict fixes
* Remove testing changes
* Revert body system changes
* Add missing imports
* Remove obsolete hands parameter in yml files
* Fix broken import
* Fix startup error and adding and removing hands on the same tick
* Make hand container id use an uint
In case someone gets more than 2 billion hands
* Rename hand component files
* Make hands state use an array
* Fix being able to change direction while buckled by throwing
* Fix being able to change direction while buckled by pointing
* Wrap diff in can turn check
* Add pointing keybind and simple message
* Add turning the player when pointing
* Add pointing arrow
* Make the popup message appear on the pointing entity
* Add pointing to tiles and space and proper grammar
* Move pointing bind from HandsSystem to PointingSystem
* Add more messages for pointing depending on the viewer perspective
* Fix non nullable reference type
* Serialize pointing arrow duration
* Serialize pointing arrow step and add summaries
* Make arrow speed serializable and make it depend on frame time
* Add 0.2 second delay between pointings
* Add pointing arrow yaml examples
* Add the ability for pointing arrows to be rogue
* Remove rogue package reference
* Add point to verb
https://cdn.discordapp.com/attachments/313107470031650816/735268651636228197/unknown.png
* Add shift middle clicking an entity in the verb menu to point at it
* Add VV to PointingArrowComponent
* Increase pointing delay from 0.2 to 0.5 seconds
* Address reviews
* Fix nullability errors
* Separate pointing and rogue pointing code
* Fix rogue pointing arrow visuals
* Made rogue pointing arrow rotation adjustment readable for mortals
* Make rogue pointing arrows less destructive
* Cleanup more of the rogue pointing arrow code
* Add unbuckling entities that move away from their straps
* Remove range constraint from movement unbuckling check
* Fix setting the wrong positions when buckling
* Fix beds making you sleep for the rest of your life
* Transition code to new controller system
* Fix shuttles not moving
* Fix throwing
* Fix guns
* Change hands to use physics.Stop() and remove item fumble method
* Added: CanReach property to AfterAttack events which signals if the attack was within reach.
Fixed: You cannot construct/deconstruct things out of reach.
Fixed: Construction entities now preserve transform rotation.
Fixed: No more exceptions about missing grids when constructing world entities.
Fixed: Used the proper intermediate sprite for intermediate entities.
Fixed: Issue with missing sprite layers on ghost.
* The alligator is greedy, he always eats the bigger number...
* Adds a check so that you cannot use tools on entities that are obstructed from view.
* Add some extra comments
* Remove the redundant closedTiles variable
* Rename some variables to better match the common naming schemes
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Start work on Slippery Component
* Slips work
* Add banana peel
* Add required slip speed
* Add slip sound
* Adds soap
* Make soapnt, soapsyndie and soapdeluxe inherit soap
* Adds homemade soap and omega soap
* Fix slipping not taking into account the entity being in a container
* Fix pathfinding entity deletions
Also some slight optimisations in the process.
* Remove redundant method
Not used anymore.
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Fix Welding Tool Not Updating
- Added in the ISolutionChange interface so that it dirties the entity any time the amount of welding fuel changes. This applies whether it's lit or unlit.
- I also removed some redundant code.
* Update Content.Server/GameObjects/Components/Interactable/WelderComponent.cs
Co-authored-by: Víctor Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>
Considerations are now instantiated under a manager and re-used between entities where they pass in their blackboard to get a score back.
Also makes the API a bit nicer to use.
Also some random cleanup.
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Add test to check all LogicNames in prototypes
* Change CreateProcessor to AiLogicProcessor (I thought I'd already done this as I remember PJB telling me to do this but apparently I'm an idiot)
* Temporarily remove invalid AiControllers
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Flash component, overlay and shader
Add BeginDraw method to Overlay.cs
* Add flash icons, sounds
* Progress
* Multiple overlays without enums
* This is probably the worst way to do this IDK
* Remove nullable reference type
* Add AttackEventArgs as parameter to OnHitEntities
MeleeWeaponComponent.Attack now continues when OnHitEntities returns true (it hit something)
Add OverlayType enum so client and server can agree on overlay ids
Move IConfigurable to its own file
Add AoE flash with shorter duration
Flashing someone slows them down
* Add arc to flash
Set item size to something reasonable
Remove chat log message when flash burns out
* Remove unused interface
* Remove Unnecessary AnchorUpdate() call
* NodeGroupManager
* NodeGroupManager issues NodeGroup remake attempts
* Code cleanup
* NodeGroupManager only stores dirty groups, handles them on next frame
* Removes unused NodeGroupManager dependency
* Prevents OnRemoveNode from iterating over every connector after the first time
* Revert "Prevents OnRemoveNode from iterating over every connector after the first time"
This reverts commit c72af4b18d55192af789514f74bef893cf076fbc.
* Dependancy warning fix
Co-authored-by: py01 <pyronetics01@gmail.com>
* ConstructionSystem now detects when a tool is used on an arbitrary entity.
* Refactored building logic from ConstructionComponent to ConstructionSystem.
* Add OnDeconstruct events so that deconstruction can be blocked if prerequisites are not met.
* Multi-step deconstruction works.
Windows can be deconstructed using a screwdriver.
* In-hand construction and deconstruction works.
* Intermediate entities now have a better name assigned to them when created.
* Removed a question mark to appease Jenkins.
* Instead of running ExposeData on the existing ItemComponent of an intermediateFrame, the system will now replace the existing ItemComponent with a new one, and run ExposeData on the new one.
* Create BuckleableComponent.cs
* Add strap component and keybind to buckle targeted entity
* Remove buckle keybind, turn it into a verb
* Add moving and attaching the buckled entity to the strap
* Fix reality collapsing when clicking on a buckled entity
* Add strap position to buckle a mob in the standing or down position
* Add new default strap position that makes no change to the mob's standing state
* Add Strap component to office chairs and stools
* Add Strap component to the pilot chair
* Add buckled status effect icon
* Add status effect click behaviour
* Add buckling and unbuckling sounds
* Change Buckle verb to only appear when an entity can be currently buckled
* Rotate buckled entity in the direction of the seat
* Disable entity rotation when buckled
* Fix buckle rotation on beds
* Buckling now finds the closest strap to the buckleable entity
* Fix rotation when unbuckling an entity
* Move buckle verb to StrapComponent
* Added buckled entity unbuckle verb, range and interaction checks
* Add checks for currently occupied straps
* Add unbuckling entity if its respective strap component is removed
* Add Clickable, InteractionOutline and Collidable components to bed
* Add rotation property to strap component
* Rename Buckleable to Buckle
* Add Buckle and Strap sizes to buckle multiple entities in the same strap
* Remove out of range popup message from strap verb GetData
* Move BuckledTo setter logic to its methods
* Fix Strap BuckledEntities being public
* Fix not updating status when Buckle component is removed
* Change BuckleComponent.BuckledTo to be of type StrapComponent
* Fix NRE when unbuckling
* Add buckle perspective messages
* Fix not equals comparison in strap verb
* Add added check to Strap TryAdd
* Change buckle.ogg and unbuckle.ogg from stereo to mono
* Remove -2f volume on buckle and unbuckle sounds
* Add summary to Strap TryAdd and Remove methods
* Make buckled entities unable to fall
* Fix default strap position not rotating the buckled entity
* Add downing after unbuckling an entity if it is knocked down
* Prevent an entity from buckling onto itself
Fixes stack overflow error
* Disable recursive buckling
* Add buckling onto straps by clicking them with an empty hand
* Add recursive buckle check to the trybuckle method as well
* Fix being able to click on a different strap to unbuckle from the current one
* Merge TryUnbuckle and ForceUnbuckle with a force argument
* Remove explicit unimplemented status effect clicking cases
* Add documentation to EffectBlockerSystem and ActionBlockerSystem
* Add xenos for stress test
Pretty hacky and not how I'd do it long-term
* Remove claws
* Add in unarmed combat behaviors
* Cleanuppppp
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Fix client not knowing that the lobby is paused when joining after the pause
Also fixes a client thinking that a lobby is paused when joining a new one after leaving a previously paused one
* Add server announcement to delaying and pausing round start
There was some extra bloat in the path graph updates.
Now the queue should also just run if it gets too big regardless.
Un-anchored physics objects are no longer a hard fail for pathfinding.
Add AccessReader support so open / close doors show up for pathfinding
AI also ensure they call the operator's shutdown when they're shutdown so that should cancel the pathfinding job.
I tried to split these into 2 commits but they were kinda coupled together
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Add CanInteract check to 18 verbs
* Add more caninteract checks to verbs without it
Storage toggle open, ammo box dump, bolt open and close, revolver spin and magazine open and close
* Add extendroundstart message to extend lobby start timer
* Rename StartExtend to DelayStart
* Fix delaystart amounts above 59 not working
* Change delaystart seconds type from int to uint
* Change delaystart wrong args amount message
* Add forcegamepreset command
* Rename forcegamepreset to forcepreset and merged start and forcestart preset methods
* Fix index out of bounds exception when forcing suspicion to start
* Change game preset to match regardless of casing
* Add forcepreset unknown preset message
* Add and move in lobby checks
* Remove testing changes
* Change delaystart to pause/resume the timer when no seconds are specified
* Change pause message
* Remove testing code
* Change 0 seconds to not be a valid amount of seconds
* Replace MsgTickerLobbyCountdown Seconds with DateTime instead of uint
* Add one entire dot
* Replace Math.Min + Math.Max with Math.Clamp
Co-authored-by: ComicIronic <comicironic@gmail.com>
Co-authored-by: ComicIronic <comicironic@gmail.com>
* Change exploding storages to explode their contents as well
* Change storages to only trigger content explosions when the severity is heavy or destruction
* Make inventories explode their contents as well
* Change InventoryComponent IExAct into an explicit implementation
* Change chain explosions to only trigger for explosion severities larger than or equal to heavy
* Start adding flashy flash
* Change slop
Might give a smoother decline
* flashy flash
* Add flashbang and flash projectiles
Bang bang bang pull my flash trigger
* Add collision check to area flash
* Flash cleanupo
* flash.ogg mixed to mono
* Adjusted flash curve again
* Enhancing flashes with unshaded and lights and shit
Still a WIP
* Add the other ballistic gun types
Re-organised some of the gun stuff so the powercell guns share the shooting code with the ballistic guns.
* Re-merging branch with master
Also fixed some visualizer bugs
* Last cleanup
Fixed some crashes
Fixed Deckard sprite
Fixed Hitscan effects
Re-applied master changes
Re-factor to using soundsystem
Add some more audio effects
* Cleanup flashes for merge
Can put flashbangs in lockers so you don't get blinded
Fix some bugs
* Fix shotties
Also removed some redundant code
* Bulldoze some legacycode
brrrrrrrrt
* Fix clientignore warnings
* Add the other Stunnable types to StunnableProjectile
* Some gun refactoring
* Removed extra visualizers
* All casing ejections use the same code
* Speed loaders can have their ammo pulled out
* Bolt sound less loud
* Stop ThrowController from throwing
* Fix speed loader visuals
* Update hitscan collision mask and fix typo
* Cleanup
* Fit hitscan and flashbang collisions
* Use the new flags support
* Update taser placeholder description
* Update protonames per style guide
* Add yaml flag support for gun firerates
* Cleanup crew
* Fix Audio up (components, audio file, + remove global sounds)
* Add server-side recoil back-in (forgot that I was testing this client-side)
* Add Flag support for fire-rate selectors
* Wrong int you dolt
* Fix AI conflicts
Haha ranged bulldozer go BRR
(I'll rewrite it after the other AI systems are done).
* Mix bang.ogg from stereo to mono
* Make sure serializer's reading for guns
Fixes integration test
* Change EntitySystem calls to use the static function
Also removed the Pumpbarrel commented-out code
* Change StunnableProjectile defaults to 0
* Fix taser paralyse
Apparently removing defaults means you have to specify the values, whodathunkit
* Add slowdown to stunnableprojectiles and fix tasers
* Remove FlagsFor from gun components
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
Co-authored-by: Víctor Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>
Was banging my head against the wall for this because I R dumb.
It only ever popped up when large numbers of AI were spawned in.
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Add Utensil component
For eating. With utensils.
Added to fork, plastic fork, spoon, plastic spoon and plastic knife.
Ignored component on the client.
* Add break chance to utensils
Set to 20% for plastic ones
* Add break sound to utensils
* Add utensil kinds
None, fork, spoon and knife.
For sporks, forknifes and sporknifes, of course.
* Add restricting foods by utensils needed
* Fix utensils breaking when food isn't eaten
* Moved getting held utensils to FoodComponent
* Add breaking a clicking utensil even if its not necessary to eat the food
* Move use utensil code to a separate method
* Add telling a handless entity when they need an utensil to eat
The immersion is off the charts
* Change food trash to only be held when the food was also being held
* Fix Wi-Fi utensils
* Remove unnecessary utensil ItemGroup
* Made TryUseFood public, removed redundant trash position update
* Renamed UtensilKind to UtensilType
* Remove eating food when clicking with it on nothing
* Disable eating food when clicked directly if it requires an untensil to eat
* Changed "Run" to "Walk" in code
Fixes#844
* Revert "Changed "Run" to "Walk" in code"
This reverts commit bf70dc7214d08c208823bccd5d3f36854d6b80de.
* Changed "Run" to "Walk" in code
Fixes#844
For some reason there was a using for ICSharpCode.SharpZipLib.Zip.Compression and this is problematic because removing the library in the engine will mean this file will stop compiling, so let's avoid that.
Access is now done through a list of access lists, instead of the necessary/sufficient system that was extremely confusing.
Added a "deny" list so you can screw over sec.
Cleaned the API up so it all uses sets and such.
PDA now relays access read-only to fix edge cases.
* IExamine can now limit certain details behind a 'details' range check.
* Comic's Review fixes.
- colour -> color. My ancestors are saddened by this.
- Can see wire panel opened/closed at any distance again.
removes unused interface from DrinkComponent
adds capability to fit inside dispensers for TransformableContainer
removes stomach component from character setup dummy
-Ability to mix drinks to create cocktails with shiny icons
-New Chemistry System which can relay chemistry events to corresponding components
-moved some solution logic from Shared to Server
-fixed some weird stuff with DrinkComponent
Added power checks to:
Reagent Dispenser
Medical Scanner
Lathes
Research Console
Vending Machines
Added power device component to:
chem dispenser prototype
medical scanner prototype
Fixes for #706
* Draft PR, do not merge
* Lathe now uses animations. Timing is still wrong, code is very wet, repetitions and unused layers are there.
* Removed (unneeded?) PowerDeviceVisualizer from the lathe
Refactored & Renamed code and variables
Renamed animation names
* WIP protolathe animation
* Working protolathe animation.
I still don't like the solution though.
* Adds shotgun YAML files
* Adds shotgu ammo and magazine enum value, modularizes some projectile weapon methods
* Fixes guns consuming two bullets on fire
* Finishes shotgun behavior in Projectile Weapon Components
* Gun and ammo modularization
* Updates BallisticMagazineWeapons to be compatible with new AmmoWeapon
* Fixes shotgun spread angles, Fixes shogun YAML
* Gun documentation and ViewVariable specifications
* Removes todo messsage in gun code
* Default gun evenspread fix
* AmmoComponent Name fix
* Fixes Component name
* Projectile refactor code review fixes
* throwforce and probability fixes for explosions
Applies force to all affected by explosion entities with ItemComponent
Fixes probability issues with explosion related callbacks
* dependency fix, throw helper
* delete TODO
Co-authored-by: gituhabu <48828502+gituhabu@users.noreply.github.com>
* ControlMob verb and command, mobs have MindComponent by default
* Use IActorComponent instead of MindComponent for User entity.
Fixes using Control Mob while aghosting/visiting an entity.
* Use static Loc class
* Add BloodstreamComponent and BloodstreamSystem
New component for metabolizing reagents that other organs like the stomach pass their input reagents to.
* Change StomachComponent to put ingested reagents in bloodstream after delay
Now StomachComponent does not metabolize any reagents. Instead, it tracks how long each reagent has been inside it, and once they pass "digestionDelay" they'll be put inside the bloodstream, where the bloodstream will handle metabolism of the reagent.
* Add reagent injectors
Injects reagents straight into the bloodstream when used on mobs with bloodstreams. Also allows draw/inject from beakers. Does not support drawing blood/reagents from the bloodstream yet.
* Address code review
Make use of `Loc` static class instead of using `ILocalizationManager`. Localize InjectorToggleMode enum properly.
* movement modifier system
* update default exposedata values
* changing base speed marks as dirty
* formatting
* movement speed modifier component
* Moves slowdown component to the prototype
AIController respects slowdown
* reset dirty flag
* Improve addai error handling and help message
Fix client crash from giving addai an invalid processorId argument and improved it's help message to describe each parameter.
* Only IoC resolve when addai is run
Makes the code simpler. No need to cache it since it's going to be run so infrequently.
* You cannot pickup items across walls, or pickup items when dead/in crit.
* Adds InRangeUnobstructed method to InteractionSystem.
Changes HandsSystem and ItemComponent to use it.
* Fix crash in CameraRecoilComponent from NaN values
Doesn't proceed with camera shake if either component of recoil is NaN.
* Log NaN recoil value in CameraRecoilComponent
* Fix ExplosionHelper passing NaN recoil values when exploding from hand
With other commits CameraRecoilComponent now won't crash from NaN recoil values. Still want to fix this so explosions shake the camera. Just sets a value slightly greater than 0.0 for distance if it is (0.0, 0.0)
* Fix max_volume in cup YAML
Fixes#563
Added parsing of max_volume from YAML. Before it would get max volume only from drink content total.
* Fix drink owner getting deleted early
_contents.SplitSolution causes _contents.SolutionChanged to call Finish early causing a crash when try to get SoundComponent from the deleted Entity.
* Fix crash when eating bread due to a missing prototype
* Fix crash when finishing a food.
It tried to get the transform component of a deleted entity.
#574 added an out arg to `SolutionComponent.TryRemoveSolution` containing the solution that was removed. I made this change since I thought there was no way to get the removed solution for further use. Didn't notice `SplitSolution` which provides nearly the same behavior. With this PR I want to remove that out arg from `TryRemoveSolution` to keep the SolutionComponent API simple and to avoid having multiple ways of doing things. Existing code uses `SplitSolution`, I just wasn't paying attention.
Feel free to deny merging this if I'm over thinking it. I think it'll help keep solution code from becoming a mess.
uses SnapGridComponent to select nearby wires instead of entity list (only marginally faster if entity queries are using DynamicTree)
TheoreticalLoad double dipping property setter, reduced to one update
minor refactoring
Co-authored-by: Tyler Young <tyler.young@impromptu.ninja>
Previously the chem dispenser eject button placed the container on top of the dispenser. Now it will attempt to place it in your active hand, then your secondary hand. If both hands are full then it'll place it on top of the dispenser like before.
* Add click-based solution transfer
For example, clicking on a beaker with a soda can to transfer the soda to the beaker. Works on plain solution containers like beakers and also on open drink containers like soda cans as long as they have the `PourIn` and `PourOut` solution capabilities. If no `SolutionComponent` is added to a drink entity, the `DrinkComponent` will give the entity one. This PR extends that behavior slightly by also giving these default `SolutionComponent`'s the proper capabilities for pouring in/out.
* Improve fix for poured drinks not immediately disappearing
Instead of making `DrinkComponent.Use` public this
splits out the code important to both users and made that function public, leaving `Use` private.
* Shorten solution transfer popup
* Make code review changes
- Move pouring code from SolutionComponent to new PourableComponent. Added PourableComponent to client ignore list and added to existing container prototypes.
- Added EmptyVolume property to shared SolutionComponent for convenience.
- Removed DrinkComponent fix from pouring AttackBy code. Instead DrinkComponent subscribes to the SolutionChanged action and updates its self when necessary.
- Fixed pouring being able to add more than a containers max volume and sometimes deleting reagents.
- Added message for when a container is full.
* More code review changes
- Remove IAttackBy ComponentReference attribute in PourableComponent
- Remove _transferAmount from shared SolutionComponent. Left over var from previous commit not being used anymore.
Currently if this component is present the delay timer is started but it doesn't actually prevent use interactions.
To test this bug, do the following:
1. Set the delay for [bike_horn](https://github.com/space-wizards/space-station-14/blob/master/Resources/Prototypes/Entities/items/bike_horn.yml#L25) to something large like 5.0 that'll make the effect obvious
2. Use the bike horn with the z key. The delay anim will play properly but you'll still be able to spam the honk.
* Change variable name in some interactions
I definitely didn't copy-paste some stuff back then, absolutely not.
* Fix bug where dropping items in tables didn't cause the drop interaction
* use delay timer
* remove accidental using
* and remove accidental newline because i don't proofread my code
* compatibility with HUD cooldown
suggested changes
* get out of here
* suggested changes
* change to seconds from milliseconds
* remove redundancy
When explosions are spawned they grab all entities in range and interact with them. They don't check if entities are deleted before doing so which can cause a crash.
To reproduce, place several grenades on the ground, pick one up and detonate it on top of the others so they detonate as well. The debug assertion in ContainerHelpers.IsInContainer will fail due to one of the accessed entities having been deleted.
This fixes that by ignoring deleted entities when making explosions.
* added Character Setup
* whoops
* reverted unrelated changes
* Made everything work post-rebase
* Removed unused PreferencesChanged event
* nope, don't need this
* HumanoidProfileEditorPanel -> HumanoidProfileEditor
* Set initial data for hair pickers
* Fixed nullable warning
* Renamed LooksComponent -> HumanoidAppearanceComponent
* Renamed LooksComponentState -> HumanoidAppearanceComponentState
* Final renaming maybe
* Use a human-like dummy instead of a real human
* Change preferences structs back to classes
1. made the magic mirror actually reflect your current hair state when you open it.
2. Made magic mirror one window.
3. Use color sliders for magic mirror.
SolutionComponent.CheckForReaction only checks for a reaction once, meaning that if a reaction generates reagents that create a solution that's valid for another reaction, that second reaction doesn't occur. This fixes that by repeatedly checking for a reaction until no more occur.
* Fixes the player being able to use the chem dispenser when they're dead
Adds a check to `ReagentDispenserComponent.OnUiReceiveMessage()` that checks if the players `SpeciesComponent` has a damage state that prevents them from interacting with the chem dispenser.
* Switch to use ActionBlockSystem instead of checking SpeciesComponent directly
* Fix crash when _appearance is null
Added a function to error check and set _appearance.SetData.
Added cancellation token which should stop the Timer, but doesn't seem to right now.
* Fix missing CancellationToken causing a crash
This delay would delay _appearance.SetData until after _apppearance was set to null when the component was removed causing a null reference exception.
* Instrument test.
* Midi stuff
* Some more work
* This actually works now!
* update
* Midi Audio works!
* Lots of stuff, and cool interfaces for items
* Update
* Fix a few things
* It just works
* Move textures to another folder, remove placeholder description from instruments
* Fix warning
* Use renderer enum
* Instruments now use DisposeRenderer method, and send MidiEvents as they receive them. Deletes InstrumentSystem whoo.
* Fix incorrect sprite paths
* Instruments take midi file size check into account when enabling/disabling midi playback buttons
* Fix crash when pressing drop on empty hand.
* Use new renderer return values for midi/input
* Xylophones are no longer handheld instruments, fix their sprites.
* Use new API
* Remove nfluidsynth from solution
* Timing information
* Use IGameTiming.CurTime for timestamps instead
* Adds tile removing behavior to CrowbarComponent.
Add FloorTileItemComponent.
Add genhit.ogg
Add tile.png for testing
* fixes
* Gives ContentTileDefinition a default value for tile item to drop.
Adds a few more tileitems.
* Changes per review request
* move stack.use and if statement
* Change Rejunevate to satiate hunger and thirst whenever applicable
* More progress
* One more before rebase
* Shit
* Bop obsolete using
* Verb will not show on non-applicable objects
* Fix exception in ReagentPrototype
Due to client trying to access concrete implementations of IMetabolizable that are in Content.Server. This fix checks to see if the prototype is being loaded by the client through reflection. I don't want to move the prototype completely into Content.Server since it's useful for the client to view descriptions and values of reagents without needing to send that data from the server.
* Make fix slightly more explicit
Now it will only load the metabolizable when in Robust.Server, instead of it being anything that's not Robust.Client.
* Add IModuleManager and ModuleManager
Provide simple way to check if shared code is being run by the server or the client
* Change ModuleManager implementations to not require assembly name comparison
Now just has ClientModuleManager registered to client, and ServerModuleManager registered to server.
* Change IModuleManager functions to properties
* Fix failing tests.
This was failing because the tests weren't initializing IoC. Simply using RobustUnitTest wasn't enough because that doesn't initialize content either. I did some cleaning up so now content IoC is registered via ContentUnitTest.
* Implement Cargo Console
Add to CargoConsoleComponent GalacticBank information for syncing Bank Account Balance.
Implement CargoOrderDatabase on the server side and a list of orders in the CargoOrderDatabaseComponent on the client side. This makes it easier to change data on the server side but also utilize the state syncing between components.
Implement GalacticMarketComponent.
Only productIds get sent. Both client and server create their lists from YAML.
Implement basic spawning of items from approved orders in CargoOrderDatabase.
* Finish Cargo Console
Add validation to make sure Order Amount is one or more.
Implement approve and cancel buttons to CargoConsoleMenu orders list row.
Add price to CargoConsoleMenu product list row.
Implement CargoOrderDataManager to consolidate CargoOrder lists.
Refactor CargoOrderDatabaseComponent to use CargoOrderDataManager instead of storing duplicate lists.
Implement canceling orders.
Implement approving orders.
Fix sprite links.
Implement Cargo Request Console.
* Add power cell and weapon chargers
Functionality's similar to SS13. The cell charger won't show the discrete charging levels because effort to not make it spam appearance updates over the network.
There's some stuff I wasn't sure on:
1. Updating power? Particularly around fixing rounding
2. Duplicating the full and empty sprites as I couldn't figure out a way to not have AppearanceVisualizer throw if the state isn't found
3. I made a BaseCharger abstract class under the assumption that when a mech / borg charger is added it would also inherit from it.
4. GetText currently isn't localized
* Address PJB's feedback
Updated the BaseCharger
* Change nullref exception to invalidoperation
* If the user doesn't have hands it will just return instead
* Move chemical reaction effects into Chemistry/ReactionEffects/ subfolder
* Replace hardcoded StomachComponent metabolism with IMetabolizable
The benefits of this approach are that reagent metabolism effects are not hardcoded into StomachComponent, and metabolism effects can be more easily chained together in yaml prototypes, and reagents can have different metabolism rates. One problem with this approach is that getting metabolism rates slower than 1u / second is impossible. Implementing #377 should resolve that problem.
* Fix DefaultFood and DefaultDrink so they remove reagent regardless of Hunger/ThirstComponent presence
Previously if neither of those were present the reagents wouldn't be removed from the stomach. This fixes that.
* Additional comment on function
* Make metabolizer interface implementations explicit
Also removed some unused using statements
* Make StomachComponent._reagentDeltas readonly
* Fix misleading variable names and docs for metabolizables
Changes one of the arguments for `IMetabolizable.Metabolize()` to be called `tickTime` instead of `frameTime` to more accurately reflect it's purpose. It's not really the frametime, but the time since the last metabolism tick. Also updated and expanded the docs to reflect this and to be more clear.
* Add basic yaml Jobs file
* Add Job Prototype
* Rename Jobs to Job
* Remove BaseJob
* Add the Job class child of Role
* Add code for spawning as an assistant. Not actually working, the job prototype can't be found.
* Fix role instead of job left in yaml
* Add starting gear support for job and the starting gear for assistant as an exemple
* Link job with starting gear in yaml
* Better naming and some error handling
* Tweak error handling
* Make nutrition less harsh
Also fix the accumulator because why did I put that in the loop.
Decay rates decreased and made drink thirst levels same as hunger for now.
* Also fix stomach frametime accumulation
* Non-accessed local variable
* Merge cast and type checks.
* StringComparison.Ordinal added for better culture support
* Supposed code improvement in launcher. Remove unused code.
* Update ExplosionHelper.cs
Unintentional change.
* Optimized Import
* Add Robust.Shared.Utility import where it was deleted
* Other random suggestion
* Improve my comment
* Fixes: #392
- Make Lathe require power to interact with or produce.
- Make R&D Console require power to interact with.
- Add PowerDevice component to R&D computer.
- Add PowerDevice component to R&D server.
* Update LatheComponent.cs
* Update LatheComponent.cs
* Update ResearchConsoleComponent.cs
* Add hunger and thirst
Based on the SS13 systems.
Food (Nutriment) / Drink -> Stomach -> Hunger / Thirst
* Cleanup rebase
* Cleanup stuff that was prototyped
* Address feedback
Still need to add a statuseffects system in a separate branch
* More cleanup on nutrition
Fix Remie's feedback and also damage tick.
* Re-implement nutrition with master
* Updated to use the StatusEffectsUI update
* Removed all clientside components as they only receive the UI updates now
* Implemented PR feedback
* Had to make a slight adjustment to the chemistry SolutionComponent given it doesn't have an Owner, same with Solution
Still TODO:
* Metabolisation effects
* Change drink contents to alcohol / wine etc.
* Add items to the dispensers
* For transparent containers use RecalculateColor
Could probably genericise DrinkFoodContainer as well to be a temporary item dispenser
* Fix broken bottle parent
Still need descriptions on the items to be done but the groundwork is there.
Could also do with layers for stuff that should light up in the darkness but I wasn't entirely sure what should and shouldn't.
* Refactor SpeciesUI into overlay and status effects
All components that update the UI will need to use PlayerAttached for cases where the Mind transfers I think.
* Change overlay / status effects to use states
* Change TryRemoveStatus to RemoveStatus
Doesn't return a bool so not trying.
Addressing PJB's feedback.
* Add support for global verbs
These are verbs that are visible for all entities, regardless of their components. This works by adding a new class `GlobalVerb` and a new attribute `GlobalVerbAttribute`. It works in the same way as current verbs, except you can put the verbs class definition anywhere instead of inside a component. Also moved VerbUtility into it's own file since it now has functions for both verbs and global verbs.
* Add view variables verb as an example of global verbs
* Implement suggested changes
Implemented some suggested changes from code review:
- Remove unneeded attribute from `GlobalVerb`
- Added some useful attributes to `GlobalVerbAttribute`
- Moved constants used by both `Verb` and `GlobalVerb` into `VerbUtility`
* Reduce duplicate code in VerbSystem (client & server)
Greatly reduced the amount of duplicate code for handling component verbs and global verbs separately.
* Update engine submodule
Need this so client side permissions checks are available.
* Add rejuvenate command
Takes one or more entity uids as input. Attempts to find a DamageableComponent on that mob and heal all damage on it.
* Add rejuvenate to right click menu
* Update engine submodule
* Make suggested changes
- Remove redundant error checks in rejuvenate console command, add in relevant ones along with shell messages so the user knows what's going on.
- Remove localization of group check on rejuvenate verb, since the translated version wouldn't be in groups.yml this would've broken the verb in other locales.
- Have the rejuvenate verb attempt to heal the user by default if no arguments were provided to it.
* More localization + help message formatting improvement
* Add more suggested changes
* Add basic chemical reaction system
What it adds:
- Reactions defined in yaml with an arbitrary amount of reactants (can be catalysts), products, and effects.
What it doesn't add:
- Temperature dependent reactions
- Metabolism or other medical/health effects
* Add many common SS13 chemicals and reactions
Added many of the common SS13 medicines and other chemicals, and their chemical reactions. Note that many of them are lacking their effects since we don't have medical yet.
* Add ExplosiveReactionEffect
Shows how IReactionEffect can be implemented to have effects that occur with a reaction by adding ExplosionReactionEffect and the potassium + water explosion reaction.
* Move ReactionSystem logic into SolutionComponent
No need for this to be a system currently so the behavior for reaction checking has been moved into SolutionComponent. Now it only checks for reactions when a reagent or solution is added to a solution. Also fixed a bug with SolutionValidReaction incorrectly returning true.
* Move explosion logic out of ExplosiveComponent
Allows you to create explosions without needing to add an ExplosiveComponent to an entity first.
* Add SolutionComponent.SolutionChanged event. Trigger dispenser ui updates with it.
This removes the need for SolutionComponent having a reference to the dispenser it's in. Instead the dispenser subscribes to the event and updates it's UI whenever the event is triggered.
* Add forgotten checks
`SolutionComponent.TryAddReagent` and `SolutionComponent.TryAddSolution` now check to see if `skipReactionCheck` is false before checking for a chemical reaction to avoid unnecessarily checking themselves for a reaction again when `SolutionComponent.PerformReaction` calls either of them.
* Change SolutionComponent.SolutionChanged to an Action
The arguments for event handler have no use here, and any class that can access SolutionChanged can access the SolutionComponent so it can just be an Action with no arguments instead.
* Expose more private values of Solution and SolutionComponent
Expose SolutionComponent.ContainedSolution and Solution.Contents. Both needed by ReagentDispenserComponent.
* Implement IExamine for SolutionComponent
Allows players to see the contents of a solution by examining the entity which contains it.
* Implement ReagentDispenserComponent
Adds ReagentDispenserComponent. A component which can add or remove reagents from a solution container. It's written in a general way so that it can be used for things such as the Chemical dispensers in chemistry, but also the booze and soda dispensers in the bar.
The chemicals it may dispense are defined in yaml, similar to the way that vending machines define which entities they can dispense, by defining a reagent pack.
* Add chemical dispenser and equipment
Adds the chemical dispenser, beaker, large beaker, dropper, and a few more chemicals.
* Add booze and soda dispensers.
Adds the booze and soda dispensers, and a few chemicals for them to dispense. There's no drink mixing or drunkenness yet.
* Update engine submodule.
* Remove unneeded and commented out code
Had a few WIP notes and debug code bits I forgot to remove beforehand.
* Make SolutionComponent._containedSolution and it's values private again
- Remove `SolutionComponent.ContainedSolution` property, replace with specific access functions to maintain safety.
- Make Solution.Contents return a `ReadOnlyCollection` instead of `_contents` to prevent uncontrolled access to the Solution values.
- Add `SolutionComponent.RemoveAllSolution()`
* Update Content.Shared/Chemistry/Solution.cs
Commits a suggestion from RemieRichards to match the coding style of the rest of the codebase. Using `IReadOnlyList` instead of `IReadOnlyCollection`.
Co-Authored-By: Remie Richards <remierichards@gmail.com>
* Update Content.Shared/GameObjects/Components/Chemistry/SolutionComponent.cs
Commits a suggestion from RemieRichards to match the coding style of the rest of the codebase. Using `IReadOnlyList` instead of `IReadOnlyCollection`.
Co-Authored-By: Remie Richards <remierichards@gmail.com>
* Add import for IReadOnlyList to Shared/SolutionComponent.cs
* Add documentation
* Improve localization
Improve use of ILocalizationManager.
* Resolve ReagentDispenserWindow._localizationManager before using it
Forgot to do this in the last commit, resulting in a crash. Oops.
* Add SolutionCaps.FitsInDispenser. Use in ReagentDispenserComponent.
Used to limit large containers like buckets or mop buckets from being placed in a dispenser. Both have large capacities (500) and weren't designed to hold certain chemicals like a beaker is, so for now they can be blocked from being put in a dispenser by giving them that flag.
* Add colors to new reagents
* Update engine submodule
* Disable speaking while unconscious/dead
Fixes#359
* Add CanSpeak ActionBlocker
Matches the existing technique for other actions like CanUse() and CanThrow().
Currently explosives do no damage to tiles or damage the wrong area of the map. This is because `Owner.Delete` is called before the adjacent tiles / entities are damaged. This results in the explosives grid always being 0, and it's position always being (0, 0), meaning that the tiles in range of the explosive are not properly calculated. This fixes that (Issue #358).
* Disable footstep sounds for ghosts
Adds a check before playing footstep sounds to check if the mover is a ghost. Doesn't play footstep sounds if they are a ghost.
* Add FootstepSoundComponent
Adds FootstepSoundComponent. If a mob has this component, it will make footstep sounds. Otherwise they will not. As of this commit humans have this component and ghosts do not.
Previously this component would sometimes try to use a non-existent prototype, `HelmetEngineering`. This would result in a server crash upon loading any map that uses the `Tool Locker (Filled)` component. This replaces that non existent prototype with `HatHardhatRed`, which does exist, and is something you might expect to find in a tool locker.
* Airlock hacking
* Added status text
* Whoops don't need this
* Update Content.Server/GameObjects/Components/Doors/AirlockComponent.cs
Co-Authored-By: Pieter-Jan Briers <pieterjan.briers@gmail.com>
* ComponentReference ServerDoorComponent
* Suggested name
* Work on Research so far
More work on UI...
Fix ResearchClient and Protolathe UI stuff.
Fix infinite select -> request state -> select -> ... loop
Add UI to ResearchClient, etc.
Technology Database states, and a bit of work on the research console ui
A bit of work on Research Console UI
Protolathe sync
Stuff that actually does things
Protolathe databases yay
Alright got my motivation back
Yeah, no. It's almost 3 AM already
Fix serialization bug again
More work on stuff
Stuff
Adds files for most new components/systems.
* Protolathes actually work now
* Research. Just Research.
* Adds icons from Eris.
* Address reviews
* Change LatheMenu resize behaviour
* Update Content.Client/GameObjects/Components/Research/ResearchConsoleBoundUserInterface.cs
Co-Authored-By: Pieter-Jan Briers <pieterjan.briers@gmail.com>
* Update Content.Client/Research/ResearchConsoleMenu.cs
Co-Authored-By: Pieter-Jan Briers <pieterjan.briers@gmail.com>
* Move IoC Resolve out of for loop
* Address review
* Localize stuff
Same as magazines except they can't be loaded into a weapon.
You can transfer ammo to and from magazines / boxes freely where the caliber matches so you don't need to necessarily match the magazine type.
Used popups to reflect transfer amount.
Also fixed the mag sprite showing as 0 capacity on spawn and the 10mm smg flash magazine prototype
* Removed BoundingBoxComponent.
* Updated prototypes to use refactored CollidableComponent.
* Renamed ICollidable to IPhysBody.
Moved ICollidable to the Shared/Physics namespace.
* Migrated more yaml files to use PhysShapes.
* Updated YAML to use the new list-of-bodies system.
* Updated the new prototypes.
* Update submodule
* Update submodule again, whoops
* Add more dakka
Some slight codebase changes to facilitate more robust behaviour.
* Update Content.Server/GameObjects/Components/Projectiles/ProjectileComponent.cs
Co-Authored-By: Pieter-Jan Briers <pieterjan.briers@gmail.com>
* Remix last stereo to mono
hpistol + ltrifle
* Retrofit the AI system with new IoC features.
Fixed bug with turret rotation.
* Added new AI WanderProcessor, and it works.
* RNG walking directions are a bit more random now.
* Wander now actually uses the MoverSystem to move.
Wander now talks when he reaches his destination.
* Adds a new Static Barker AI for vending machines, so that they periodically advertise their brand.
* Barker now says some generic slogans.
Misc bug cleanup.
* Removed useless UsedImplicitly attribute from AI dependencies, suppressed unused variable warnings instead.
* Fixed HandsGui children so that HandsGui is clickable
* Added TextureButton for opening Storage items
* Update ClientInventoryComponent.cs
Fixed HandleComponentState so that it only updates the inventory when there are changes.
* Implemented storage button on Inventory
Adds a small button on the bottom right of Storage items when inside the inventory. When the button is pressed it opens the Storage UI.
* Added the ReagentPrototype class.
* Added the new Solution class.
* Added new shared SolutionComponent to the ECS system.
* Added some basic element and chemical reagent prototypes.
* Added a new Beaker item utilizing the SolutionComponent. This is a testing/debug entity, and should be removed or changed soon.
* Added filters for code coverage.
* Nightly work.
* Added the server SolutionComponent class.
* Added a bucket.
Verbs set up for solution interaction.
* Adds water tank entity to the game.
* Added a full water tank entity.
Solutions are properly serialized.
Solution can be poured between two containers.
* Solution class can now be enumerated.
SolutionComponent now calculates the color of the solution.
* Minor Cleanup.
* initial explosiveComponent
* remove garbagee
* assets
* tile mass deletion baby
* grenades
* tweaks
* Update Content.Server/GameObjects/Components/Explosion/ExplosiveComponent.cs
Co-Authored-By: Pieter-Jan Briers <pieterjan.briers@gmail.com>
* Ex_act based on damage, fixes and tweaks
* One finishing touch
Done the most cringe way
* ex_act explosions, tables are destructible now
also adds fuel tanks
* adds ex_act to mobs
* ports clown and sec outfits
* bikehorn and soundemitters
* very smol bike horn
* working fine sounds
* Oh wow i can do it through github
Co-Authored-By: Pieter-Jan Briers <pieterjan.briers@gmail.com>
* fixes for review
* fixes prototype
* fixing entrypoint
- fixes inhand sprite visibility
- adds visible charge level
- refactor sound recourse load, now you can specify fire sound from YAML
- adds laser cannon - more powerful laser
- adds new assets for cannon
Made the examine window a little transparent so that you can see things behind it. This prevents the examine popup from occluding gameplay.
Moved the ExamineEntity bind from Human to Common context so that it will always be available to clients. Ghosts can now examine things.
ConstructionComponent.AttackBy tries calling TryProcessStep on the forward step of the construction stage, and if that fails it tries the backwards step. I many construction prototypes the backwards step is null for all stages and so clicking the construction ghost with an invalid step results in a crash due to the step passed to TryProcessStep being null.
* Demonstrated map init working with guns, toolboxes, tool lockers.
* Refactored EntityStorage and ServerStorage to have a common interface.
* EntityStorage no longer uses ServerStorage PURELY for visuals.
Use an appearance visualizer instead.
* Import Eris engineering locker sprites.
* Allow customizing ClientStorageComponent open/close states better.
* EntityStorage does not blow up if Storage is also defined in prototype.
* Engineering styled lockers.
* Recipe stuff.
* Lathe GUI and stuff
* god dammit
* Lathe menu works, yay.
* EventArgs henk
* Some work
* SS14 -> Robust
* More SS14 -> Robust
* Lathe materials
* Lathe works, Lathe GUI, Queue GUI, etc
too many changes to name them here
* Remove materials button, add ViewVariables and update lathe on connect
* Add Autolathe RSI
* Adds new recipes, fixes a few bugs.
* Remove unused ScrollContainers
* Use same delegate for spawn.
* Removes client-side LatheComponent in favor of BoundUserInterface
* Remove GetMaterial and TryGetMaterial
* Use auto-properties in a few places.
* Adds LatheDatabase, and a bunch of other changes
* Remove useless log.
* Remove lathetype from prototypes.
* Turns Storage, Lathe and Database into autoproperties
* Remove Hacked property from LatheRecipePrototype
* Remove unneeded dependency injection from components
* Refactors LatheDatabaseComponent to use ComponentState
* Refactors MaterialStorageComponent to use ComponentState
* Oopsie
* Another oopsie
* Last oopsie, I hope
* Fix missing Close call.
* Removes static `IoCManager` service locator calls from `Robust.Shared.Map` namespace.
* Misc code cleanup and filling out doc comments for Map classes.
* Added Union and Intersect methods to Box2.
* Any touched component was converted from static IoC calls to field injection.
Sibling PR to https://github.com/space-wizards/RobustToolbox/pull/796.
* refacting some sprite things
* fix sprites
* Netcode for sending a new icon state to the ClientComponent
* Fixed broken torches.
* Fix dirty calls.
* ClothingComponentState now also includes EquippedPrefix
* Inherritance ClothingComponent : ItemComponent
* Added parameter to ItemComponentState constructor.
* Update RobustToolbox
* Revert "Update RobustToolbox"
This reverts commit 82c7e98ff3853b64698d5e80a45cd7a3758618e0.
Undo weird commit to toolbox?
Added BurnTemperature to bulbs.
Added HeatResistance to clothing and species.
Added HeatResistanceComponent which resolves armor vs skin.
Made the hand burn on lamps only happen when heat resistance is too poor.
Requires https://github.com/space-wizards/space-station-14/pull/768
- [x] Play sounds
- [x] SoundSchedules actually work
- [x] Send sound to specific users
- [x] Make existing components use SoundComponent
- [x] Add ScheduledSounds from prototypes
- [x] Add Play methods equivalent to those of AudioSystem.
- [x] Document most code.
~~well, it SHOULD make mob rotate on death, but it doesn't, i have no idea why~~
- Blocks character movement in crit/death
- rotates character ~~360noscope~~ 90 degrees to convince you it's lying down when dead
resolves#145resolves#158
related to #115
-Also fixes a bug where bulb type didn't matter when inserting a new bulb into a light fixture.
-And a bug where bulb state changing didn't change the light itself.
P.S. Also note I didn't add any colored lightbulb prototypes, as I don't think they're necessary right now. To see the changes, please use VV! In the future, it might be possible to change the lightbulb's color with a multitool or something in-game.
* Adds light_tube.rsi
Sprites taken from CEV Eris!
* Adds LightBulbComponent
* Wall lights now use light bulbs!
* Light bulb now updates its sprite when it changes.
* Comments the code.
* Adds license and copyright to new sprites
* Add Ointment and Brutepack to StackType
* Add Ointment and Brutepack sprites
* HealingComponent now works correctly with StackComponent
* Adds Ointment and Brutepack prototypes
* Adds Ointment and Brutepack to stationstation
* Fix this
fug
oksure
Creates the initial species component, damage states, and threshold templates and hooks them into the damageable component
* More rebase fixes
* test
* Pre future rebase
* Please
* Lol
* Lol2
* SHADERS
* Update Engine
* yml file
* Fix an initialization issue, injects dependencies
* Fix error in loading shaders
* Makes a master character ui controller component added upon client attachment to entity and remove upon client detachment from entity
* Fixes just about everytrhing
* Address PJB's comments
* geeze
* Make overlays work in worldspace instead of screen space and not cover user interfaces
* update submodule
You can theoretically restart the round (resetting the map) now, but it breaks very badly if a client is connected due to various edge cases/race conditions.
* Fixed sprite issues with construction system (Thanks PJB!).
* Storage and Hands Systems now subscribe to Transform Parent changes, and will keep their containers in sync.
* Add check in Interaction System to prevent processing client-side entities on the server.
* Added generic crate assets.
Added open flag to StorageComponent.
* StorageComponent door toggling works.
* Door now updates based on if someone is subscribed to the Storage.
* Added License to crate.rsi
Fixed Icon of crate.
* Added basic Locker.
* Added Fire Extinguisher.
* Added ability to close the storage UI by the server.
Notify the server that the UI is closed, so that the player is unsubscribed from the storage.
Unsubscribe the player from a storage if the player entity moves out of range.
* Add check to make sure entity is on the same map as the storage.
* Update Engine module.
* Update Engine.
* Renamed ICollisionManager to IPhysicsManager.
* Added sanitization and logging for clients sending invalid coordinates to the interaction system.
* Update Engine.
1. Updates all the NuGet packages (except CommandLineParser because they ruined their API)
2. Makes all projects use C# 7.2 explicitly. (not latest)
3. Use some C# 7.2 features like readonly structs and default literals.
Fixes second half of #92
Regarding the first half, Digitalis explained in discord that when an entity is picked up, visible components are made invisible by making the entire Godot scene node for the entity (based on the GodotTransformComponent) not visible. It's probably possible to exempt the pointlight from that invisibility, but that seems hacky and it seems like something that should be covered by a generic "items equipped in hands are visible" design.
Adds:
- Handheld light component for toggling light activation
- Lantern sprite with on and off layers
- Lantern prototype updates
Known issues:
- When light is on and on the ground, hovering over it with the cursor does not produce the outline effect. I'm not sure, but I think this is caused by the way I implemented the illuminated layer as an entire sprite rather than just the illuminated part. The outline only works on the first layer maybe? I checked it against the welder in its on state and it doesn't seem to outline the flame.
- Illuminated sprite (layer 1) is an entire flashlight, so to make it look okay, the whole first layer is turned off. Would be better / more correct to follow the example of the welder and just create an illuminated "cap" to overlay on the dark extinguished layer. I'd whip up some coder art myself, but I don't have the right tools to handle transparency.
- Illuminated sprite is slightly different from the extinguished sprite, so turning on the light makes it a little bit shorter.
Various minor interaction features.
There is no concept of gravity in the game yet, so items drift through space or the hallways of a station until they are stopped. Thrown items do not collide with walls because making them collidable makes them collide with EVERYTHING, including the player. We need collision groups in the physics system.
Because of the previous problems the velocity things are throw at is set quite low, it can be tweaked after the other mentioned issues are resolved.
* CEV-Eris SMES sprite as RSI.
Has been modified so that the light overlay states use alpha blending.
* Add tiny glow to SMES display sprite.
* Appearances work v2
* More WiP
* RoundToLevels works correctly on even level counts now.
* SMES -> Smes because MS guidelines.
* CEV-Eris APC sprite.
* APC visuals.
* Reduce SMES scale again to normal levels.
* Update submodule
* adds storage system, primitive client-unsubscribing of storage updates
* strips out currently unneeded system
* channel to actor
* closestorageui todo added
* thorough logging, actor to session, validates session before sending packets
* offloads session status check to an event handler
* Updates for the netcode refactor.
* Change HandsGui to control.
Why? No idea but drawing of it works again.
* Fix hand change sync.
* Update submodule
* Rename IEntity.GetComponents to GetAllComponents.
This is to avoid confusion.
A single s to distinguish it from GetComponent() is quite hard to miss.
* Update submodule.
* Sprite refactor compatibility.
* Sprite-level rotation.
* Dude it works.
Welder now has an unshaded flame toggle!
Door component no longer on client!
* Remove debug text.
* Update.
* fixes server crash on empty hand drop
Fixes issue with server crashing when client requests for an empty hand to drop its entity.
* fixes drop crash by checking for null in container contains
* removes old change - time to learn to reset properly
* Adds click parsing entity system
Instead of every entity system receiving the message and deciding if it individually wants the message, and verifying player information. The click parser system receives the message and parses which system to send it to based on clicktype and sends it.
* Submodule update
* Bully the fuck out of inventory shit
Inventory Stuff
Inventories technically work
It works technicaly speaking
Yeah this part too
Lets do it!
Inventories completed
Motherfucker
* Remove unnecessary usings and fix one thing
* Submodule update
* Adds a bunch of various clothing prototypes for each current inventory slot
* Fix
Finish and update submodule
Comments code, changes network messages
FIXES THE USE INTERACTION SO YOU CAN ACTUALLY ACTIVATE THINGS NOW
Need engine commits
We'll figure out what to do about this shit later eh mates? Maybe have a script in the build process that automatically moves them over to godot/scenes
Changes some prototypes and fixes stuff
Fixes some more bugs, makes storage values show up properly
Part 3
Part 2
Storage Take 1
* Doneso
* Minor stuff:
* Making a file called DISABLE_SUBMODULE_AUTOUPDATE in BuildChecker/ makes it not always run git submodule update.
* Added .mypy_cache to .gitignore.
* Made default platforms x64 (from Any CPU).
* Make git hooks +x.
* Move submodule to Godot
* Update submodule AGAIN.
* Update project files.
* Remove WearableAnimatedSprite from prototypes.
* Remove content repo resource copier.
* Update submodule.
* Fix resource handling.
* Content.Client compiles by commenting out hands GUI.
* Update submodule.
* Fix prototype textures and update submodule.
* Update Submodule.
* Update submodule SOME MORE!
* Random WiP shit I guess
* Make omnisharp not choke on buildchecker.
* Update submodule.
* Highly WiP broken HandsGui code.
* Ok maybe let's not insult omnisharp.
* Fix annoying Omnisharp warning.
* Update submodule.
* Update submodule.
* Hey I forgot to push this but it didn't conflict!
* Fix hands GUI on godot.
* Update submodule.
* Obligatory submodule update.
* Work on exports.
* Work on exports.
* Update submodule.
* Update submodule.
* Fix dumb case mismatch between content and engine
* work pls.
* This maybe.
* Now!
* Update submodule.
* update submodule.
* Some WiP work on exporting aaah.
* OK READY FOR THE BUILDS SERVER.
* Probably should've made those commits in a different order.
* DO THE THING
* update submodule.
* Updates for effects system.
* Update submodule.
* Make file/line numbers show up on Windows Godot.
* Set submodule to master.
* Full interaction system
Has support for ranged interactions, and afterattacks, no longer relies on the clickable comopnent and you can click on no component and it will still function
* yes
* Change entry point to new system.
* Map saving/loading works.
* Cleans up old code.
* Saving and Loading of blueprints works.
* Saving and Loading of blueprints works.
* Updated the nuget 'YamlDotNet' package to 4.3.0.
* Submodules are trash
* Interaction Entity System
* ye
* Update submodule
* Requires engine update to function, but doesn't use shitcode
* Fix conflicts
* Fix conflicts but for real
* Update submodule
* Power Commit 1
* Commit 2
* Powernet Part2, All components essentially complete
* Commit 4
* Commit 5
* Commit 6
Creates prototypes
* Finishes powernet code alpha
Adds prototypes and logic for powernet updating and regeneration
* Adds onremove functionality to all components
Without these bits of logic nothing makes any sense!
* And this
* Fixes a lot of bugs
* Fix powernet thinking devices are duplicates
* Fix bug and add comments
* woop woop thats the sound of the police
* Updates submodule
Fix connect not entering server (with correct toml config) and compile error, updates submodule
Server still has an issue with toml file pointing towards sandbox instead of content and roundstart object initializations
* Updates more stuff
Needs my most recent PR on ss14 to function
* Submodule updated for real this time
* Doors WiP
* Kinda seem to work now?
* Finished
* Oh yeah maybe enable that.
* It works except it doesn't
* Undo formatting changes
* BuildChecker too
* Add prototype for temperature testing entity.
* Add Damageable, Destructible, Temperature. Add a prototype based on those.
* Works and cleaned up.
* Nerf