Commit Graph

882 Commits

Author SHA1 Message Date
metalgearsloth 4dc871b2be
Add cvar thresholds to gas overlays (#3835)
* Add cvar thresholds to gas overlays

Rather than having 256 thresholds it can now be reduced to whatever you want

* Address review

* Fix namespace
2021-06-21 17:08:37 +10:00
Galactic Chimp 392b820796
Removed old Loc.GetString() use instances (#4155)
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
2021-06-21 02:13:54 +02:00
Vera Aguilera Puerto f7b89daa74 Move ComputerUIActivatorSystem to Computer namespace. 2021-06-20 11:42:37 +02:00
Acruid 15fb554c28
Engine Entity Anchoring Changes (#4195)
* Converted all SnapGridPositionChangedEvent subscriptions to AnchorStateChangedEvent.

* Fixes power tests with new anchored requirements.

* Moved AnchorableComponent into construction.
AnchorableComponent now uses Transform.Anchored.

* Fixed bug with nodes, power works again.

* Adds lifetime stages to Component.

* Update Engine to v0.4.70.
2021-06-19 19:41:26 -07: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 ff1a2d97ea
Re-organize all projects (#4166) 2021-06-09 22:19:39 +02:00
DrSmugleaf ad3b7fe97d
Remove field: from DataField attributes (#3932) 2021-05-04 15:37:16 +02:00
Vera Aguilera Puerto c17426dfa7
AtmosphereSystem no longer creates a component manually. (#3839)
- Maps get SpaceGridAtmosphereComponent added automatically
2021-04-13 13:17:10 +02:00
metalgearsloth dc48b25a3b
Named fixtures for banana peels (#3822)
* Named fixtures for banana peels

* Soaps and PDAs

* Update submodule
2021-04-13 20:57:29 +10:00
Metal Gear Sloth 117dc7bb44 Fix atmos byte cast
Thanks rider
2021-03-29 23:00:05 +11:00
Vera Aguilera Puerto 0884bcf7ec Fixes bug where the PlasmaFire reaction wouldn't reset reaction results properly.
This would cause the hotspot volume to grow more and more until the hotspot bypasses processing and therefore doesn't spread anymore.
2021-03-28 14:28:04 +02:00
Vera Aguilera Puerto e45548ac74 Optimizes atmos 2021-03-25 14:57:57 +01:00
Acruid 9459400002
SoundSystem Improvements (#3697)
* Refactor all audio to use the new SoundSystem.

* Update submodule

Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2021-03-21 17:12:03 +01:00
DrSmugleaf a5ade526b7
Enable nullability in Content.Server (#3685) 2021-03-16 15:50:20 +01:00
Vera Aguilera Puerto 83fbd1f0c8 Fixes fires 2021-03-08 15:21:56 +01:00
metalgearsloth 4d064abcd7
Physics (#3485)
* Content side new physics structure

* BroadPhase outline done

* But we need to fix WorldAABB

* Fix static pvs AABB

* Fix import

* Rando fixes

* B is for balloon

* Change human mob hitbox to circle

* Decent movement

* Start adding friction to player controller

I think it's the best way to go about it to keep other objects somewhat consistent for physics.

* This baby can fit so many physics bugs in it.

* Slight mob mover optimisations.

* Player mover kinda works okay.

* Beginnings of testbed

* More testbed

* Circlestack bed

* Namespaces

* BB fixes

* Pull WorldAABB

* Joint pulling

* Semi-decent movement I guess.

* Pulling better

* Bullet controller + old movement

* im too dumb for this shit

* Use kinematic mob controller again

It's probably for the best TBH

* Stashed shitcode

* Remove SlipController

* In which movement code is entirely refactored

* Singularity fix

* Fix ApplyLinearImpulse

* MoveRelay fix

* Fix door collisions

* Disable subfloor collisions

Saves on broadphase a fair bit

* Re-implement ClimbController

* Zumzum's pressure

* Laggy item throwing

* Minor atmos change

* Some caching

* Optimise controllers

* Optimise CollideWith to hell and back

* Re-do throwing and tile friction

* Landing too

* Optimise controllers

* Move CCVars and other stuff swept is beautiful

* Cleanup a bunch of controllers

* Fix shooting and high pressure movement controller

* Flashing improvements

* Stuff and things

* Combat collisions

* Combat mode collisions

* Pulling distance joint again

* Cleanup physics interfaces

* More like scuffedularity

* Shit's fucked

* Haha tests go green

* Bigmoneycrab

* Fix dupe pulling

* Zumzum's based fix

* Don't run tile friction for non-predicted bodies

* Experimental pulling improvement

* Everything's a poly now

* Optimise AI region debugging a bit

Could still be better but should improve default performance a LOT

* Mover no updater

* Crazy kinematic body idea

* Good collisions

* KinematicController

* Fix aghost

* Throwing refactor

* Pushing cleanup

* Fix throwing and footstep sounds

* Frametime in ICollideBehavior

* Fix stuff

* Actually fix weightlessness

* Optimise collision behaviors a lot

* Make open lockers still collide with walls

* powwweeerrrrr

* Merge master proper

* AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

* AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

* AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

* Ch ch ch changesss

* SHIP IT

* Fix #if DEBUG

* Fix vaulting and item locker collision

* Fix throwing

* Editing yaml by hand what can go wrong

* on

* Last yaml fixes

* Okay now it's fixed

* Linter

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
Co-authored-by: Vera Aguilera Puerto <zddm@outlook.es>
2021-03-08 04:09:59 +11:00
Vera Aguilera Puerto ea1196fd42 Fixes WaterVaporReaction missing a data definition attribute 2021-03-06 00:13:25 +01:00
Vera Aguilera Puerto 16a9aeb9c0
Water vapor now makes puddles under 100ºC above 1 moles (#3489)
* Water vapor now makes puddles under 100ºC above 1 moles

* serv3 moment

* Update Content.Server/Atmos/Reactions/GasReactionPrototype.cs

Co-authored-by: Clyybber <darkmine956@gmail.com>

Co-authored-by: Clyybber <darkmine956@gmail.com>
2021-03-05 22:15:37 +01:00
Paul 73cef00aeb makes prototypeinheritance opt in 2021-03-05 11:13:00 +01:00
Paul Ritter 5c50b1f6ed
Serialization v3 content PR (#3491)
* serv3 in shared pt 1

* beginning of deepclone api

* progress in implementing ideepclone & serv3 in content

* adds target

* its cant hurt you it cant hurt you

* more changes to content.server

* adds dataclasses

* almost there

* renamed & edited entry

* finishes refactoring content to use serv3

* gasmixture runtimes, next: reagentunit

* fucin hell that was an annoying one

* adds flags

* fixes some yaml errors

* removes comment

* fixes generic components for now

* removes todo
actually clones values my god paul
fixes bug involving resolving custom data classes from other proj
renames dataclass
fixes spritecomp
adds WithFormat.Constants support

* adds deepclone to ResistanceSet

* adds a bunch of deepclone implementations
adds a deepclone analyzer (TODO)
adds a deep clone fallback for classes & structs

* fixes a bunch of runtimes

* adds deepclone to entityuid

* adds generator to sln

* gets rid of warnings

* fixes

* argh

* componentdata refactors

* more deepclone impl

* heck me i reworked all of content deepclone

* renames custom dataclasstarget

* misc

* reworks prototypes

* deepclone nuke

* renamed customdataclass attribute

* fixes everything

* misc fixed

* the killcommit

* getting there

* changed yamlfieldattribute namespace

* adds back iselfserialize

* renames everything to data(field/definition)

* ouch

* Fix most errors on content

* Fix more errors in content

* Fix some components

* work on tests

* fixes some customdataclasses

* fuggin shit

* yes

* yeas

* Remove data classes

* Data field naming fixes

* arg

* Git resetti RobustToolbox

* Merge fixes

* General fixes

* Fix startup serialization errors

* Fix DamageContainerPrototype when supported classes or types are null

* Implement construction graph step type serializer

* Fix up construction serialization

* Fix up construction serialization part 2

* Fix null list in technology database component

* Fix body serialization

* Fix entity storage serialization

* Fix actions serialization

* Fix AI serialization

* Fix reaction serialization

* Fix body serialization

* Fix grid atmosphere serialization

* Rename IServ3Manager to ISerializationManager

* Convert every non generic serializer to the new format, general fixes

* Serialization and body system fix

* pushinheritance fix

* Update all prototypes to have a parent and have consistent id/parent properties

* Merge fixes

* smh my head

* cuddling slaps

* Content commit for engine PR

* stuff

* more fixes

* argh

* yes even you are fixed

* changelog fixes

* fixes seeds

* argh

* Test fixes

* Add writing for alert order prototype

* Fix alert order writing

* FIX

* its been alot ok

* Fix the rest of the visualizers

* Fix server alerts component tests

* Fix alert prototype tests not using the read value

* Fix alert prototype tests initializing serialization multiple times

* THIS IS AN AMERICAN CODEBASE GOD BLESS THE USA

* Add ImplicitDataDefinitionForInheritors to IMechanismBehavior
Fixes the behaviors not being found

* Fix NRE in strap component
Good night to the 1 buckle optimization

* Fix clothing component slot flags serialization tag

* Fix body component in all components test

* Merge fixes

* ffs

* Make construction graph prototype use serialization hooks

* human yaml linted

* a

* Do the thing for construction

* stuff

* a

* monke see yaml linter

* LINT HARDER

* Remove redundant todo

* yes

* Add skip hook argument to readers and copiers

* we gamin

* test/datafield fixes

* adds more verbose validation

* moves linter to action

* Improve construction graph step type serializer error message

* Fix ammo box component NRE

* gamin

* some updates to the linter

* yes

* removes that test

* misc fixes

* array fix
priority fix
misc fixes

* adds proper info the validation

* adds alwaysrelevant usa

* Make yaml linter take half as long to run (~50% less)

* Make yaml linter 5 times faster (~80% less execution time)

* based vera being based

* fixes mapsaving

* warning cleanup & moves surpressor

* removes old msbuild targets

* Revert "Make yaml linter 5 times faster (~80% less execution time)"

This reverts commit 3e6091359a26252c3e98828199553de668031c63.

* Add -nowarn to yaml linter run configuration

* Improve yaml linter message feedback

* Make dependencies an argument instead of a property on the serialization manager

* yamllinting slaps

* Clean up type serializers

* Move yaml linter code to its own method

* Fix yaml errors

* Change yaml linter action name and remove -nowarn

* yaml linter please shut

* Git resetti robust toolbox

Co-authored-by: Paul <ritter.paul1+git@googlemail.com>
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
2021-03-05 01:08:38 +01:00
Vera Aguilera Puerto 5109d1d853 Adds fixgridatmos command for mapping and admining 2021-03-04 13:07:10 +01:00
Pieter-Jan Briers 1eb0fbd8d0 Revert "Physics (#3452)"
This reverts commit 3e64fd56a1.
2021-02-28 18:49:48 +01:00
metalgearsloth 3e64fd56a1
Physics (#3452)
* Content side new physics structure

* BroadPhase outline done

* But we need to fix WorldAABB

* Fix static pvs AABB

* Fix import

* Rando fixes

* B is for balloon

* Change human mob hitbox to circle

* Decent movement

* Start adding friction to player controller

I think it's the best way to go about it to keep other objects somewhat consistent for physics.

* This baby can fit so many physics bugs in it.

* Slight mob mover optimisations.

* Player mover kinda works okay.

* Beginnings of testbed

* More testbed

* Circlestack bed

* Namespaces

* BB fixes

* Pull WorldAABB

* Joint pulling

* Semi-decent movement I guess.

* Pulling better

* Bullet controller + old movement

* im too dumb for this shit

* Use kinematic mob controller again

It's probably for the best TBH

* Stashed shitcode

* Remove SlipController

* In which movement code is entirely refactored

* Singularity fix

* Fix ApplyLinearImpulse

* MoveRelay fix

* Fix door collisions

* Disable subfloor collisions

Saves on broadphase a fair bit

* Re-implement ClimbController

* Zumzum's pressure

* Laggy item throwing

* Minor atmos change

* Some caching

* Optimise controllers

* Optimise CollideWith to hell and back

* Re-do throwing and tile friction

* Landing too

* Optimise controllers

* Move CCVars and other stuff swept is beautiful

* Cleanup a bunch of controllers

* Fix shooting and high pressure movement controller

* Flashing improvements

* Stuff and things

* Combat collisions

* Combat mode collisions

* Pulling distance joint again

* Cleanup physics interfaces

* More like scuffedularity

* Shit's fucked

* Haha tests go green

* Bigmoneycrab

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2021-03-01 03:11:29 +11:00
DrSmugleaf 3e702723fd
Content PR for YAML hot reloading (#3319)
* Content PR for YAML hot reloading

* Add CanAdminReloadPrototypes (host permission)

* IndexedPrototype fixes
2021-02-20 00:05:24 +01:00
Acruid ca4fd649fe
Massive Namespace Cleanup (#3120)
* Engine namespace changes.

* Automated remove redundant using statements.

* Simplified Graphics namespace.

* Apparently the container system stores full type names in the map file.😞 This updates those names.

* API Changes to LocalizationManager.LoadCulture.

* Update submodule to v0.3.2
2021-02-11 01:13:03 -08:00
Vera Aguilera Puerto 9b1142973e
Renames phoron to plasma everywhere in the codebase and replaces sprites. (#3110) 2021-02-09 19:05:19 +01:00
Paul d5cd82de60 explicit interface go brrrr 2021-02-04 17:44:49 +01:00
Pieter-Jan Briers d31dbec7ea Remove AggressiveInlining abuse from TileAtmosphere.cs. 2020-12-22 18:31:02 +01:00
Pieter-Jan Briers 8e8594063d Optimize allocations in MetabolismComponent and TileAtmosphere 2020-12-22 18:28:54 +01:00
DrSmugleaf 026d96fd2d Replace MaybeNullWhen(false) with NotNullWhen(true) 2020-12-20 04:14:41 +01:00
20kdc fd0df9a00a
Traitor Deathmatch (#2719)
* 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
2020-12-13 16:00:49 +01:00
Pieter-Jan Briers f2253b1bba
Fix nullable errors in TileAtmosphere.cs 2020-12-10 15:30:28 +01:00
20kdc 58af9003e7
Canisters [ Continuation of clement-or #2544 ] (#2628)
* 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>
2020-12-08 20:45:24 +01:00
Vera Aguilera Puerto 2b6964746c Adds Invalidate method to TileAtmosphere, clean up a bunch of tile invalidations 2020-12-08 17:36:59 +01:00
DrSmugleaf 074db878bb
Remove redundant null checks for atmos (#2703)
* 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>
2020-12-08 12:17:13 +01:00
Vera Aguilera Puerto 2b59159363 Actually fix NRE in atmos. 2020-12-05 20:09:22 +01:00
Vera Aguilera Puerto 74e1deba2f Better nullability for GridAtmosphereComponent 2020-12-05 19:10:07 +01:00
Vera Aguilera Puerto 983aa9ed0f Fix tile equalization terrible mistake 2020-12-05 14:19:36 +01:00
DrSmugleaf de0975c228
Add InvalidateTileAir Transform extension method (#2687)
* Add InvalidateTileAir Transform extension method

* Add extension method for EntityCoordinates as well
2020-12-04 12:21:57 +01:00
ColdAutumnRain 216a47dddc
Updated serializer data fields (#2702) 2020-12-04 11:06:53 +01:00
DrSmugleaf 87f9a6e167
Reorganize commands into the Commands folder (#2679)
* Reorganize commands into the Commands folder

* RIDER
2020-12-03 13:40:47 +11:00
Vera Aguilera Puerto c448a936ef Gas mixture now checks for NaNs, negative numbers and infinity in a bunch of methods. 2020-12-01 10:38:58 +01:00
20kdc bb22da6827
Atmos Debug Overlay expansion (#2626)
* 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
2020-11-28 14:45:52 +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
DrSmugleaf 5c0cf1b1a0
Use 'new' expression in places where the type is evident for content (#2590)
* Content.Client

* Content.Benchmarks

* Content.IntegrationTests

* Content.Server

* Content.Server.Database

* Content.Shared

* Content.Tests

* Merge fixes

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2020-11-27 21:00:49 +11:00
Víctor Aguilera Puerto 4b77f27e77 Gas moles may never be below the minimum amount of moles again.
A few atmos tweaks and fixes. Should(?) fix the NaN issue that can't be replicated.
2020-11-26 12:39:13 +01:00
Víctor Aguilera Puerto b18ee3ec49
SIMD-accelerated gas mixtures. (SIMD atmos) (#2479)
* 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
2020-11-25 10:48:49 +01:00
DrSmugleaf eb97168e30
Make godmode able to be disabled and more accessible to the rest of the code (#2560)
* 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
2020-11-22 14:45:15 +11:00
DrSmugleaf 749cd11d33
Add readonly where it is missing and fix those field names according to their modifiers (#2589) 2020-11-22 00:02:00 +11:00
DrSmugleaf f680f50059
Fix running showatmos twice not disabling the atmos overlay (#2557)
* Fix running showatmos twice not disabling the atmos overlay

* Remove entity manager dependency
2020-11-18 18:18:04 +11:00
Víctor Aguilera Puerto 43eb7a94f4 Make atmos commands work with +DEBUG 2020-11-13 17:39:53 +01:00
DTanxxx 69d709a28f
Updated ContainerHelpers to use new extensions (#2530)
Co-authored-by: David Tan <>
2020-11-13 18:25:04 +11:00
Pieter-Jan Briers 5ff8aa7fb1
Merge branch '20-10-30-admins' into 20-11-13-merges 2020-11-13 01:29:08 +01:00
Pieter-Jan Briers 9e36ef2202
Fix compiler warnings. 2020-11-11 01:48:54 +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
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 870d052354
Gas tanks and masks (#2409)
Co-authored-by: a.rudenko <creadth@gmail.com>
Co-authored-by: creadth <creadth@users.noreply.github.com>
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
2020-10-27 20:53:44 +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
Víctor Aguilera Puerto 48841a274d
Remove default grids (content) (#2241)
* 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>
2020-10-21 17:13:41 +02:00
Víctor Aguilera Puerto 19d32eb4ce
Removes AtmosCooldown from TileAtmosphere, fixes various atmos issues (#2297)
* Remove AtmosCooldown

* Fix former space tiles always having an immutable gas mixture

* _tile -> _tiles
2020-10-19 14:50:16 +02:00
Víctor Aguilera Puerto 5732421519 Buff explosive depressurization. 2020-10-17 18:03:05 +02:00
DrSmugleaf b64cb24059
Rename usages of collidable to physics (#2230)
* Rename usages of collidable to physics

* high tier PANIQUE

* aaaaaaaaAAAAAa

* cursed commit dont research

* Fix urist and items being anchored

* Fix the rest
2020-10-11 16:36:58 +02:00
DrSmugleaf 753ca81865
Replace MapIndices with Vector2i (#2228)
* Replace MapIndices with Vector2i

* Update da submodule

* AA EE II OO U U

Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2020-10-11 15:21:21 +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
Víctor Aguilera Puerto 31e0dfc10c
Adds FlammableComponent, humans can now catch on fire. (#2115) 2020-09-22 15:40:04 +02:00
Víctor Aguilera Puerto 69059eac80
Adds new different reaction types. (#2114)
* 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
2020-09-21 17:51:07 +02:00
20kdc da463097f0
Atmos debug helpers (#2108)
* Atmos debug overlay

* Pressure direction information

* Atmos debug overlay: show excited tiles
2020-09-21 01:13:17 +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
DrSmugleaf 5871851cf5
Add deletegas command to delete all gas or just one from a grid (#2067)
* Add deletegas command

* Address reviews and remove clearatmos

* Add if again
2020-09-13 14:08:09 +02:00
Víctor Aguilera Puerto 4604122e91 cache GridTileLookupSystem reference 2020-09-12 20:15:13 +02:00
Víctor Aguilera Puerto fa74e9f19f address all reviews 2020-09-12 20:10:56 +02:00
Víctor Aguilera Puerto efcd29bff8
Apply suggestions from code review
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
2020-09-12 19:54:03 +02:00
Víctor Aguilera Puerto 04bea5a253 Merge branch 'master' into 2020-08-19-firelocks 2020-09-11 19:54:12 +02:00
Víctor Aguilera Puerto cb15ef8ebc Fix atmos bug with gasmixture serialization 2020-09-11 12:53:08 +02:00
nuke 753a627c75
Add text coloring for inspected solution containers, code cleanup (#2010)
* Initial commit

* remove helper

* fixes

* small fix
2020-09-10 00:32:31 +02:00
Víctor Aguilera Puerto 4c7c7d2f72
Merge branch 'master' into 2020-08-19-firelocks 2020-09-09 22:12:38 +02:00
creadth 7baa0a4391
Fire damage (#2024)
* 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
2020-09-09 17:03:27 +02:00
Víctor Aguilera Puerto 2d76fbb3c4 Big optimizations 2020-09-06 18:32:38 +02:00
Víctor Aguilera Puerto bc972156bb Fix firelocks 2020-09-06 17:34:45 +02:00
Víctor Aguilera Puerto d58b7f0ebe whoops 2020-09-06 17:15:16 +02:00
Víctor Aguilera Puerto d758e84e8d Merge branch 'master' into 2020-08-19-firelocks
# Conflicts:
#	Content.Server/GameObjects/Components/Atmos/AirtightComponent.cs
2020-09-06 16:56:43 +02:00
DrSmugleaf 48b61f6bcc
Replace every usage of GridCoordinates with EntityCoordinates (#2021)
* Update RobustToolbox

* Transition direct type usages

* More updates

* Fix invalid use of to map

* Update RobustToolbox

* Fix dropping items

* Rename name usages of "GridCoordinates" to "EntityCoordinates"

* Revert "Update RobustToolbox"

This reverts commit 9f334a17c5908ded0043a63158bb671e4aa3f346.

* Revert "Update RobustToolbox"

This reverts commit 3a9c8cfa3606fa501aa84407796d2ad920853a09.

# Conflicts:
#	RobustToolbox

* Fix cursed IMapGrid method usage.

* GridTileLookupTest now uses EntityCoordinates

Co-authored-by: Víctor Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>
Co-authored-by: Víctor Aguilera Puerto <zddm@outlook.es>
2020-09-06 16:11:53 +02:00
metalgearsloth b7e18facda
Change HighPressureMovements to use GridTileLookup (#2025)
* Change spacewinds to use GridTileLookup

* Add tile lookup tests

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-09-06 15:44:49 +02:00
Víctor Aguilera Puerto d89188a742 Merge branch 'master' into 2020-08-19-firelocks
# Conflicts:
#	Content.Server/GameObjects/Components/Doors/ServerDoorComponent.cs
#	Content.Shared/Maps/TurfHelpers.cs
#	SpaceStation14.sln.DotSettings
2020-09-06 00:17:48 +02:00
Víctor Aguilera Puerto 6969b79c1c Improves atmos even more.
* 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)
2020-09-04 17:40:44 +02:00
DrSmugleaf 97a603b0b6
Add UnsimulatedGridAtmosphereComponent and a command to add it (#2019)
* Add UnsimulatedGridAtmosphereComponent

* Override prytile, repopulate, invalidate and revalidate

* Attributes
2020-09-04 12:22:33 +02:00
DrSmugleaf 8f9ed2f562
Replace usages of ISharedNotifyManager and IServerNotifyManager with extension methods (#1965)
* Replace usages of ISharedNotifyManager and IServerNotifyManager with extension methods

* Remove redundant code
2020-09-01 12:34:53 +02:00
Víctor Aguilera Puerto 52e98e29d7 Support for non-fulltile firelocks! 2020-08-30 15:00:40 +02:00
Víctor Aguilera Puerto c137d1bc16 changes dunno 2020-08-30 13:20:08 +02:00
Víctor Aguilera Puerto 16f0eebf15 Merge branch 'master' into 2020-08-19-firelocks
# Conflicts:
#	Content.Server/GameObjects/Components/Atmos/AirtightComponent.cs
#	Content.Server/GameObjects/Components/Atmos/GridAtmosphereComponent.cs
#	SpaceStation14.sln.DotSettings
2020-08-28 14:35:45 +02:00
Víctor Aguilera Puerto fb0ac3d70e
Atmos optimizations (#1944)
* 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
2020-08-28 14:32:56 +02:00
py01 7b12d4e08c
PipeNet (#1626)
* PipeNode

* Pipe prototypes

* Fixes Default NodeGroup not being registered by NodeGroupFactory

* GasNet

* PumpComponent

* IPipeNet

* PipeComponent

* misc naming, yaml

* PipeComponent rework

* PipeNet gas transfer from pipes

* PipeNet correctly combines gas on combining with other group

* Client ignores piping components

* AfterRemake

* PipeNet remake simplification

* IGasMixtureHolder on PipeComponent, IPipeNet

* PipeContainerComponent

* BasePump

* DebugPump

* IgnoredComponent fix

* Pipe LocalAir and Air

* comments

* Pump fix

* PipeNet fix

* name simplification

* PipeDirection name changes

* BaseVentComponent and DebugVentComponent

* Moves Pipe to own file

* DebugVentComponent moved to own file

* BaseScrubberComponent

* DebugScrubberComponent

* IgnoredComponents update

* scrubber prototype

* vent prototype fix

* comments

* Removes vent and scrubber PipeDirection check

* PipeContainer, Pipe, and PipeNode refactor

* Yaml cleanup

* pump prototype fix

* Removes AssumeAir usage from old IGasMixtureHolders

* Simplfies Vent & Scrubber to use AtmosHelper methods

* Vents and scrubbers invalidate the coordinate they changed the gas of

* UpdatedPipingComponent

* ScrubberComponent renamed to SiphonComponent

* Removes PumpSystem

* Removes framTime from UpdatedPiping

* PipeNetDevices

* PipeNetDevice updated by GridAtmosphereComponent

* PipeNets react from update in GridAtmosphereComponent

* GridAtmosphereComponent stores PipeNets/PipeNetDevices to be updated in queue

* diff fix

* Removes debug gas starting in pipes

* type safety in IPipeNet when combining groups

* null checks

* GridAtmos stores PipeNets and PipeNetDevices in List

* comments

* rogue curly bracket

* ProcessPipeNets update fix

* RemovePipeNet fix

* PipeNet update() unique index

* fix diff

* Integration test fixes

* Error Logging

* error fix

Co-authored-by: py01 <pyronetics01@gmail.com>
2020-08-27 17:45:27 +02:00
DrSmugleaf 4f8fbe2749
Fix parallel tests unreliably failing due to statics in Atmospherics (#1914)
* Fix atmospherics statics unreliably failing parallel tests

* Cache getting atmosphere system
2020-08-25 16:14:26 +02:00
SoulSloth df823d2245
Add Flashlight Visualizer/states (#1861)
* 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
2020-08-24 12:32:18 +02:00
DrSmugleaf b9196d0a10
Add a test that puts all components on an entity and checks for no exceptions (#1815)
* 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
2020-08-22 22:29:20 +02:00
Víctor Aguilera Puerto a5fbe0f024 firelock stuff I guess 2020-08-21 18:29:43 +02:00
Víctor Aguilera Puerto 68fb5d4257 Merge branch 'master' into 2020-08-19-firelocks 2020-08-21 16:51:50 +02:00
Pieter-Jan Briers bf60a4e9fc
Merge branch 'master' into mathmerge 2020-08-20 20:33:43 +02:00
Víctor Aguilera Puerto 5190c04944 Some work 2020-08-19 12:23:42 +02:00
SoulSloth 7664b30951
Add a fire extinguisher (#1685)
* 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>
2020-08-18 17:45:49 +02:00
DrSmugleaf bbc01c7e47
Fix NRE in atmos helpers and add tests (#1775) 2020-08-18 13:32:18 +02:00
Víctor Aguilera Puerto 32cf0f4c8e Fix fillgas indentation. 2020-08-17 20:45:48 +02:00
metalgearsloth f54ba4b6d5
Gas overlay chunking (#1678)
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
2020-08-17 16:12:21 +02:00
Víctor Aguilera Puerto 3e87e24028 Optimizes atmos further by using rented arrays where applicable 2020-08-16 16:24:27 +02:00
Visne 0b448b500d Merge MathHelper and FloatMath
Requires  space-wizards/RobustToolbox#1234
2020-08-16 14:54:52 +02:00
Víctor Aguilera Puerto a7fc2bccbd
Fixes explosive depressurization and improves high pressure movements (#1683) 2020-08-15 22:43:55 +02:00
Víctor Aguilera Puerto e047262289 Fix TileAtmosInfo pressure direction being east when created. 2020-08-15 17:16:55 +02:00
Víctor Aguilera Puerto 67fbdb96b3 Fix deconstructing walls creating an atmos void.
This caused a lot of high pressure movements.
2020-08-15 16:51:57 +02:00
Víctor Aguilera Puerto ae1f55656e Fix pressure difference direction being incorrect. 2020-08-15 03:23:57 +02:00
Víctor Aguilera Puerto fd40c5157b Pressure movements won't affect entities in containers. Use GetCardinalDirection. 2020-08-15 03:20:25 +02:00
Víctor Aguilera Puerto 0d4ae469e3 Optimizes EqualizePressureInZone to use ArrayPool 2020-08-14 13:17:27 +02:00
DrSmugleaf 4a8ed41e3a
Fix namespaces and optimize imports (#1651)
* Fix namespaces and optimize imports

* Cleanup fixes

* Merge conflict fixes

* Merge conflict fixes

* Merge conflict fixes
2020-08-13 14:40:27 +02:00
Víctor Aguilera Puerto ca68fbe818
Add heat conduction (#1653) 2020-08-13 14:18:26 +02:00
DrSmugleaf fee5ae05bc
Add more atmos helpers (#1661) 2020-08-13 13:51:57 +02:00
Pieter-Jan Briers f182ff5613
Remove CannyFastMath. 2020-08-12 21:19:34 +02:00
Víctor Aguilera Puerto 1fc941b3b3 Removes CannyFastMath usage from Atmos. 2020-08-12 19:37:07 +02:00
Víctor Aguilera Puerto 32e4c24342 Adds atmos helpers, welding tool now lights up fires 2020-08-11 22:34:37 +02:00
Víctor Aguilera Puerto a96b13f8c7 Fix clearatmos command not working as intended. 2020-08-10 16:21:25 +02:00
Víctor Aguilera Puerto 7293d985a5
Unique gas serialization for atmos (#1629)
* 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
2020-08-09 16:52:59 +02:00
Víctor Aguilera Puerto 30d78938fd Fix atmos bug 2020-08-08 20:11:47 +02:00
Víctor Aguilera Puerto 6963bb86cf Fix typo 2020-08-08 19:45:38 +02:00
Víctor Aguilera Puerto bb08367700 Fix tritium fires looking weird. 2020-08-08 19:44:56 +02:00
Víctor Aguilera Puerto b5a976b173
Adds tritium fire reaction and water vapor, fix gas reactions (#1623)
hehe Tritfire go BRRRR
2020-08-08 19:16:24 +02:00
Víctor Aguilera Puerto ffc9a24ea0
Adds barotrauma (pressure damage) (#1605)
* Adds barotrauma, disables it for now

* At least show status effect, but don't damage the mobs

* Fix switch misuse
2020-08-07 16:23:16 +02:00
Víctor Aguilera Puerto 079937a9fe
Wall slams - Damage on high velocity impact. (#1600)
* Wallslammed!

* Removes debug logging

* Buff damage to 5 by default
2020-08-07 16:22:32 +02:00
Víctor Aguilera Puerto aa0c8c067e Fix fillgas too, make both case insensitive 2020-08-06 15:41:17 +02:00
Víctor Aguilera Puerto d2d103fdd0 Fix addgas bug where you couldn't input the gas name instead of the Id 2020-08-06 15:37:39 +02:00
Víctor Aguilera Puerto a8fcaf9bb3 Trying to set temperature below TCMB sets it to TCMB. 2020-08-02 20:38:10 +02:00
Víctor Aguilera Puerto 082a5945e3 Fix missing null conditional 2020-08-02 20:19:01 +02:00
Víctor Aguilera Puerto c52d5a65f8 Fix command typo 2020-08-02 20:14:28 +02:00
Víctor Aguilera Puerto 85df48a700
Adds atmos (#1389)
* 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>
2020-08-02 20:08:20 +02:00