Commit Graph

102 Commits

Author SHA1 Message Date
Moony
f60484b15c Random station names! (#5548) 2021-11-26 14:54:32 +01:00
DrSmugleaf
c3fe5909ad THE RETURN OF THE KING
This reverts commit c18d07538a.
2021-11-22 19:08:27 +01:00
DrSmugleaf
c18d07538a Revert "Admin logs (#5419)"
This reverts commit 319aec109d.
2021-11-22 18:55:17 +01:00
Javier Guardia Fernández
319aec109d Admin logs (#5419)
* Add admin logging, models, migrations

* Add logging damage changes

* Add Log admin flag, LogFilter, Logs admin menu tab, message
Refactor admin logging API

* Change admin log get method names

* Fix the name again

* Minute amount of reorganization

* Reset Postgres db snapshot

* Reset Sqlite db snapshot

* Make AdminLog have a composite primary key of round, id

* Minute cleanup

* Change admin system to do a type check instead of index check

* Make admin logs use C# 10 interpolated string handlers

* Implement UI on its own window
Custom controls
Searching
Add admin log converters

* Implement limits into the query

* Change logs to be put into an OutputPanel instead for text wrapping

* Add log <-> player m2m relationship back

* UI improvements, make text wrap, add separators

* Remove entity prefix from damaged log

* Add explicit m2m model, fix any players filter

* Add debug command to test bulk adding logs

* Admin logs now just kinda go

* Add histogram for database update time

* Make admin log system update run every 5 seconds

* Add a cap to the log queue and a metric for how many times it has been reached

* Add metric for logs sent in a round

* Make cvars out of admin logs queue send delay and cap

* Merge fixes

* Reset some changes

* Add test for adding and getting a single log

* Add tests for bulk adding logs

* Add test for querying logs

* Add CallerArgumentExpression to LogStringHandler methods and test

* Improve UI, fix SQLite, add searching by round

* Add entities to admin logs

* Move distinct after orderby

* Add migrations

* ef core eat my ass

* Add cvar for client logs batch size

* Sort logs from newest to oldest by default

* Merge fixes

* Reorganize tests and add one for date ordering

* Add note to log types to not change their numeric values

* Add impacts to logs, better UI filtering

* Make log add callable from shared for convenience

* Get current round id directly from game ticker

* Revert namespace change for DamageableSystem
2021-11-22 18:49:26 +01:00
Vera Aguilera Puerto
4c80fb9586 Refactor AccentManager to be an entity system, makes accents ECS. (#4825) 2021-10-11 11:18:39 -07:00
Vera Aguilera Puerto
67fd509c9f Adds jittering. (#4809)
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2021-10-09 17:30:04 +02:00
Vera Aguilera Puerto
f913d8361d Refactors smoking to ECS, smoking actually makes you inhale reagents. (#4678) 2021-09-26 15:19:00 +02:00
Vera Aguilera Puerto
f4769c00d7 SubFloorHide requires entities to be anchored by default. 2021-07-30 12:26:18 +02:00
Vera Aguilera Puerto
93acc565f0 Makes Airtight ECS. (#4351)
* Makes Airtight ECS.

* Remove atmos holdovers while at it!
2021-07-25 17:04:58 +10:00
Pieter-Jan Briers
b96d760043 Chat improvements. (#4283)
* UI is an abbreviation, in XAML.

* Chat improvements.

Changing the "selected" channel on the chat box is now only done via the tab cycle or clicking the button.

Prefix chars like [ will temporarily replace the active chat channel. This is based 100% on message box contents so there's no input eating garbage or anything.

Pressing specific channel focusing keys inserts the correct prefix character, potentially replacing an existing one. Existing chat contents are left in place just fine and selected so you can easily delete them (but are not forced to).

Channel focusing keys now match the QWERTY key codes.

Deadchat works now.

Console can no longer be selected as a chat channel, but you can still use it with the / prefix.

Refactored the connection between chat manager and chat box so that it's event based, reducing tons of spaghetti everywhere.

Main chat box control uses XAML now.

General cleanup.

Added focus hotkeys for deadchat/console. Also added prefix for deadchat.

Local chat is mapped to deadchat when a ghost.

Probably more stuff I can't think of right now.

* Add preferred channel system to chat box to automatically select local.

I can't actually test this works because the non-lobby chat box code is complete disastrous spaghetti and i need to refactor it.

* Move chatbox resizing and all that to a subclass.

Refine preferred channel & deadchat mapping code further.

* Don't do prefixes for channels you don't have access to.

* Change format on channel select popup.

* Clean up code with console handling somewhat.
2021-07-20 10:29:09 +02:00
Pieter-Jan Briers
dcfa4dea00 Fix netser Rider template so it can be used in to-level class definitions. 2021-07-02 20:35:25 +02:00
Pieter-Jan Briers
cee6600d77 Help smugleaf is holding me at gunpoint (rider templates). 2021-06-22 11:20:46 +02:00
Vera Aguilera Puerto
a2b737d945 Atmos pipe rework (#3833)
* Initial

* Cleanup a bunch of things

* some changes dunno

* RequireAnchored

* a

* stuff

* more work

* Lots of progress

* delete pipe visualizer

* a

* b

* pipenet and pipenode cleanup

* Fixes

* Adds GasValve

* Adds GasMiner

* Fix stuff, maybe?

* More fixes

* Ignored components on the client

* Adds thermomachine behavior, change a bunch of stuff

* Remove Anchored

* some work, but it's shitcode

* significantly more ECS

* ECS AtmosDevices

* Cleanup

* fix appearance

* when the pipe direction is sus

* Gas tanks and canisters

* pipe anchoring and stuff

* coding is my passion

* Unsafe pipes take longer to unanchor

* turns out we're no longer using eris canisters

* Gas canister inserted tank appearance, improvements

* Work on a bunch of appearances

* Scrubber appearance

* Reorganize AtmosphereSystem.Piping into a bunch of different systems

* Appearance for vent/scrubber/pump turns off when leaving atmosphere

* ThermoMachine appearance

* Cleanup gas tanks

* Remove passive gate unused imports

* remove old canister UI functionality

* PipeNode environment air, make everything use AssumeAir instead of merging manually

* a

* Reorganize atmos to follow new structure

* ?????

* Canister UI, restructure client

* Restructure shared

* Fix build tho

* listen, at least the canister UI works entirely...

* fix build : )

* Atmos device prototypes have names and descriptions

* gas canister ui slider doesn't jitter

* trinary prototypes

* sprite for miners

* ignore components

* fix YAML

* Fix port system doing useless thing

* Fix build

* fix thinking moment

* fix build again because

* canister direction

* pipenode is a word

* GasTank Air will throw on invalid states

* fix build....

* Unhardcode volume pump thresholds

* Volume pump and filter take time into account

* Rename Join/Leave atmosphere events to AtmosDeviceEnabled/Disabled Event

* Gas tank node volume is set by initial mixtuer

* I love node container
2021-06-19 13:25:05 +02:00
DrSmugleaf
9b8185db23 Deprecate IActionBlocker in favour of cancellable events (#4193)
* Deprecate IActionBlocker in favour of cancellable events

* Bring back old speech/emoting component restrictions

* Rename action blocker listener methods

* Use Entity System public methods instead of extension methods

Co-authored-by: Vera Aguilera Puerto <gradientvera@outlook.com>
2021-06-19 10:03:24 +02:00
Pieter-Jan Briers
61ed10fd31 AL is an acronym 2021-05-24 17:44:24 +02:00
Vera Aguilera Puerto
3a27490c59 Material cleanup (#4025)
* work

* more work
2021-05-20 10:37:34 +02:00
Vera Aguilera Puerto
dc03f1f545 AnchorableComponent light cleanup. (#4009)
* Remove awful commands

* Unanchoring is a word.

* Fix disposal tests....

* Slight anchorable cleanup
2021-05-16 22:33:21 +02:00
Pieter-Jan Briers
2ca4ecaecf Funny Rider dotsettings stuff 2021-04-19 01:41:47 +02:00
Vera Aguilera Puerto
f257846de7 Anchorable component now raises cancellable event on (un)anchor. (#3828) 2021-04-13 13:18:20 +02:00
DrSmugleaf
4c47cd4fe2 Add back pull moving (#3635)
* Add back pull moving

* Make pull moving event-based, use map coordinates, slow down moving when getting closer and stop moving when very close, add max range and add compensation for overshooting

* Remove compensation

* Prevent pull move from pulling you

* acruid did this

* Add unsubscriptions to shutdown

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
2021-04-05 14:08:45 +02:00
Pieter-Jan Briers
f0b6220f30 GC is an abbreviation. 2021-03-25 02:24:57 +01:00
Pieter-Jan Briers
f0433a03ee HW is an acronym 2021-03-22 01:32:08 +01:00
Vera Aguilera Puerto
c455b745ba Adds announce command for admins, latejoin announcer is now "station" 2021-03-17 15:43:31 +01:00
DrSmugleaf
5f71ea1c48 Add extension methods to get a player's id and tests (#3630)
* Add extension methods to get a player's id and tests

* More extensive tests

* Make inventory check for ids first

* Rename to GetHeldId and TryGetHeldId
2021-03-13 13:22:51 +11:00
Pieter-Jan Briers
42e0a04939 BB is an acronym 2021-02-23 22:50:09 +01:00
Pieter-Jan Briers
4121cdb2bf Formattable is quite literally a word in .NET. 2021-02-23 22:10:07 +01:00
Vera Aguilera Puerto
9ee0ec4106 Holiday System (#3122) 2021-02-12 10:45:22 +01:00
Pieter-Jan Briers
c40ac26ced A big hecking chemistry-related refactor. (#3055)
* A big hecking chemistry-related refactor.

Changed SolutionContainerCaps. It now describes "stock" behavior for interacting with solutions that is pre-implemented by SolutionContainerComponent. As such things like syringes do not check it anymore (on themselves) to see "can we remove reagent from ourselves". That's assumed by it... being a syringe.

SolutionContainerCaps now has different flags more accurately describing possible reagent interaction behaviors.

ISolutionInteractionsComponent is the interface that describes the common behaviors like "what happens when injected with a syringe". This is implemented by SolutionContainerComponent but could be implemented by other classes. One notable example that drove me to making this interface was the /vg/station circuit imprinter which splits reagent poured in into its two reservoir beakers. Having this interface allows us to do this "proxying" behavior hack-free. (the hacks in /vg/ code were somewhat dirty...).

PourableComponent has been replaced SolutionTransferComponent. It now describes both give-and-take behavior for the common reagent containers. This is in line with /vg/'s /obj/item/weapon/reagent_containers architecture. "Taking" in this context is ONLY from reagent tanks like fuel tanks.

Oh, should I mention that fuel tanks and such have a proper component now? They do.

Because of this behavioral change, reagent tanks DO NOT have Pourable anymore. Removing from reagent tanks is now in the hands of the item used on them. Welders and fire extinguishers now have code for removing from them. This sounds bad at first but remember that all have quite unique behavior related to this: Welders cause explosions if lit and can ONLY be fueled at fuel tanks. Extinguishers can be filled at any tank, etc... The code for this is also simpler due to ISolutionInteractionsComponent now so...

IAfterInteract now works like IInteractUsing with the Priority levels and "return true to block further handlers" behavior. This was necessary to make extinguishers prioritize taking from tanks over spraying.

Explicitly coded interactions like welders refueling also means they refuse instantly to full now, which they didn't before. And it plays the sound. Etc...

Probably more stuff I'm forgetting.

* Review improvements.
2021-02-04 00:05:31 +11:00
Vera Aguilera Puerto
12c733654c Basic gibbing (#2973)
* Adds gibbing

* Adds adminbused absurd-damage foamblade

* Sane parts

* BaseOrgan -> BaseMechanism

* Do not do random offset on shared, fix killing oneself with click attacks

* BaseMechanism -> BaseHumanOrgan -> *stuff*

* Account for prediction, again

* Add gibbing sound
2021-01-10 20:12:34 +01:00
DrSmugleaf
639cc86d91 Nanotransen > Nanotrasen
As decreed by PJB
https://discord.com/channels/310555209753690112/675078881425752124/784878237850402826
2020-12-05 21:48:11 +01:00
Vera Aguilera Puerto
c3341132c5 Upgradeable machines. (#2675)
* 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
2020-12-03 22:49:00 +01:00
Víctor Aguilera Puerto
6bb1e9fa5d CVars for atmos (#2633)
* Monstermos is a word!

* Atmos CVars

* Cache CVars in AtmosphereSystem.

Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2020-11-27 16:49:12 +01:00
Pieter-Jan Briers
0a488ddc4a Merge branch '20-11-27-merge' 2020-11-27 00:54:29 +01:00
Peter Wedder
32d8cc0c1e Rerun of "Add Reagent Grinder/Juicer" (#2570)
* 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>
2020-11-26 23:53:42 +11:00
Pieter-Jan Briers
f72e1948da Merge remote-tracking branch 'upstream/master' into 20-11-19-sandboxing 2020-11-22 00:21:03 +01:00
DrSmugleaf
8954071220 Allow multiline ifs if their body is not multiline itself for content (#2591)
* Allow multiline ifs if their body is not multiline itself

* sln.DotSettings

* Tabs bad
2020-11-21 12:01:08 +01:00
Pieter-Jan Briers
20fb55d8e9 "sandboxing" is a word. 2020-11-20 16:01:56 +01:00
Pieter-Jan Briers
2199739706 These are abbreviations, Rider. 2020-11-13 01:34:31 +01:00
Pieter-Jan Briers
711166f43a Merge remote-tracking branch 'upstream/master' into 20-10-30-admins 2020-10-30 16:23:21 +01:00
Pieter-Jan Briers
ad58a056d7 ConGroups are gone. Long live admin flags in content. 2020-10-30 16:06:48 +01:00
Peter Wedder
bd4f2b41df Prettier window breaking (#2368)
* 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
2020-10-29 20:42:11 +01:00
Peter Wedder
fca556a1c1 Adds sized (S, M, L) power cells and a generic component for battery powered items (#2352)
* 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
2020-10-29 19:17:03 +01:00
Paul Ritter
6a0aa9b72f Singularity, Particle Accelerator & Radiation Collectors (#2169)
* 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>
2020-10-28 19:19:47 +01:00
Víctor Aguilera Puerto
484eb0bba4 Botany (#2357)
* 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!
2020-10-26 23:19:46 +01:00
DrSmugleaf
ba4c596195 Add InRangeUnoccluded extension methods (#2224)
* Rename RangeExtensions to UnobstructedExtensions

* Add InRangeUnoccluded extension methods
2020-10-11 13:13:45 +02:00
Víctor Aguilera Puerto
745401a41e Data-oriented Construction System (#2152)
- 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>
2020-10-08 17:41:23 +02:00
Pieter-Jan Briers
66c8a68891 Holy crap auth works (#2099)
* 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
2020-09-29 14:26:00 +02:00
Víctor Aguilera Puerto
31e0dfc10c Adds FlammableComponent, humans can now catch on fire. (#2115) 2020-09-22 15:40:04 +02:00
DrSmugleaf
74943a2770 Typo, redundant string interpolation, namespaces and imports cleanup (#2068)
* Readonly, typos and redundant string interpolations

* Namespaces

* Optimize imports

* Address reviews

* but actually

* Localize missing strings

* Remove redundant vars
2020-09-13 14:23:52 +02:00
Víctor Aguilera Puerto
c27ab9bf6a Merge branch 'master' into 2020-08-19-firelocks 2020-09-12 15:52:20 +02:00