* Add tests for ghost spawn position
* Make ghosts spawn immediately
* Format mind system
* Move ghost spawning to GhostSystem
* Spawn ghost on grid or map
This fixes the ghosts being attached the parent entity instead of the grid.
* Move logging out of the ghost system
* Make round start observer spawn using GhostSystem
* Move GameTicker ghost spawning to GhostSystem
Moved the more robust character name selection code over.
Moved the TimeOfDeath code over.
Added canReturn logic.
* Add overrides and default for ghost spawn coordinates
* Add warning log to ghost spawn fail
* Clean up test
* Dont spawn ghost on map delete
* Minor changes to the role test
* Fix role test failing to spawn ghost
It was failing the map check due to using Nullspace
* Fix ghost tests when running in parallel
Not sure what happened, but it seems to be because they were running simultaneously and overwriting values.
* Clean up ghost tests
* Test that map deletion does not spawn ghosts
* Spawn ghost on the next available map
* Disallow spawning on deleted maps
* Fix map deletion ghost test
* Cleanup
* Do not wake up NPC if there is still a mind attached.
This became apparent with diona nymphs (?) and slime gyras (?). This caused players that disconnected while a nymph, gyras or other npc to resume their NPC behavior. Which I would call unwanted. This fixes that.
* Zombies become AI anyway
* Update Content.Server/NPC/Systems/NPCSystem.cs
---------
Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
* add FireProtection system and event
* minor optimisation + make flammable use fire protection event
* add fire protection values to some things, nerf firesuit heat resistance
* bruh
* unrevert laser nerfs, make elite hardsuit fully fireproof
---------
Co-authored-by: deltanedas <@deltanedas:kde.org>
* create devicenet frequencies
* create borg transponder and give it to all nt borgs
* add robotics console
* actually implement battery charge display + some fix
* tab
* real explosion
* little safer
* disable destroy button clientside too when on cooldown
* m
* how do i do this when i review things...
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* webedit ops
Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
* ui updates
* oracle java
* do a thing
* update ui when a borg times out
* maybe fix test
* add IsLocked to LockSystem
* make destroying gib the chassis again, so emagging isnt sus
* use locking
* require using alt click to unlock so normal click is open ui
* the
* use LogType.Action
* take this L
* pocket lint?
* sharer
* pro ops
* robor pushmarkup
* m
* update and make it not use prototype anymore
* frame0
* update yaml
* untroll
* bad
* h
---------
Co-authored-by: deltanedas <@deltanedas:kde.org>
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
* Added new HTN operations & preconditions
* Ok I forgot about partial
* Namespace pierce the skies
* Some fixes, debug and new operators
* Bruh git eat my files
Fucking whoops
In #27742 I made it so sanitization of character profiles was moved to be *after* database load. Except that means I moved it to be after the copy of all character profiles got sent to the client.
Move the sending to *also* be in that second load stage, and rename it. Fixes the issue.
First bug: if an error occured during pref loading code, it would fail. If the person then readied up, it would likely cause the round to fail to start.
Why could they ready up? The code only checks that the prefs finished loading, not that they finished loading *successfully*. Whoops.
Anyways, now people get kicked if their prefs fail to load. And I improved the error handling.
Second bug: if a user disconnected while their prefs were loading, it would cause an exception. This exception would go unobserved on lobby servers or raise through gameticker on non-lobby servers.
This happened even on a live server once and then triggered the first bug, but idk how.
Fixed this by properly plumbing through cancellation into the preferences loading code. The stuff is now cancelled properly.
Third bug: if somebody has a loadout item with a playtime requirement active, load-time sanitization of player prefs could run into a race condition because the sanitization can happen *before* play time was loaded.
Fixed by moving pref sanitizations to a later stage in the load process.
* Added warning to tryGetSolution, moved SolutionContainer code to shared
- Added an optional warning (false by default) to print an error if a solution is missing when using tryGetSolution methods
- Moved ensuring solution containers to shared, left the old method stubs for compatability and marked them as obsolete.
* Update SharedSolutionContainerSystem.cs
* Update SharedSolutionContainerSystem.cs
* Update SolutionContainerSystem.cs
* Update SharedSolutionContainerSystem.cs
* Fixing ensuring chem solutions always returning false on client
- ensuring chem solutions will only return false on the client if it is waiting for a server solutionEntity to be synced
* Added concentration helpers
* fix whitespace
* Add dock device link port
* SpawnAndDeleteAllEntitiesInTheSameSpot moment
* The fuck is TryStopNukeOpsFromConstantlyFailing??
Do we have a new test that can randomly fail?
- Now uses a SoundCollection.
- Now properly handles going between maps (audio rework mucho wow).
- GetAudioLength used so it can properly countdown ANY song (wow audio rework wow wow).
Using static Regex functions that take in a pattern is bad because the pattern constantly needs to be re-parsed. With https://github.com/space-wizards/RobustToolbox/pull/5107, the engine has an analyzer to warn for this practice now.
This commit brings most of content up to snuff already, though some of the tricker code I left for somebody else.
* Geras bug fixes
* oops
* its as shrimple as that
toggled transferName in the polymorph yml instead of using the system to manually change it
* its as shrimple as that (2.0)
fixed reviews for zombies having a dummy action, instead - properly implemented removal of action
* its as shrimple as that (3.0)
fixed tests by removing nameidentifier from slime (its already inherited, anyway)